Skip to content

docs(skills): fix four reference-doc traps in the loop and dispatch surfaces (#170-#173) - #174

Merged
lidge-jun merged 1 commit into
devfrom
codex/260914-skill-doc-triage-170-173
Sep 13, 2026
Merged

lidge-jun merged 1 commit into
devfrom
codex/260914-skill-doc-triage-170-173

Conversation

@lidge-jun

Copy link
Copy Markdown
Owner

Four reference-doc traps reported as #170-#173. Each fix was checked against the shipped source, not the surrounding prose.

What was wrong

#170 / #171skills/loop/references/durable-goalplan.md. The file makes plan registration mandatory (an init-only plan fails cxc loop validate E8, and update_goal {status:"complete"} is hook-denied behind GOAL-COMPLETE-GATE-01), documents the criteria[] field names, and then omits the only command that writes them. Reading the schema line, the natural first call is add-criterion --id c1 --scenario ... --expected-evidence ..., which fails with --criterion "<scenario>" is required. Separately, meet-criterion --id <id> reads as if the caller picks the id the way add-work-phase --id wp1 does; it does not, so an agent that assumed c1 at registration later records no evidence for a criterion it believes it met.

#172skills/pabcd/references/dispatch-surfaces.md and the DISPATCH-SURFACE-01 bullet in skills/loop/SKILL.md. Substance was correct, order was not. Four STRICT blocks all push toward threads, and the correcting sentence about in-lane subagents was the last paragraph of the file. Given "orchestrators are model A and B, workers are C and D at a 2:3 ratio, dispatched into new worktrees", routing came out as lanes-are-threads (right) and workers-are-also-threads (wrong), needing two user corrections.

#173skills/pabcd/references/delegation.md. spawn_agent advertises five model overrides. A user asked for devin/swe-2; its absence from that list was read as unavailability and the requested ratio was silently re-planned around threads. The list is incomplete, not authoritative.

What changed

  • durable-goalplan.md: added the real add-criterion signature to the CLI surface, showed init [--criterion <text>]..., stated that ids are generated as c-1, c-2, ... (max existing c-N + 1, in registration order) and that meet-criterion --id consumes those, noted the duplicate-scenario rejection, and gave criteria[] its missing surface field with per-field provenance — scenario/surface are CLI-settable, id and status are derived, expectedEvidence has no add-criterion flag, capturedEvidence comes from meet-criterion --evidence.
  • dispatch-surfaces.md: the composition rule now sits inside DISPATCH-SURFACE-01 — a lane is thread work, a worker inside a lane is subagent work, and in-lane subagents cannot collide across lanes because the worktrees differ. DISPATCH-ROUTE-01 gained the matching route line. The closing section stays as the expanded form.
  • loop/SKILL.md: the DISPATCH-SURFACE-01 bullet mirrors one clause of the same rule, so summary and reference agree.
  • delegation.md: new DELEGATE-MODEL-LIST-01 (STRICT) next to the V1 spawn table — the advertised override list is a hint, not an allowlist; pass a user-named model through as given; only a real spawn rejection is evidence of unavailability; report a genuine failure instead of substituting.
  • structure/20_pabcd_dispatch_doctrine.md: mirrored the worker-inside-a-lane row into the translation table.

Verification

Flags, id generation, duplicate handling and field defaults were read out of plugins/codexclaw/components/pabcd-state/src/goalplan-cli.ts (renderGoalplanHelp, runAddOp), steering.ts (applyOps, c-${maxId + 1}) and goalplan.ts (buildGoalplan, c-${i + 1}).

DELEGATE-MODEL-LIST-01 is backed by a live measurement taken while preparing this PR: three spawn_agent({ model: "devin/swe-2" }) calls succeeded and produced the durable-goalplan, dispatch-surface and delegation edits respectively, while the host description still omitted that model. Those subagents also landed their edits in this checkout on this branch, which is a second confirmation of DISPATCH-SHARED-TREE-01.

Docs only; no runtime or CLI behavior changed. Local suite, typecheck, build and install: NOT RUN.

Closes #170
Closes #171
Closes #172
Closes #173

…, in-lane worker routing, and the incomplete spawn model list

Four reference-doc traps reported as #170-#173, all fixed against the shipped
source rather than from the prose.

- durable-goalplan.md: add the missing `cxc loop add-criterion` line with its
  real flags, show `init --criterion` repetition, state that criterion ids are
  generated as c-1, c-2, ... (max existing c-N + 1) and that meet-criterion --id
  takes those, and give criteria[] its missing `surface` field plus per-field
  provenance so nobody plans on an --expected-evidence flag that does not exist.
  (#170, #171)
- dispatch-surfaces.md / loop SKILL.md: state the composition rule inside
  DISPATCH-SURFACE-01 instead of only in the closing section, and route the
  in-lane worker case in DISPATCH-ROUTE-01. A lane is thread work; a worker
  inside a lane is subagent work. (#172)
- delegation.md: DELEGATE-MODEL-LIST-01 — the advertised spawn_agent override
  list is a hint, not an allowlist. Pass a user-named model through; only a real
  spawn rejection proves unavailability. (#173)
- structure/20_pabcd_dispatch_doctrine.md: mirror the worker/lane row into the
  translation table.

Docs only; no runtime or CLI behavior changed. Local suite/typecheck/build NOT RUN.
@github-actions

github-actions Bot commented Sep 13, 2026

Copy link
Copy Markdown

Target branch corrected

This pull request now targets dev.

The [WRONG BRANCH] title prefix has been removed. Its existing draft status has been preserved.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 13, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-13T23:45:24.219713Z 7036f9b PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions github-actions Bot changed the title docs(skills): fix four reference-doc traps in the loop and dispatch surfaces (#170-#173) [WRONG BRANCH] docs(skills): fix four reference-doc traps in the loop and dispatch surfaces (#170-#173) Sep 13, 2026
@lidge-jun
lidge-jun changed the base branch from main to dev September 13, 2026 23:42
@github-actions github-actions Bot changed the title [WRONG BRANCH] docs(skills): fix four reference-doc traps in the loop and dispatch surfaces (#170-#173) docs(skills): fix four reference-doc traps in the loop and dispatch surfaces (#170-#173) Sep 13, 2026
@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Sep 13, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7036f9b8fe

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +61 to +62
`scenario` is the `--criterion` text and `surface` comes from `--surface` (default
`logic`); `id` is auto-assigned and `status` is derived. `expectedEvidence` has no

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve the surface on init-time criteria

When criteria are seeded through the newly documented cxc loop init --criterion path, this blanket statement suggests that --surface web|tui classifies them. However, cxc loop --help advertises --surface only for add-criterion, and the init branch in goalplan-cli.ts calls buildGoalplan with { scenario } only, ignoring the parsed surface; consequently, loop init ... --criterion ... --surface web exits successfully but stores surface: "logic". Because computeQaRequired only recognizes web and tui, this can silently omit the required QA receipt. Either propagate args.surface during init or scope this statement explicitly to add-criterion and document how visual criteria must be registered.

Useful? React with 👍 / 👎.

Comment on lines +25 to +27
A **lane** is thread work; a **worker inside a lane** is subagent work. N lanes
means N worktree threads, and the workers inside each lane are that lane's
subagents — they cannot collide across lanes because the worktrees differ.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Do not make the word “lane” force thread routing

This absolute definition contradicts the same document's earlier statement that the word “lane” does not select a surface and its later instruction to route by ownership rather than parallelism. For requests such as “fan out three read-only lanes” or bounded non-overlapping slices in the current checkout, these lines require three user-visible worktree threads while DISPATCH-ROUTE-01 requires subagents, leaving agents with incompatible STRICT instructions. Restrict this definition to branch/worktree lanes, or keep “lane” neutral until the ownership requirements select a surface.

Useful? React with 👍 / 👎.

@lidge-jun
lidge-jun merged commit b984aa5 into dev Sep 13, 2026
16 checks passed
@lidge-jun
lidge-jun deleted the codex/260914-skill-doc-triage-170-173 branch September 13, 2026 23:48
lidge-jun added a commit that referenced this pull request Sep 13, 2026
LOOP-DOCS-FIRST-01: the delivery roadmap is written to diff level before the
first merge or version edit, not discovered phase by phase.

- 000_plan.md — objective, constraints, measured starting state, the four
  work-phase map, and the delete_branch_on_merge hazard that already cost this
  repository its dev branch once.
- 010 — landing #174 on dev, and why the dev push is a separate CI generation:
  the release gate reads conclusions by SHA, and WSL never runs on pull requests.
- 020 — the exact thirteen version surfaces collectSurfaces() enumerates, which
  two may carry +codex build metadata, the two declared workspaces (gui, cli)
  that it does not read, and the hosted tests=3150 measurement the inventory
  regeneration must use.
- 030 — the promotion PR's enforce-target exemption, ruleset protect-main with
  its six required contexts and no bypass actors, the immovable v* tag ruleset,
  and the dev restore step the promotion merge will require.

Docs only. Local suite/typecheck/build NOT RUN.
lidge-jun added a commit that referenced this pull request Sep 14, 2026
Four reference-doc traps reported as #170-#173 and landed on dev as #174:
the missing add-criterion CLI surface, generated c-N criterion ids, the in-lane
worker routing that DISPATCH-SURFACE-01 buried, and DELEGATE-MODEL-LIST-01 for
the incomplete spawn_agent override list.

Version surfaces: every surface check-versions.mjs enumerates moves 0.2.27 ->
0.2.28, plus the two declared workspaces it does not read (gui, cli) and the
thirteen workspace self-versions in package-lock.json. The plugin manifest and
inventory carry the regenerated +codex.20260914090142 build metadata, which never
affects precedence.

Inventory regenerated with the measured total from hosted CI, not a local run:
run 34790437740 job 103813520900 reported "tests 3150" at head 7036f9b. The
published badge already read 3,150, so it does not move and the READMEs are
untouched — only the inventory's version fields changed.

Local suite/typecheck/build/install NOT RUN. Proof for this head is the hosted
dev CI generation; the release gate reads conclusions by SHA.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment