@azure-id/orc 0.56.1 → 1.0.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 (153) hide show
  1. package/CHANGELOG.md +2367 -2218
  2. package/README-id.md +49 -107
  3. package/README.md +45 -133
  4. package/bin/build-agents.js +18 -11
  5. package/bin/cli.js +33060 -29855
  6. package/bin/onboarding-content.js +0 -3
  7. package/bin/test-run.js +491 -0
  8. package/bin/verify-contracts.js +4256 -3277
  9. package/bin/verify-package.js +563 -498
  10. package/bin/webui/api.js +1186 -1163
  11. package/bin/webui/app.html +9 -0
  12. package/bin/webui/css/06-responsive.css +120 -108
  13. package/bin/webui/css/panels/extra.css +29 -0
  14. package/bin/webui/css/panels/lanes.css +134 -0
  15. package/bin/webui/css/panels/settings.css +79 -3
  16. package/bin/webui/fixtures/extra.js +2036 -1934
  17. package/bin/webui/fixtures/flow.js +2 -2
  18. package/bin/webui/fixtures/index.js +503 -486
  19. package/bin/webui/fixtures/lanes.js +218 -0
  20. package/bin/webui/fixtures/settings.js +261 -34
  21. package/bin/webui/fixtures/stats.js +3 -3
  22. package/bin/webui/i18n/TERMS.md +135 -134
  23. package/bin/webui/i18n/en/extra.json +345 -313
  24. package/bin/webui/i18n/en/lanes.json +29 -0
  25. package/bin/webui/i18n/en/nav.json +1 -0
  26. package/bin/webui/i18n/en/overview.json +2 -0
  27. package/bin/webui/i18n/en/settings.json +16 -5
  28. package/bin/webui/i18n/id/extra.json +345 -313
  29. package/bin/webui/i18n/id/lanes.json +29 -0
  30. package/bin/webui/i18n/id/nav.json +1 -0
  31. package/bin/webui/i18n/id/overview.json +2 -0
  32. package/bin/webui/i18n/id/settings.json +15 -4
  33. package/bin/webui/js/01-i18n.js +1 -0
  34. package/bin/webui/js/panels/extra.js +3199 -3011
  35. package/bin/webui/js/panels/lanes.js +259 -0
  36. package/bin/webui/js/panels/overview.js +10 -0
  37. package/bin/webui/js/panels/settings.js +149 -3
  38. package/package.json +39 -39
  39. package/templates/agents/MODEL-MAPPING.md +23 -35
  40. package/templates/agents/orc-executor-opus-4-7-high.md +1 -1
  41. package/templates/agents/orc-executor-opus-4-7-med.md +1 -1
  42. package/templates/agents/orc-executor-opus-4-8-high.md +1 -1
  43. package/templates/agents/orc-executor-opus-5-high.md +1 -1
  44. package/templates/agents/orc-executor-opus-5-low.md +1 -1
  45. package/templates/agents/orc-executor-opus-5-med.md +1 -1
  46. package/templates/agents/orc-retro-opus-5-med.md +73 -73
  47. package/templates/agents/orc-retro-sonnet-5-high.md +72 -72
  48. package/templates/agents/orc-trace-writer-haiku-4-5.md +107 -107
  49. package/templates/commands/orc-route.md +1 -1
  50. package/templates/commands/orc.md +1 -1
  51. package/templates/skills/_shared/README.md +7 -3
  52. package/templates/skills/_shared/config-precedence.md +198 -0
  53. package/templates/skills/_shared/drift-recovery.md +1 -1
  54. package/templates/skills/_shared/extra-dispatch.md +159 -7
  55. package/templates/skills/_shared/interview.md +1 -1
  56. package/templates/skills/_shared/opus5-only.md +9 -7
  57. package/templates/skills/_shared/phases/README.md +82 -0
  58. package/templates/skills/{orc/references → _shared/phases}/analyst-gates.md +15 -3
  59. package/templates/skills/_shared/phases/execution.md +143 -0
  60. package/templates/skills/{orc/references → _shared/phases}/house-rules.md +13 -1
  61. package/templates/skills/{orc/references → _shared/phases}/intake.md +15 -2
  62. package/templates/skills/_shared/phases/mock-example.md +56 -0
  63. package/templates/skills/{orc/references → _shared/phases}/plan-handoff.md +16 -3
  64. package/templates/skills/_shared/phases/planning.md +135 -0
  65. package/templates/skills/_shared/phases/preflight.md +76 -0
  66. package/templates/skills/_shared/phases/review.md +53 -0
  67. package/templates/skills/_shared/phases/scoring.md +65 -0
  68. package/templates/skills/{orc/references → _shared/phases}/security-checklist.md +12 -1
  69. package/templates/skills/_shared/phases/security.md +55 -0
  70. package/templates/skills/_shared/phases/ship.md +88 -0
  71. package/templates/skills/{orc/references/stop-and-resume.md → _shared/phases/stop-resume.md} +169 -160
  72. package/templates/skills/_shared/phases/summary.md +48 -0
  73. package/templates/skills/_shared/phases/testgen.md +51 -0
  74. package/templates/skills/{orc/references/trace-protocol.md → _shared/phases/trace.md} +49 -6
  75. package/templates/skills/_shared/phases/verify.md +70 -0
  76. package/templates/skills/{orc/references → _shared/phases}/wave-grouping.md +14 -2
  77. package/templates/skills/{orc/references → _shared/phases}/wiki-consult.md +13 -1
  78. package/templates/skills/_shared/read-ladder.md +48 -0
  79. package/templates/skills/context-combiner/SKILL.md +214 -187
  80. package/templates/skills/orc/README.md +148 -150
  81. package/templates/skills/orc/SKILL.md +70 -358
  82. package/templates/skills/orc/config.md +137 -389
  83. package/templates/skills/orc/examples/full-run-mock.md +1 -1
  84. package/templates/skills/orc/references/effort-and-mode.md +16 -18
  85. package/templates/skills/orc/references/phases/intake.md +47 -0
  86. package/templates/skills/orc/references/phases/integration.md +19 -0
  87. package/templates/skills/orc/references/preflight-report.md +4 -4
  88. package/templates/skills/orc/references/ultra-mode.md +117 -123
  89. package/templates/skills/orc/schemas/planning-output.md +279 -279
  90. package/templates/skills/orc/subskills/orc-planner/SKILL.md +260 -264
  91. package/templates/skills/orc/subskills/orc-pr/stack-gate.md +4 -1
  92. package/templates/skills/orc-aftermath/SKILL.md +153 -136
  93. package/templates/skills/orc-analyze/SKILL.md +247 -220
  94. package/templates/skills/orc-analyze/references/branching.md +51 -51
  95. package/templates/skills/orc-analyze/references/thin-input.md +1 -1
  96. package/templates/skills/orc-analyze-mini/SKILL.md +128 -112
  97. package/templates/skills/orc-boundary/SKILL.md +244 -208
  98. package/templates/skills/orc-brainstorm/SKILL.md +372 -339
  99. package/templates/skills/orc-budget/SKILL.md +243 -225
  100. package/templates/skills/orc-challenge/README.md +1 -1
  101. package/templates/skills/orc-challenge/SKILL.md +293 -255
  102. package/templates/skills/orc-challenge/examples/council-full-roster.md +1 -1
  103. package/templates/skills/orc-claude/SKILL.md +216 -199
  104. package/templates/skills/orc-diy/README.md +2 -1
  105. package/templates/skills/orc-diy/SKILL.md +129 -70
  106. package/templates/skills/orc-diy/references/blocks/analyze.md +1 -1
  107. package/templates/skills/orc-diy/references/compile.md +21 -7
  108. package/templates/skills/orc-diy/references/flow-schema.md +2 -2
  109. package/templates/skills/orc-doc/SKILL.md +44 -7
  110. package/templates/skills/orc-explain/SKILL.md +19 -0
  111. package/templates/skills/orc-export/SKILL.md +26 -5
  112. package/templates/skills/orc-fast/SKILL.md +215 -187
  113. package/templates/skills/orc-grill/SKILL.md +233 -207
  114. package/templates/skills/orc-handoff/SKILL.md +223 -204
  115. package/templates/skills/orc-learn/SKILL.md +176 -156
  116. package/templates/skills/orc-mini/SKILL.md +41 -23
  117. package/templates/skills/orc-pact/SKILL.md +250 -218
  118. package/templates/skills/orc-pattern/SKILL.md +149 -124
  119. package/templates/skills/orc-poly/SKILL.md +237 -216
  120. package/templates/skills/orc-poly/references/gather.md +1 -1
  121. package/templates/skills/orc-pr-driver/SKILL.md +196 -167
  122. package/templates/skills/orc-pr-driver/references/orc-run-split.md +1 -1
  123. package/templates/skills/orc-pr-setup/SKILL.md +212 -184
  124. package/templates/skills/orc-quick/README.md +2 -2
  125. package/templates/skills/orc-quick/SKILL.md +45 -12
  126. package/templates/skills/orc-quick/references/dispatch-gate.md +2 -3
  127. package/templates/skills/orc-retro/SKILL.md +244 -222
  128. package/templates/skills/orc-retro/examples/retro-mock.md +171 -171
  129. package/templates/skills/orc-route/SKILL.md +183 -165
  130. package/templates/skills/orc-verify/SKILL.md +100 -86
  131. package/templates/skills/orc-wiki/SKILL.md +55 -206
  132. package/templates/skills/orc-wiki/references/phases/phase-0.md +71 -0
  133. package/templates/skills/orc-wiki/references/phases/phase-1.md +35 -0
  134. package/templates/skills/orc-wiki/references/phases/phase-2.md +52 -0
  135. package/templates/skills/orc-wiki/references/phases/phase-3.md +57 -0
  136. package/templates/skills/orc-wiki/references/phases/phase-3c.md +36 -0
  137. package/templates/agents/orc-advisor-fable-5.md +0 -50
  138. package/templates/agents/orc-analyst-fable-5.md +0 -115
  139. package/templates/agents/orc-judge-fable-5.md +0 -79
  140. package/templates/agents/orc-planner-fable-5.md +0 -152
  141. package/templates/agents/orc-reviewer-fable-5.md +0 -57
  142. package/templates/skills/_shared/fable5-override.md +0 -56
  143. package/templates/skills/orc-diy/references/blocks/execution.md +0 -42
  144. package/templates/skills/orc-diy/references/blocks/mock-example.md +0 -22
  145. package/templates/skills/orc-diy/references/blocks/planning.md +0 -34
  146. package/templates/skills/orc-diy/references/blocks/review.md +0 -18
  147. package/templates/skills/orc-diy/references/blocks/scoring.md +0 -16
  148. package/templates/skills/orc-diy/references/blocks/security.md +0 -25
  149. package/templates/skills/orc-diy/references/blocks/ship.md +0 -25
  150. package/templates/skills/orc-diy/references/blocks/summary.md +0 -18
  151. package/templates/skills/orc-diy/references/blocks/testgen.md +0 -17
  152. package/templates/skills/orc-diy/references/blocks/trace.md +0 -28
  153. package/templates/skills/orc-diy/references/blocks/verify.md +0 -25
@@ -1,204 +1,223 @@
1
- ---
2
- name: orc-handoff
3
- description: >
4
- The lane for people who do not read code. Use for "/orc-handoff", "I want to
5
- change the text on the empty cart page", "can I edit this myself", "what can a
6
- PM safely change here". Two modes. MAP finds the files a non-engineer can own —
7
- screen text, content, settings with a validator, feature flags, docs — and grades
8
- each one: green (a check will catch a mistake), amber (the check is manual), red
9
- (looks like content, is not). DO changes one value: it shows you the file, the
10
- check, and the undo command BEFORE it edits, then runs the check and tells you in
11
- plain words. It never touches a red file. It never commits.
12
- ---
13
-
14
- # ORC-HANDOFF
15
-
16
- **This whole folder is written in simple English on purpose.** Many people who use
17
- this lane do not read code, and many do not read English first. Keep every file
18
- here short, plain, and free of jargon. Same standing rule as `../orc-quick/`.
19
-
20
- ## What this lane is for
21
-
22
- You want to change something small and you should not have to ask an engineer.
23
-
24
- - the words on a page
25
- - a title, a label, a button
26
- - a setting that has a safe list of values
27
- - a feature switch that is on or off
28
- - a document
29
-
30
- You do not need to read code. You do not need a terminal. You need to know two
31
- things before you change anything: **will something catch my mistake**, and **how
32
- do I undo it**. This lane always tells you both, before it edits.
33
-
34
- ## The idea that makes this safe
35
-
36
- **The grade does not come from the file type. It comes from whether a cheap check
37
- exists for that file.**
38
-
39
- A settings file with a validator is **green**. The exact same file with no
40
- validator is **amber**. That is why this is a real safety rule and not a feeling.
41
-
42
- | Grade | What it means |
43
- |---|---|
44
- | 🟢 GREEN | Change it. A check runs after, and it will catch a mistake. |
45
- | 🟡 AMBER | Change it. But the check is a person, not a program. Here is the check. |
46
- | 🔴 RED | This looks like content. It is not. ORC will not touch it. |
47
-
48
- **A red file is never edited.** Not by you through this lane, not by ORC. The lane
49
- says why, says who to ask, and **offers** `/orc-quick` instead. It is an offer, not
50
- a redirect — the same rule `/orc-quick` follows when a job is too big.
51
-
52
- ## Rules this lane never breaks
53
-
54
- - **The undo command is shown BEFORE the edit, not after.** After is too late.
55
- - **It never stages and never commits.** It prints the git command for you.
56
- - **It never re-grades a file to make a change possible.** If it is red now, it is
57
- red for this request.
58
- - **It only changes a value that already exists.** It never creates a new key. A
59
- new key is a code change.
60
-
61
- ---
62
-
63
- ## Mode 1 — MAP: what can I own?
64
-
65
- Find the files a non-engineer can safely own, and grade each one. Look for:
66
-
67
- - screen text and translations
68
- - content files (markdown, pages, posts)
69
- - settings files that have a validator or a schema
70
- - feature switches
71
- - example or seed data
72
- - documents
73
- - design values (colours, spacing) when they live in their own file
74
-
75
- For **each** file, record four things. All four, every time:
76
-
77
- 1. **what it is**, in plain words ("the words users see on the empty cart page")
78
- 2. **the grade**, and the reason for it
79
- 3. **the exact check** — the command that proves the file is still fine
80
- 4. **the exact undo** — the command that puts it back
81
-
82
- The grade comes from step 3. **No check found → amber, or red if the file drives
83
- behaviour rather than showing text.** Never green without a real check.
84
-
85
- Write it to `orc-handoff/surfaces.md` at the top of the project. Shape and field
86
- rules: `references/surfaces.md`. Then run `orc handoff surfaces` and show what it
87
- says — the CLI is what everything else reads.
88
-
89
- **A file with no check is not a failure of the map.** Say so plainly: "this one has
90
- no automatic check, so it is amber, and here is what to look at by hand."
91
-
92
- ## Mode 2 — DO: change one value
93
-
94
- Five steps. Do not skip step 2.
95
-
96
- ```
97
- H1 find find the file · show the value now · show its grade
98
- H2 confirm ONE message: this is the file, this is the check, this is the undo
99
- H3 edit one value, through `orc handoff set`
100
- H4 check run the file's own check · say what happened in plain words
101
- H5 record add a numbered entry to orc-handoff/<slug>/handoff-log.md
102
- ```
103
-
104
- ### H1 — find
105
-
106
- Search the mapped surfaces first. If the map does not exist yet, run MAP for just
107
- the area the user named — never the whole project for one small change.
108
-
109
- Show the value as it is now. If you cannot find it, say so and ask for more — a
110
- guessed key is a wrong edit.
111
-
112
- ### H2 — confirm (one message, always)
113
-
114
- ```
115
- File: web/locales/en.json
116
- Now: "Your cart is empty"
117
- New: "Nothing in here yet"
118
- Grade: 🟢 green
119
-
120
- After I change it I will run: npm run i18n:check
121
- To undo it, run: git checkout -- web/locales/en.json
122
-
123
- Change it? (yes / no)
124
- ```
125
-
126
- **This message is not optional, even when the change looks tiny.** It is the whole
127
- consent step.
128
-
129
- ### H3 — edit
130
-
131
- Always through `orc handoff set <id> <key> <value>`. Never edit the file yourself.
132
- One writer means one set of rules, and the browser panel uses the same one.
133
-
134
- `handoff_write: false` makes this project **map only** — no writes at all. Say that
135
- plainly and stop; do not work around it.
136
-
137
- ### H4 — check
138
-
139
- Green surfaces: the CLI runs the check and reports it.
140
-
141
- - **passed** → say so in one line.
142
- - **failed** → say what failed, show the undo command again, and **do not try to
143
- fix it**. Fixing a failed check is code work.
144
-
145
- Amber surfaces: the change is made, and the check is a **task for a person**. Never
146
- report an amber change as verified. Say: "this file has no automatic check, so
147
- nothing has confirmed your change yet. Please check: <the manual check>."
148
-
149
- ### H5 — record
150
-
151
- One numbered entry per change, in `orc-handoff/<slug>/handoff-log.md`. Shape:
152
- `references/handoff-log.md`. One file per thread, named from the first slug, never
153
- staged.
154
-
155
- ---
156
-
157
- ## Preflight (ONE time, silent)
158
-
159
- 1. **Config.** Read `log_dir` and `handoff_write`. Nothing else.
160
- 2. **Trace.** Write `log_dir/.current` = `run-handoff-<slug>-<DDMMYY>-<HHMMSS>.txt`
161
- AND `touch the trace file` in the SAME step. Both, or neither.
162
- 3. **Probe.** `orc handoff surfaces --json` (exit 1 = no map yet, which is normal
163
- on a first run). Use `../_shared/detecting-artifacts.md`, never a raw `find`.
164
-
165
- ## Where this shows up in `/orc`
166
-
167
- At ship, if any changed file was a GREEN surface:
168
-
169
- > 2 of these were changes a PM could have made alone — try `/orc-handoff` next
170
- > time.
171
-
172
- One sentence. That is the whole seam, and it is how anyone finds out this lane
173
- exists.
174
-
175
- ## Behavior trace (always on)
176
-
177
- Follow `../orc/references/trace-protocol.md`. Lane name `handoff`.
178
- **Single-dispatch lane: exactly ONE end-of-run packet** to
179
- `orc-trace-writer-haiku-4-5`, after the last entry and BEFORE `.current` is
180
- deleted. It carries `run_meta`, the events (mapped, confirmed, edited, checked) and
181
- the confirmations as `decisions`. A run that ends with
182
- `zero new trace lines is a protocol violation`.
183
-
184
- Any reading it needs is an **ad-hoc dispatch by model + effort**, never a pinned
185
- agent — **zero new agents ship for this lane**. Announce it in one line first.
186
-
187
- ## How this lane fails — and the rule that stops it
188
-
189
- | Failure | What stops it |
190
- |---|---|
191
- | A file is called safe because it is JSON | The grade comes from the CHECK, not the file type |
192
- | Someone edits money code through a text change | Red is never edited. Ever |
193
- | A change looks verified but nothing checked it | Amber returns a manual TASK, never a pass |
194
- | The user cannot undo it | The undo command is shown BEFORE the edit |
195
- | It commits something by surprise | It never stages and never commits |
196
- | It re-grades a file to be helpful | The grade never moves inside one request |
197
- | It creates a new setting | It only changes values that already exist |
198
- | The words are too hard to read | This whole folder is simple English |
199
-
200
- ## Rules this lane always keeps
201
-
202
- Show the undo first · never touch a red file · never commit · never create a key ·
203
- never call an amber change verified · write through `orc handoff set` only · keep
204
- every word simple.
1
+ ---
2
+ name: orc-handoff
3
+ description: >
4
+ The lane for people who do not read code. Use for "/orc-handoff", "I want to
5
+ change the text on the empty cart page", "can I edit this myself", "what can a
6
+ PM safely change here". Two modes. MAP finds the files a non-engineer can own —
7
+ screen text, content, settings with a validator, feature flags, docs — and grades
8
+ each one: green (a check will catch a mistake), amber (the check is manual), red
9
+ (looks like content, is not). DO changes one value: it shows you the file, the
10
+ check, and the undo command BEFORE it edits, then runs the check and tells you in
11
+ plain words. It never touches a red file. It never commits.
12
+ ---
13
+
14
+ # ORC-HANDOFF
15
+
16
+ **This whole folder is written in simple English on purpose.** Many people who use
17
+ this lane do not read code, and many do not read English first. Keep every file
18
+ here short, plain, and free of jargon. Same standing rule as `../orc-quick/`.
19
+
20
+ ## What this lane is for
21
+
22
+ You want to change something small and you should not have to ask an engineer.
23
+
24
+ - the words on a page
25
+ - a title, a label, a button
26
+ - a setting that has a safe list of values
27
+ - a feature switch that is on or off
28
+ - a document
29
+
30
+ You do not need to read code. You do not need a terminal. You need to know two
31
+ things before you change anything: **will something catch my mistake**, and **how
32
+ do I undo it**. This lane always tells you both, before it edits.
33
+
34
+ ## The idea that makes this safe
35
+
36
+ **The grade does not come from the file type. It comes from whether a cheap check
37
+ exists for that file.**
38
+
39
+ A settings file with a validator is **green**. The exact same file with no
40
+ validator is **amber**. That is why this is a real safety rule and not a feeling.
41
+
42
+ | Grade | What it means |
43
+ |---|---|
44
+ | 🟢 GREEN | Change it. A check runs after, and it will catch a mistake. |
45
+ | 🟡 AMBER | Change it. But the check is a person, not a program. Here is the check. |
46
+ | 🔴 RED | This looks like content. It is not. ORC will not touch it. |
47
+
48
+ **A red file is never edited.** Not by you through this lane, not by ORC. The lane
49
+ says why, says who to ask, and **offers** `/orc-quick` instead. It is an offer, not
50
+ a redirect — the same rule `/orc-quick` follows when a job is too big.
51
+
52
+ ## Rules this lane never breaks
53
+
54
+ - **The undo command is shown BEFORE the edit, not after.** After is too late.
55
+ - **It never stages and never commits.** It prints the git command for you.
56
+ - **It never re-grades a file to make a change possible.** If it is red now, it is
57
+ red for this request.
58
+ - **It only changes a value that already exists.** It never creates a new key. A
59
+ new key is a code change.
60
+
61
+ ---
62
+
63
+ ## Mode 1 — MAP: what can I own?
64
+
65
+ Find the files a non-engineer can safely own, and grade each one. Look for:
66
+
67
+ - screen text and translations
68
+ - content files (markdown, pages, posts)
69
+ - settings files that have a validator or a schema
70
+ - feature switches
71
+ - example or seed data
72
+ - documents
73
+ - design values (colours, spacing) when they live in their own file
74
+
75
+ For **each** file, record four things. All four, every time:
76
+
77
+ 1. **what it is**, in plain words ("the words users see on the empty cart page")
78
+ 2. **the grade**, and the reason for it
79
+ 3. **the exact check** — the command that proves the file is still fine
80
+ 4. **the exact undo** — the command that puts it back
81
+
82
+ The grade comes from step 3. **No check found → amber, or red if the file drives
83
+ behaviour rather than showing text.** Never green without a real check.
84
+
85
+ Write it to `orc-handoff/surfaces.md` at the top of the project. Shape and field
86
+ rules: `references/surfaces.md`. Then run `orc handoff surfaces` and show what it
87
+ says — the CLI is what everything else reads.
88
+
89
+ **A file with no check is not a failure of the map.** Say so plainly: "this one has
90
+ no automatic check, so it is amber, and here is what to look at by hand."
91
+
92
+ ## Mode 2 — DO: change one value
93
+
94
+ Five steps. Do not skip step 2.
95
+
96
+ ```
97
+ H1 find find the file · show the value now · show its grade
98
+ H2 confirm ONE message: this is the file, this is the check, this is the undo
99
+ H3 edit one value, through `orc handoff set`
100
+ H4 check run the file's own check · say what happened in plain words
101
+ H5 record add a numbered entry to orc-handoff/<slug>/handoff-log.md
102
+ ```
103
+
104
+ ### H1 — find
105
+
106
+ Search the mapped surfaces first. If the map does not exist yet, run MAP for just
107
+ the area the user named — never the whole project for one small change.
108
+
109
+ Show the value as it is now. If you cannot find it, say so and ask for more — a
110
+ guessed key is a wrong edit.
111
+
112
+ ### H2 — confirm (one message, always)
113
+
114
+ ```
115
+ File: web/locales/en.json
116
+ Now: "Your cart is empty"
117
+ New: "Nothing in here yet"
118
+ Grade: 🟢 green
119
+
120
+ After I change it I will run: npm run i18n:check
121
+ To undo it, run: git checkout -- web/locales/en.json
122
+
123
+ Change it? (yes / no)
124
+ ```
125
+
126
+ **This message is not optional, even when the change looks tiny.** It is the whole
127
+ consent step.
128
+
129
+ ### H3 — edit
130
+
131
+ Always through `orc handoff set <id> <key> <value>`. Never edit the file yourself.
132
+ One writer means one set of rules, and the browser panel uses the same one.
133
+
134
+ `handoff_write: false` makes this project **map only** — no writes at all. Say that
135
+ plainly and stop; do not work around it.
136
+
137
+ ### H4 — check
138
+
139
+ Green surfaces: the CLI runs the check and reports it.
140
+
141
+ - **passed** → say so in one line.
142
+ - **failed** → say what failed, show the undo command again, and **do not try to
143
+ fix it**. Fixing a failed check is code work.
144
+
145
+ Amber surfaces: the change is made, and the check is a **task for a person**. Never
146
+ report an amber change as verified. Say: "this file has no automatic check, so
147
+ nothing has confirmed your change yet. Please check: <the manual check>."
148
+
149
+ ### H5 — record
150
+
151
+ One numbered entry per change, in `orc-handoff/<slug>/handoff-log.md`. Shape:
152
+ `references/handoff-log.md`. One file per thread, named from the first slug, never
153
+ staged.
154
+
155
+ ---
156
+
157
+ ## Preflight (ONE time, silent)
158
+
159
+ 1. **Config.** Read `log_dir` and `handoff_write`. Nothing else.
160
+ 2. **Trace.** Write `log_dir/.current` = `run-handoff-<slug>-<DDMMYY>-<HHMMSS>.txt`
161
+ AND `touch the trace file` in the SAME step. Both, or neither.
162
+ 3. **Probe.** `orc handoff surfaces --json` (exit 1 = no map yet, which is normal
163
+ on a first run). Use `../_shared/detecting-artifacts.md`, never a raw `find`.
164
+
165
+ The SHAPE of these steps the order, and the four rules that make it worth
166
+ having — is `../_shared/phases/preflight.md` (`core`). The probes
167
+ themselves are this lane's own and stay here.
168
+
169
+ ## Where this shows up in `/orc`
170
+
171
+ At ship, if any changed file was a GREEN surface:
172
+
173
+ > 2 of these were changes a PM could have made alone — try `/orc-handoff` next
174
+ > time.
175
+
176
+ One sentence. That is the whole seam, and it is how anyone finds out this lane
177
+ exists.
178
+
179
+ ## Behavior trace (always on)
180
+
181
+ `../_shared/phases/trace.md` (`core`, at run start; `orc lane phases` names
182
+ the file and the layers). Lane token `handoff`, tier **Single-dispatch** —
183
+ exactly ONE end-of-run packet, dispatched solo before `.current` is deleted.
184
+ Nothing else about the protocol is restated here; a phase that ends with
185
+ `zero new trace lines is a protocol violation`.
186
+
187
+ ## How this lane fails — and the rule that stops it
188
+
189
+ | Failure | What stops it |
190
+ |---|---|
191
+ | A file is called safe because it is JSON | The grade comes from the CHECK, not the file type |
192
+ | Someone edits money code through a text change | Red is never edited. Ever |
193
+ | A change looks verified but nothing checked it | Amber returns a manual TASK, never a pass |
194
+ | The user cannot undo it | The undo command is shown BEFORE the edit |
195
+ | It commits something by surprise | It never stages and never commits |
196
+ | It re-grades a file to be helpful | The grade never moves inside one request |
197
+ | It creates a new setting | It only changes values that already exist |
198
+ | The words are too hard to read | This whole folder is simple English |
199
+
200
+ ## Rules this lane always keeps
201
+
202
+ Show the undo first · never touch a red file · never commit · never create a key ·
203
+ never call an amber change verified · write through `orc handoff set` only · keep
204
+ every word simple.
205
+
206
+ ## Config
207
+
208
+ Resolve with `orc lane config orc-handoff --json` and obey `effective`. Never merge
209
+ `.claude/orc.config.yaml` yourself, and never re-derive a precedence. Exit ≠ 0 →
210
+ say so and use `../_shared/config-precedence.md`'s documented defaults, out
211
+ loud. Nothing this lane reads is contested, gated or a stop, so it owes no
212
+ preflight line and has no gate to honour.
213
+
214
+ ## Calls
215
+
216
+ **ONE catalogue, and it is not you:** `orc lane calls orc-handoff --json` names every
217
+ CLI call this lane makes, each with its exit-code contract, its cost, when to run
218
+ it, and what an EMPTY answer means. Never invent a spelling, never re-word an
219
+ exit code, and never re-derive a state word — the CLI's state words are the only
220
+ state words, and **an exit code is an ANSWER wherever that contract says so, not
221
+ a failure**. A call the answer does not name is a call this lane does not make.
222
+ Exit ≠ 0 from the catalogue itself → say the CLI is unavailable and name the
223
+ command you are about to run, out loud, before running it.