Skip to content

feat: workspace.yml rename + first-boot-only goal (ADR-386-amendment-2) - #13

Merged
kanfil merged 1 commit into
mainfrom
feat/workspace-file-goal
Sep 24, 2026
Merged

kanfil merged 1 commit into
mainfrom
feat/workspace-file-goal

Conversation

@kanfil

@kanfil kanfil commented Sep 24, 2026

Copy link
Copy Markdown
Member

Summary

Follow-up to #12. Two changes, one commit (f981431), drafted as ADR-386-amendment-2 (parent repo drafts):

1. Rename: workspace-profile.yml → workspace.yml

"Profile" is residue from the abandoned spec-kit-style bundle/catalog design — no catalog, no registry, one declarative file per workspace. The file is the workspace definition, matching the workspace command tree and /workspace skill namespace. Free now (workspace tree unpublished — npm latest 1.0.2); breaking after 2.0.0 ships.

  • .adlc/workspace-profile.yml → .adlc/workspace.yml
  • ADLC_WORKSPACE_PROFILE env → ADLC_WORKSPACE_FILE
  • Fixture team-directives-profile.yml → team-directives-workspace.yml
  • Internals follow: WORKSPACE_FILE, loadWorkspaceFile, runWorkspaceCommand

2. First-boot-only goal (AX-faithful correction)

#12 removed the profile goal: field citing the "AX binding model" — that misread AX, which keeps a goal on the workspace binding, handed to an agent on first boot. This restores the field gated on assembly:

  • changed flag = ≥1 git clone performed OR ≥1 dir created this run (dry-run predicts from the same existsSync checks)
  • init/skills/commands never count (init always runs when declared — counting it would re-fire the goal every run)
  • Re-runs converge and skip the goal silently — zero LLM cost (the original objection, satisfied)
  • No tracking file: derived purely from this run's skip-vs-act decisions
  • Execution unchanged: the single cmdAgentRun primitive; handoff hint shown exactly when the goal didn't run

Testing

  • 179 unit tests pass (goal appears/skips in dry-run, real changed-flag boundary)
  • e2e-workspace.sh — 20 assertions green (path rename)
  • e2e-profiles.sh — 27 assertions green incl. new blocks: first-boot goal executes (E2E-GOAL-OK), re-run skips goal (skip line, no agent output, exit 0), post-setup direct agent run
  • Container side (MR !6, 0581a0b): rename mirror, e2e-container green with renamed log line

Related

  • ADR-386 + ADR-386-amendment (superseded on filename/env + goal-removal rationale; dirs + headless team-setup stand)
  • MR tikalk/engineering/agentic-container!6 (rename mirror)

🤖 Generated with opencode

Rename (pre-publish surface freeze):
- .adlc/workspace-profile.yml → .adlc/workspace.yml; ADLC_WORKSPACE_PROFILE →
  ADLC_WORKSPACE_FILE; fixture team-directives-profile.yml →
  team-directives-workspace.yml; internal identifiers follow (WORKSPACE_FILE,
  loadWorkspaceFile, runWorkspaceCommand). Resolution order unchanged.

First-boot-only goal (AX-faithful correction of the removal in 41900f0):
- profile goal: field restored, gated on assembly: runs only when this setup
  performed ≥1 git clone or created ≥1 dir (changed-flag from the same
  existsSync decisions the idempotent steps use — no tracking file).
- init/skills/commands never count (init always runs when declared).
- re-runs converge and skip the goal silently; handoff hint shown exactly
  when the goal didn't run. Execution via the single agent-run primitive.

Tests: 179 unit (goal appears/skips dry-run, real changed-flag boundary);
e2e-profiles adds first-boot goal assert + full re-run block (goal skipped,
no LLM, exit 0) + post-setup direct agent run; e2e-workspace path rename.
@kanfil
kanfil merged commit 4d8a782 into main Sep 24, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant