Skip to content

[Spec 83] rev. 12: retract the FR-3 finding - #101

Merged
pseudoseed merged 1 commit into
mainfrom
fix/83-fr3-correction
Aug 24, 2026
Merged

[Spec 83] rev. 12: retract the FR-3 finding#101
pseudoseed merged 1 commit into
mainfrom
fix/83-fr3-correction

Conversation

@pseudoseed

Copy link
Copy Markdown
Owner

Problem. Spec 83 recorded FR-3 as unsatisfiable and filed #97 against discoverBuilders. Both were wrong. FR-3 works.

Root cause. Rev. 4 measured GET /v2/events and got 13 builders, every one with parentId: "workspace:<path>", zero with an architect parent. That measurement was taken when the workspace had no live builders, so all 13 rows were orphaned worktrees. A missing global.db row read as a missing feature.

Re-measured with live builders present:

builders: 15   parent=architect: 2   parent=workspace: 13
architect-parented: [('bugfix-97','uiv2'), ('spir-83','uiv2')]

The 2 are the only rows in global.db.builders for that workspace. v2-projection.ts:95 joins getBuilders().spawnedByArchitect, not discoverBuilders, so the hardcoded null at overview.ts:602, 662, 697 never reaches the wire.

Fix. Goal 4 lists FR-3 as satisfied. The evidence table retracts finding 4. D13 keeps its instruction and replaces its justification.

The client behaviour does not change. D13 still says: render the parentId the wire sends, never infer one. Both parent shapes are real and both appear in one tree. The never-infer rule is now the more important half — name-matching those 13 orphans to uiv2 would have produced a plausible tree and buried the real defect.

What was actually there is filed as #100: a worktree with no global.db row can be seen by every surface and removed by none. afx cleanup -p 78 returns Builder not found for project, and git worktree remove is forbidden by the irreversible-acts rule. 13 have accumulated in this workspace and nothing prunes them.

Credit. builder-bugfix-97 was spawned to fix #97, investigated the stated cause, measured it against the live stream, and reported that the prescribed fix was a no-op — before writing any code. #97 is closed as already-working with no PR.

Testing

  • Re-measured the live stream myself rather than accepting the builder's report; the numbers above are mine.
  • Confirmed v2-projection.ts:95 joins getBuilders(), so discoverBuilders' null is not on the path.
  • No behaviour change and no source change. Spec text only; builder-spir-83 needs no rework.

🤖 Generated with Claude Code

…unchanged

builder-bugfix-97 investigated #97, measured it against the live stream, and
reported that the prescribed fix was a no-op before writing any code. It is
right and I re-measured to confirm.

Rev. 4 measured 13 builders all returning parentId workspace:<path>, zero with
an architect parent, and concluded FR-3 was unsatisfiable. The measurement was
taken when that workspace had no live builders, so every row was an orphaned
worktree, and a missing global.db row read as a missing feature.

Re-measured with live builders present: 15 builders, 2 parented to
architect:<path>#uiv2, 13 to the workspace. The 2 are the only rows in
global.db.builders. v2-projection.ts:95 joins getBuilders().spawnedByArchitect,
not discoverBuilders, so the null in discoverBuilders never reaches the wire.
FR-3 works and goal 4 now lists it as satisfied.

D13's instruction to the client does not change: render the parentId the wire
sends, never infer one. Only the justification was wrong. The never-infer rule
survives intact and is now the more important half - name-matching those 13
orphans to uiv2 would have produced a plausible tree and buried the real defect.

That defect is filed as #100: a worktree with no global.db row can be seen by
every surface and removed by none, since afx cleanup reports Builder not found
and git worktree remove is forbidden. #97 is closed as already-working.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@pseudoseed
pseudoseed merged commit 609c80a into main Aug 24, 2026
7 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.

FR-3 is unmet: every builder reports the workspace as its parent, never its architect

1 participant