@azure-id/orc 1.8.1 → 1.9.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.
- package/CHANGELOG.md +386 -0
- package/README-id.md +110 -73
- package/README.md +96 -33
- package/bin/cli.js +45520 -44867
- package/bin/graph-extract.js +2409 -120
- package/bin/graph-gain.js +404 -0
- package/bin/graph-map.js +232 -0
- package/bin/graph-notes.js +49 -8
- package/bin/graph-query.js +1770 -808
- package/bin/graph-resolve.js +93 -16
- package/bin/graph-shard.js +325 -0
- package/bin/graph.js +658 -605
- package/bin/verify-contracts.js +297 -56
- package/bin/verify-package.js +29 -1
- package/bin/webui/api.js +6 -0
- package/bin/webui/fixtures/index.js +6 -1
- package/bin/webui/fixtures/knowledge.js +41 -1
- package/bin/webui/fixtures/stats.js +107 -104
- package/bin/webui/i18n/en/knowledge.json +16 -1
- package/bin/webui/i18n/id/knowledge.json +16 -1
- package/bin/webui/js/panels/knowledge.js +68 -3
- package/mock-run/orc-quick.md +141 -113
- package/package.json +1 -1
- package/templates/agents/MODEL-MAPPING.md +15 -5
- package/templates/agents/orc-executor-haiku-4-5.md +25 -13
- package/templates/agents/orc-executor-opus-4-7-high.md +25 -13
- package/templates/agents/orc-executor-opus-4-7-med.md +25 -13
- package/templates/agents/orc-executor-opus-4-8-high.md +25 -13
- package/templates/agents/orc-executor-opus-5-high.md +25 -13
- package/templates/agents/orc-executor-opus-5-low.md +25 -13
- package/templates/agents/orc-executor-opus-5-med.md +25 -13
- package/templates/agents/orc-executor-sonnet-4-6-high.md +25 -13
- package/templates/agents/orc-executor-sonnet-4-6-med.md +25 -13
- package/templates/agents/orc-executor-sonnet-5-high.md +25 -13
- package/templates/agents/orc-graph-noter-sonnet-4-6-med.md +15 -12
- package/templates/agents/orc-planner-mini-opus-5-med.md +75 -69
- package/templates/agents/orc-planner-mini-sonnet-5-high.md +73 -67
- package/templates/agents/orc-recon-opus-5-low.md +99 -0
- package/templates/agents/orc-recon-sonnet-4-6-med.md +99 -0
- package/templates/commands/orc-mini.md +10 -12
- package/templates/commands/orc-quick.md +20 -33
- package/templates/hooks/README.md +13 -3
- package/templates/hooks/orc-graph-hook.js +148 -13
- package/templates/hooks/orc-trace.js +476 -471
- package/templates/skills/_shared/code-graph.md +148 -20
- package/templates/skills/_shared/phases/execution.md +13 -11
- package/templates/skills/_shared/phases/planning.md +8 -1
- package/templates/skills/_shared/phases/rules.md +172 -159
- package/templates/skills/_shared/phases/ship.md +5 -1
- package/templates/skills/_shared/phases/trace.md +4 -1
- package/templates/skills/_shared/phases/wiki-consult.md +10 -6
- package/templates/skills/_shared/read-ladder.md +10 -2
- package/templates/skills/_shared/return-validation.md +22 -0
- package/templates/skills/context-combiner/SKILL.md +13 -13
- package/templates/skills/orc/SKILL.md +1 -1
- package/templates/skills/orc/subskills/orc-execution/core.md +171 -159
- package/templates/skills/orc-analyze/SKILL.md +13 -13
- package/templates/skills/orc-diy/references/flow-schema.md +1 -1
- package/templates/skills/orc-mini/SKILL.md +148 -136
- package/templates/skills/orc-mini/examples/mini-run-mock.md +64 -50
- package/templates/skills/orc-mini/references/complexity.md +105 -0
- package/templates/skills/orc-quick/README.md +495 -423
- package/templates/skills/orc-quick/SKILL.md +157 -211
- package/templates/skills/orc-quick/references/context-doc.md +145 -114
- package/templates/skills/orc-quick/references/defect.md +101 -0
- package/templates/skills/orc-quick/references/dispatch-gate.md +55 -24
- package/templates/skills/orc-quick/references/gh-mode.md +148 -127
- package/templates/skills/orc-quick/references/look.md +107 -0
- package/templates/skills/orc-wiki/references/staleness.md +1 -1
|
@@ -1,114 +1,145 @@
|
|
|
1
|
-
# The quick context doc — shape and rules
|
|
2
|
-
|
|
3
|
-
This is the file orc-quick writes after every request. It is written for a
|
|
4
|
-
HUMAN to read later, in this session or a different one.
|
|
5
|
-
|
|
6
|
-
## Where it goes
|
|
7
|
-
|
|
8
|
-
```
|
|
9
|
-
<projectRoot>/orc-quick/<slug>/quick-context.md
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
- `<slug>` is the slug of the **first** request in the thread. No date in the
|
|
13
|
-
folder name.
|
|
14
|
-
- **One file per folder. Never make a second `.md` file.** No `review.md`, no
|
|
15
|
-
`diff.md`, no per-request files.
|
|
16
|
-
- It sits at the project root, next to folders like `test-generator/` and
|
|
17
|
-
`learning-docs/` — never inside `.claude/`.
|
|
18
|
-
|
|
19
|
-
## Rules
|
|
20
|
-
|
|
21
|
-
1. **Write it BEFORE the offers** (test / review / commit). If the user walks
|
|
22
|
-
away, the entry is still complete.
|
|
23
|
-
2. **Every request gets an entry** — even a read-only dig. There, the answer IS
|
|
24
|
-
the result.
|
|
25
|
-
3. **Never read the body of this file.** Only two exceptions:
|
|
26
|
-
- the TOC block, when you re-open a thread;
|
|
27
|
-
- the user asks you to read it.
|
|
28
|
-
4. **Never commit it.** It is not staged, ever. Do not edit `.gitignore`.
|
|
29
|
-
5. One entry can hold **several dispatches**. A dig that turns into a fix is ONE
|
|
30
|
-
entry with two rows in its table.
|
|
31
|
-
|
|
32
|
-
## The TOC block
|
|
33
|
-
|
|
34
|
-
The top of the file has a short list between markers:
|
|
35
|
-
|
|
36
|
-
```markdown
|
|
37
|
-
<!-- orc-quick:toc -->
|
|
38
|
-
1. Change json payload A → B 05-08-2026 14:23:10 ✅ committed a1b2c3d
|
|
39
|
-
2. How does tenant scoping work? 05-08-2026 15:47:02 ℹ answered
|
|
40
|
-
3. Why does /orders 500? — found & fixed 10-08-2026 09:15:44 ✅ committed 7f2e1a9
|
|
41
|
-
<!-- /orc-quick:toc -->
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
**Why the markers matter.** When you open a thread again, you need to know the
|
|
45
|
-
next number. You read ONLY this block — it is small and cheap. You do not read
|
|
46
|
-
the entries below it. That is how "never read the doc" and "keep counting" can
|
|
47
|
-
both be true.
|
|
48
|
-
|
|
49
|
-
Inside one session, the count is also kept in
|
|
50
|
-
`.claude/orc/run/<run-slug>/quick-checkpoint.md`. That file is run state, not
|
|
51
|
-
the deliverable, so you may read it freely.
|
|
52
|
-
|
|
53
|
-
**If the TOC is broken or missing:** rebuild it by scanning ONLY the lines that
|
|
54
|
-
start with `## <number>.`. Do not read the text under them. Then write the block
|
|
55
|
-
back between the markers. Never start a second thread because of a broken TOC.
|
|
56
|
-
|
|
57
|
-
## Entry shape
|
|
58
|
-
|
|
59
|
-
Use as many of these as apply. Leave out what does not fit.
|
|
60
|
-
|
|
61
|
-
```markdown
|
|
62
|
-
## <n>. <short title>
|
|
63
|
-
**asked** DD-MM-YYYY HH:MM:SS
|
|
64
|
-
> the user's request, word for word
|
|
65
|
-
|
|
66
|
-
**kind** code-change | context-dig | investigate → code-change | pr-comments | …
|
|
67
|
-
**resolved intent** one or two sentences: what you actually decided to do.
|
|
68
|
-
|
|
69
|
-
**clarified**
|
|
70
|
-
- <question> → **Y**: <what won> · X was <what the user first said> ·
|
|
71
|
-
Z was <the other idea, and why it lost>
|
|
72
|
-
|
|
73
|
-
**knowledge** wiki FRESH · docs=<paths> · pattern express@v3
|
|
74
|
-
|
|
75
|
-
**dispatches**
|
|
76
|
-
| # | kind | agent / model | expect | actual | result |
|
|
77
|
-
|---|---|---|---|---|---|
|
|
78
|
-
| 1 | recon |
|
|
79
|
-
| 2 | executor | `orc-executor-sonnet-4-6-med` | sonnet-4-6/medium | sonnet-4-6/medium ✅ | 3 files |
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
**
|
|
87
|
-
**
|
|
88
|
-
|
|
89
|
-
**
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
**
|
|
96
|
-
|
|
97
|
-
**
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
1
|
+
# The quick context doc — shape and rules
|
|
2
|
+
|
|
3
|
+
This is the file orc-quick writes after every request. It is written for a
|
|
4
|
+
HUMAN to read later, in this session or a different one.
|
|
5
|
+
|
|
6
|
+
## Where it goes
|
|
7
|
+
|
|
8
|
+
```
|
|
9
|
+
<projectRoot>/orc-quick/<slug>/quick-context.md
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
- `<slug>` is the slug of the **first** request in the thread. No date in the
|
|
13
|
+
folder name.
|
|
14
|
+
- **One file per folder. Never make a second `.md` file.** No `review.md`, no
|
|
15
|
+
`diff.md`, no per-request files.
|
|
16
|
+
- It sits at the project root, next to folders like `test-generator/` and
|
|
17
|
+
`learning-docs/` — never inside `.claude/`.
|
|
18
|
+
|
|
19
|
+
## Rules
|
|
20
|
+
|
|
21
|
+
1. **Write it BEFORE the offers** (test / review / commit). If the user walks
|
|
22
|
+
away, the entry is still complete.
|
|
23
|
+
2. **Every request gets an entry** — even a read-only dig. There, the answer IS
|
|
24
|
+
the result.
|
|
25
|
+
3. **Never read the body of this file.** Only two exceptions:
|
|
26
|
+
- the TOC block, when you re-open a thread;
|
|
27
|
+
- the user asks you to read it.
|
|
28
|
+
4. **Never commit it.** It is not staged, ever. Do not edit `.gitignore`.
|
|
29
|
+
5. One entry can hold **several dispatches**. A dig that turns into a fix is ONE
|
|
30
|
+
entry with two rows in its table.
|
|
31
|
+
|
|
32
|
+
## The TOC block
|
|
33
|
+
|
|
34
|
+
The top of the file has a short list between markers:
|
|
35
|
+
|
|
36
|
+
```markdown
|
|
37
|
+
<!-- orc-quick:toc -->
|
|
38
|
+
1. Change json payload A → B 05-08-2026 14:23:10 ✅ committed a1b2c3d
|
|
39
|
+
2. How does tenant scoping work? 05-08-2026 15:47:02 ℹ answered
|
|
40
|
+
3. Why does /orders 500? — found & fixed 10-08-2026 09:15:44 ✅ committed 7f2e1a9
|
|
41
|
+
<!-- /orc-quick:toc -->
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Why the markers matter.** When you open a thread again, you need to know the
|
|
45
|
+
next number. You read ONLY this block — it is small and cheap. You do not read
|
|
46
|
+
the entries below it. That is how "never read the doc" and "keep counting" can
|
|
47
|
+
both be true.
|
|
48
|
+
|
|
49
|
+
Inside one session, the count is also kept in
|
|
50
|
+
`.claude/orc/run/<run-slug>/quick-checkpoint.md`. That file is run state, not
|
|
51
|
+
the deliverable, so you may read it freely.
|
|
52
|
+
|
|
53
|
+
**If the TOC is broken or missing:** rebuild it by scanning ONLY the lines that
|
|
54
|
+
start with `## <number>.`. Do not read the text under them. Then write the block
|
|
55
|
+
back between the markers. Never start a second thread because of a broken TOC.
|
|
56
|
+
|
|
57
|
+
## Entry shape
|
|
58
|
+
|
|
59
|
+
Use as many of these as apply. Leave out what does not fit.
|
|
60
|
+
|
|
61
|
+
```markdown
|
|
62
|
+
## <n>. <short title>
|
|
63
|
+
**asked** DD-MM-YYYY HH:MM:SS
|
|
64
|
+
> the user's request, word for word
|
|
65
|
+
|
|
66
|
+
**kind** code-change | context-dig | investigate → code-change | pr-comments | …
|
|
67
|
+
**resolved intent** one or two sentences: what you actually decided to do.
|
|
68
|
+
|
|
69
|
+
**clarified**
|
|
70
|
+
- <question> → **Y**: <what won> · X was <what the user first said> ·
|
|
71
|
+
Z was <the other idea, and why it lost>
|
|
72
|
+
|
|
73
|
+
**knowledge** wiki FRESH · docs=<paths> · pattern express@v3
|
|
74
|
+
|
|
75
|
+
**dispatches**
|
|
76
|
+
| # | kind | agent / model | expect | actual | result |
|
|
77
|
+
|---|---|---|---|---|---|
|
|
78
|
+
| 1 | recon | `orc-recon-sonnet-4-6-med` | sonnet-4-6/medium | sonnet-4-6/medium ✅ | what it found |
|
|
79
|
+
| 2 | executor | `orc-executor-sonnet-4-6-med` | sonnet-4-6/medium | sonnet-4-6/medium ✅ | 3 files |
|
|
80
|
+
|
|
81
|
+
Only an **other** dispatch keeps the `*(ad-hoc, untraced-by-hook)*` mark. A
|
|
82
|
+
dispatch of either pinned recon agent is a normal row with the agent's name.
|
|
83
|
+
|
|
84
|
+
**files changed** path · path · path
|
|
85
|
+
|
|
86
|
+
**repro** red → green · `npm test -- tests/orders.search.test.js` (before: exit 1 · after: exit 0)
|
|
87
|
+
**blast radius** 3 symbols · callers 7 in 4 files · tests reach 2 · risk high: searchByItemPrefix (exported, fan-in 4, no test reaches it)
|
|
88
|
+
**tests** reached 12 passed · suite 41 passed
|
|
89
|
+
**graph** gen 42 · cards 2 · <the `orc graph gain` line, word for word>
|
|
90
|
+
|
|
91
|
+
**how it was resolved** a short, plain explanation of the fix and WHY this way.
|
|
92
|
+
Say what you did not do, and why. This is the most useful part later.
|
|
93
|
+
|
|
94
|
+
**build** GREEN · **tests** 41 passed
|
|
95
|
+
**unmet** things you did not do, on purpose or not
|
|
96
|
+
|
|
97
|
+
**follow-through** tests · review result · commit hash · pushed or not
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
For PR work, also add:
|
|
101
|
+
|
|
102
|
+
```markdown
|
|
103
|
+
**pr** #142 "title" · branch · url
|
|
104
|
+
|
|
105
|
+
**threads taken** 2 of 3
|
|
106
|
+
| # | reviewer | anchor | comment |
|
|
107
|
+
|---|---|---|---|
|
|
108
|
+
| 1 | @dana | src/routes/export.js:34 | the comment text |
|
|
109
|
+
|
|
110
|
+
**github writes** NONE — no reply, no resolve, no review.
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
These four lines are optional and go in that order, after `**files changed**`.
|
|
114
|
+
Leave out the ones that do not apply:
|
|
115
|
+
|
|
116
|
+
- **`repro`** — only on a defect entry. `repro: none` writes
|
|
117
|
+
`**repro** not reproduced — <the reason>` instead. Never leave it out to keep
|
|
118
|
+
the entry tidy: an unreproduced fix is the thing the reader most needs to know.
|
|
119
|
+
- **`blast radius`** — a `risk` word NEVER appears without its `why`. Nothing in
|
|
120
|
+
the graph → `none indexed (<n> files not in the graph)`.
|
|
121
|
+
- **`graph`** — the gain line is an estimate with a range. Copy it; never turn
|
|
122
|
+
it into a saving.
|
|
123
|
+
|
|
124
|
+
## A read-only entry
|
|
125
|
+
|
|
126
|
+
A dig has no files, no build and no tests. It still gets a full entry:
|
|
127
|
+
|
|
128
|
+
- **`how it was resolved`** holds the recon `answer`.
|
|
129
|
+
- **`unmet`** holds the recon `unresolved[]`.
|
|
130
|
+
- A blast-radius dig lists the four caller classes apart — `direct`, `route`
|
|
131
|
+
(reached through a URL), `via_alias`, `inherited` — and, when any list rests
|
|
132
|
+
on the graph alone, the sentence the agent returned, word for word:
|
|
133
|
+
*A card lists every caller that NAMES the symbol. A card's silence is not
|
|
134
|
+
proof of absence.*
|
|
135
|
+
|
|
136
|
+
## Writing style for entries
|
|
137
|
+
|
|
138
|
+
Write for a person who comes back in three weeks and forgot everything.
|
|
139
|
+
|
|
140
|
+
- Use plain words. Short sentences.
|
|
141
|
+
- Always name real files and line numbers.
|
|
142
|
+
- Say **why** you chose one option and not the other. A rejected idea with its
|
|
143
|
+
reason saves the next person from trying it again.
|
|
144
|
+
- Record what you did NOT do. "Backfill not done — user asked to leave it" is
|
|
145
|
+
more useful than silence.
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# A defect entry shows the bug RED first
|
|
2
|
+
|
|
3
|
+
## 1. When this applies
|
|
4
|
+
|
|
5
|
+
Q1 sorted the request as **`kind: defect`**. The user described a behaviour that
|
|
6
|
+
is wrong:
|
|
7
|
+
|
|
8
|
+
- *"the orders page returns 500"*
|
|
9
|
+
- *"it shows the wrong total"*
|
|
10
|
+
- *"find it and fix it"*
|
|
11
|
+
- *"this used to work last week"*
|
|
12
|
+
|
|
13
|
+
A request to ADD something is not a defect. A request to clean something up is
|
|
14
|
+
not a defect. Only a behaviour the user says is wrong.
|
|
15
|
+
|
|
16
|
+
## 2. Why red first
|
|
17
|
+
|
|
18
|
+
Without a reproduction, the fix is proven against the **test suite**. With one,
|
|
19
|
+
the fix is proven against the **bug**.
|
|
20
|
+
|
|
21
|
+
Those are not the same thing. A suite that was green before the fix is still
|
|
22
|
+
green after a fix that changed nothing the user cares about. A reproduction that
|
|
23
|
+
goes from red to green is the only cheap proof that the thing the user reported
|
|
24
|
+
is the thing that got fixed.
|
|
25
|
+
|
|
26
|
+
It costs one extra run of one command. It is the cheapest correctness step in
|
|
27
|
+
this lane.
|
|
28
|
+
|
|
29
|
+
## 3. What goes in the slice
|
|
30
|
+
|
|
31
|
+
```yaml
|
|
32
|
+
repro:
|
|
33
|
+
required: true
|
|
34
|
+
kind: test | command
|
|
35
|
+
hint: "GET /orders/search?item=blue returns 500 — see src/routes/orders.js:16"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
- **`kind: test`** when the project has a test runner. The executor writes a
|
|
39
|
+
failing test in the project's own framework.
|
|
40
|
+
- **`kind: command`** when it has none. The executor writes a command that shows
|
|
41
|
+
the fault — a `curl`, a script, a one-line node call.
|
|
42
|
+
|
|
43
|
+
**A good `hint` is specific.** Give the exact input the user described and the
|
|
44
|
+
`file:line` your dig found:
|
|
45
|
+
|
|
46
|
+
| Weak | Good |
|
|
47
|
+
|---|---|
|
|
48
|
+
| "search is broken" | `GET /orders/search?item=blue` returns 500 — `src/routes/orders.js:16` |
|
|
49
|
+
| "the total is wrong" | cart with 2 × 4.99 shows 9.99, not 9.98 — `src/cart/total.js:22` |
|
|
50
|
+
|
|
51
|
+
## 4. Who writes it
|
|
52
|
+
|
|
53
|
+
**The executor writes the reproduction, in the SAME slice as the fix. Never
|
|
54
|
+
you.**
|
|
55
|
+
|
|
56
|
+
A reproduction written by the orchestrator and handed over is a sketch the
|
|
57
|
+
executor has to trust. One written by the executor is a thing it ran and
|
|
58
|
+
watched fail. The second is worth something; the first is a longer slice.
|
|
59
|
+
|
|
60
|
+
## 5. What comes back
|
|
61
|
+
|
|
62
|
+
```yaml
|
|
63
|
+
repro:
|
|
64
|
+
command: "npm test -- tests/orders.search.test.js"
|
|
65
|
+
before: { exit_code: 1, tail: "…" }
|
|
66
|
+
after: { exit_code: 0, tail: "…" }
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Two of these are malformed returns, and both are treated as a failure
|
|
70
|
+
(`../../_shared/return-validation.md` §5d):
|
|
71
|
+
|
|
72
|
+
- `status: done` with `before.exit_code` of 0 — it was never red, so nothing was
|
|
73
|
+
reproduced.
|
|
74
|
+
- `status: done` with `after.exit_code` not 0 — it is still red, so nothing was
|
|
75
|
+
fixed.
|
|
76
|
+
|
|
77
|
+
Print both runs, two lines, and emit `REPRO red :: <cmd> exit=<n>` and
|
|
78
|
+
`REPRO green :: <cmd> exit=0` into the record.
|
|
79
|
+
|
|
80
|
+
## 6. When it cannot be reproduced
|
|
81
|
+
|
|
82
|
+
Sometimes there is no runner and no reachable entry point. Sometimes the fault
|
|
83
|
+
needs production data.
|
|
84
|
+
|
|
85
|
+
```yaml
|
|
86
|
+
repro: none
|
|
87
|
+
reason: "no test runner, and the failing path needs a live Stripe webhook"
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**That is an honest return, not a failure.** But it changes what the user is
|
|
91
|
+
told. The entry says **not reproduced** with the reason, and the commit offer
|
|
92
|
+
shows it on its own line:
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
commit? — 2 files changed
|
|
96
|
+
⚠ not reproduced: no test runner, and the failing path needs a live Stripe webhook
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
A user who knows the fix was never seen to work can decide to test it by hand.
|
|
100
|
+
A user who was not told cannot. **Never invent a reproduction to fill the
|
|
101
|
+
field.**
|
|
@@ -11,7 +11,7 @@ what is about to be spent, before it is spent.
|
|
|
11
11
|
| Kind | Offer | Traced by the hook | Downgrade check |
|
|
12
12
|
|------|-------|--------------------|-----------------|
|
|
13
13
|
| Writes code | `orc-executor-sonnet-4-6-med` · `orc-executor-opus-5-low` · **a third option when a `quick-executor` position is held** | yes | yes (a foreign return has no `actual_model` — §2b) |
|
|
14
|
-
| Read only (recon) |
|
|
14
|
+
| Read only (recon) | `orc-recon-sonnet-4-6-med` · `orc-recon-opus-5-low` · **other — name a model** | yes · yes · no | yes |
|
|
15
15
|
| Review | `orc-reviewer-opus-5-med` · or ad-hoc | yes / no | yes |
|
|
16
16
|
| Build repair, round 1–2 | *reused — not asked* | yes | yes |
|
|
17
17
|
| Build repair, round 3 | asked again | yes | yes |
|
|
@@ -22,7 +22,9 @@ what is about to be spent, before it is spent.
|
|
|
22
22
|
Which executor for entry 2 — "add retry header"?
|
|
23
23
|
|
|
24
24
|
1. orc-executor-sonnet-4-6-med cheap, fits a 3-file change
|
|
25
|
-
2. orc-executor-opus-5-low thinks harder, about 3× the cost
|
|
25
|
+
2. orc-executor-opus-5-low thinks harder, about 3× the cost → suggested: callers 9 in 5 files
|
|
26
|
+
|
|
27
|
+
Your choice — nothing runs until you answer.
|
|
26
28
|
```
|
|
27
29
|
|
|
28
30
|
Give a short reason next to each one, based on what the dig found. The user
|
|
@@ -73,34 +75,63 @@ answers.
|
|
|
73
75
|
|
|
74
76
|
### Read-only work (recon)
|
|
75
77
|
|
|
76
|
-
|
|
78
|
+
Recon is a **pinned pair**. Both agents answer ONE question with `file:line`
|
|
79
|
+
evidence and return the same fields, so the user is choosing a model, nothing
|
|
80
|
+
else.
|
|
77
81
|
|
|
78
82
|
```
|
|
79
|
-
Entry 3 is a context dig.
|
|
83
|
+
Entry 3 is a context dig. Which agent should look?
|
|
80
84
|
|
|
81
|
-
|
|
82
|
-
|
|
85
|
+
1. orc-recon-sonnet-4-6-med finding things, not deciding → suggested
|
|
86
|
+
2. orc-recon-opus-5-low a wide or subtle question
|
|
87
|
+
3. other — name a model (effort follows your session; not traced by the hook)
|
|
83
88
|
|
|
84
|
-
|
|
89
|
+
Your choice — nothing runs until you answer.
|
|
85
90
|
```
|
|
86
91
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
92
|
+
**Why a pair and not an ad-hoc model.** Ad-hoc was cheap and varied, and the
|
|
93
|
+
price was measured: the trace hook only sees an agent whose name starts with
|
|
94
|
+
`orc-`, so an ad-hoc recon wrote no `SPAWN` or `RETURN` line, `orc run inflight`
|
|
95
|
+
could not see it in flight, and `/orc-retro` could not count it. The pair fixes
|
|
96
|
+
all three at once and gives recon a return contract the gate can check.
|
|
97
|
+
|
|
98
|
+
**Line 3 is the escape hatch, and it names a MODEL only.** The Agent tool takes
|
|
99
|
+
a per-call model and has no per-call effort knob, so an "effort" option there
|
|
100
|
+
was a setting that did not exist; effort follows your session. An `other`
|
|
101
|
+
dispatch is still untraced by the hook, and two of the three signals still work
|
|
102
|
+
because YOU write them:
|
|
103
|
+
|
|
104
|
+
- You still emit `DISPATCH model=… adhoc=true` and `VERIFY` into the trace packet.
|
|
105
|
+
- The downgrade check still works: the slice tells the agent to report its own
|
|
106
|
+
`actual_model` and `actual_effort`.
|
|
107
|
+
|
|
108
|
+
What is truly lost is `/orc-retro` aggregation. Mark the row
|
|
109
|
+
`*(ad-hoc, untraced-by-hook)*` in the doc so a human can see the gap. A dispatch
|
|
110
|
+
of either pinned agent is a normal row with the agent's name.
|
|
111
|
+
|
|
112
|
+
## The suggestion
|
|
113
|
+
|
|
114
|
+
One line on a menu MAY carry `→ suggested`. It is a recommendation with its
|
|
115
|
+
reason attached, the same shape every ORC question uses
|
|
116
|
+
(`../../_shared/interview.md`). **It is never a pre-selection and never a
|
|
117
|
+
default**, and the menu still ends with
|
|
118
|
+
`Your choice — nothing runs until you answer.`
|
|
119
|
+
|
|
120
|
+
The reason comes from the dig, never from a feeling. Suggest
|
|
121
|
+
`orc-executor-opus-5-low` when ANY of these holds:
|
|
122
|
+
|
|
123
|
+
| Suggest the stronger executor when | Because |
|
|
124
|
+
|---|---|
|
|
125
|
+
| confident callers of the files to change ≥ 8 (from the dig, or from `orc graph changes`) | the change is felt in more places than a cheap pass checks |
|
|
126
|
+
| a risk class is visible: auth · money · migration · security · concurrency · data-integrity | the same six classes the full lane's planner floors to 70 |
|
|
127
|
+
| more than 3 files will really change | the cheap executor's sweet spot is a 1–3 file change |
|
|
128
|
+
| **otherwise** → `orc-executor-sonnet-4-6-med` | the boring choice for a mechanical edit |
|
|
129
|
+
|
|
130
|
+
**Always print the reason beside the marker.** A marker with no reason is a
|
|
131
|
+
default wearing a recommendation's clothes, and rule 1 forbids it.
|
|
132
|
+
|
|
133
|
+
For recon, the suggestion is simpler: `orc-recon-sonnet-4-6-med` finds things;
|
|
134
|
+
`orc-recon-opus-5-low` is for a wide or a subtle question.
|
|
104
135
|
|
|
105
136
|
## Rules
|
|
106
137
|
|