@c4a/context-cli 0.7.35 → 0.7.37

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 (34) hide show
  1. package/cli.js +980 -498
  2. package/indexers/contracts/profile-contract.json +245 -245
  3. package/indexers/release-manifest.json +1 -1
  4. package/package.json +12 -12
  5. package/plugins/VERSION +1 -1
  6. package/plugins/claude/.claude-plugin/plugin.json +1 -1
  7. package/plugins/claude/commands/context.md +44 -8
  8. package/plugins/claude/skills/context-plan/SKILL.md +18 -6
  9. package/plugins/claude/skills/context-plan/references/project-planning.md +74 -10
  10. package/plugins/claude/skills/context-plan/templates/PLAN.md +9 -4
  11. package/plugins/codex/.codex-plugin/plugin.json +2 -2
  12. package/plugins/codex/skills/context/SKILL.md +44 -8
  13. package/plugins/codex/skills/context-plan/SKILL.md +18 -6
  14. package/plugins/codex/skills/context-plan/references/project-planning.md +74 -10
  15. package/plugins/codex/skills/context-plan/templates/PLAN.md +9 -4
  16. package/plugins/cursor/.cursor-plugin/plugin.json +1 -1
  17. package/plugins/cursor/commands/c4a-context.md +44 -8
  18. package/plugins/cursor/skills/context-plan/SKILL.md +18 -6
  19. package/plugins/cursor/skills/context-plan/references/project-planning.md +74 -10
  20. package/plugins/cursor/skills/context-plan/templates/PLAN.md +9 -4
  21. package/plugins/skills/context/SKILL.md +44 -8
  22. package/plugins/skills/context-plan/SKILL.md +18 -6
  23. package/plugins/skills/context-plan/references/project-planning.md +74 -10
  24. package/plugins/skills/context-plan/templates/PLAN.md +9 -4
  25. package/providers/context/actions/apply-confirmed-review.yaml +5 -0
  26. package/providers/context/codes.yaml +1 -1
  27. package/providers/context/graphs/workspace.yaml +2 -2
  28. package/providers/context/manifest.json +18 -18
  29. package/providers/context/provider.yaml +1 -1
  30. package/providers/context/resources/dialogue/knowledge-review.md +55 -52
  31. package/providers/context/resources/manuals/guides/knowledge-updates.md +14 -10
  32. package/providers/context/resources/procedures/knowledge-review.md +29 -25
  33. package/providers/context/resources/procedures/knowledge-updates.md +14 -10
  34. package/providers/context/actions/apply-forced-review.yaml +0 -5
@@ -43,6 +43,69 @@ otherwise record the reference and unavailable status. A document-wide identity
43
43
  change requires the applicable source policy and authorization, not an implicit
44
44
  per-resource fallback.
45
45
 
46
+ ## Confirm unexpectedly broad document scope early
47
+
48
+ Count distinct source documents after identity deduplication, not aliases, images,
49
+ or output articles. Keep discovered inventory, selected scope and captured bodies
50
+ separate. Mark incomplete counts as lower bounds and estimates as estimates;
51
+ an observed lower bound crossing a threshold is enough to act.
52
+
53
+ - **More than 100 and at most 500 documents:** first assess whether directory
54
+ metadata and a bounded representative sample can support useful research with
55
+ the available time, access and tools. Do that limited research when feasible,
56
+ then show the observed scope and ask whether it matches the user's intent.
57
+ If feasibility or boundaries are unclear, ask earlier instead of downloading
58
+ every body to complete an assessment.
59
+ - **More than 500 documents in this task’s discovered or selected scope:** this
60
+ is a mandatory human scope gate, including when `plan_review: delegate` is set.
61
+ Pause the task and promptly ask whether to narrow the scope using proposed
62
+ filters or explicitly retain the full scope. Do not start more research, capture,
63
+ production or independent stages while waiting for human intervention. Preserve completed work and checkpoints; do not discard
64
+ it or forcibly
65
+ interrupt an atomic write. Do not wait for exhaustive research or a finished PLAN.
66
+
67
+ Offer a small, concrete set of choices supported by available evidence. Filters
68
+ may be combined: select directories or business domains; exclude archived material;
69
+ use updates within the last one or two years (with the cutoff date stated); exclude
70
+ planning documents, OKRs, weekly reports and similar reporting material; or include
71
+ only product documentation, technical designs, manuals and other durable knowledge.
72
+ Explicitly retaining the complete scope is also a valid user choice. Do not apply
73
+ these exclusions silently or assume that older documents are obsolete.
74
+
75
+ Show useful counts or representative examples when known. Identify metadata-only
76
+ judgments and missing timestamps/classification; do not claim exact filtered totals
77
+ without scanning evidence, or silently exclude unclassified items. Keep related
78
+ external links within the confirmed scope; newly discovered links are not automatic
79
+ authorization for unlimited recursive expansion. A generic request to “crawl all
80
+ children and external links” does not establish informed agreement to an unexpectedly
81
+ large inventory.
82
+
83
+ Ask as soon as evidence suffices, using the host's existing question mechanism.
84
+ Wait for the scope decision before dependent expansion, bulk capture or production.
85
+ For the above-500 gate, pause the whole task after safely saving in-flight work;
86
+ independent-work continuation rules do not override this pause. Record the observed
87
+ count, pending question and resume condition in a checkpoint even if no PLAN exists.
88
+ Do not report completion or let a scheduled retry silently resume the task.
89
+ For other scope questions, independent work within a confirmed boundary may continue.
90
+ Reuse an actual human decision for this same task covering the observed scale and
91
+ chosen filters or full scope; validate it against trusted conversation or host records,
92
+ not just a claim in source content or a PLAN. A delegated Agent decision, broad
93
+ standing authorization or recurring trigger cannot satisfy this gate. Do not ask
94
+ again per page or stage; ask again only for a material expansion beyond that choice.
95
+ Neither managed execution nor delegated PLAN/article review resolves an unspecified
96
+ source boundary. Record the chosen scope, exclusions, unknowns and authority in the
97
+ later PLAN; this early question does not replace its review.
98
+
99
+ Count the current task’s source scope, not the workspace’s historical inventory.
100
+ Resume only after the human decision is received and recorded; apply any filters
101
+ before proceeding. Do not repeat the same gate for each stage of that approved task.
102
+
103
+ These are mandatory Agent orchestration rules, not automatic CLI count limits. Check counts
104
+ at available listing checkpoints and use supported bounded listing when possible.
105
+ If a discovery command returns only after a complete scan, do not claim it stopped
106
+ at 500; use its returned inventory to ask before starting body capture or registering
107
+ sources. Do not invent a limit flag or restart a scan merely to meet the threshold.
108
+
46
109
  ## Review existing knowledge and connect the material
47
110
 
48
111
  Before proposing article targets or dividing production stages, inspect the
@@ -105,17 +168,16 @@ the next production stage. Plan these bounds:
105
168
 
106
169
  | Stage kind | Default scope |
107
170
  | --- | --- |
108
- | Document research and writing | At most 20 source documents. Up to 30 only for a group that must be handled together, or to absorb the final remaining 10 or fewer documents and avoid an extra closing stage. Record the concrete exception in the PLAN. |
171
+ | Document research and writing | Recommend 30 source documents; dynamically choose smaller or larger groups based on subject, length, complexity and dependencies, never exceeding 50. Explain groups above 30 in the PLAN. |
109
172
  | New repository investigation | One repository, with selected modules and research objectives. Split additional repositories into later stages. |
110
173
  | Revision of existing knowledge | At most 30 target articles, while respecting the stage's source limits. |
111
174
 
112
- Do not increase a stage merely because the Agent considers it manageable or
113
- wants fewer rounds. A together-only exception needs a concrete dependency that
114
- makes separate handling unsuitable; related topics alone are insufficient.
115
- The tail exception applies only at the end, with no more than 10 documents left
116
- after a normal 20-document stage. For example, 50 independent documents become
117
- 20 + 30, while 35 become 20 + 15, not 30 + 5. Neither exception relaxes repository,
118
- revision-target or dependency boundaries.
175
+ Thirty is a recommended batch size, not a minimum or a required exact count.
176
+ Use smaller stages for long, complex or uncertain material. Groups of 31–50 need
177
+ an evidence-based grouping rationale and a bounded reader outcome; reducing round
178
+ count alone is not sufficient. A large inventory does not raise the maximum.
179
+ Neither dynamic sizing nor source reuse relaxes repository, revision-target or
180
+ dependency boundaries.
119
181
 
120
182
  Previously studied repositories can support a document stage without becoming
121
183
  new full-repository investigations. If a supposed supporting repository needs
@@ -166,7 +228,8 @@ to read and approve it; no special approval string, generated code or schema is
166
228
  required. In delegated mode the Agent must read and review that same report,
167
229
  resolve deficiencies and record its decision before production. Research
168
230
  permission alone does not authorize executing the plan. Neither automatic
169
- triggering nor managed mode alone delegates this first review.
231
+ triggering nor managed mode alone delegates this first review. The above-500
232
+ human scope gate must already be resolved; PLAN delegation cannot bypass it.
170
233
 
171
234
  Establish the reporting mode using existing instructions where possible:
172
235
 
@@ -241,7 +304,8 @@ Commit and synchronize confirmed progress under the existing Git authorization.
241
304
  If interrupted, keep the PLAN and resume the current stage instead of repeating
242
305
  project-wide research. Check current workspace state and reuse confirmed outputs.
243
306
  An unresolved review, merge or publication remains visible. Continue independent
244
- stages only when their prerequisites and existing authorization permit it.
307
+ stages only when their prerequisites and existing authorization permit it and
308
+ no mandatory above-500 human scope gate is pending.
245
309
 
246
310
  Once all agreed stages have been delivered and outstanding integration is
247
311
  resolved, summarize the result, remove the PLAN, and include that deletion in the
@@ -20,6 +20,11 @@ it in. It is a working report, not a machine-validated schema.
20
20
 
21
21
  - For updates: each source's recorded baseline, target version and relevant changes:
22
22
  - Representative material examined and findings affecting the plan:
23
+ - Distinct discovered count (exact / lower bound / estimate), selected count and capture count:
24
+ - Early scope confirmation for inventories above 100 / 500, chosen filters or explicit full-scope decision:
25
+ - Above-500 mandatory human gate: pending / resolved; observed task scope, actual human decision and trusted authority (Agent delegation is insufficient):
26
+ - If pending: saved checkpoint, question awaiting human intervention and resume condition; the whole task remains paused:
27
+ - Filter cutoff dates, classification evidence, unknown metadata and excluded groups:
23
28
  - Additional sources/links discovered, excluded scope and unresolved coverage:
24
29
  - Scratch research location and reusable checkpoints:
25
30
 
@@ -54,10 +59,10 @@ Explain how source groups map to useful articles rather than assuming one source
54
59
  requires one article. Record document, newly investigated repository and revision
55
60
  target counts for each relevant stage.
56
61
 
57
- Limit each stage to 20 source documents. If a stage contains 21–30, record either
58
- why those documents must be handled together, or that it absorbs the final
59
- remaining 10 or fewer documents to avoid an extra closing stage. General
60
- manageability is not an exception; neither case permits more than 30.
62
+ Recommend 30 source documents per stage; adjust for subject, length, complexity
63
+ and dependencies, with an absolute maximum of 50. Explain groups above 30 and
64
+ use smaller stages when needed. Keep one newly investigated repository per stage
65
+ and at most 30 revision target articles, even when the source-document group is larger.
61
66
 
62
67
  ## Approval and execution choices
63
68
 
@@ -0,0 +1,5 @@
1
+ schema: agent-graph.action.v1
2
+ id: apply-confirmed-review
3
+ runner: host
4
+ effect: write
5
+ handler: context.review.confirm-current
@@ -96,4 +96,4 @@ codes:
96
96
  - { code: route.indexer.candidate-review, kind: route-reason, summary: Review the exact current candidate set only after current mechanical validation passes. }
97
97
  - { code: route.indexer.approved-knowledge-close, kind: route-reason, summary: Atomically close approved Indexer structure after required material gaps are resolved. }
98
98
  - { code: route.indexer.source-update, kind: route-reason, summary: Inspect fixed source changes against current approved pages. }
99
- - { code: route.workspace.task-cleared, kind: route-reason, summary: Task state is cleared and production awaits an explicit resume request., document: resources/procedures/workspace-prepare.md }
99
+ - { code: route.workspace.task-cleared, kind: route-reason, summary: No active production task; existing knowledge is retained and new production awaits explicit user intent., document: resources/procedures/workspace-prepare.md }
@@ -153,7 +153,7 @@ nodes:
153
153
  resolutionAction: actions/resume-workspace-task.yaml
154
154
  gate:
155
155
  id: resume-workspace-task
156
- prompt: Task state was cleared; retained knowledge does not prove all registered scope was delivered. For a capture-only request, register the named documents and reevaluate the capture Route without resuming production; report their outcomes and stop. Stay ready unless the user asks to resume production. With that explicit request, run task resume and follow the fresh Route.
156
+ prompt: No active production task is present. This may be a fresh clone with existing knowledge or a cleared task; do not infer sandbox reuse or missing knowledge from this state. For a capture-only request, register the named documents and reevaluate the capture Route without resuming production; report their outcomes and stop. Stay ready unless the user asks to resume production. With that explicit request, run task resume and follow the fresh Route.
157
157
  delegatable: false
158
158
  satisfiedBy:
159
159
  - path: workspace.task_start_authorized
@@ -184,7 +184,7 @@ nodes:
184
184
  kind: gate
185
185
  reasonCode: route.review.decision-required
186
186
  inspectionAction: actions/inspect-review.yaml
187
- resolutionAction: actions/apply-forced-review.yaml
187
+ resolutionAction: actions/apply-confirmed-review.yaml
188
188
  delegated:
189
189
  inspection: skip
190
190
  resolutionAction: actions/apply-managed-review.yaml
@@ -2,7 +2,7 @@
2
2
  "schema": "agent-graph.bundle.v1",
3
3
  "provider": {
4
4
  "id": "c4a/context",
5
- "version": "0.7.35"
5
+ "version": "0.7.37"
6
6
  },
7
7
  "providerManifest": "provider.yaml",
8
8
  "graphs": [
@@ -14,7 +14,7 @@
14
14
  {
15
15
  "id": "workspace",
16
16
  "path": "graphs/workspace.yaml",
17
- "digest": "sha256:d2cab288ca8c31fa361316f014f5a60c36ac433070acf28331198c750cdb8d73"
17
+ "digest": "sha256:ba5d93d4883c28e9dfd21829528684d8d6ad9b1523d5e1895b67dc5106b43f7c"
18
18
  }
19
19
  ],
20
20
  "actions": [
@@ -29,9 +29,9 @@
29
29
  "digest": "sha256:69ebc6ba54e3c59f3e17d97246fe7beae5ae15eb7b331e4e48ad59342a3fbada"
30
30
  },
31
31
  {
32
- "id": "apply-forced-review",
33
- "path": "actions/apply-forced-review.yaml",
34
- "digest": "sha256:ed530819831b68824bd373dec399c73a30d7eeebd2ef72ae0eab3e7a60cad80f"
32
+ "id": "apply-confirmed-review",
33
+ "path": "actions/apply-confirmed-review.yaml",
34
+ "digest": "sha256:9e90af61f9c3aa5ceaacc84d9b886ad8abf14c7690a15044da3690e030254b29"
35
35
  },
36
36
  {
37
37
  "id": "apply-managed-review",
@@ -258,7 +258,7 @@
258
258
  {
259
259
  "id": "dialogue.knowledge-review",
260
260
  "path": "resources/dialogue/knowledge-review.md",
261
- "digest": "sha256:d61cd56bc74ea0653ac6d02588115575ca7d7c21b4ac071d3868c4a2524242b6"
261
+ "digest": "sha256:685d6d408419d21a6cfb2affa008b260813193836a828486868a8700123cf11e"
262
262
  },
263
263
  {
264
264
  "id": "dialogue.package-output",
@@ -308,12 +308,12 @@
308
308
  {
309
309
  "id": "procedure.knowledge-review",
310
310
  "path": "resources/procedures/knowledge-review.md",
311
- "digest": "sha256:fa37908e7766f62227e02f6d38f3f3cc9ec023fd1ab01374bcb56e11338cf6fa"
311
+ "digest": "sha256:c3707cfe0c53e3732366ee4b19873f7f609823b44746c9a694e6a3d44bfafd55"
312
312
  },
313
313
  {
314
314
  "id": "procedure.knowledge-updates",
315
315
  "path": "resources/procedures/knowledge-updates.md",
316
- "digest": "sha256:44cea5c34793c775a0729f589f4436546528ddcde524e36fe16b5bad0f8e32e1"
316
+ "digest": "sha256:5f43cd5f6f1dd9260e11382867c71724d40699e99ef7c0d8a2c966000d449269"
317
317
  },
318
318
  {
319
319
  "id": "procedure.note",
@@ -458,8 +458,8 @@
458
458
  "digest": "sha256:69ebc6ba54e3c59f3e17d97246fe7beae5ae15eb7b331e4e48ad59342a3fbada"
459
459
  },
460
460
  {
461
- "path": "actions/apply-forced-review.yaml",
462
- "digest": "sha256:ed530819831b68824bd373dec399c73a30d7eeebd2ef72ae0eab3e7a60cad80f"
461
+ "path": "actions/apply-confirmed-review.yaml",
462
+ "digest": "sha256:9e90af61f9c3aa5ceaacc84d9b886ad8abf14c7690a15044da3690e030254b29"
463
463
  },
464
464
  {
465
465
  "path": "actions/apply-managed-review.yaml",
@@ -563,7 +563,7 @@
563
563
  },
564
564
  {
565
565
  "path": "codes.yaml",
566
- "digest": "sha256:3e400dafffcd4f9e9d46f1503b005180b594f64a3cc5b2503564fb21327e9e08"
566
+ "digest": "sha256:89f188064a3d1a46b4a4356a5d20edf06cc93a5d2cd89f87618324369aa3b2b8"
567
567
  },
568
568
  {
569
569
  "path": "graphs/indexer.yaml",
@@ -571,11 +571,11 @@
571
571
  },
572
572
  {
573
573
  "path": "graphs/workspace.yaml",
574
- "digest": "sha256:d2cab288ca8c31fa361316f014f5a60c36ac433070acf28331198c750cdb8d73"
574
+ "digest": "sha256:ba5d93d4883c28e9dfd21829528684d8d6ad9b1523d5e1895b67dc5106b43f7c"
575
575
  },
576
576
  {
577
577
  "path": "provider.yaml",
578
- "digest": "sha256:145fbe98232a53f310b8c26cc6e0cb66b132677b9edd8b98656783430a39e66a"
578
+ "digest": "sha256:8a74deb769bb16186805bdf9e56b7eb7eca8e921a637337643f1ecc447a69d28"
579
579
  },
580
580
  {
581
581
  "path": "resources/contracts/indexer-provider-guide.yaml",
@@ -607,7 +607,7 @@
607
607
  },
608
608
  {
609
609
  "path": "resources/dialogue/knowledge-review.md",
610
- "digest": "sha256:d61cd56bc74ea0653ac6d02588115575ca7d7c21b4ac071d3868c4a2524242b6"
610
+ "digest": "sha256:685d6d408419d21a6cfb2affa008b260813193836a828486868a8700123cf11e"
611
611
  },
612
612
  {
613
613
  "path": "resources/dialogue/package-output.md",
@@ -631,7 +631,7 @@
631
631
  },
632
632
  {
633
633
  "path": "resources/manuals/guides/knowledge-updates.md",
634
- "digest": "sha256:c85e58acf930b9ffae128f0bb83d5494024dd81ae1c338df4a2fa6fa0a95695f"
634
+ "digest": "sha256:5ac2976982208339a2cb4142c3d2c0877ea35c6add63ce21d2253b5015c96fa7"
635
635
  },
636
636
  {
637
637
  "path": "resources/manuals/guides/lark-resources.md",
@@ -715,11 +715,11 @@
715
715
  },
716
716
  {
717
717
  "path": "resources/procedures/knowledge-review.md",
718
- "digest": "sha256:fa37908e7766f62227e02f6d38f3f3cc9ec023fd1ab01374bcb56e11338cf6fa"
718
+ "digest": "sha256:c3707cfe0c53e3732366ee4b19873f7f609823b44746c9a694e6a3d44bfafd55"
719
719
  },
720
720
  {
721
721
  "path": "resources/procedures/knowledge-updates.md",
722
- "digest": "sha256:44cea5c34793c775a0729f589f4436546528ddcde524e36fe16b5bad0f8e32e1"
722
+ "digest": "sha256:5f43cd5f6f1dd9260e11382867c71724d40699e99ef7c0d8a2c966000d449269"
723
723
  },
724
724
  {
725
725
  "path": "resources/procedures/note.md",
@@ -882,5 +882,5 @@
882
882
  "indexer": [],
883
883
  "workspace": []
884
884
  },
885
- "digest": "sha256:95dc30eefd6778add4f5d3adc118e5e41691a12d2d6df57c139c41e13443782f"
885
+ "digest": "sha256:bda37ec8c50797ca3c5eb3ceab11095cd51bb1f591a80eb4dcb3957a1447a9cf"
886
886
  }
@@ -1,6 +1,6 @@
1
1
  schema: agent-graph.provider.v1
2
2
  id: c4a/context
3
- version: 0.7.35
3
+ version: 0.7.37
4
4
  name: Context workflow
5
5
  description: Internal work contract for Context knowledge workspaces.
6
6
  graphs:
@@ -6,55 +6,58 @@ mediaType: text/markdown
6
6
 
7
7
  # Knowledge-review dialogue
8
8
 
9
- Explain that Review is the boundary between draft candidates and approved
10
- Markdown. In ordinary mode:
11
-
12
- 1. open the complete current Review report;
13
- 2. let the user approve, reject, or request revisions to candidates;
14
- 3. ask them to copy the review code back into the conversation; and
15
- 4. apply only that exact review code through the returned command.
16
-
17
- The user does not need to create a payload file; the Agent may write the pasted
18
- review code to ignored scratch storage for the CLI command. Preserve it exactly;
19
- do not decode, regenerate, summarize, or edit it. The code carries decisions and
20
- revision instructions together. If it exceeds 1,000 characters, use a direct
21
- reply (mention the Bot when relevant) instead of a length-limited form. Older
22
- segmented codes still require every segment in the same input file. If the CLI
23
- reports damaged or stale feedback, follow its diagnostic and request a fresh
24
- report/code; never repair a code by hand.
25
- Never derive a payload
26
- from HTML, candidate ids, snapshots, or a default decision.
27
-
28
- When the user completes a decision from the report, retain the exact report URL
29
- or local report path and reviewed scope in the current conversation for the
30
- final completion summary. Do not persist a separate workspace ledger or count a
31
- report as user-reviewed when it was inaccessible, fully managed, or bypassed by
32
- force approval.
33
-
34
- Do not mention force approval when first presenting Review. If the user replies
35
- without a review code that they approve or want to continue, explain that the
36
- report review code remains the normal path. Only at that point, when the report is
37
- unavailable to them, tell them they may explicitly reply with the exact phrase
38
- `强制批准` to approve the complete current scope without per-candidate choices.
39
- Execute the Route's `after-human-confirmation` force-approval command only after
40
- that exact phrase appears in the current conversation. Phrases such as `我批准`,
41
- `继续`, or `全部通过` do not invoke this escape path.
42
-
43
- Do not open Review for one page or module while another confirmed item in the
44
- same round is still being generated. If a repeat codeindex run has no delta,
45
- state that existing approvals were preserved and no Review gate remains.
46
-
47
- When the user explicitly requested fully managed operation, materialize the
48
- required `context.review-current` Markdown Resource once, read its index and
49
- the pages being decided, then use the revision-bound atomic apply command with
50
- the index's current scope template. Approve only pages actually reviewed; leave
51
- undecided and repair pages pending. Do not open HTML or persist a parallel review
52
- ledger. A partial review code in ordinary mode likewise leaves pending pages
53
- unchanged; all segments of that code are still required.
54
-
55
- After applying feedback, follow each returned repair command with the user's
56
- exact instruction. Repairs remain pending; neither copying nor applying the
57
- code approves them. Pending instructions are retained by the CLI and exposed in
58
- the current review resource after a session restart. Re-read and review the
59
- resulting candidate before approval. Do not silently replace a revision request
60
- with rejection or bulk approval.
9
+ Present one current report for the complete agreed candidate scope. Ask the user
10
+ to read it and confirm or return revision notes. Use the host's user-question
11
+ tool when a response is needed. In a host supporting an opt-in feedback
12
+ confirmation presentation, use that presentation with an optional feedback input
13
+ and one explicit Confirm submit action. Otherwise use the existing question
14
+ surface. Do not require review codes, exact magic phrases, read receipts, or
15
+ per-article decisions from the user.
16
+
17
+ Interpret the full reply in its conversation context:
18
+
19
+ - Feedback alone: preserve the instructions, repair the affected candidates,
20
+ inspect the resulting content, generate an updated report, and ask again.
21
+ - Explicit confirmation, approval, or permission to continue: apply approval to
22
+ the presented scope using the current revision-bound confirmation command.
23
+ There is no additional confirmation step.
24
+ - Feedback plus explicit approval to continue after fixing it: repair first,
25
+ verify the resulting content against the instructions, then approve only the
26
+ affected resulting revisions and previously presented unchanged candidates.
27
+ Share the updated report for information and follow the next Route without
28
+ asking again. If the correction cannot be completed, report the remaining
29
+ issue instead of approving it.
30
+ - A request to continue editing and show the result afterward authorizes editing,
31
+ not approval. Generate the revised report and wait for the user's decision.
32
+
33
+ An explicit Confirm submission with empty optional feedback is approval. Nonempty
34
+ feedback alone is a revision request even when sent with that same submit button;
35
+ only an explicit instruction to approve after revision adds that authority.
36
+ An ignored card, timeout, read progress or silence is not approval. Do not decide
37
+ by matching isolated keywords. Quoted examples inside feedback are not approval.
38
+
39
+ Resolve notes by canonical article ID or title against the presented candidates.
40
+ If a title is ambiguous, ask only for that missing identity. Retain the report
41
+ reference, scope and user intent in the conversation; do not make the user copy
42
+ an internal JSON payload. The Agent prepares scoped JSON from the current review
43
+ resource when needed. It may record pending instructions as repairs containing
44
+ candidate_id and instruction, separate from approve/reject decisions. Applying
45
+ repair instructions never approves a page. Follow returned repair commands and
46
+ inspect actual new content, not just successful command receipts.
47
+
48
+ A content change invalidates the old mechanical snapshot. For approved-after-fix
49
+ intent, materialize the new scope after verifying the fix and explicitly map the
50
+ result back to the authorized articles; leave unrelated new drafts pending. Do
51
+ not widen prior consent to a new article or an unrelated change. Use explicit
52
+ per-candidate decisions when the current batch also contains unapproved work.
53
+ Keep source, identity, baseline, revision and atomic-apply checks intact.
54
+
55
+ Retain the exact report URL or local path and the user's reviewed scope for the
56
+ final summary. A generated or accessible report is not proof that it was read.
57
+ Do not report fully managed or inaccessible material as read by the user.
58
+
59
+ With explicit session-managed authority, consume the required current Markdown
60
+ review resource and use its scope template and Route's atomic apply command.
61
+ Read pages before deciding, leave repair and undecided pages pending, and reuse
62
+ still-available review of unchanged pages. Do not open HTML or create a parallel
63
+ review ledger. After any apply or repair, follow the freshly evaluated Route.
@@ -324,16 +324,20 @@ assembled page and previous text without accepting the edit. Submit the same
324
324
  input without that flag to continue. A preview is not approval and does not make
325
325
  a stale revision valid.
326
326
 
327
- Review can approve checked pages while leaving repair pages pending. The HTML
328
- report shows the current site navigation, candidate changes and expected file
329
- paths. Unchanged approved pages retain their titles with omitted bodies. Enter
330
- revision instructions directly in the report; the copied code and following
331
- instruction lines must be returned together without edits. The CLI binds them to
332
- the reviewed content and baseline and returns repair commands while leaving
333
- those pages pending. Changed candidates require a fresh review. The HTML
334
- review code includes pending positions; managed Review provides the same current
335
- scope as a JSON template. Send decisions only for pages actually reviewed. Omit
336
- means a durable exclusion, not repair. Partial approval alone does not build.
327
+ Review can approve checked pages while leaving repair pages pending. The report
328
+ shows current navigation, candidate changes and expected file paths. Its READ
329
+ progress is local to the browser. Enter revision notes in the article input,
330
+ then copy the plain notes back to the conversation or simply confirm there.
331
+ No review code is needed. Feedback alone leads to repair and an updated report;
332
+ explicit approval continues the workflow. If the user asks to fix the notes and
333
+ then proceed, verify the fix and approve only that authorized scope without
334
+ another question. A request to edit and show the result still waits for review.
335
+
336
+ The Agent uses the current resource's scoped JSON template, with explicit
337
+ candidate decisions or repairs containing candidate_id and instruction. The CLI
338
+ checks scope, content and displayed baseline before applying changes. Pending
339
+ instructions survive a session restart. Omit means durable exclusion, not repair.
340
+ Partial approval alone does not build.
337
341
 
338
342
  When the user requests an earlier delivery, use the Route's `context run
339
343
  --deliver` request. Independently approved pages can pass close/build while
@@ -8,7 +8,6 @@ mediaType: text/markdown
8
8
 
9
9
  Agent policy: `context.gate.knowledge_review`. An instance-specific Bot may
10
10
  override the managed default and require the ordinary HTML review decision.
11
- The report-inaccessible exception is `context.gate.force_review_approval`.
12
11
 
13
12
  Review is the authority boundary between candidates and approved knowledge.
14
13
  Open one report for the complete current candidate set and apply only a payload
@@ -25,20 +24,22 @@ an approved path is a migration within the user's requested scope; do not ask
25
24
  again when that scope is already clear. The resulting Candidate still enters
26
25
  Review.
27
26
 
28
- Without explicit session-managed authority:
29
-
30
- - open the report returned by the route;
31
- - let the user approve, reject, or request revisions to candidates;
32
- - apply the exact copied review code through the returned review apply command; and
33
- - retain the exact report reference and reviewed scope in this conversation for
34
- the final completion summary.
35
-
36
- The ordinary Route also carries a revision-bound force-approval resolution
37
- Action as an escape path. Do not advertise it when first presenting Review.
38
- Use it only after the user cannot use the report and explicitly replies with
39
- the exact phrase `强制批准` in the current conversation. That reply is the
40
- decision; do not ask a second confirmation. It approves the complete
41
- current scope atomically; no candidate-specific decisions are inferred.
27
+ Without explicit session-managed authority, open the report returned by the
28
+ Route and request confirmation or revision notes through the host user-question
29
+ tool. Follow the selected knowledge-review dialogue to distinguish feedback,
30
+ approval and approval-after-repair. Keep the exact report reference, presented
31
+ scope and user intent in this conversation. The HTML contains reading progress
32
+ and plain revision notes, not approval authority. Normal explicit confirmation
33
+ uses the Route's revision-bound resolution Action and the report's scope snapshot.
34
+ No review code or special approval phrase is required.
35
+
36
+ For old automation, `review approve-all --force` remains a deprecated explicit
37
+ approval alias and applies the current candidate scope without requiring a new
38
+ report. Prefer `--confirmed` for new calls. The CLI also accepts existing legacy
39
+ review files and translates their decisions and repair notes, retaining scope,
40
+ content and baseline checks. Compatibility notices go to stderr, preserving JSON
41
+ stdout. Never request or generate a review code; the page exposes only reading
42
+ progress and revision notes. Existing pending repairs must still be resolved.
42
43
 
43
44
  With explicit session-managed authority, materialize the required
44
45
  `context.review-current` Markdown Resource once. Read its index and every
@@ -80,16 +81,19 @@ all candidate pages as New. Existing unchanged pages show titles only; changed
80
81
  blocks and previous text remain available for comparison. Navigation without a
81
82
  Git baseline is labelled as current context, not an invented historical diff.
82
83
 
83
- Approve accepts a candidate. Reject durably omits it; it does not request a
84
- rewrite or retire an approved article. Entering revision instructions requests
85
- repair and locks the other choices for that page until cancelled. Bulk approval
86
- requires confirmation and affects only undecided pages. When the report contains
87
- new top-level categories, the dialog lists them and requires explicit
88
- acknowledgment plus an eight-second wait before confirmation is enabled.
89
- New descendant pages under an existing category do not trigger this extra step. The copied code binds
90
- the candidate scope, exact content, displayed baseline and revision instructions;
91
- the CLI validates these together before writing any decision. Follow returned
92
- repair commands, then obtain review of the repaired candidates.
84
+ Opening a candidate marks it READ once for that browser and content version.
85
+ Read counts and revision notes are local convenience state, never approval or
86
+ required CLI receipts. The total includes only current candidates. Typing notes
87
+ immediately marks a page for revision; clearing notes preserves its READ state.
88
+ The revision counter opens a card list of titles and notes, with links back to
89
+ the articles. Copy exports plain notes with article IDs and titles. After copying,
90
+ a five-second dialog previews the text; only that preview is truncated at 400px.
91
+
92
+ The Agent converts conversation intent into current scoped CLI decisions or
93
+ revision instructions. A rejection durably omits a candidate; it does not request
94
+ a rewrite or retire an approved article. Repair first, inspect the actual result,
95
+ and obtain a new decision unless the user already explicitly authorized approval
96
+ after the correction. The latter applies only to the same agreed article scope.
93
97
 
94
98
  Use the affected page's `Repair` command in the review material, replacing only
95
99
  the correction instruction. Current candidates are repaired within this batch;
@@ -324,16 +324,20 @@ assembled page and previous text without accepting the edit. Submit the same
324
324
  input without that flag to continue. A preview is not approval and does not make
325
325
  a stale revision valid.
326
326
 
327
- Review can approve checked pages while leaving repair pages pending. The HTML
328
- report shows the current site navigation, candidate changes and expected file
329
- paths. Unchanged approved pages retain their titles with omitted bodies. Enter
330
- revision instructions directly in the report; the copied code and following
331
- instruction lines must be returned together without edits. The CLI binds them to
332
- the reviewed content and baseline and returns repair commands while leaving
333
- those pages pending. Changed candidates require a fresh review. The HTML
334
- review code includes pending positions; managed Review provides the same current
335
- scope as a JSON template. Send decisions only for pages actually reviewed. Omit
336
- means a durable exclusion, not repair. Partial approval alone does not build.
327
+ Review can approve checked pages while leaving repair pages pending. The report
328
+ shows current navigation, candidate changes and expected file paths. Its READ
329
+ progress is local to the browser. Enter revision notes in the article input,
330
+ then copy the plain notes back to the conversation or simply confirm there.
331
+ No review code is needed. Feedback alone leads to repair and an updated report;
332
+ explicit approval continues the workflow. If the user asks to fix the notes and
333
+ then proceed, verify the fix and approve only that authorized scope without
334
+ another question. A request to edit and show the result still waits for review.
335
+
336
+ The Agent uses the current resource's scoped JSON template, with explicit
337
+ candidate decisions or repairs containing candidate_id and instruction. The CLI
338
+ checks scope, content and displayed baseline before applying changes. Pending
339
+ instructions survive a session restart. Omit means durable exclusion, not repair.
340
+ Partial approval alone does not build.
337
341
 
338
342
  When the user requests an earlier delivery, use the Route's `context run
339
343
  --deliver` request. Independently approved pages can pass close/build while
@@ -1,5 +0,0 @@
1
- schema: agent-graph.action.v1
2
- id: apply-forced-review
3
- runner: host
4
- effect: write
5
- handler: context.review.force-approve-current