Instructions in implement-worker.md are pinned (including by tests) to specify a cq-specific workflow - to work on cq itself, not on a generic project. Related #5
LLM output:
Three things I tried to fix and reverted, because cq pins them deliberately
| Attempted |
Blocked by |
| Genericize the gate command |
crossSurfaceDispatchConformance.test.ts:333 asserts that exact cq-specific string on every surface (T1629/T1307) |
Drop isolation: worktree |
agentsCatalogue.gen.test.ts:99 requires the role to declare it (Q148 role-set invariants) |
| Remove the confinement diagnosis literal |
d143D184WorktreeDurability.test.ts:153 requires it verbatim |
Each is a guard named after a defect or task id. Rewriting those to fit my change is how you silently undo someone else's fix, so I stopped at the boundary rather than edit them.
The gate also caught two genuine errors of mine along the way: abbreviating the Step 0 bullets broke a pinned literal, and I'd written defects:D119 / questions:Q363 into a canonical prompt — which promptSourceHygiene forbids outright. Both fixed.
The contradiction worth raising with the maintainer
cq's claudeDispatchBridge.ts:1193 calls isolation: "worktree" D119's root cause — "makes the HARNESS allocate-or-REUSE a tree at whatever commit it was left", abolished by Q363 in favour of orchestrator-prepared trees — while agentsCatalogue.gen.test.ts requires implement-worker to declare exactly that. The lint's regex needs quotes, so it never catches the unquoted YAML. That's the actual root cause of this session's stale-tree failure (0e922be, two commits behind), and it needs a decision, not a patch.
Same for the gate: nix/pkg/cq-ledgers + bun run check is cq's own layout, pinned across all surfaces, and hit ENOENT 5/5 in a consumer project.
Instructions in
implement-worker.mdare pinned (including by tests) to specify a cq-specific workflow - to work on cq itself, not on a generic project. Related #5LLM output:
Three things I tried to fix and reverted, because cq pins them deliberately
crossSurfaceDispatchConformance.test.ts:333asserts that exact cq-specific string on every surface (T1629/T1307)isolation: worktreeagentsCatalogue.gen.test.ts:99requires the role to declare it (Q148 role-set invariants)d143D184WorktreeDurability.test.ts:153requires it verbatimEach is a guard named after a defect or task id. Rewriting those to fit my change is how you silently undo someone else's fix, so I stopped at the boundary rather than edit them.
The gate also caught two genuine errors of mine along the way: abbreviating the Step 0 bullets broke a pinned literal, and I'd written
defects:D119/questions:Q363into a canonical prompt — whichpromptSourceHygieneforbids outright. Both fixed.The contradiction worth raising with the maintainer
cq's
claudeDispatchBridge.ts:1193callsisolation: "worktree"D119's root cause — "makes the HARNESS allocate-or-REUSE a tree at whatever commit it was left", abolished by Q363 in favour of orchestrator-prepared trees — whileagentsCatalogue.gen.test.tsrequires implement-worker to declare exactly that. The lint's regex needs quotes, so it never catches the unquoted YAML. That's the actual root cause of this session's stale-tree failure (0e922be, two commits behind), and it needs a decision, not a patch.Same for the gate:
nix/pkg/cq-ledgers+bun run checkis cq's own layout, pinned across all surfaces, and hit ENOENT 5/5 in a consumer project.