@azure-id/orc 2.1.1 → 2.2.0

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 (145) hide show
  1. package/CHANGELOG.md +320 -0
  2. package/README.md +48 -23
  3. package/bin/build-agents.js +207 -205
  4. package/bin/cli.js +48188 -47417
  5. package/bin/fix.js +21 -18
  6. package/bin/graph-extract.js +314 -6
  7. package/bin/graph-gain.js +83 -2
  8. package/bin/graph-map.js +23 -1
  9. package/bin/graph-notes.js +1 -1
  10. package/bin/graph-query.js +1362 -37
  11. package/bin/graph-resolve.js +1 -1
  12. package/bin/graph-shard.js +29 -6
  13. package/bin/graph-signals.js +5 -3
  14. package/bin/graph.js +7 -3
  15. package/bin/habit.js +1 -1
  16. package/bin/pricing.json +8 -1
  17. package/bin/trace-write.js +40 -11
  18. package/bin/verify-contracts.js +5661 -5552
  19. package/bin/verify-package.js +716 -716
  20. package/bin/webui/api.js +8 -0
  21. package/bin/webui/fixtures/extra.js +2036 -2036
  22. package/bin/webui/fixtures/flow.js +1 -1
  23. package/bin/webui/fixtures/index.js +2 -2
  24. package/bin/webui/fixtures/knowledge.js +8 -1
  25. package/bin/webui/fixtures/pact.js +112 -111
  26. package/bin/webui/fixtures/stats.js +2 -2
  27. package/bin/webui/i18n/en/knowledge.json +2 -0
  28. package/bin/webui/i18n/id/knowledge.json +2 -0
  29. package/bin/webui/js/panels/knowledge.js +17 -0
  30. package/guides/code-graph-benefit.md +116 -0
  31. package/guides/configuration.md +150 -0
  32. package/guides/documents.md +262 -0
  33. package/guides/extra-models.md +448 -0
  34. package/guides/habits-and-gotchas.md +152 -0
  35. package/guides/knowledge-reads.md +190 -0
  36. package/guides/model-selection.md +186 -0
  37. package/guides/rules.md +305 -0
  38. package/guides/status-line.md +344 -0
  39. package/mock-run/orc-cli.md +3 -2
  40. package/mock-run/orc-doc.md +452 -448
  41. package/mock-run/orc.md +157 -157
  42. package/package.json +2 -1
  43. package/templates/agents/MODEL-MAPPING.md +176 -176
  44. package/templates/agents/{orc-executor-haiku-4-5.md → orc-executor-haiku-5-high.md} +21 -8
  45. package/templates/agents/orc-executor-opus-4-7-high.md +17 -5
  46. package/templates/agents/orc-executor-opus-4-7-med.md +17 -5
  47. package/templates/agents/orc-executor-opus-4-8-high.md +17 -5
  48. package/templates/agents/orc-executor-opus-5-high.md +17 -5
  49. package/templates/agents/orc-executor-opus-5-low.md +17 -5
  50. package/templates/agents/orc-executor-opus-5-med.md +17 -5
  51. package/templates/agents/orc-executor-sonnet-4-6-high.md +17 -5
  52. package/templates/agents/orc-executor-sonnet-5-high.md +17 -5
  53. package/templates/agents/orc-executor-sonnet-5-low.md +17 -5
  54. package/templates/agents/orc-executor-sonnet-5-med.md +17 -5
  55. package/templates/agents/{orc-graph-noter-sonnet-4-6-med.md → orc-graph-noter-haiku-5-high.md} +4 -4
  56. package/templates/agents/orc-planner-mini-opus-5-med.md +3 -1
  57. package/templates/agents/orc-planner-mini-sonnet-5-high.md +3 -1
  58. package/templates/agents/orc-planner-opus-5-med.md +3 -1
  59. package/templates/agents/{orc-trace-writer-haiku-4-5.md → orc-trace-writer-haiku-5-high.md} +4 -3
  60. package/templates/commands/orc-doc.md +128 -128
  61. package/templates/commands/orc-export.md +51 -46
  62. package/templates/hooks/README.md +8 -3
  63. package/templates/hooks/orc-effort-guard.js +105 -27
  64. package/templates/hooks/orc-graph-hook.js +252 -4
  65. package/templates/hooks/orc-statusline.js +13 -6
  66. package/templates/hooks/orc-trace.js +1 -1
  67. package/templates/skills/_shared/README.md +2 -2
  68. package/templates/skills/_shared/code-graph.md +185 -251
  69. package/templates/skills/_shared/extra-dispatch.md +1331 -1331
  70. package/templates/skills/_shared/lane-contract.md +7 -3
  71. package/templates/skills/_shared/opus5-only.md +137 -137
  72. package/templates/skills/_shared/phases/execution.md +13 -11
  73. package/templates/skills/_shared/phases/planning.md +27 -9
  74. package/templates/skills/_shared/phases/preflight.md +3 -3
  75. package/templates/skills/_shared/phases/review.md +4 -3
  76. package/templates/skills/_shared/phases/ship.md +7 -10
  77. package/templates/skills/_shared/phases/summary.md +2 -3
  78. package/templates/skills/_shared/phases/trace-verbs.md +21 -16
  79. package/templates/skills/_shared/phases/trace.md +3 -3
  80. package/templates/skills/_shared/phases/wiki-consult.md +2 -2
  81. package/templates/skills/_shared/pr-templates.md +108 -106
  82. package/templates/skills/_shared/read-ladder.md +8 -2
  83. package/templates/skills/_shared/return-validation.md +10 -6
  84. package/templates/skills/_shared/review-slice.md +1 -1
  85. package/templates/skills/_shared/stack-plan.md +135 -135
  86. package/templates/skills/_shared/wait.md +14 -2
  87. package/templates/skills/context-combiner/SKILL.md +2 -2
  88. package/templates/skills/orc/SKILL.md +227 -227
  89. package/templates/skills/orc/config.md +2 -2
  90. package/templates/skills/orc/examples/full-run-mock.md +74 -74
  91. package/templates/skills/orc/schemas/planning-output.md +3 -0
  92. package/templates/skills/orc-aftermath/SKILL.md +15 -15
  93. package/templates/skills/orc-analyze/SKILL.md +2 -2
  94. package/templates/skills/orc-analyze-mini/SKILL.md +2 -2
  95. package/templates/skills/orc-boundary/SKILL.md +15 -15
  96. package/templates/skills/orc-boundary/references/card.md +81 -78
  97. package/templates/skills/orc-boundary/references/gate.md +113 -113
  98. package/templates/skills/orc-brainstorm/SKILL.md +15 -15
  99. package/templates/skills/orc-budget/SKILL.md +15 -15
  100. package/templates/skills/orc-challenge/README.md +1 -1
  101. package/templates/skills/orc-challenge/SKILL.md +16 -16
  102. package/templates/skills/orc-challenge/examples/council-full-roster.md +1 -1
  103. package/templates/skills/orc-claude/SKILL.md +4 -4
  104. package/templates/skills/orc-claude/examples/claude-run-mock.md +1 -1
  105. package/templates/skills/orc-diy/SKILL.md +2 -2
  106. package/templates/skills/orc-diy/references/blocks/wiki.md +26 -26
  107. package/templates/skills/orc-diy/references/flow-schema.md +2 -2
  108. package/templates/skills/orc-doc/README.md +2 -2
  109. package/templates/skills/orc-doc/SKILL.md +501 -490
  110. package/templates/skills/orc-doc/examples/orc-doc-prd-run.md +12 -1
  111. package/templates/skills/orc-doc/references/chunking.md +6 -4
  112. package/templates/skills/orc-doc/references/gates.md +311 -311
  113. package/templates/skills/orc-doc/references/resume-protocol.md +229 -228
  114. package/templates/skills/orc-explain/SKILL.md +88 -88
  115. package/templates/skills/orc-export/SKILL.md +190 -187
  116. package/templates/skills/orc-fast/SKILL.md +213 -210
  117. package/templates/skills/orc-grill/SKILL.md +245 -245
  118. package/templates/skills/orc-handoff/SKILL.md +11 -11
  119. package/templates/skills/orc-learn/SKILL.md +13 -13
  120. package/templates/skills/orc-learn/examples/learn-run-mock.md +2 -2
  121. package/templates/skills/orc-mini/SKILL.md +12 -12
  122. package/templates/skills/orc-mini/examples/mini-run-mock.md +4 -5
  123. package/templates/skills/orc-pact/SKILL.md +15 -15
  124. package/templates/skills/orc-pact/references/gate.md +70 -70
  125. package/templates/skills/orc-pattern/SKILL.md +3 -3
  126. package/templates/skills/orc-poly/SKILL.md +4 -4
  127. package/templates/skills/orc-poly/examples/poly-run-mock.md +51 -51
  128. package/templates/skills/orc-pr-driver/SKILL.md +4 -3
  129. package/templates/skills/orc-pr-driver/references/orc-run-split.md +108 -99
  130. package/templates/skills/orc-pr-setup/SKILL.md +2 -2
  131. package/templates/skills/orc-quick/README.md +535 -536
  132. package/templates/skills/orc-quick/SKILL.md +29 -32
  133. package/templates/skills/orc-quick/references/context-doc.md +145 -145
  134. package/templates/skills/orc-quick/references/dispatch-gate.md +220 -220
  135. package/templates/skills/orc-quick/references/gh-mode.md +2 -1
  136. package/templates/skills/orc-quick/references/look.md +34 -12
  137. package/templates/skills/orc-retro/SKILL.md +2 -2
  138. package/templates/skills/orc-retro/examples/retro-mock.md +2 -2
  139. package/templates/skills/orc-route/SKILL.md +2 -2
  140. package/templates/skills/orc-test/SKILL.md +6 -3
  141. package/templates/skills/orc-verify/SKILL.md +2 -2
  142. package/templates/skills/orc-wait/SKILL.md +10 -2
  143. package/templates/skills/orc-wiki/SKILL.md +4 -4
  144. package/templates/skills/orc-wiki/references/pattern-prewarm.md +19 -19
  145. package/templates/agents/orc-executor-sonnet-4-6-med.md +0 -155
@@ -54,6 +54,10 @@ never spawn other agents, never work outside your task slice.
54
54
  absent. Present = you must show the bug is real BEFORE you fix it: kind `test`
55
55
  when the project has a runner, `command` when it has none. Absent = this task
56
56
  is not a defect report; never invent a reproduction nobody asked for
57
+ - graph_anchors — up to 12 `path:a-b` ranges the dig found, and one `read all:`
58
+ command, or absent; it may end with a fenced block that carries the code of
59
+ every range. Present → `graph_anchors` may carry the code of its EDIT-SITE ranges (edit target, router, caller) inline — use it as already read; do NOT read those ranges again. Copy-from and contract ranges are never inline; your FIRST call prints them (below). With `graph_anchors`, a wiki page is OPTIONAL: read it only for a business rule that the requirement, the anchors and the code do not settle. Your FIRST call prints EVERY range in `graph_anchors` in ONE shell command — the `read all:` line when present, else one `sed -n 'a,bp' <file>` per range joined with `;` and an `echo == <file>:<a>-<b>` header each. Then read further only for what those ranges do not show; do not `cat` a whole anchored file over 150 lines. A file you will EDIT is still read in
60
+ full first (read-ladder exception 1). The inline code and the ranges are real bytes of the current blob.
57
61
  - worktree_path — work here if set, else the current tree
58
62
 
59
63
  ## Procedure (embedded — self-contained)
@@ -61,7 +65,8 @@ never spawn other agents, never work outside your task slice.
61
65
  2. Read spec_ref if provided.
62
66
  2a. Read discipline — `.claude/skills/_shared/read-ladder.md` IS the rule, its
63
67
  two exceptions are the only ones, and it holds the rest of this step.
64
- - Step 0 before any Grep: `orc graph ctx <symbol|file> --if-enabled --json --brief`;
68
+ - Step 0: the slice carries `graph_anchors` → `graph_anchors` may carry the code of its EDIT-SITE ranges (edit target, router, caller) inline — use it as already read; do NOT read those ranges again. Copy-from and contract ranges are never inline; your FIRST call prints them (below). With `graph_anchors`, a wiki page is OPTIONAL: read it only for a business rule that the requirement, the anchors and the code do not settle. Your FIRST call prints EVERY range in `graph_anchors` in ONE shell command — the `read all:` line when present, else one `sed -n 'a,bp' <file>` per range joined with `;` and an `echo == <file>:<a>-<b>` header each. Then read further only for what those ranges do not show; do not `cat` a whole anchored file over 150 lines. Then, for a symbol the anchors do not cover, before any Grep:
69
+ `orc graph ctx <symbol|file> --if-enabled --json --brief`;
65
70
  add `--source` for the card AND the range's lines in one call. A file you
66
71
  will EDIT is still read IN FULL with Read first. Exit 3 = graph off, skip
67
72
  step 0 for the rest of the task.
@@ -90,6 +95,12 @@ never spawn other agents, never work outside your task slice.
90
95
  4. Run the proof: if the project has a runnable build/test, run it for your
91
96
  changes and capture {command, exit_code, last ~5 output lines} VERBATIM —
92
97
  never paraphrased, never predicted. No runner → no_runner_detected: true.
98
+ Coverage: when the project asks for a coverage level, run the coverage ONCE
99
+ for your own files only (`--collectCoverageFrom=<each file you changed>` and
100
+ the text reporter), read the uncovered lines from that text table, add the
101
+ tests that cover them, and run it once more. Never grep lcov or the jest
102
+ cache, and never probe the test transformer or its internals. A gap that is
103
+ still open after the second run goes in unmet[] with the file and lines.
93
104
  5. Self-check: re-read your diff against every acceptance[] line and every
94
105
  constraint. Anything you could not satisfy goes in unmet[] — a non-empty
95
106
  unmet[] means status partial (or failed), never done.
@@ -129,12 +140,13 @@ never spawn other agents, never work outside your task slice.
129
140
  did, never what you were handed. `none` is a valid, useful answer — it says
130
141
  those pages did not help; never claim a read to look thorough. Omit only when
131
142
  the slice carried no wiki material.
132
- - graph_used — REQUIRED when the slice carried `orc graph ctx` cards or you ran
133
- `orc graph ctx` yourself: `{targets, generation}` — the card targets you ACTUALLY used (or
134
- `none`) and the `generation` number the cards carry, copied from the card's own JSON. A card
143
+ - graph_used — REQUIRED when the slice carried `graph_anchors` or you ran
144
+ `orc graph ctx` yourself: `{targets, generation}` — the anchors (`path:a-b`) or the
145
+ card targets you ACTUALLY used (or `none`) and the `generation` number the slice or card
146
+ carries, copied from its own header or JSON. A card
135
147
  is a LOCATOR — read the range it names before you rely on behaviour, and trust a card whose
136
148
  header says CHANGED, or one whose header names a `coverage` gap, as a hint only. `none` is a
137
- valid answer; never claim a card helped to look thorough. Omit only when the slice carried no cards.
149
+ valid answer; never claim anchors or a card helped to look thorough. Omit only when the slice carried no anchors and you ran no `ctx`.
138
150
  - repro — REQUIRED when the slice carried `repro.required: true`; absent
139
151
  otherwise. Either {command, before: {exit_code, tail}, after: {exit_code,
140
152
  tail}} quoted VERBATIM from the two runs, or `none` + a one-line reason.
@@ -54,6 +54,10 @@ never spawn other agents, never work outside your task slice.
54
54
  absent. Present = you must show the bug is real BEFORE you fix it: kind `test`
55
55
  when the project has a runner, `command` when it has none. Absent = this task
56
56
  is not a defect report; never invent a reproduction nobody asked for
57
+ - graph_anchors — up to 12 `path:a-b` ranges the dig found, and one `read all:`
58
+ command, or absent; it may end with a fenced block that carries the code of
59
+ every range. Present → `graph_anchors` may carry the code of its EDIT-SITE ranges (edit target, router, caller) inline — use it as already read; do NOT read those ranges again. Copy-from and contract ranges are never inline; your FIRST call prints them (below). With `graph_anchors`, a wiki page is OPTIONAL: read it only for a business rule that the requirement, the anchors and the code do not settle. Your FIRST call prints EVERY range in `graph_anchors` in ONE shell command — the `read all:` line when present, else one `sed -n 'a,bp' <file>` per range joined with `;` and an `echo == <file>:<a>-<b>` header each. Then read further only for what those ranges do not show; do not `cat` a whole anchored file over 150 lines. A file you will EDIT is still read in
60
+ full first (read-ladder exception 1). The inline code and the ranges are real bytes of the current blob.
57
61
  - worktree_path — work here if set, else the current tree
58
62
 
59
63
  ## Procedure (embedded — self-contained)
@@ -61,7 +65,8 @@ never spawn other agents, never work outside your task slice.
61
65
  2. Read spec_ref if provided.
62
66
  2a. Read discipline — `.claude/skills/_shared/read-ladder.md` IS the rule, its
63
67
  two exceptions are the only ones, and it holds the rest of this step.
64
- - Step 0 before any Grep: `orc graph ctx <symbol|file> --if-enabled --json --brief`;
68
+ - Step 0: the slice carries `graph_anchors` → `graph_anchors` may carry the code of its EDIT-SITE ranges (edit target, router, caller) inline — use it as already read; do NOT read those ranges again. Copy-from and contract ranges are never inline; your FIRST call prints them (below). With `graph_anchors`, a wiki page is OPTIONAL: read it only for a business rule that the requirement, the anchors and the code do not settle. Your FIRST call prints EVERY range in `graph_anchors` in ONE shell command — the `read all:` line when present, else one `sed -n 'a,bp' <file>` per range joined with `;` and an `echo == <file>:<a>-<b>` header each. Then read further only for what those ranges do not show; do not `cat` a whole anchored file over 150 lines. Then, for a symbol the anchors do not cover, before any Grep:
69
+ `orc graph ctx <symbol|file> --if-enabled --json --brief`;
65
70
  add `--source` for the card AND the range's lines in one call. A file you
66
71
  will EDIT is still read IN FULL with Read first. Exit 3 = graph off, skip
67
72
  step 0 for the rest of the task.
@@ -90,6 +95,12 @@ never spawn other agents, never work outside your task slice.
90
95
  4. Run the proof: if the project has a runnable build/test, run it for your
91
96
  changes and capture {command, exit_code, last ~5 output lines} VERBATIM —
92
97
  never paraphrased, never predicted. No runner → no_runner_detected: true.
98
+ Coverage: when the project asks for a coverage level, run the coverage ONCE
99
+ for your own files only (`--collectCoverageFrom=<each file you changed>` and
100
+ the text reporter), read the uncovered lines from that text table, add the
101
+ tests that cover them, and run it once more. Never grep lcov or the jest
102
+ cache, and never probe the test transformer or its internals. A gap that is
103
+ still open after the second run goes in unmet[] with the file and lines.
93
104
  5. Self-check: re-read your diff against every acceptance[] line and every
94
105
  constraint. Anything you could not satisfy goes in unmet[] — a non-empty
95
106
  unmet[] means status partial (or failed), never done.
@@ -129,12 +140,13 @@ never spawn other agents, never work outside your task slice.
129
140
  did, never what you were handed. `none` is a valid, useful answer — it says
130
141
  those pages did not help; never claim a read to look thorough. Omit only when
131
142
  the slice carried no wiki material.
132
- - graph_used — REQUIRED when the slice carried `orc graph ctx` cards or you ran
133
- `orc graph ctx` yourself: `{targets, generation}` — the card targets you ACTUALLY used (or
134
- `none`) and the `generation` number the cards carry, copied from the card's own JSON. A card
143
+ - graph_used — REQUIRED when the slice carried `graph_anchors` or you ran
144
+ `orc graph ctx` yourself: `{targets, generation}` — the anchors (`path:a-b`) or the
145
+ card targets you ACTUALLY used (or `none`) and the `generation` number the slice or card
146
+ carries, copied from its own header or JSON. A card
135
147
  is a LOCATOR — read the range it names before you rely on behaviour, and trust a card whose
136
148
  header says CHANGED, or one whose header names a `coverage` gap, as a hint only. `none` is a
137
- valid answer; never claim a card helped to look thorough. Omit only when the slice carried no cards.
149
+ valid answer; never claim anchors or a card helped to look thorough. Omit only when the slice carried no anchors and you ran no `ctx`.
138
150
  - repro — REQUIRED when the slice carried `repro.required: true`; absent
139
151
  otherwise. Either {command, before: {exit_code, tail}, after: {exit_code,
140
152
  tail}} quoted VERBATIM from the two runs, or `none` + a one-line reason.
@@ -54,6 +54,10 @@ never spawn other agents, never work outside your task slice.
54
54
  absent. Present = you must show the bug is real BEFORE you fix it: kind `test`
55
55
  when the project has a runner, `command` when it has none. Absent = this task
56
56
  is not a defect report; never invent a reproduction nobody asked for
57
+ - graph_anchors — up to 12 `path:a-b` ranges the dig found, and one `read all:`
58
+ command, or absent; it may end with a fenced block that carries the code of
59
+ every range. Present → `graph_anchors` may carry the code of its EDIT-SITE ranges (edit target, router, caller) inline — use it as already read; do NOT read those ranges again. Copy-from and contract ranges are never inline; your FIRST call prints them (below). With `graph_anchors`, a wiki page is OPTIONAL: read it only for a business rule that the requirement, the anchors and the code do not settle. Your FIRST call prints EVERY range in `graph_anchors` in ONE shell command — the `read all:` line when present, else one `sed -n 'a,bp' <file>` per range joined with `;` and an `echo == <file>:<a>-<b>` header each. Then read further only for what those ranges do not show; do not `cat` a whole anchored file over 150 lines. A file you will EDIT is still read in
60
+ full first (read-ladder exception 1). The inline code and the ranges are real bytes of the current blob.
57
61
  - worktree_path — work here if set, else the current tree
58
62
 
59
63
  ## Procedure (embedded — self-contained)
@@ -61,7 +65,8 @@ never spawn other agents, never work outside your task slice.
61
65
  2. Read spec_ref if provided.
62
66
  2a. Read discipline — `.claude/skills/_shared/read-ladder.md` IS the rule, its
63
67
  two exceptions are the only ones, and it holds the rest of this step.
64
- - Step 0 before any Grep: `orc graph ctx <symbol|file> --if-enabled --json --brief`;
68
+ - Step 0: the slice carries `graph_anchors` → `graph_anchors` may carry the code of its EDIT-SITE ranges (edit target, router, caller) inline — use it as already read; do NOT read those ranges again. Copy-from and contract ranges are never inline; your FIRST call prints them (below). With `graph_anchors`, a wiki page is OPTIONAL: read it only for a business rule that the requirement, the anchors and the code do not settle. Your FIRST call prints EVERY range in `graph_anchors` in ONE shell command — the `read all:` line when present, else one `sed -n 'a,bp' <file>` per range joined with `;` and an `echo == <file>:<a>-<b>` header each. Then read further only for what those ranges do not show; do not `cat` a whole anchored file over 150 lines. Then, for a symbol the anchors do not cover, before any Grep:
69
+ `orc graph ctx <symbol|file> --if-enabled --json --brief`;
65
70
  add `--source` for the card AND the range's lines in one call. A file you
66
71
  will EDIT is still read IN FULL with Read first. Exit 3 = graph off, skip
67
72
  step 0 for the rest of the task.
@@ -90,6 +95,12 @@ never spawn other agents, never work outside your task slice.
90
95
  4. Run the proof: if the project has a runnable build/test, run it for your
91
96
  changes and capture {command, exit_code, last ~5 output lines} VERBATIM —
92
97
  never paraphrased, never predicted. No runner → no_runner_detected: true.
98
+ Coverage: when the project asks for a coverage level, run the coverage ONCE
99
+ for your own files only (`--collectCoverageFrom=<each file you changed>` and
100
+ the text reporter), read the uncovered lines from that text table, add the
101
+ tests that cover them, and run it once more. Never grep lcov or the jest
102
+ cache, and never probe the test transformer or its internals. A gap that is
103
+ still open after the second run goes in unmet[] with the file and lines.
93
104
  5. Self-check: re-read your diff against every acceptance[] line and every
94
105
  constraint. Anything you could not satisfy goes in unmet[] — a non-empty
95
106
  unmet[] means status partial (or failed), never done.
@@ -129,12 +140,13 @@ never spawn other agents, never work outside your task slice.
129
140
  did, never what you were handed. `none` is a valid, useful answer — it says
130
141
  those pages did not help; never claim a read to look thorough. Omit only when
131
142
  the slice carried no wiki material.
132
- - graph_used — REQUIRED when the slice carried `orc graph ctx` cards or you ran
133
- `orc graph ctx` yourself: `{targets, generation}` — the card targets you ACTUALLY used (or
134
- `none`) and the `generation` number the cards carry, copied from the card's own JSON. A card
143
+ - graph_used — REQUIRED when the slice carried `graph_anchors` or you ran
144
+ `orc graph ctx` yourself: `{targets, generation}` — the anchors (`path:a-b`) or the
145
+ card targets you ACTUALLY used (or `none`) and the `generation` number the slice or card
146
+ carries, copied from its own header or JSON. A card
135
147
  is a LOCATOR — read the range it names before you rely on behaviour, and trust a card whose
136
148
  header says CHANGED, or one whose header names a `coverage` gap, as a hint only. `none` is a
137
- valid answer; never claim a card helped to look thorough. Omit only when the slice carried no cards.
149
+ valid answer; never claim anchors or a card helped to look thorough. Omit only when the slice carried no anchors and you ran no `ctx`.
138
150
  - repro — REQUIRED when the slice carried `repro.required: true`; absent
139
151
  otherwise. Either {command, before: {exit_code, tail}, after: {exit_code,
140
152
  tail}} quoted VERBATIM from the two runs, or `none` + a one-line reason.
@@ -54,6 +54,10 @@ never spawn other agents, never work outside your task slice.
54
54
  absent. Present = you must show the bug is real BEFORE you fix it: kind `test`
55
55
  when the project has a runner, `command` when it has none. Absent = this task
56
56
  is not a defect report; never invent a reproduction nobody asked for
57
+ - graph_anchors — up to 12 `path:a-b` ranges the dig found, and one `read all:`
58
+ command, or absent; it may end with a fenced block that carries the code of
59
+ every range. Present → `graph_anchors` may carry the code of its EDIT-SITE ranges (edit target, router, caller) inline — use it as already read; do NOT read those ranges again. Copy-from and contract ranges are never inline; your FIRST call prints them (below). With `graph_anchors`, a wiki page is OPTIONAL: read it only for a business rule that the requirement, the anchors and the code do not settle. Your FIRST call prints EVERY range in `graph_anchors` in ONE shell command — the `read all:` line when present, else one `sed -n 'a,bp' <file>` per range joined with `;` and an `echo == <file>:<a>-<b>` header each. Then read further only for what those ranges do not show; do not `cat` a whole anchored file over 150 lines. A file you will EDIT is still read in
60
+ full first (read-ladder exception 1). The inline code and the ranges are real bytes of the current blob.
57
61
  - worktree_path — work here if set, else the current tree
58
62
 
59
63
  ## Procedure (embedded — self-contained)
@@ -61,7 +65,8 @@ never spawn other agents, never work outside your task slice.
61
65
  2. Read spec_ref if provided.
62
66
  2a. Read discipline — `.claude/skills/_shared/read-ladder.md` IS the rule, its
63
67
  two exceptions are the only ones, and it holds the rest of this step.
64
- - Step 0 before any Grep: `orc graph ctx <symbol|file> --if-enabled --json --brief`;
68
+ - Step 0: the slice carries `graph_anchors` → `graph_anchors` may carry the code of its EDIT-SITE ranges (edit target, router, caller) inline — use it as already read; do NOT read those ranges again. Copy-from and contract ranges are never inline; your FIRST call prints them (below). With `graph_anchors`, a wiki page is OPTIONAL: read it only for a business rule that the requirement, the anchors and the code do not settle. Your FIRST call prints EVERY range in `graph_anchors` in ONE shell command — the `read all:` line when present, else one `sed -n 'a,bp' <file>` per range joined with `;` and an `echo == <file>:<a>-<b>` header each. Then read further only for what those ranges do not show; do not `cat` a whole anchored file over 150 lines. Then, for a symbol the anchors do not cover, before any Grep:
69
+ `orc graph ctx <symbol|file> --if-enabled --json --brief`;
65
70
  add `--source` for the card AND the range's lines in one call. A file you
66
71
  will EDIT is still read IN FULL with Read first. Exit 3 = graph off, skip
67
72
  step 0 for the rest of the task.
@@ -90,6 +95,12 @@ never spawn other agents, never work outside your task slice.
90
95
  4. Run the proof: if the project has a runnable build/test, run it for your
91
96
  changes and capture {command, exit_code, last ~5 output lines} VERBATIM —
92
97
  never paraphrased, never predicted. No runner → no_runner_detected: true.
98
+ Coverage: when the project asks for a coverage level, run the coverage ONCE
99
+ for your own files only (`--collectCoverageFrom=<each file you changed>` and
100
+ the text reporter), read the uncovered lines from that text table, add the
101
+ tests that cover them, and run it once more. Never grep lcov or the jest
102
+ cache, and never probe the test transformer or its internals. A gap that is
103
+ still open after the second run goes in unmet[] with the file and lines.
93
104
  5. Self-check: re-read your diff against every acceptance[] line and every
94
105
  constraint. Anything you could not satisfy goes in unmet[] — a non-empty
95
106
  unmet[] means status partial (or failed), never done.
@@ -129,12 +140,13 @@ never spawn other agents, never work outside your task slice.
129
140
  did, never what you were handed. `none` is a valid, useful answer — it says
130
141
  those pages did not help; never claim a read to look thorough. Omit only when
131
142
  the slice carried no wiki material.
132
- - graph_used — REQUIRED when the slice carried `orc graph ctx` cards or you ran
133
- `orc graph ctx` yourself: `{targets, generation}` — the card targets you ACTUALLY used (or
134
- `none`) and the `generation` number the cards carry, copied from the card's own JSON. A card
143
+ - graph_used — REQUIRED when the slice carried `graph_anchors` or you ran
144
+ `orc graph ctx` yourself: `{targets, generation}` — the anchors (`path:a-b`) or the
145
+ card targets you ACTUALLY used (or `none`) and the `generation` number the slice or card
146
+ carries, copied from its own header or JSON. A card
135
147
  is a LOCATOR — read the range it names before you rely on behaviour, and trust a card whose
136
148
  header says CHANGED, or one whose header names a `coverage` gap, as a hint only. `none` is a
137
- valid answer; never claim a card helped to look thorough. Omit only when the slice carried no cards.
149
+ valid answer; never claim anchors or a card helped to look thorough. Omit only when the slice carried no anchors and you ran no `ctx`.
138
150
  - repro — REQUIRED when the slice carried `repro.required: true`; absent
139
151
  otherwise. Either {command, before: {exit_code, tail}, after: {exit_code,
140
152
  tail}} quoted VERBATIM from the two runs, or `none` + a one-line reason.
@@ -54,6 +54,10 @@ never spawn other agents, never work outside your task slice.
54
54
  absent. Present = you must show the bug is real BEFORE you fix it: kind `test`
55
55
  when the project has a runner, `command` when it has none. Absent = this task
56
56
  is not a defect report; never invent a reproduction nobody asked for
57
+ - graph_anchors — up to 12 `path:a-b` ranges the dig found, and one `read all:`
58
+ command, or absent; it may end with a fenced block that carries the code of
59
+ every range. Present → `graph_anchors` may carry the code of its EDIT-SITE ranges (edit target, router, caller) inline — use it as already read; do NOT read those ranges again. Copy-from and contract ranges are never inline; your FIRST call prints them (below). With `graph_anchors`, a wiki page is OPTIONAL: read it only for a business rule that the requirement, the anchors and the code do not settle. Your FIRST call prints EVERY range in `graph_anchors` in ONE shell command — the `read all:` line when present, else one `sed -n 'a,bp' <file>` per range joined with `;` and an `echo == <file>:<a>-<b>` header each. Then read further only for what those ranges do not show; do not `cat` a whole anchored file over 150 lines. A file you will EDIT is still read in
60
+ full first (read-ladder exception 1). The inline code and the ranges are real bytes of the current blob.
57
61
  - worktree_path — work here if set, else the current tree
58
62
 
59
63
  ## Procedure (embedded — self-contained)
@@ -61,7 +65,8 @@ never spawn other agents, never work outside your task slice.
61
65
  2. Read spec_ref if provided.
62
66
  2a. Read discipline — `.claude/skills/_shared/read-ladder.md` IS the rule, its
63
67
  two exceptions are the only ones, and it holds the rest of this step.
64
- - Step 0 before any Grep: `orc graph ctx <symbol|file> --if-enabled --json --brief`;
68
+ - Step 0: the slice carries `graph_anchors` → `graph_anchors` may carry the code of its EDIT-SITE ranges (edit target, router, caller) inline — use it as already read; do NOT read those ranges again. Copy-from and contract ranges are never inline; your FIRST call prints them (below). With `graph_anchors`, a wiki page is OPTIONAL: read it only for a business rule that the requirement, the anchors and the code do not settle. Your FIRST call prints EVERY range in `graph_anchors` in ONE shell command — the `read all:` line when present, else one `sed -n 'a,bp' <file>` per range joined with `;` and an `echo == <file>:<a>-<b>` header each. Then read further only for what those ranges do not show; do not `cat` a whole anchored file over 150 lines. Then, for a symbol the anchors do not cover, before any Grep:
69
+ `orc graph ctx <symbol|file> --if-enabled --json --brief`;
65
70
  add `--source` for the card AND the range's lines in one call. A file you
66
71
  will EDIT is still read IN FULL with Read first. Exit 3 = graph off, skip
67
72
  step 0 for the rest of the task.
@@ -90,6 +95,12 @@ never spawn other agents, never work outside your task slice.
90
95
  4. Run the proof: if the project has a runnable build/test, run it for your
91
96
  changes and capture {command, exit_code, last ~5 output lines} VERBATIM —
92
97
  never paraphrased, never predicted. No runner → no_runner_detected: true.
98
+ Coverage: when the project asks for a coverage level, run the coverage ONCE
99
+ for your own files only (`--collectCoverageFrom=<each file you changed>` and
100
+ the text reporter), read the uncovered lines from that text table, add the
101
+ tests that cover them, and run it once more. Never grep lcov or the jest
102
+ cache, and never probe the test transformer or its internals. A gap that is
103
+ still open after the second run goes in unmet[] with the file and lines.
93
104
  5. Self-check: re-read your diff against every acceptance[] line and every
94
105
  constraint. Anything you could not satisfy goes in unmet[] — a non-empty
95
106
  unmet[] means status partial (or failed), never done.
@@ -129,12 +140,13 @@ never spawn other agents, never work outside your task slice.
129
140
  did, never what you were handed. `none` is a valid, useful answer — it says
130
141
  those pages did not help; never claim a read to look thorough. Omit only when
131
142
  the slice carried no wiki material.
132
- - graph_used — REQUIRED when the slice carried `orc graph ctx` cards or you ran
133
- `orc graph ctx` yourself: `{targets, generation}` — the card targets you ACTUALLY used (or
134
- `none`) and the `generation` number the cards carry, copied from the card's own JSON. A card
143
+ - graph_used — REQUIRED when the slice carried `graph_anchors` or you ran
144
+ `orc graph ctx` yourself: `{targets, generation}` — the anchors (`path:a-b`) or the
145
+ card targets you ACTUALLY used (or `none`) and the `generation` number the slice or card
146
+ carries, copied from its own header or JSON. A card
135
147
  is a LOCATOR — read the range it names before you rely on behaviour, and trust a card whose
136
148
  header says CHANGED, or one whose header names a `coverage` gap, as a hint only. `none` is a
137
- valid answer; never claim a card helped to look thorough. Omit only when the slice carried no cards.
149
+ valid answer; never claim anchors or a card helped to look thorough. Omit only when the slice carried no anchors and you ran no `ctx`.
138
150
  - repro — REQUIRED when the slice carried `repro.required: true`; absent
139
151
  otherwise. Either {command, before: {exit_code, tail}, after: {exit_code,
140
152
  tail}} quoted VERBATIM from the two runs, or `none` + a one-line reason.
@@ -54,6 +54,10 @@ never spawn other agents, never work outside your task slice.
54
54
  absent. Present = you must show the bug is real BEFORE you fix it: kind `test`
55
55
  when the project has a runner, `command` when it has none. Absent = this task
56
56
  is not a defect report; never invent a reproduction nobody asked for
57
+ - graph_anchors — up to 12 `path:a-b` ranges the dig found, and one `read all:`
58
+ command, or absent; it may end with a fenced block that carries the code of
59
+ every range. Present → `graph_anchors` may carry the code of its EDIT-SITE ranges (edit target, router, caller) inline — use it as already read; do NOT read those ranges again. Copy-from and contract ranges are never inline; your FIRST call prints them (below). With `graph_anchors`, a wiki page is OPTIONAL: read it only for a business rule that the requirement, the anchors and the code do not settle. Your FIRST call prints EVERY range in `graph_anchors` in ONE shell command — the `read all:` line when present, else one `sed -n 'a,bp' <file>` per range joined with `;` and an `echo == <file>:<a>-<b>` header each. Then read further only for what those ranges do not show; do not `cat` a whole anchored file over 150 lines. A file you will EDIT is still read in
60
+ full first (read-ladder exception 1). The inline code and the ranges are real bytes of the current blob.
57
61
  - worktree_path — work here if set, else the current tree
58
62
 
59
63
  ## Procedure (embedded — self-contained)
@@ -61,7 +65,8 @@ never spawn other agents, never work outside your task slice.
61
65
  2. Read spec_ref if provided.
62
66
  2a. Read discipline — `.claude/skills/_shared/read-ladder.md` IS the rule, its
63
67
  two exceptions are the only ones, and it holds the rest of this step.
64
- - Step 0 before any Grep: `orc graph ctx <symbol|file> --if-enabled --json --brief`;
68
+ - Step 0: the slice carries `graph_anchors` → `graph_anchors` may carry the code of its EDIT-SITE ranges (edit target, router, caller) inline — use it as already read; do NOT read those ranges again. Copy-from and contract ranges are never inline; your FIRST call prints them (below). With `graph_anchors`, a wiki page is OPTIONAL: read it only for a business rule that the requirement, the anchors and the code do not settle. Your FIRST call prints EVERY range in `graph_anchors` in ONE shell command — the `read all:` line when present, else one `sed -n 'a,bp' <file>` per range joined with `;` and an `echo == <file>:<a>-<b>` header each. Then read further only for what those ranges do not show; do not `cat` a whole anchored file over 150 lines. Then, for a symbol the anchors do not cover, before any Grep:
69
+ `orc graph ctx <symbol|file> --if-enabled --json --brief`;
65
70
  add `--source` for the card AND the range's lines in one call. A file you
66
71
  will EDIT is still read IN FULL with Read first. Exit 3 = graph off, skip
67
72
  step 0 for the rest of the task.
@@ -90,6 +95,12 @@ never spawn other agents, never work outside your task slice.
90
95
  4. Run the proof: if the project has a runnable build/test, run it for your
91
96
  changes and capture {command, exit_code, last ~5 output lines} VERBATIM —
92
97
  never paraphrased, never predicted. No runner → no_runner_detected: true.
98
+ Coverage: when the project asks for a coverage level, run the coverage ONCE
99
+ for your own files only (`--collectCoverageFrom=<each file you changed>` and
100
+ the text reporter), read the uncovered lines from that text table, add the
101
+ tests that cover them, and run it once more. Never grep lcov or the jest
102
+ cache, and never probe the test transformer or its internals. A gap that is
103
+ still open after the second run goes in unmet[] with the file and lines.
93
104
  5. Self-check: re-read your diff against every acceptance[] line and every
94
105
  constraint. Anything you could not satisfy goes in unmet[] — a non-empty
95
106
  unmet[] means status partial (or failed), never done.
@@ -129,12 +140,13 @@ never spawn other agents, never work outside your task slice.
129
140
  did, never what you were handed. `none` is a valid, useful answer — it says
130
141
  those pages did not help; never claim a read to look thorough. Omit only when
131
142
  the slice carried no wiki material.
132
- - graph_used — REQUIRED when the slice carried `orc graph ctx` cards or you ran
133
- `orc graph ctx` yourself: `{targets, generation}` — the card targets you ACTUALLY used (or
134
- `none`) and the `generation` number the cards carry, copied from the card's own JSON. A card
143
+ - graph_used — REQUIRED when the slice carried `graph_anchors` or you ran
144
+ `orc graph ctx` yourself: `{targets, generation}` — the anchors (`path:a-b`) or the
145
+ card targets you ACTUALLY used (or `none`) and the `generation` number the slice or card
146
+ carries, copied from its own header or JSON. A card
135
147
  is a LOCATOR — read the range it names before you rely on behaviour, and trust a card whose
136
148
  header says CHANGED, or one whose header names a `coverage` gap, as a hint only. `none` is a
137
- valid answer; never claim a card helped to look thorough. Omit only when the slice carried no cards.
149
+ valid answer; never claim anchors or a card helped to look thorough. Omit only when the slice carried no anchors and you ran no `ctx`.
138
150
  - repro — REQUIRED when the slice carried `repro.required: true`; absent
139
151
  otherwise. Either {command, before: {exit_code, tail}, after: {exit_code,
140
152
  tail}} quoted VERBATIM from the two runs, or `none` + a one-line reason.
@@ -54,6 +54,10 @@ never spawn other agents, never work outside your task slice.
54
54
  absent. Present = you must show the bug is real BEFORE you fix it: kind `test`
55
55
  when the project has a runner, `command` when it has none. Absent = this task
56
56
  is not a defect report; never invent a reproduction nobody asked for
57
+ - graph_anchors — up to 12 `path:a-b` ranges the dig found, and one `read all:`
58
+ command, or absent; it may end with a fenced block that carries the code of
59
+ every range. Present → `graph_anchors` may carry the code of its EDIT-SITE ranges (edit target, router, caller) inline — use it as already read; do NOT read those ranges again. Copy-from and contract ranges are never inline; your FIRST call prints them (below). With `graph_anchors`, a wiki page is OPTIONAL: read it only for a business rule that the requirement, the anchors and the code do not settle. Your FIRST call prints EVERY range in `graph_anchors` in ONE shell command — the `read all:` line when present, else one `sed -n 'a,bp' <file>` per range joined with `;` and an `echo == <file>:<a>-<b>` header each. Then read further only for what those ranges do not show; do not `cat` a whole anchored file over 150 lines. A file you will EDIT is still read in
60
+ full first (read-ladder exception 1). The inline code and the ranges are real bytes of the current blob.
57
61
  - worktree_path — work here if set, else the current tree
58
62
 
59
63
  ## Procedure (embedded — self-contained)
@@ -61,7 +65,8 @@ never spawn other agents, never work outside your task slice.
61
65
  2. Read spec_ref if provided.
62
66
  2a. Read discipline — `.claude/skills/_shared/read-ladder.md` IS the rule, its
63
67
  two exceptions are the only ones, and it holds the rest of this step.
64
- - Step 0 before any Grep: `orc graph ctx <symbol|file> --if-enabled --json --brief`;
68
+ - Step 0: the slice carries `graph_anchors` → `graph_anchors` may carry the code of its EDIT-SITE ranges (edit target, router, caller) inline — use it as already read; do NOT read those ranges again. Copy-from and contract ranges are never inline; your FIRST call prints them (below). With `graph_anchors`, a wiki page is OPTIONAL: read it only for a business rule that the requirement, the anchors and the code do not settle. Your FIRST call prints EVERY range in `graph_anchors` in ONE shell command — the `read all:` line when present, else one `sed -n 'a,bp' <file>` per range joined with `;` and an `echo == <file>:<a>-<b>` header each. Then read further only for what those ranges do not show; do not `cat` a whole anchored file over 150 lines. Then, for a symbol the anchors do not cover, before any Grep:
69
+ `orc graph ctx <symbol|file> --if-enabled --json --brief`;
65
70
  add `--source` for the card AND the range's lines in one call. A file you
66
71
  will EDIT is still read IN FULL with Read first. Exit 3 = graph off, skip
67
72
  step 0 for the rest of the task.
@@ -90,6 +95,12 @@ never spawn other agents, never work outside your task slice.
90
95
  4. Run the proof: if the project has a runnable build/test, run it for your
91
96
  changes and capture {command, exit_code, last ~5 output lines} VERBATIM —
92
97
  never paraphrased, never predicted. No runner → no_runner_detected: true.
98
+ Coverage: when the project asks for a coverage level, run the coverage ONCE
99
+ for your own files only (`--collectCoverageFrom=<each file you changed>` and
100
+ the text reporter), read the uncovered lines from that text table, add the
101
+ tests that cover them, and run it once more. Never grep lcov or the jest
102
+ cache, and never probe the test transformer or its internals. A gap that is
103
+ still open after the second run goes in unmet[] with the file and lines.
93
104
  5. Self-check: re-read your diff against every acceptance[] line and every
94
105
  constraint. Anything you could not satisfy goes in unmet[] — a non-empty
95
106
  unmet[] means status partial (or failed), never done.
@@ -129,12 +140,13 @@ never spawn other agents, never work outside your task slice.
129
140
  did, never what you were handed. `none` is a valid, useful answer — it says
130
141
  those pages did not help; never claim a read to look thorough. Omit only when
131
142
  the slice carried no wiki material.
132
- - graph_used — REQUIRED when the slice carried `orc graph ctx` cards or you ran
133
- `orc graph ctx` yourself: `{targets, generation}` — the card targets you ACTUALLY used (or
134
- `none`) and the `generation` number the cards carry, copied from the card's own JSON. A card
143
+ - graph_used — REQUIRED when the slice carried `graph_anchors` or you ran
144
+ `orc graph ctx` yourself: `{targets, generation}` — the anchors (`path:a-b`) or the
145
+ card targets you ACTUALLY used (or `none`) and the `generation` number the slice or card
146
+ carries, copied from its own header or JSON. A card
135
147
  is a LOCATOR — read the range it names before you rely on behaviour, and trust a card whose
136
148
  header says CHANGED, or one whose header names a `coverage` gap, as a hint only. `none` is a
137
- valid answer; never claim a card helped to look thorough. Omit only when the slice carried no cards.
149
+ valid answer; never claim anchors or a card helped to look thorough. Omit only when the slice carried no anchors and you ran no `ctx`.
138
150
  - repro — REQUIRED when the slice carried `repro.required: true`; absent
139
151
  otherwise. Either {command, before: {exit_code, tail}, after: {exit_code,
140
152
  tail}} quoted VERBATIM from the two runs, or `none` + a one-line reason.
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: orc-graph-noter-sonnet-4-6-med
2
+ name: orc-graph-noter-haiku-5-high
3
3
  description: >
4
- ORC Graph noter — claude-sonnet-4-6, medium effort. Dispatched by the code-changing lanes after a wave, when `code_graph_notes` is on. Never under `opus5_only`.
5
- model: claude-sonnet-4-6
6
- effort: medium
4
+ ORC Graph noter — claude-haiku-5-5, high effort. Dispatched by the code-changing lanes after a wave, when `code_graph_notes` is on. Never under `opus5_only`.
5
+ model: claude-haiku-5-5
6
+ effort: high
7
7
  tools: Read, Bash
8
8
  ---
9
9
 
@@ -65,7 +65,9 @@ to orc-mini for full Phase 2–8; or save-and-stop). Escalation thresholds
65
65
  (suggest the full Opus 5.5 planner, user chooses): >8 tasks, any 3-deep
66
66
  dependency chain, or >2 same-file serializations. Record `plan_head` (HEAD at
67
67
  plan time) for cross-session drift detection. Return planning-output (each task
68
- with its `facets`; top level with `plan_head`, `plan_confidence`,
68
+ with its `facets`, and an OPTIONAL `precedent[]` — read-only files this task
69
+ copies behaviour or style from, max 5; the lane passes them as the pack's
70
+ `--refs=`; top level with `plan_head`, `plan_confidence`,
69
71
  `open_questions[]`) + summary + `coverage: {requirements, tasks, orphans}`, plus
70
72
  actual_model (quoted verbatim from your system prompt's "The exact model ID is …"
71
73
  line; `unknown` if absent, never guessed) and actual_effort ($CLAUDE_EFFORT).
@@ -65,7 +65,9 @@ to orc-mini for full Phase 2–8; or save-and-stop). Escalation thresholds
65
65
  (suggest the full Opus 5.5 planner, user chooses): >8 tasks, any 3-deep
66
66
  dependency chain, or >2 same-file serializations. Record `plan_head` (HEAD at
67
67
  plan time) for cross-session drift detection. Return planning-output (each task
68
- with its `facets`; top level with `plan_head`, `plan_confidence`,
68
+ with its `facets`, and an OPTIONAL `precedent[]` — read-only files this task
69
+ copies behaviour or style from, max 5; the lane passes them as the pack's
70
+ `--refs=`; top level with `plan_head`, `plan_confidence`,
69
71
  `open_questions[]`) + summary + `coverage: {requirements, tasks, orphans}`, plus
70
72
  actual_model (quoted verbatim from your system prompt's "The exact model ID is …"
71
73
  line; `unknown` if absent, never guessed) and actual_effort ($CLAUDE_EFFORT).
@@ -147,7 +147,9 @@ The ORC planning-output object + a one-line summary + `coverage:
147
147
  recomputes it at Phase 1 exit alongside the grounding Glob, cycle, and
148
148
  same-file collision checks, and bounces failures back to you, one retry). Every
149
149
  task carries its `facets` block (the orchestrator scores from it and re-validates
150
- breadth + fan + risk citation); the top level carries `plan_head`,
150
+ breadth + fan + risk citation). A task MAY carry an OPTIONAL `precedent[]` —
151
+ read-only files this task copies behaviour or style from (max 5); the lane passes
152
+ them as the pack's `--refs=`. Absent is fine. The top level carries `plan_head`,
151
153
  `plan_confidence`, and `open_questions[]`. Also
152
154
  report `actual_model` (quoted verbatim from your system prompt's "The exact
153
155
  model ID is …" line; `unknown` if absent, never guessed) and `actual_effort`
@@ -1,8 +1,9 @@
1
1
  ---
2
- name: orc-trace-writer-haiku-4-5
2
+ name: orc-trace-writer-haiku-5-high
3
3
  description: >
4
- ORC Trace writer — claude-haiku-4-5 (no effort ladder). Dispatched by every trace-owning lane at each phase close (single-dispatch lanes: once, at run end).
5
- model: claude-haiku-4-5
4
+ ORC Trace writer — claude-haiku-5-5, high effort. Dispatched by every trace-owning lane at each phase close (single-dispatch lanes: once, at run end).
5
+ model: claude-haiku-5-5
6
+ effort: high
6
7
  tools: Read, Bash, Glob
7
8
  ---
8
9