@azure-id/orc 0.56.1 → 1.1.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 +219 -0
- package/README-id.md +49 -107
- package/README.md +694 -719
- package/bin/build-agents.js +18 -11
- package/bin/cli.js +33699 -29855
- package/bin/onboarding-content.js +0 -3
- package/bin/test-run.js +491 -0
- package/bin/verify-contracts.js +4330 -3277
- package/bin/verify-package.js +76 -6
- package/bin/webui/api.js +1201 -1163
- package/bin/webui/app.html +210 -198
- package/bin/webui/css/06-responsive.css +120 -108
- package/bin/webui/css/panels/extra.css +29 -0
- package/bin/webui/css/panels/lanes.css +134 -0
- package/bin/webui/css/panels/settings.css +79 -3
- package/bin/webui/css/panels/wait.css +123 -0
- package/bin/webui/fixtures/extra.js +2036 -1934
- package/bin/webui/fixtures/flow.js +2 -2
- package/bin/webui/fixtures/index.js +510 -486
- package/bin/webui/fixtures/lanes.js +218 -0
- package/bin/webui/fixtures/settings.js +261 -34
- package/bin/webui/fixtures/stats.js +3 -3
- package/bin/webui/fixtures/wait.js +97 -0
- package/bin/webui/i18n/TERMS.md +135 -134
- package/bin/webui/i18n/en/extra.json +345 -313
- package/bin/webui/i18n/en/lanes.json +29 -0
- package/bin/webui/i18n/en/nav.json +21 -19
- package/bin/webui/i18n/en/overview.json +2 -0
- package/bin/webui/i18n/en/settings.json +16 -5
- package/bin/webui/i18n/en/wait.json +41 -0
- package/bin/webui/i18n/id/extra.json +345 -313
- package/bin/webui/i18n/id/lanes.json +29 -0
- package/bin/webui/i18n/id/nav.json +21 -19
- package/bin/webui/i18n/id/overview.json +2 -0
- package/bin/webui/i18n/id/settings.json +15 -4
- package/bin/webui/i18n/id/wait.json +41 -0
- package/bin/webui/js/01-i18n.js +151 -149
- package/bin/webui/js/panels/extra.js +3199 -3011
- package/bin/webui/js/panels/lanes.js +259 -0
- package/bin/webui/js/panels/overview.js +10 -0
- package/bin/webui/js/panels/settings.js +149 -3
- package/bin/webui/js/panels/wait.js +253 -0
- package/package.json +39 -39
- package/templates/agents/MODEL-MAPPING.md +23 -35
- package/templates/agents/orc-executor-opus-4-7-high.md +1 -1
- package/templates/agents/orc-executor-opus-4-7-med.md +1 -1
- package/templates/agents/orc-executor-opus-4-8-high.md +1 -1
- package/templates/agents/orc-executor-opus-5-high.md +1 -1
- package/templates/agents/orc-executor-opus-5-low.md +1 -1
- package/templates/agents/orc-executor-opus-5-med.md +1 -1
- package/templates/agents/orc-retro-opus-5-med.md +73 -73
- package/templates/agents/orc-retro-sonnet-5-high.md +72 -72
- package/templates/agents/orc-trace-writer-haiku-4-5.md +107 -107
- package/templates/commands/orc-route.md +1 -1
- package/templates/commands/orc-wait.md +19 -0
- package/templates/commands/orc.md +1 -1
- package/templates/hooks/orc-statusline.js +39 -0
- package/templates/skills/_shared/README.md +7 -3
- package/templates/skills/_shared/config-precedence.md +198 -0
- package/templates/skills/_shared/drift-recovery.md +1 -1
- package/templates/skills/_shared/extra-dispatch.md +159 -7
- package/templates/skills/_shared/interview.md +1 -1
- package/templates/skills/_shared/opus5-only.md +9 -7
- package/templates/skills/_shared/phases/README.md +82 -0
- package/templates/skills/{orc/references → _shared/phases}/analyst-gates.md +15 -3
- package/templates/skills/_shared/phases/execution.md +143 -0
- package/templates/skills/{orc/references → _shared/phases}/house-rules.md +13 -1
- package/templates/skills/{orc/references → _shared/phases}/intake.md +15 -2
- package/templates/skills/_shared/phases/mock-example.md +56 -0
- package/templates/skills/{orc/references → _shared/phases}/plan-handoff.md +16 -3
- package/templates/skills/_shared/phases/planning.md +135 -0
- package/templates/skills/_shared/phases/preflight.md +98 -0
- package/templates/skills/_shared/phases/review.md +53 -0
- package/templates/skills/_shared/phases/scoring.md +65 -0
- package/templates/skills/{orc/references → _shared/phases}/security-checklist.md +12 -1
- package/templates/skills/_shared/phases/security.md +55 -0
- package/templates/skills/_shared/phases/ship.md +88 -0
- package/templates/skills/{orc/references/stop-and-resume.md → _shared/phases/stop-resume.md} +169 -160
- package/templates/skills/_shared/phases/summary.md +48 -0
- package/templates/skills/_shared/phases/testgen.md +51 -0
- package/templates/skills/{orc/references/trace-protocol.md → _shared/phases/trace.md} +49 -6
- package/templates/skills/_shared/phases/verify.md +70 -0
- package/templates/skills/{orc/references → _shared/phases}/wave-grouping.md +14 -2
- package/templates/skills/{orc/references → _shared/phases}/wiki-consult.md +13 -1
- package/templates/skills/_shared/read-ladder.md +48 -0
- package/templates/skills/_shared/wait.md +240 -0
- package/templates/skills/context-combiner/SKILL.md +214 -187
- package/templates/skills/orc/README.md +148 -150
- package/templates/skills/orc/SKILL.md +75 -358
- package/templates/skills/orc/config.md +137 -389
- package/templates/skills/orc/examples/full-run-mock.md +1 -1
- package/templates/skills/orc/references/effort-and-mode.md +16 -18
- package/templates/skills/orc/references/phases/intake.md +47 -0
- package/templates/skills/orc/references/phases/integration.md +19 -0
- package/templates/skills/orc/references/preflight-report.md +4 -4
- package/templates/skills/orc/references/ultra-mode.md +117 -123
- package/templates/skills/orc/schemas/planning-output.md +279 -279
- package/templates/skills/orc/subskills/orc-planner/SKILL.md +260 -264
- package/templates/skills/orc/subskills/orc-pr/stack-gate.md +4 -1
- package/templates/skills/orc-aftermath/SKILL.md +158 -136
- package/templates/skills/orc-analyze/SKILL.md +252 -220
- package/templates/skills/orc-analyze/references/branching.md +51 -51
- package/templates/skills/orc-analyze/references/thin-input.md +1 -1
- package/templates/skills/orc-analyze-mini/SKILL.md +128 -112
- package/templates/skills/orc-boundary/SKILL.md +249 -208
- package/templates/skills/orc-brainstorm/SKILL.md +377 -339
- package/templates/skills/orc-budget/SKILL.md +248 -225
- package/templates/skills/orc-challenge/README.md +1 -1
- package/templates/skills/orc-challenge/SKILL.md +298 -255
- package/templates/skills/orc-challenge/examples/council-full-roster.md +1 -1
- package/templates/skills/orc-claude/SKILL.md +221 -199
- package/templates/skills/orc-diy/README.md +2 -1
- package/templates/skills/orc-diy/SKILL.md +132 -68
- package/templates/skills/orc-diy/references/blocks/analyze.md +1 -1
- package/templates/skills/orc-diy/references/compile.md +21 -7
- package/templates/skills/orc-diy/references/flow-schema.md +2 -2
- package/templates/skills/orc-doc/SKILL.md +49 -7
- package/templates/skills/orc-explain/SKILL.md +24 -0
- package/templates/skills/orc-export/SKILL.md +31 -5
- package/templates/skills/orc-fast/SKILL.md +218 -185
- package/templates/skills/orc-grill/SKILL.md +238 -207
- package/templates/skills/orc-handoff/SKILL.md +223 -204
- package/templates/skills/orc-learn/SKILL.md +181 -156
- package/templates/skills/orc-mini/SKILL.md +47 -24
- package/templates/skills/orc-pact/SKILL.md +255 -218
- package/templates/skills/orc-pattern/SKILL.md +154 -124
- package/templates/skills/orc-poly/SKILL.md +242 -216
- package/templates/skills/orc-poly/references/gather.md +1 -1
- package/templates/skills/orc-pr-driver/SKILL.md +196 -167
- package/templates/skills/orc-pr-driver/references/orc-run-split.md +1 -1
- package/templates/skills/orc-pr-setup/SKILL.md +212 -184
- package/templates/skills/orc-quick/README.md +2 -2
- package/templates/skills/orc-quick/SKILL.md +51 -13
- package/templates/skills/orc-quick/references/dispatch-gate.md +2 -3
- package/templates/skills/orc-retro/SKILL.md +249 -222
- package/templates/skills/orc-retro/examples/retro-mock.md +171 -171
- package/templates/skills/orc-route/SKILL.md +188 -165
- package/templates/skills/orc-verify/SKILL.md +103 -84
- package/templates/skills/orc-wait/SKILL.md +163 -0
- package/templates/skills/orc-wiki/SKILL.md +60 -206
- package/templates/skills/orc-wiki/references/phases/phase-0.md +71 -0
- package/templates/skills/orc-wiki/references/phases/phase-1.md +35 -0
- package/templates/skills/orc-wiki/references/phases/phase-2.md +52 -0
- package/templates/skills/orc-wiki/references/phases/phase-3.md +57 -0
- package/templates/skills/orc-wiki/references/phases/phase-3c.md +36 -0
- package/templates/agents/orc-advisor-fable-5.md +0 -50
- package/templates/agents/orc-analyst-fable-5.md +0 -115
- package/templates/agents/orc-judge-fable-5.md +0 -79
- package/templates/agents/orc-planner-fable-5.md +0 -152
- package/templates/agents/orc-reviewer-fable-5.md +0 -57
- package/templates/skills/_shared/fable5-override.md +0 -56
- package/templates/skills/orc-diy/references/blocks/execution.md +0 -42
- package/templates/skills/orc-diy/references/blocks/mock-example.md +0 -22
- package/templates/skills/orc-diy/references/blocks/planning.md +0 -34
- package/templates/skills/orc-diy/references/blocks/review.md +0 -18
- package/templates/skills/orc-diy/references/blocks/scoring.md +0 -16
- package/templates/skills/orc-diy/references/blocks/security.md +0 -25
- package/templates/skills/orc-diy/references/blocks/ship.md +0 -25
- package/templates/skills/orc-diy/references/blocks/summary.md +0 -18
- package/templates/skills/orc-diy/references/blocks/testgen.md +0 -17
- package/templates/skills/orc-diy/references/blocks/trace.md +0 -28
- package/templates/skills/orc-diy/references/blocks/verify.md +0 -25
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* fixtures/wait.js — canned `orc usage check` / `orc wait …` responses.
|
|
4
|
+
*
|
|
5
|
+
* ONE OF EVERY STATE, including the ugly ones. You cannot design an `unknown`
|
|
6
|
+
* chip on a project whose statusline is happily writing a reading every second,
|
|
7
|
+
* and `unknown` is the state that matters most here: it is what every install
|
|
8
|
+
* on Claude Code before v2.1.80 sees, forever.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
// LOW, and low on the WORST window rather than the obvious one. The 5-hour
|
|
12
|
+
// window is the one people watch; this fixture has it comfortable and the
|
|
13
|
+
// weekly one nearly gone, which is the case a panel gets wrong.
|
|
14
|
+
const usage = {
|
|
15
|
+
ok: true,
|
|
16
|
+
state: "low",
|
|
17
|
+
five_hour: {
|
|
18
|
+
window: "5h",
|
|
19
|
+
used_percentage: 62,
|
|
20
|
+
remaining_percentage: 38,
|
|
21
|
+
resets_at: new Date(Date.now() + 96 * 60000).toISOString(),
|
|
22
|
+
resets_in_minutes: 96,
|
|
23
|
+
low: false,
|
|
24
|
+
},
|
|
25
|
+
seven_day: {
|
|
26
|
+
window: "wk",
|
|
27
|
+
used_percentage: 94,
|
|
28
|
+
remaining_percentage: 6,
|
|
29
|
+
resets_at: new Date(Date.now() + 2 * 86400000).toISOString(),
|
|
30
|
+
resets_in_minutes: 2880,
|
|
31
|
+
low: true,
|
|
32
|
+
},
|
|
33
|
+
worst: "wk",
|
|
34
|
+
context: 81,
|
|
35
|
+
stop_pct: 10,
|
|
36
|
+
gate: "wait",
|
|
37
|
+
reading_age_minutes: 2,
|
|
38
|
+
note: "read BEFORE a wave; the wave then spends tokens, so this is a reading and not a promise.",
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
// The state a fresh install on older Claude Code sits in permanently.
|
|
42
|
+
const usageUnknown = {
|
|
43
|
+
ok: true,
|
|
44
|
+
state: "unknown",
|
|
45
|
+
reason: "no reading in the last 30 minutes",
|
|
46
|
+
five_hour: null,
|
|
47
|
+
seven_day: null,
|
|
48
|
+
context: null,
|
|
49
|
+
stop_pct: 10,
|
|
50
|
+
gate: "warn",
|
|
51
|
+
note: "unknown is not low — a run is never stopped on a missing reading. Claude Code before v2.1.80 sends no usage headers.",
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
const waitLanes = {
|
|
55
|
+
ok: true,
|
|
56
|
+
modes: ["safe", "soft", "hard"],
|
|
57
|
+
checkpoints: ["full", "docset", "entry", "cycle", "snapshot", "none"],
|
|
58
|
+
lanes: [
|
|
59
|
+
{ lane: "/orc", checkpoint: "full", safe_point: "wave or phase edge", modes: ["safe", "soft", "hard"], modes_differ: true, detail: "soft forces the full checkpoint before it stops; hard writes RESUME.md only and can lose an in-flight return." },
|
|
60
|
+
{ lane: "/orc-doc", checkpoint: "full", safe_point: "wave edge", modes: ["safe", "soft", "hard"], modes_differ: true, detail: "soft forces the full checkpoint before it stops; hard writes RESUME.md only and can lose an in-flight return." },
|
|
61
|
+
{ lane: "/orc-quick", checkpoint: "entry", safe_point: "after an entry closes", modes: ["safe", "soft", "hard"], modes_differ: true, detail: "soft forces the entry checkpoint before it stops; hard writes RESUME.md only and can lose an in-flight return." },
|
|
62
|
+
{ lane: "/orc-brainstorm", checkpoint: "snapshot", safe_point: "phase edge", modes: ["safe", "soft", "hard"], modes_differ: true, detail: "soft forces the snapshot checkpoint before it stops; hard writes RESUME.md only and can lose an in-flight return." },
|
|
63
|
+
// A `none` row KEEPS ITS SLOT. Filtering it out would make "this lane has
|
|
64
|
+
// nothing to checkpoint" and "this lane does not support a wait" identical.
|
|
65
|
+
{ lane: "/orc-explain", checkpoint: "none", safe_point: "read-only, seconds long", modes: ["safe", "soft", "hard"], modes_differ: false, detail: "nothing to checkpoint — one dispatch, or a read. safe, soft and hard behave identically here." },
|
|
66
|
+
{ lane: "/orc-verify", checkpoint: "none", safe_point: "single dispatch", modes: ["safe", "soft", "hard"], modes_differ: false, detail: "nothing to checkpoint — one dispatch, or a read. safe, soft and hard behave identically here." },
|
|
67
|
+
],
|
|
68
|
+
note: "A lane not in this list does not support a wait.",
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
// Blocked AND waiting at once — the busiest the card ever gets.
|
|
72
|
+
const waitStatus = {
|
|
73
|
+
ok: true,
|
|
74
|
+
run: "rate-limit-api",
|
|
75
|
+
waiting: true,
|
|
76
|
+
mode: "soft",
|
|
77
|
+
hop: 30,
|
|
78
|
+
hops_done: 2,
|
|
79
|
+
hops_planned: 4,
|
|
80
|
+
ends_at: new Date(Date.now() + 44 * 60000).toISOString(),
|
|
81
|
+
cancel_requested: false,
|
|
82
|
+
blocked: true,
|
|
83
|
+
block_reason: "window resets in 5m, task needs 10",
|
|
84
|
+
blocked_at: new Date(Date.now() - 12 * 60000).toISOString(),
|
|
85
|
+
block_age_minutes: 12,
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
// No run in flight. An empty result is an ANSWER, so it still carries an object.
|
|
89
|
+
const waitStatusNone = {
|
|
90
|
+
ok: true,
|
|
91
|
+
run: null,
|
|
92
|
+
waiting: false,
|
|
93
|
+
blocked: false,
|
|
94
|
+
note: "no run is in flight",
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
module.exports = { usage, usageUnknown, waitLanes, waitStatus, waitStatusNone };
|
package/bin/webui/i18n/TERMS.md
CHANGED
|
@@ -1,134 +1,135 @@
|
|
|
1
|
-
# Panel wording — the term list
|
|
2
|
-
|
|
3
|
-
> One page. It exists so the next two hundred strings stay consistent, because
|
|
4
|
-
> without it a wording pass drifts back within two releases.
|
|
5
|
-
|
|
6
|
-
The panel's **instruction text** is written in Simplified Technical English
|
|
7
|
-
(ASD-STE100 in spirit, not in certification). Instruction text is anything the
|
|
8
|
-
user must **act on**: a button, a field label, a hint, an error, a gate, a
|
|
9
|
-
countdown, an install or connect step.
|
|
10
|
-
|
|
11
|
-
**Rationale prose keeps its voice** and only gets shorter. Sentences like *"It
|
|
12
|
-
stops someone at your keyboard, not someone who copied the file"* draw a
|
|
13
|
-
distinction STE has no vocabulary for; flattened, they become true and useless.
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## The rule that is not negotiable
|
|
18
|
-
|
|
19
|
-
> **NEVER simplify a CLI-computed value.**
|
|
20
|
-
|
|
21
|
-
A state word, an exit reason, a doctor message, a config key, a model id, a
|
|
22
|
-
provider id, a path, a band or a command is **not prose** and is not the panel's
|
|
23
|
-
to rewrite. A simplified state word is a state that does not exist — the same
|
|
24
|
-
failure as a translated config key.
|
|
25
|
-
|
|
26
|
-
This applies to `bin/cli.js --json` output in every panel, in every language.
|
|
27
|
-
|
|
28
|
-
---
|
|
29
|
-
|
|
30
|
-
## How to write an instruction
|
|
31
|
-
|
|
32
|
-
- One instruction per sentence.
|
|
33
|
-
- 20 words maximum.
|
|
34
|
-
- Active voice, present tense, "you" as the subject.
|
|
35
|
-
- The condition comes **before** the action: *"If the test is green, save the key."*
|
|
36
|
-
- No phrasal verb where a single verb exists.
|
|
37
|
-
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
## One word, one meaning
|
|
41
|
-
|
|
42
|
-
Pick the left column. Never use the right column for the same idea.
|
|
43
|
-
|
|
44
|
-
| use | never |
|
|
45
|
-
|---|---|
|
|
46
|
-
| **connect** (make a connection to a provider) | add, link, hook up, set up |
|
|
47
|
-
| **test** (prove a connection answers) | probe, ping, check, try |
|
|
48
|
-
| **delete** (remove permanently) | remove, forget, drop, clear, wipe |
|
|
49
|
-
| **save** (write and keep) | store, persist, remember |
|
|
50
|
-
| **enable** / **disable** | turn on, turn off, switch on, activate |
|
|
51
|
-
| **configure** | set up, sort out |
|
|
52
|
-
| **run** (execute a command) | fire, kick off, trigger, invoke |
|
|
53
|
-
| **open** (a file, a window, a terminal) | bring up, pull up, launch |
|
|
54
|
-
| **install** | get, grab, pull |
|
|
55
|
-
| **refresh** (read again) | reload, re-fetch, sync |
|
|
56
|
-
| **stop** (end before it finishes) | halt, abort, kill, cancel |
|
|
57
|
-
| **wait** | hold, pause, hang on |
|
|
58
|
-
| **choose** | pick, select from |
|
|
59
|
-
| **show** | display, render, surface |
|
|
60
|
-
| **key** (a credential value) | token, secret, api key |
|
|
61
|
-
| **passphrase** (what opens the vault) | password, phrase, secret |
|
|
62
|
-
| **deadline** (when a saved passphrase ends) | expiry, timeout, TTL, lifetime |
|
|
63
|
-
| **connection** (a configured profile) | profile, endpoint, provider link |
|
|
64
|
-
| **document** | doc, file, artefact |
|
|
65
|
-
| **section** | part, chunk, block |
|
|
66
|
-
| **command** | line, invocation |
|
|
67
|
-
|
|
68
|
-
Two exceptions, both because they are the CLI's own words and the rule above
|
|
69
|
-
outranks this table:
|
|
70
|
-
|
|
71
|
-
- `profile` where the CLI prints `profile`;
|
|
72
|
-
- `ping`, `probe` and `forget` where they are the **name of a command**
|
|
73
|
-
(`orc extra ping`, `orc extra session --forget`).
|
|
74
|
-
|
|
75
|
-
---
|
|
76
|
-
|
|
77
|
-
## Where each rule applies
|
|
78
|
-
|
|
79
|
-
| STE, strictly | keep the voice |
|
|
80
|
-
|---|---|
|
|
81
|
-
| button and control labels | the honesty sentences (the passphrase deadline, `tok=none`, "zero reroutes is not evidence") |
|
|
82
|
-
| field labels and hints | the boundary card |
|
|
83
|
-
| error and refusal text | the "why this design" notes |
|
|
84
|
-
| every gate and countdown sentence | trace-format explanations |
|
|
85
|
-
| install and connect steps | |
|
|
86
|
-
| the passphrase modal, **end to end** — it is a procedure and it cannot be dismissed | |
|
|
87
|
-
|
|
88
|
-
---
|
|
89
|
-
|
|
90
|
-
## Keys that keep their voice
|
|
91
|
-
|
|
92
|
-
The default is STE: **a new key is instruction text unless it is listed here.**
|
|
93
|
-
Opting out is a deliberate line in a diff somebody reads, which is the same
|
|
94
|
-
shape as the contract-lint table.
|
|
95
|
-
|
|
96
|
-
These are the sentences doing the most work in this subsystem, and STE has no
|
|
97
|
-
vocabulary for the distinctions they draw. Flattened, they become true and
|
|
98
|
-
useless. The test parses this fenced list by name.
|
|
99
|
-
|
|
100
|
-
```prose-keys
|
|
101
|
-
extra.boundary.leaves
|
|
102
|
-
extra.boundary.whom
|
|
103
|
-
extra.boundary.cannot
|
|
104
|
-
extra.boundary.fence
|
|
105
|
-
extra.boundary.probe
|
|
106
|
-
extra.providers.subWhy
|
|
107
|
-
extra.providers.noModels
|
|
108
|
-
extra.providers.stale
|
|
109
|
-
extra.routing.gapWhy
|
|
110
|
-
extra.gate.hiddenWhy
|
|
111
|
-
extra.cost.noRate
|
|
112
|
-
extra.cost.sourcesWhy
|
|
113
|
-
extra.live.noReport
|
|
114
|
-
extra.tools.subWhy
|
|
115
|
-
extra.tools.altNone
|
|
116
|
-
extra.tools.neverElevates
|
|
117
|
-
extra.add.vaultWarn
|
|
118
|
-
extra.session.honesty
|
|
119
|
-
extra.lanes.subWhy
|
|
120
|
-
extra.guard.subWhy
|
|
121
|
-
extra.recovery.noteWhy
|
|
122
|
-
extra.
|
|
123
|
-
extra.slots.
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
—
|
|
134
|
-
|
|
1
|
+
# Panel wording — the term list
|
|
2
|
+
|
|
3
|
+
> One page. It exists so the next two hundred strings stay consistent, because
|
|
4
|
+
> without it a wording pass drifts back within two releases.
|
|
5
|
+
|
|
6
|
+
The panel's **instruction text** is written in Simplified Technical English
|
|
7
|
+
(ASD-STE100 in spirit, not in certification). Instruction text is anything the
|
|
8
|
+
user must **act on**: a button, a field label, a hint, an error, a gate, a
|
|
9
|
+
countdown, an install or connect step.
|
|
10
|
+
|
|
11
|
+
**Rationale prose keeps its voice** and only gets shorter. Sentences like *"It
|
|
12
|
+
stops someone at your keyboard, not someone who copied the file"* draw a
|
|
13
|
+
distinction STE has no vocabulary for; flattened, they become true and useless.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## The rule that is not negotiable
|
|
18
|
+
|
|
19
|
+
> **NEVER simplify a CLI-computed value.**
|
|
20
|
+
|
|
21
|
+
A state word, an exit reason, a doctor message, a config key, a model id, a
|
|
22
|
+
provider id, a path, a band or a command is **not prose** and is not the panel's
|
|
23
|
+
to rewrite. A simplified state word is a state that does not exist — the same
|
|
24
|
+
failure as a translated config key.
|
|
25
|
+
|
|
26
|
+
This applies to `bin/cli.js --json` output in every panel, in every language.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## How to write an instruction
|
|
31
|
+
|
|
32
|
+
- One instruction per sentence.
|
|
33
|
+
- 20 words maximum.
|
|
34
|
+
- Active voice, present tense, "you" as the subject.
|
|
35
|
+
- The condition comes **before** the action: *"If the test is green, save the key."*
|
|
36
|
+
- No phrasal verb where a single verb exists.
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## One word, one meaning
|
|
41
|
+
|
|
42
|
+
Pick the left column. Never use the right column for the same idea.
|
|
43
|
+
|
|
44
|
+
| use | never |
|
|
45
|
+
|---|---|
|
|
46
|
+
| **connect** (make a connection to a provider) | add, link, hook up, set up |
|
|
47
|
+
| **test** (prove a connection answers) | probe, ping, check, try |
|
|
48
|
+
| **delete** (remove permanently) | remove, forget, drop, clear, wipe |
|
|
49
|
+
| **save** (write and keep) | store, persist, remember |
|
|
50
|
+
| **enable** / **disable** | turn on, turn off, switch on, activate |
|
|
51
|
+
| **configure** | set up, sort out |
|
|
52
|
+
| **run** (execute a command) | fire, kick off, trigger, invoke |
|
|
53
|
+
| **open** (a file, a window, a terminal) | bring up, pull up, launch |
|
|
54
|
+
| **install** | get, grab, pull |
|
|
55
|
+
| **refresh** (read again) | reload, re-fetch, sync |
|
|
56
|
+
| **stop** (end before it finishes) | halt, abort, kill, cancel |
|
|
57
|
+
| **wait** | hold, pause, hang on |
|
|
58
|
+
| **choose** | pick, select from |
|
|
59
|
+
| **show** | display, render, surface |
|
|
60
|
+
| **key** (a credential value) | token, secret, api key |
|
|
61
|
+
| **passphrase** (what opens the vault) | password, phrase, secret |
|
|
62
|
+
| **deadline** (when a saved passphrase ends) | expiry, timeout, TTL, lifetime |
|
|
63
|
+
| **connection** (a configured profile) | profile, endpoint, provider link |
|
|
64
|
+
| **document** | doc, file, artefact |
|
|
65
|
+
| **section** | part, chunk, block |
|
|
66
|
+
| **command** | line, invocation |
|
|
67
|
+
|
|
68
|
+
Two exceptions, both because they are the CLI's own words and the rule above
|
|
69
|
+
outranks this table:
|
|
70
|
+
|
|
71
|
+
- `profile` where the CLI prints `profile`;
|
|
72
|
+
- `ping`, `probe` and `forget` where they are the **name of a command**
|
|
73
|
+
(`orc extra ping`, `orc extra session --forget`).
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Where each rule applies
|
|
78
|
+
|
|
79
|
+
| STE, strictly | keep the voice |
|
|
80
|
+
|---|---|
|
|
81
|
+
| button and control labels | the honesty sentences (the passphrase deadline, `tok=none`, "zero reroutes is not evidence") |
|
|
82
|
+
| field labels and hints | the boundary card |
|
|
83
|
+
| error and refusal text | the "why this design" notes |
|
|
84
|
+
| every gate and countdown sentence | trace-format explanations |
|
|
85
|
+
| install and connect steps | |
|
|
86
|
+
| the passphrase modal, **end to end** — it is a procedure and it cannot be dismissed | |
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Keys that keep their voice
|
|
91
|
+
|
|
92
|
+
The default is STE: **a new key is instruction text unless it is listed here.**
|
|
93
|
+
Opting out is a deliberate line in a diff somebody reads, which is the same
|
|
94
|
+
shape as the contract-lint table.
|
|
95
|
+
|
|
96
|
+
These are the sentences doing the most work in this subsystem, and STE has no
|
|
97
|
+
vocabulary for the distinctions they draw. Flattened, they become true and
|
|
98
|
+
useless. The test parses this fenced list by name.
|
|
99
|
+
|
|
100
|
+
```prose-keys
|
|
101
|
+
extra.boundary.leaves
|
|
102
|
+
extra.boundary.whom
|
|
103
|
+
extra.boundary.cannot
|
|
104
|
+
extra.boundary.fence
|
|
105
|
+
extra.boundary.probe
|
|
106
|
+
extra.providers.subWhy
|
|
107
|
+
extra.providers.noModels
|
|
108
|
+
extra.providers.stale
|
|
109
|
+
extra.routing.gapWhy
|
|
110
|
+
extra.gate.hiddenWhy
|
|
111
|
+
extra.cost.noRate
|
|
112
|
+
extra.cost.sourcesWhy
|
|
113
|
+
extra.live.noReport
|
|
114
|
+
extra.tools.subWhy
|
|
115
|
+
extra.tools.altNone
|
|
116
|
+
extra.tools.neverElevates
|
|
117
|
+
extra.add.vaultWarn
|
|
118
|
+
extra.session.honesty
|
|
119
|
+
extra.lanes.subWhy
|
|
120
|
+
extra.guard.subWhy
|
|
121
|
+
extra.recovery.noteWhy
|
|
122
|
+
extra.demotion.noteWhy
|
|
123
|
+
extra.slots.subWhy
|
|
124
|
+
extra.slots.keepsSlotWhy
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## What is NOT checked automatically
|
|
130
|
+
|
|
131
|
+
There is no STE checker in this repo and there is not going to be one: a real
|
|
132
|
+
one needs the approved dictionary, which is licensed. A test asserts the cheap
|
|
133
|
+
half — no string in the STE set is over 20 words, and no banned synonym appears
|
|
134
|
+
— and the rest is this page plus review. A checker that half-works would be
|
|
135
|
+
worse than none, because people would trust it.
|