@c4a/context-cli 0.6.0-beta.5 → 0.6.0-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +19 -4
  2. package/cli.js +5330 -3154
  3. package/package.json +2 -2
  4. package/plugin/skills/skill-continue-workflow/SKILL.md +26 -2
  5. package/plugin/skills/skill-prose-align/SKILL.md +32 -15
  6. package/plugin/skills/skill-prose-align/references/internal-procedures/structure-planning.md +5 -3
  7. package/plugin/skills/skill-prose-compile/SKILL.md +27 -13
  8. package/plugin/skills/skill-review-gate/SKILL.md +33 -10
  9. package/plugin/skills/skill-source-scope/SKILL.md +165 -105
  10. package/plugin/skills/skill-source-scope/references/capture-source.md +32 -12
  11. package/plugins/VERSION +1 -1
  12. package/plugins/claude/.claude-plugin/plugin.json +1 -1
  13. package/plugins/claude/skills/skill-continue-workflow/SKILL.md +26 -2
  14. package/plugins/claude/skills/skill-prose-align/SKILL.md +32 -15
  15. package/plugins/claude/skills/skill-prose-align/references/internal-procedures/structure-planning.md +5 -3
  16. package/plugins/claude/skills/skill-prose-compile/SKILL.md +27 -13
  17. package/plugins/claude/skills/skill-review-gate/SKILL.md +33 -10
  18. package/plugins/claude/skills/skill-source-scope/SKILL.md +165 -105
  19. package/plugins/claude/skills/skill-source-scope/references/capture-source.md +32 -12
  20. package/plugins/codex/.codex-plugin/plugin.json +2 -2
  21. package/plugins/codex/skills/continue/references/internal-procedures/skill-continue-workflow.md +26 -2
  22. package/plugins/codex/skills/continue/references/internal-procedures/skill-prose-align/references/internal-procedures/structure-planning.md +5 -3
  23. package/plugins/codex/skills/continue/references/internal-procedures/skill-prose-align.md +32 -15
  24. package/plugins/codex/skills/continue/references/internal-procedures/skill-prose-compile.md +27 -13
  25. package/plugins/codex/skills/continue/references/internal-procedures/skill-review-gate.md +33 -10
  26. package/plugins/codex/skills/continue/references/internal-procedures/skill-source-scope/references/capture-source.md +32 -12
  27. package/plugins/codex/skills/continue/references/internal-procedures/skill-source-scope.md +165 -105
  28. package/plugins/codex/skills/init/references/internal-procedures/skill-continue-workflow.md +26 -2
  29. package/plugins/codex/skills/init/references/internal-procedures/skill-prose-align/references/internal-procedures/structure-planning.md +5 -3
  30. package/plugins/codex/skills/init/references/internal-procedures/skill-prose-align.md +32 -15
  31. package/plugins/codex/skills/init/references/internal-procedures/skill-prose-compile.md +27 -13
  32. package/plugins/codex/skills/init/references/internal-procedures/skill-review-gate.md +33 -10
  33. package/plugins/codex/skills/init/references/internal-procedures/skill-source-scope/references/capture-source.md +32 -12
  34. package/plugins/codex/skills/init/references/internal-procedures/skill-source-scope.md +165 -105
  35. package/plugins/cursor/.cursor-plugin/plugin.json +1 -1
  36. package/plugins/cursor/skills/skill-continue-workflow/SKILL.md +26 -2
  37. package/plugins/cursor/skills/skill-prose-align/SKILL.md +32 -15
  38. package/plugins/cursor/skills/skill-prose-align/references/internal-procedures/structure-planning.md +5 -3
  39. package/plugins/cursor/skills/skill-prose-compile/SKILL.md +27 -13
  40. package/plugins/cursor/skills/skill-review-gate/SKILL.md +33 -10
  41. package/plugins/cursor/skills/skill-source-scope/SKILL.md +165 -105
  42. package/plugins/cursor/skills/skill-source-scope/references/capture-source.md +32 -12
  43. package/plugins/skills/context-continue/references/internal-procedures/skill-continue-workflow.md +26 -2
  44. package/plugins/skills/context-continue/references/internal-procedures/skill-prose-align/references/internal-procedures/structure-planning.md +5 -3
  45. package/plugins/skills/context-continue/references/internal-procedures/skill-prose-align.md +32 -15
  46. package/plugins/skills/context-continue/references/internal-procedures/skill-prose-compile.md +27 -13
  47. package/plugins/skills/context-continue/references/internal-procedures/skill-review-gate.md +33 -10
  48. package/plugins/skills/context-continue/references/internal-procedures/skill-source-scope/references/capture-source.md +32 -12
  49. package/plugins/skills/context-continue/references/internal-procedures/skill-source-scope.md +165 -105
  50. package/plugins/skills/context-init/references/internal-procedures/skill-continue-workflow.md +26 -2
  51. package/plugins/skills/context-init/references/internal-procedures/skill-prose-align/references/internal-procedures/structure-planning.md +5 -3
  52. package/plugins/skills/context-init/references/internal-procedures/skill-prose-align.md +32 -15
  53. package/plugins/skills/context-init/references/internal-procedures/skill-prose-compile.md +27 -13
  54. package/plugins/skills/context-init/references/internal-procedures/skill-review-gate.md +33 -10
  55. package/plugins/skills/context-init/references/internal-procedures/skill-source-scope/references/capture-source.md +32 -12
  56. package/plugins/skills/context-init/references/internal-procedures/skill-source-scope.md +165 -105
  57. package/scripts/postinstall.mjs +68 -129
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@c4a/context-cli",
3
- "version": "0.6.0-beta.5",
3
+ "version": "0.6.0-beta.7",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "context": "./cli.js"
7
7
  },
8
8
  "dependencies": {
9
- "@c4a/context": "0.6.0-beta.5",
9
+ "@c4a/context": "0.6.0-beta.7",
10
10
  "commander": "^11.0.0",
11
11
  "handlebars": "^4.7.8",
12
12
  "ink": "^5.0.0",
@@ -24,6 +24,10 @@ Continue an existing Context workspace from its current state.
24
24
  workflow; do not treat the host repository root as the workspace.
25
25
  - There is no `context continue` CLI command. Start with `context status`.
26
26
  - `context status` and CLI diagnostics are the source of truth.
27
+ - Inspect `declarationGraph` and `configurationGaps`. Before structure
28
+ confirmation they are configuration warnings; after confirmation, a missing
29
+ compile route is a hard gate. Never substitute a compile phase from another
30
+ collection.
27
31
  - Execute safe mechanical `next:` steps; stop at semantic choices and human
28
32
  gates.
29
33
  - Delegate source/scope decisions to
@@ -65,6 +69,10 @@ Capture phases are not safe mechanical commands by default. `capture:file:*`
65
69
  and `capture:lark:*` read local or remote source bodies and update committed
66
70
  snapshots, so they require the source read-permission gate unless the current
67
71
  turn already contains explicit user confirmation for that exact source.
72
+ An explicit request to capture, ingest, fetch, read, or include the exact
73
+ file/Lark path or URL is that confirmation; do not ask again after registration.
74
+ Mere mention, source discussion, or a register-only request is not confirmation,
75
+ and an explicit refusal always overrides inferred permission.
68
76
 
69
77
  ## Human Gates
70
78
 
@@ -117,10 +125,20 @@ do not forward a long raw transcript unless requested.
117
125
 
118
126
  ### Step 2 — Route The State
119
127
 
120
- 1. If status says `missing-source` or `needs-capture`,
128
+ 1. If status says `missing-source`, `needs-capture-phase`, `needs-capture`,
129
+ `needs-extract-phase`, or `ready-to-extract`,
121
130
  source boundary/name is unclear, source scope is unclear, or an extract
122
131
  phase needs first-run scope confirmation, follow
123
132
  `${CLAUDE_PLUGIN_ROOT}/skills/skill-source-scope/SKILL.md`.
133
+ When `routing.configuration` is present, make only that declared project
134
+ configuration change and rerun status. Otherwise follow
135
+ `routing.command_plan`: run `immediate` items directly and wait for current-
136
+ conversation confirmation before `after-human-confirmation` items.
137
+ For mixed sources, status intentionally returns `ready-to-extract` before
138
+ `captured-ready-to-investigate` while all document snapshots are captured,
139
+ document structure is untouched, and code extraction is missing, pending,
140
+ or stale. Explain that code is processed first, then follow the exact
141
+ extraction preview/rerun command.
124
142
  2. If status says `captured-ready-to-investigate` or `needs-structure`, or the
125
143
  user asks to split, merge, classify, relate, or semantically organize
126
144
  document evidence before draft pages exist, follow
@@ -129,7 +147,9 @@ do not forward a long raw transcript unless requested.
129
147
  to turn confirmed structure into source-bound draft pages, follow
130
148
  `${CLAUDE_PLUGIN_ROOT}/skills/skill-prose-compile/SKILL.md`.
131
149
  4. If the latest phase result has `next_action.human_gate=false`, follow its
132
- command and do not invent a Review gate. If status says
150
+ command and do not invent a Review gate. This includes
151
+ `continue_compile_batch` and `continue-codegraph-batch`: finish the whole
152
+ prepared round first. If status says
133
153
  `compile-ready-for-review`, or the latest result has
134
154
  `next_action.human_gate=true`, follow
135
155
  `${CLAUDE_PLUGIN_ROOT}/skills/skill-review-gate/SKILL.md`.
@@ -173,3 +193,7 @@ usable; inspect generated package structure when package output is involved.
173
193
  conclusion and use the CLI view.
174
194
 
175
195
  </procedures>
196
+ If top-level `state`, `next`, or `routing.command_plan` contradicts
197
+ `draftCandidates`, `pendingReview`, `close.state`, package freshness, or verify
198
+ counts, stop instead of rerunning a completed phase. Report
199
+ `status-route-conflict` and preserve the detailed status output for diagnosis.
@@ -24,16 +24,17 @@ Turn captured document evidence into confirmed structure.
24
24
  - Write and validate `context.structure.v1` into `unapproved/structure.yaml`.
25
25
  Stop for user confirmation before compile.
26
26
  - Before classifying nodes, section plans, edges, support strength, duplicates,
27
- conflicts, ownership, or unresolved items, read the current procedure
28
- references listed by the CLI as `semantic_reference_files`. These references
29
- are the current structure judgment rules, not summaries.
27
+ conflicts, ownership, or unresolved items, read only the procedure references
28
+ in the CLI `semantic_rules.required` set. Use each returned `reason` to keep
29
+ unrelated rules out of the current judgment.
30
30
  - Plan source evidence as Sections before promoting any heading to a Node/View.
31
31
  Local FAQ, decision, incident, warning, or reference fragments normally stay
32
32
  under the owning View unless source evidence proves independent retrieval
33
33
  identity.
34
- - Do not produce or validate a structure payload from this entry file alone. If
35
- the relevant `semantic_reference_files` have not been read in the current
36
- turn, stop and read them first.
34
+ - Do not produce or validate a structure payload from this entry file alone. A
35
+ ruleset already present in the active context may be reused only when both its
36
+ `handle` and `digest` match. If the context was compacted, the digest changed,
37
+ or the rule content is no longer present, read `semantic_rules.required`.
37
38
  - When status reaches `structure-ready` or `needs-prose-compile`, hand off to
38
39
  `${CLAUDE_PLUGIN_ROOT}/skills/skill-prose-compile/SKILL.md`.
39
40
  - Compile, review, close, verify, and build remain separate gates.
@@ -54,7 +55,7 @@ Use semantic labels, not SDK function names:
54
55
 
55
56
  Use these rules in the current phase-runner flow:
56
57
 
57
- - Follow the top-level state, `routing.next_commands`, CLI `next_action`, and
58
+ - Follow the top-level state, `routing.command_plan`, CLI `next_action`, and
58
59
  CLI-returned `next_command` values for every write. Treat `allowed_actions[]`
59
60
  as permission for read-only insertions; it is not a menu of alternate write
60
61
  paths.
@@ -200,9 +201,12 @@ context run align:<type>:<source>:<collection> --validate --input <structure.yam
200
201
  ```
201
202
 
202
203
  Validation returns `structure_summary` and writes a temporary HTML report under
203
- `.tmp/context-runtime/reports/`. Use `structure_report.file_url` as the primary
204
- user-facing link, and include `structure_report.absolute_path` as a copyable
205
- fallback. Do not ask the user to confirm a structure they cannot click or open.
204
+ `.tmp/context-runtime/reports/`. A validation report with
205
+ `confirmation_ready=false` is an Agent repair artifact, not a user review gate:
206
+ do not ask the user to approve it. The staged report produced after
207
+ `confirmation_ready=true` is the final review surface; use its
208
+ `structure_report.file_url` as the primary user-facing link and include
209
+ `structure_report.absolute_path` as a copyable fallback.
206
210
  If the user needs a focused view, run:
207
211
 
208
212
  ```bash
@@ -225,14 +229,21 @@ Repair diagnostics by routing them to the right decision:
225
229
  structure or keep the relation unresolved;
226
230
  - stale structure -> regenerate from the current snapshot hash.
227
231
 
228
- When validation returns a new `next_action.command`, follow that exact command.
229
- When it returns blocking diagnostics without a write command, repair and
230
- validate again. Do not stage a structure just because the YAML shape looks
231
- valid.
232
+ When validation returns `repair_confirmation_blockers`, follow its exact repair
233
+ route without stopping for human confirmation. `--repair suggested-splits`
234
+ mechanically splits non-contiguous source mirror Sections; write its
235
+ `repaired_payload` to a scratch YAML file and validate again. For oversized
236
+ Views, use the returned child-View and contains-edge suggestions, but classify
237
+ each child Node from evidence instead of mechanically inheriting the parent
238
+ type. Repair other diagnostics from evidence and validate again. Ask the user only when evidence
239
+ supports multiple incompatible semantic choices, and label that question as a
240
+ structure-design choice rather than final review. Do not stage until
241
+ `confirmation_ready=true`.
232
242
 
233
243
  ### Step 4 — Review Structure Before Confirmation
234
244
 
235
- After validation, and again after a draft structure is staged, show the user:
245
+ After validation reports `confirmation_ready=true`, stage the draft. The stage
246
+ command opens the final report. Then show the user:
236
247
 
237
248
  - node list and planned paths;
238
249
  - section ownership;
@@ -250,6 +261,12 @@ hard stop for structure review. Do not ask for a blind "confirm structure"
250
261
  reply. Surface the report `file_url`, absolute path, and enough structured
251
262
  summary for the user to inspect what will be confirmed.
252
263
 
264
+ Do not turn `confirmation_blockers` into a preliminary approval round. A
265
+ validator-required page split, continuous-source split, ref repair, or
266
+ structure-spine connection is work to resolve before staging. If a genuinely
267
+ ambiguous semantic choice needs the user, ask only that choice and then resume
268
+ repair; it does not replace the final report-based confirmation.
269
+
253
270
  Use the host's multi-choice question tool when available. If unavailable, use a
254
271
  short Markdown fallback. Good options are:
255
272
 
@@ -216,8 +216,10 @@ material to `unresolved[]`.
216
216
 
217
217
  For pure suggested-split repairs, prefer the CLI repair view before hand-editing:
218
218
  `context run align:<type>:<source>:<collection> --repair suggested-splits --input <structure.yaml> --format json`.
219
- It only rewrites section ids/source_refs inside the same view. It does not
220
- create child nodes/views or decide semantic regrouping for you.
219
+ It splits non-contiguous Section mirrors. Oversized Views still require the
220
+ Agent to apply the returned child-View and contains-edge suggestions while
221
+ classifying every child Node from evidence. The repair command does not resolve
222
+ orphan ownership, unsupported evidence, or competing semantic groupings.
221
223
 
222
224
  When the cited source sentence itself is uncertain, preserve that uncertainty on
223
225
  the edge with `confidence: possible` or `confidence: hypothesis`. This is only
@@ -251,7 +253,7 @@ There is no parallel candidate-body authoring path. Emit only the
251
253
 
252
254
  ### Step 6 — Validate And Submit
253
255
 
254
- Before staging, run `context run align:<type>:<source>:<collection> --validate --input - --format json` with the `context.structure.v1` payload. If validate returns blocking diagnostics, repair the exact paths it reports and rerun validate. After validation, show the structure to the user with the structure summary, `structure_report.file_url`, and `structure_report.absolute_path`. If validation returns `confirmation_blockers[]` or `will_block_confirmation`, repair those blockers before asking the user to confirm. If you stage a draft structure first, the stage result is still a human review gate: show the returned report link/summary and ask the user to inspect it before confirming. Only write `lifecycle.state: confirmed` only after explicit confirmation; then run `context run align:<type>:<source>:<collection> --confirm --format json` or pass an explicit file with `--confirm --input <structure.yaml> --format json`.
256
+ Before staging, run `context run align:<type>:<source>:<collection> --validate --input - --format json` with the `context.structure.v1` payload. If validate returns `repair_confirmation_blockers`, follow its repair route and rerun validate without asking for preliminary approval. `--repair suggested-splits` handles non-contiguous source mirror Sections. For oversized Views, apply the returned child-View and contains-edge suggestions while classifying child Nodes from evidence. Resolve other blockers from evidence; ask the user only when evidence supports multiple incompatible semantic choices, and state that this is not final review. Stage only after `confirmation_ready=true`. The stage result opens the final HTML report and is the human review gate: show the structure to the user through `structure_report.file_url`, `structure_report.absolute_path`, and the compact summary before asking for confirmation. Only write `lifecycle.state: confirmed` only after explicit confirmation; then run `context run align:<type>:<source>:<collection> --confirm --format json` or pass an explicit file with `--confirm --input <structure.yaml> --format json`.
255
257
 
256
258
  After stage succeeds, do not rerun the same write command to confirm success.
257
259
  Use `context status --format json` or the returned result for read-only
@@ -38,12 +38,13 @@ Compile confirmed document structure into reviewable draft knowledge.
38
38
  faithful mirrored continuous span, split the section or return to prose align
39
39
  for a confirmed structure change.
40
40
  - Before choosing section kind, summary, skip/update, weak-evidence handling, or
41
- structure repair, read the current procedure references listed by the CLI as
42
- `semantic_reference_files`. These are the migrated compile judgment rules, not
43
- summaries.
44
- - Do not produce or validate compile actions from this entry file alone. If the
45
- relevant `semantic_reference_files` have not been read in the current turn,
46
- stop and read them first.
41
+ structure repair, read only the procedure references in the CLI
42
+ `semantic_rules.required` set. The CLI selects core and conditional rules for
43
+ the current node and explains each selection with `reason`.
44
+ - Do not produce or validate compile actions from this entry file alone. A
45
+ ruleset already present in the active context may be reused only when both its
46
+ `handle` and `digest` match. If the context was compacted, the digest changed,
47
+ or the rule content is no longer present, read `semantic_rules.required`.
47
48
 
48
49
  <reference>
49
50
 
@@ -60,7 +61,7 @@ Use semantic labels, not SDK function names:
60
61
 
61
62
  ## Runtime Discipline
62
63
 
63
- - Follow `context status`, `routing.next_commands`, compile view
64
+ - Follow `context status`, `routing.command_plan`, compile view
64
65
  `next_action`, and validation diagnostics. Treat CLI commands as the source
65
66
  of truth.
66
67
  - Use only the returned `next_action.command` for the next required write.
@@ -75,6 +76,9 @@ Use semantic labels, not SDK function names:
75
76
  views.
76
77
  - Run one write at a time. Do not parallelize compile stage, review apply,
77
78
  close, or build writes.
79
+ - One write still means one View, not one human Review. Stage every View in the
80
+ same confirmed structure sequentially, follow `continue_compile_batch`, and
81
+ open Review only after the CLI reports that the whole batch is prepared.
78
82
  - Compile does not get a second, looser rule set. If a rule conflicts with the
79
83
  current CLI schema or diagnostics, follow the CLI and repair the payload.
80
84
  - Write digest/hash flags are stale guards. Use values returned by the CLI; do
@@ -159,9 +163,10 @@ context run compile:<type>:<source>:<collection> --view node-context --source <v
159
163
  context run compile:<type>:<source>:<collection> --view schema --format json
160
164
  ```
161
165
 
162
- Read the compile references listed by `semantic_reference_files` before
166
+ Read only the compile references listed by `semantic_rules.required` before
163
167
  classifying section kind, summary, support, skip/update, weak evidence, or
164
- structure repair.
168
+ structure repair. Do not load the full rule inventory unless the CLI explicitly
169
+ returns it as required.
165
170
 
166
171
  Do not treat those references as optional background. They are the current
167
172
  compile drafting, judgment, and semantic-repair procedures.
@@ -226,13 +231,21 @@ Stage only after validation has no errors:
226
231
  context run compile:<type>:<source>:<collection> --stage --input <compile-actions.yaml> --format json
227
232
  ```
228
233
 
229
- After staging, return to `context status`. If status reaches
230
- `compile-ready-for-review`, delegate review to
231
- `${CLAUDE_PLUGIN_ROOT}/skills/skill-review-gate/SKILL.md`.
234
+ After staging, follow `next_action` exactly:
235
+
236
+ - `continue_compile_batch` with `human_gate=false`: move to the returned next
237
+ View and repeat **Step 2–4**. Do not open Review yet.
238
+ - `review_candidates` with `human_gate=true`: every planned View in this
239
+ confirmed structure is prepared; return to `context status`, then delegate
240
+ one collection-level Review to
241
+ `${CLAUDE_PLUGIN_ROOT}/skills/skill-review-gate/SKILL.md`.
242
+
243
+ The CLI blocks Review and close while confirmed Views remain unprepared. Do not
244
+ turn sequential View writes into sequential user approvals.
232
245
 
233
246
  ### Step 5 — Close Handoff
234
247
 
235
- After review apply, return to `context status`. If status says
248
+ After the single batch review apply, return to `context status`. If status says
236
249
  `compile-close-needed`, run deterministic close:
237
250
 
238
251
  ```bash
@@ -257,6 +270,7 @@ Then route to package output when status reaches `ready-to-build`.
257
270
  verbatim text.
258
271
  - [ ] No direct edits were made to `sources/`, `.tmp`, `unapproved/`,
259
272
  `knowledge/`, review HTML, or `dist/`.
273
+ - [ ] Every planned View was staged before opening the one batch Review.
260
274
 
261
275
  ### Final Report
262
276
 
@@ -2,7 +2,7 @@
2
2
  name: skill-review-gate
3
3
  description: >
4
4
  Internal procedure invoked by the public Context continuation entry; not a user slash command.
5
- Opens the review UI, waits for user decisions, applies copied JSONL payloads,
5
+ Opens the review UI, waits for user decisions, applies copied review decision Payloads,
6
6
  and prevents agent-authored approval/rejection decisions unless the user
7
7
  explicitly requests the scoped quick-decision path.
8
8
  tools:
@@ -19,13 +19,16 @@ Run the human review gate. The user decides approval or rejection.
19
19
  - Enter this skill only when the preceding command returns
20
20
  `next_action.human_gate=true`. A no-delta codegraph run returns false and does
21
21
  not need Review.
22
- - Use `context review html <collection> --open` for visual review.
22
+ - For prose, enter only after every View in the confirmed compile batch is
23
+ prepared. For codegraph, enter only after all pending extract phases in the
24
+ confirmed module round are complete. The CLI blocks partial-batch Review.
25
+ - Use `context review html <collection> --open --format json` for visual review.
23
26
  - `<collection>` is an internal production collection such as `architecture`,
24
27
  `sop`, `decision`, or `standards`; it is not an OKF package root such as
25
28
  `wikis`, `guides`, or `rules`.
26
29
  - Always surface the CLI-printed `file_url`. If browser opening fails or the
27
30
  host cannot make a path clickable, also provide `absolute_path`.
28
- - Apply only the JSONL payload copied by the user from the review UI.
31
+ - Apply only the review decision Payload copied by the user from the review UI.
29
32
  - Do not parse `unapproved/entities.jsonl`, `.tmp`, or HTML internals with
30
33
  scripts to synthesize decisions.
31
34
  - If the user explicitly asks for quick or automated approval/rejection, use
@@ -34,7 +37,11 @@ Run the human review gate. The user decides approval or rejection.
34
37
  these commands still enforce the current scoped candidate-id gate.
35
38
  - `context run <extract-phase-id> --auto-promote` is a separate, explicit
36
39
  codegraph-only CI/CD policy. It may apply code add/update/remove deltas and
37
- verify them without this gate; it never applies to semantic knowledge.
40
+ refresh deterministic close, and verify them without this gate; it never
41
+ applies to semantic knowledge. Package build remains an explicit later step.
42
+ - `approved-source-ref-ambiguous` on beta.5 approved codegraph pages is an
43
+ evidence migration, not a new review decision. Rerun the declared codegraph
44
+ extraction, then run `context review migrate-codegraph-refs` and verify.
38
45
 
39
46
  <procedures>
40
47
 
@@ -43,12 +50,14 @@ Run the human review gate. The user decides approval or rejection.
43
50
  For the internal collection reported by status, run:
44
51
 
45
52
  ```bash
46
- context review html <collection> --open
53
+ context review html <collection> --open --format json
47
54
  ```
48
55
 
49
- Tell the user where the page opened and include the CLI-printed `file_url` as a
50
- clickable link plus `absolute_path` as a copyable fallback. Do not assume a
51
- fixed review filename; review scope is collection or `--all`.
56
+ Inspect the returned `opened` field. When it is `true`, tell the user the page
57
+ was opened. When it is `false`, do not claim it opened; report `open_error` and
58
+ provide `file_url` as the primary clickable link plus `absolute_path` as a
59
+ copyable fallback. Do not drop `--open`, and do not assume a fixed review
60
+ filename; review scope is collection or `--all`.
52
61
  Do not substitute OKF package roots (`wikis`, `guides`, `rules`) for this
53
62
  argument; review scope is the internal collection namespace.
54
63
 
@@ -60,7 +69,8 @@ must not choose these states.
60
69
  ### Step 2 — Wait For Payload
61
70
 
62
71
  Ask the user to review candidates in the HTML page, open Payload, copy the
63
- compact JSONL payload, and paste it into the agent chat. The payload records the
72
+ compact review decision Payload, and paste it into the agent chat. Uniform
73
+ decisions produce one JSON line; exceptions add JSONL lines. The Payload records the
64
74
  user's decisions, usually as a default decision plus exceptions, so it should
65
75
  not be expanded into pretty JSON unless the user asks.
66
76
 
@@ -68,7 +78,7 @@ The user should not need to create a payload file manually. Do not continue
68
78
  until the user supplies that payload.
69
79
 
70
80
  If the user instead explicitly asks the agent to use the quick approval or
71
- rejection path, do not synthesize JSONL. Run the scoped quick command with the
81
+ rejection path, do not synthesize a decision Payload. Run the scoped quick command with the
72
82
  candidate id shown by review/list/status and either `--collection <collection>`
73
83
  or `--all`.
74
84
 
@@ -91,6 +101,19 @@ commands to store this payload.
91
101
  Run `context status` after apply. If it reports package output choice, return to
92
102
  `${CLAUDE_PLUGIN_ROOT}/skills/skill-continue-workflow/SKILL.md`.
93
103
 
104
+ If status instead reports `approved-source-ref-ambiguous` for a pre-file-aware
105
+ codegraph ref, explain that the user's decisions remain approved. Rerun its
106
+ declared extraction phase to refresh the symbol index, then run:
107
+
108
+ ```bash
109
+ context review migrate-codegraph-refs
110
+ context verify
111
+ ```
112
+
113
+ Do not reopen Review, synthesize another payload, delete approved pages, or
114
+ filter conflicting symbols. If the ref is already file-aware, report a
115
+ duplicate extract-index defect rather than running the metadata migration.
116
+
94
117
  ### Step 5 — Self-verify Checklist
95
118
 
96
119
  - [ ] Every decision came from the user's copied payload. If not, stop and