@orkestrel/scaffold 0.0.103 → 0.0.104
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/dist/agents/skills/orkestrel-dispatch/scripts/helpers.js +84 -1
- package/dist/agents/skills/orkestrel-dispatch/scripts/launch.js +21 -6
- package/dist/agents/skills/orkestrel-harden/scripts/titles.js +338 -0
- package/dist/agents/skills/orkestrel-publish/scripts/swap.js +3 -39
- package/dist/agents/skills/orkestrel-publish/scripts/wave.js +433 -47
- package/dist/agents/skills/orkestrel-publish/scripts/window.js +2 -1
- package/dist/bin/main.js +16 -9
- package/dist/bin/main.js.map +1 -1
- package/dist/host/agents/orchestration.md +3 -3
- package/dist/host/agents/skills/enterprise-bootstrap/references/components.md +2 -2
- package/dist/host/agents/skills/enterprise-bootstrap/references/inspection.md +1 -1
- package/dist/host/agents/skills/orkestrel-build/SKILL.md +2 -2
- package/dist/host/agents/skills/orkestrel-debrief/SKILL.md +2 -2
- package/dist/host/agents/skills/orkestrel-debrief/references/field-testing.md +1 -1
- package/dist/host/agents/skills/orkestrel-debrief/references/instruction-audit.md +3 -3
- package/dist/host/agents/skills/orkestrel-dispatch/SKILL.md +10 -10
- package/dist/host/agents/skills/orkestrel-dispatch/references/launch.md +1 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/helpers.ts +100 -1
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/launch.ts +27 -6
- package/dist/host/agents/skills/orkestrel-falsify/SKILL.md +4 -4
- package/dist/host/agents/skills/orkestrel-falsify/agents/openai.yaml +1 -1
- package/dist/host/agents/skills/orkestrel-falsify/references/brief.md +8 -7
- package/dist/host/agents/skills/orkestrel-falsify/references/reconcile.md +6 -6
- package/dist/host/agents/skills/orkestrel-harden/SKILL.md +6 -1
- package/dist/host/agents/skills/orkestrel-harden/references/bindings.md +1700 -0
- package/dist/host/agents/skills/orkestrel-harden/references/contract.md +2 -2
- package/dist/host/agents/skills/orkestrel-harden/references/equivalence.md +48 -0
- package/dist/host/agents/skills/orkestrel-harden/references/hardening.md +4 -2
- package/dist/host/agents/skills/orkestrel-harden/scripts/titles.ts +425 -0
- package/dist/host/agents/skills/orkestrel-journey/SKILL.md +2 -2
- package/dist/host/agents/skills/orkestrel-journey/references/captures.md +9 -8
- package/dist/host/agents/skills/orkestrel-polish/SKILL.md +3 -3
- package/dist/host/agents/skills/orkestrel-publish/SKILL.md +2 -2
- package/dist/host/agents/skills/orkestrel-publish/references/release.md +1 -0
- package/dist/host/agents/skills/orkestrel-publish/references/wave.md +56 -13
- package/dist/host/agents/skills/orkestrel-publish/references/window.md +6 -6
- package/dist/host/agents/skills/orkestrel-publish/scripts/swap.ts +5 -49
- package/dist/host/agents/skills/orkestrel-publish/scripts/wave.ts +646 -49
- package/dist/host/agents/skills/orkestrel-publish/scripts/window.ts +2 -1
- package/dist/host/agents/transports/codex.md +1 -1
- package/dist/host/claude/agents/orkestrel.md +54 -53
- package/dist/host/claude/agents/reviewer.md +4 -4
- package/dist/host/claude/rules/documentation.md +2 -1
- package/dist/host/claude/rules/patterns.md +1 -1
- package/dist/host/claude/rules/quality.md +2 -2
- package/dist/host/claude/rules/styles.md +1 -1
- package/dist/host/claude/rules/tests.md +34 -8
- package/dist/host/claude/rules/typescript.md +29 -0
- package/dist/host/claude/rules/workspace.md +32 -22
- package/dist/host/claude/rules/writing.md +34 -26
- package/dist/host/claude/settings.json +2 -0
- package/dist/host/claude/skills/orkestrel-debrief/SKILL.md +1 -1
- package/dist/host/claude/skills/orkestrel-falsify/SKILL.md +1 -1
- package/dist/host/codex/agents/analyst.toml +3 -3
- package/dist/host/codex/agents/reviewer.toml +4 -4
- package/dist/host/configs/policy.ts +13 -2
- package/dist/host/dotfiles/editorconfig +0 -1
- package/dist/host/dotfiles/gitattributes +0 -1
- package/dist/host/dotfiles/gitignore +0 -1
- package/dist/host/dotfiles/oxlintrc.json +24 -0
- package/dist/host/guides/agent.md +1638 -598
- package/dist/host/guides/budget.md +89 -29
- package/dist/host/guides/form.md +477 -91
- package/dist/host/guides/mcp.md +14 -2
- package/dist/host/guides/ollama.md +97 -73
- package/dist/host/guides/probe.md +1 -1
- package/dist/host/guides/scaffold.md +158 -101
- package/dist/host/guides/study.md +2635 -0
- package/dist/host/guides/table.md +225 -15
- package/dist/host/guides/terminal.md +22 -20
- package/dist/host/guides/test.md +689 -255
- package/dist/host/manifest.json +87 -63
- package/dist/host/tests/config.test.ts +136 -82
- package/dist/host/tests/policy.test.ts +39 -1
- package/dist/host/tests/setupPolicy.ts +86 -28
- package/dist/src/core/index.cjs +1387 -611
- package/dist/src/core/index.cjs.map +1 -1
- package/dist/src/core/index.d.cts +35 -20
- package/dist/src/core/index.d.ts +35 -20
- package/dist/src/core/index.js +1385 -612
- package/dist/src/core/index.js.map +1 -1
- package/dist/src/server/index.cjs +12 -12
- package/dist/src/server/index.cjs.map +1 -1
- package/dist/src/server/index.d.cts +12 -12
- package/dist/src/server/index.d.ts +12 -12
- package/dist/src/server/index.js +12 -12
- package/dist/src/server/index.js.map +1 -1
- package/package.json +4 -4
|
@@ -61,32 +61,40 @@
|
|
|
61
61
|
|
|
62
62
|
## Substitutions
|
|
63
63
|
|
|
64
|
-
Replace each term with its replacement. A code identifier and a string inside a fence or a fixture are data and exempt.
|
|
65
|
-
|
|
66
|
-
| Term
|
|
67
|
-
|
|
|
68
|
-
| `should`
|
|
69
|
-
| `simply`, `easy`, `just`
|
|
70
|
-
| `currently`, `now`
|
|
71
|
-
| `new`, `latest`
|
|
72
|
-
| `utilize`, `leverage`
|
|
73
|
-
| `via`
|
|
74
|
-
| `in order to`
|
|
75
|
-
| `e.g.`, `i.e.`
|
|
76
|
-
| `etc.`
|
|
77
|
-
| `performant`, `robust`
|
|
78
|
-
| `allows you to`
|
|
79
|
-
| `and/or`
|
|
80
|
-
| `since` (causal)
|
|
81
|
-
| `once` (temporal)
|
|
82
|
-
| `above`, `below` (cross-reference)
|
|
83
|
-
| `please`
|
|
84
|
-
| `sanity check`
|
|
85
|
-
| `dummy`
|
|
86
|
-
| `blacklist`, `whitelist`
|
|
87
|
-
| `master`, `slave`
|
|
88
|
-
|
|
89
|
-
|
|
64
|
+
Replace each term with its replacement. A code identifier, an API name, and a string inside a fence or a fixture are data and exempt.
|
|
65
|
+
|
|
66
|
+
| Term | Replacement |
|
|
67
|
+
| --------------------------------------- | --------------------------------------------------------------- |
|
|
68
|
+
| `should` | `must`, `can`, `might`, or the imperative |
|
|
69
|
+
| `simply`, `easy`, `just` | Delete |
|
|
70
|
+
| `currently`, `now` | Delete, or give the date |
|
|
71
|
+
| `new`, `latest` | Delete, or give the version |
|
|
72
|
+
| `utilize`, `leverage` | `use` |
|
|
73
|
+
| `via` | `through`, `by using` |
|
|
74
|
+
| `in order to` | `to` |
|
|
75
|
+
| `e.g.`, `i.e.` | `for example`, `that is` |
|
|
76
|
+
| `etc.` | Bound the list, or recast the sentence |
|
|
77
|
+
| `performant`, `robust` | The measured property |
|
|
78
|
+
| `allows you to` | `lets you` |
|
|
79
|
+
| `and/or` | `and`, `or`, or `both` |
|
|
80
|
+
| `since` (causal) | `because` |
|
|
81
|
+
| `once` (temporal) | `after` |
|
|
82
|
+
| `above`, `below` (cross-reference) | `preceding`, `following`, `earlier`, `later` |
|
|
83
|
+
| `please` | Delete |
|
|
84
|
+
| `sanity check` | `quick check` |
|
|
85
|
+
| `dummy` | `placeholder` |
|
|
86
|
+
| `blacklist`, `whitelist` | `denylist`, `allowlist` |
|
|
87
|
+
| `master`, `slave` | `primary`, `replica` |
|
|
88
|
+
| `hostile`, `adversarial` (input, value) | `malformed`, `unexpected`, or `untrusted` |
|
|
89
|
+
| `adversarial` (review, round, audit) | `independent` or `skeptical` |
|
|
90
|
+
| `attack`, `break` (a claim) | `test` or `falsify` |
|
|
91
|
+
| `forge` | `fabricate`, `fake`, or `does not match` |
|
|
92
|
+
| `bypass` | `skip`, or recast as reaching one thing without passing another |
|
|
93
|
+
| `poison` | `corrupt`, `invalidate`, or `stale` |
|
|
94
|
+
| `escape` (a root, a sandbox) | `read outside` or `resolve outside` |
|
|
95
|
+
| `exploit`, `payload` (attack sense) | Name the defect, or `input` |
|
|
96
|
+
|
|
97
|
+
- `policy/no-banned-term` reads comments and the prose sweep in `tests/setupPolicy.ts` reads authored Markdown; each matches the rows banned unconditionally. Rule a hit in `now`, `new`, `latest`, `once`, `since`, `above`, `below`, `master`, `hostile`, `adversarial`, `attack`, `break`, `forge`, `bypass`, `poison`, `escape`, `exploit`, or `payload` yourself by the banned sense.
|
|
90
98
|
- Sweep case-insensitively and across inflections. Name the pattern and the paths behind every sweep result.
|
|
91
99
|
- Write singular `they` for a person of unstated gender.
|
|
92
100
|
- `.claude/rules/names.md` § Fixed lifecycle vocabulary owns `execute`, `abort`, `kill`, `terminate`, and `run`.
|
|
@@ -183,6 +183,8 @@
|
|
|
183
183
|
"Bash(npm run test:guides *)",
|
|
184
184
|
"Bash(npm run test:conformance)",
|
|
185
185
|
"Bash(npm run test:conformance *)",
|
|
186
|
+
"Bash(npm run test:tree)",
|
|
187
|
+
"Bash(npm run test:tree *)",
|
|
186
188
|
"Bash(npm run test:integration)",
|
|
187
189
|
"Bash(npm run test:integration *)",
|
|
188
190
|
"Bash(npm run test:distribution)",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: orkestrel-debrief
|
|
3
|
-
description: Look back at a long campaign to learn from its mistakes and successes and improve the agents, rules, skills, and processes that ran it. Use after a campaign or milestone closes to run the retrospective - field evidence, layer and boundary audits, package promotion, an
|
|
3
|
+
description: Look back at a long campaign to learn from its mistakes and successes and improve the agents, rules, skills, and processes that ran it. Use after a campaign or milestone closes to run the retrospective - field evidence, layer and boundary audits, package promotion, an independent audit of the instruction set itself, process doctrine - and to land every learning as a refinement that propagates, then retire the campaign folder.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Load the canonical workflow
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: orkestrel-falsify
|
|
3
3
|
description: >-
|
|
4
|
-
Run one
|
|
4
|
+
Run one skeptical audit round against finished work: write the subject as numbered falsifiable claims, dispatch independent auditors instructed to falsify them, reconcile their evidence, and rule. Use when the size gate in `.agents/orchestration.md` names a review, before a fix round is accepted, before a version bump or publication, or when a defect has recurred across rounds. Do not use it for a small change, a mechanical rename, or a round with no added or repaired claim to test.
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Load the canonical workflow
|
|
@@ -12,12 +12,12 @@ Hold the lane the dispatch names and say which: objective (correctness under adv
|
|
|
12
12
|
what the contracts and installed declarations permit, dependency and range truth, test
|
|
13
13
|
sufficiency, the letter of the rules) or subjective (shape, naming, ergonomics, design fit).
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
claim about a proof, name the mutation that would make the proof fail and whether the assertions
|
|
15
|
+
Try to falsify each numbered claim with a concrete input, state, or interleaving. Before
|
|
16
|
+
confirming a claim about a proof, name the mutation that would make the proof fail and whether the assertions
|
|
17
17
|
distinguish it. Rule a claim whose only evidence is the writer's report UNRESOLVED. Mark a
|
|
18
18
|
rendered-surface claim the capture cannot show NOT-EVIDENCED.
|
|
19
19
|
|
|
20
20
|
Return the orkestrel-falsify verdict shape: numbered verdicts with evidence, findings outside the
|
|
21
|
-
claims,
|
|
21
|
+
claims, tested-and-held, one terminal line. Never edit, implement, reconcile, accept, or spawn.
|
|
22
22
|
Your final message is the verdict.
|
|
23
23
|
"""
|
|
@@ -4,7 +4,7 @@ model = "gpt-6-astra"
|
|
|
4
4
|
model_reasoning_effort = "high"
|
|
5
5
|
sandbox_mode = "read-only"
|
|
6
6
|
developer_instructions = """
|
|
7
|
-
Review one dispatched unit on GPT-6 Astra by trying to
|
|
7
|
+
Review one dispatched unit on GPT-6 Astra by trying to falsify its claims. Use read-only inspection
|
|
8
8
|
commands. Never edit, run a mutating command, or spawn. Use a clean context; never review work you wrote.
|
|
9
9
|
|
|
10
10
|
Read the claims file, the actual diff and git status --porcelain the dispatch supplies,
|
|
@@ -16,14 +16,14 @@ names and boundaries, the right layer, each concept's purpose, guide parity. Obj
|
|
|
16
16
|
correctness under adverse orderings, what contracts and installed declarations permit,
|
|
17
17
|
dependency and range truth, test sufficiency, and the letter of the rules.
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
name the mutation that would make it fail and whether its assertions distinguish it. Rule a
|
|
19
|
+
Try to falsify each claim with a concrete input, state, or interleaving. Before confirming a
|
|
20
|
+
proof, name the mutation that would make it fail and whether its assertions distinguish it. Rule a
|
|
21
21
|
claim whose only evidence is the writer's report UNRESOLVED. Cite a capture for every rendered
|
|
22
22
|
surface claim; mark what the portfolio cannot show NOT-EVIDENCED. Refer a question outside your
|
|
23
23
|
lane to the other lane or the Orchestrator with evidence; never rule on it. Treat a bench finding
|
|
24
24
|
as a proposal to test against the code, never as authority.
|
|
25
25
|
|
|
26
26
|
Return the orkestrel-falsify verdict shape: numbered verdicts with evidence, findings outside the
|
|
27
|
-
claims,
|
|
27
|
+
claims, tested-and-held, one terminal line. Each required change carries file:line, what is
|
|
28
28
|
wrong, and what right looks like. Nothing else. Your final message is the verdict.
|
|
29
29
|
"""
|
|
@@ -386,8 +386,9 @@ export const POLICY_BANNED_TERMS: readonly PolicyTerm[] = Object.freeze([
|
|
|
386
386
|
*
|
|
387
387
|
* @remarks
|
|
388
388
|
* Each row carries a permitted sense: a date value, a version value, a causal clause, the name a
|
|
389
|
-
* replication topology takes,
|
|
390
|
-
*
|
|
389
|
+
* replication topology takes, a comparative or spatial relation, and a literal engineering term such
|
|
390
|
+
* as a string escape, a loop `break`, or a request payload. The currency check proves each row is
|
|
391
|
+
* registered here.
|
|
391
392
|
*/
|
|
392
393
|
export const POLICY_JUDGED_TERMS: readonly string[] = Object.freeze([
|
|
393
394
|
'now',
|
|
@@ -398,6 +399,16 @@ export const POLICY_JUDGED_TERMS: readonly string[] = Object.freeze([
|
|
|
398
399
|
'above',
|
|
399
400
|
'below',
|
|
400
401
|
'master',
|
|
402
|
+
'hostile',
|
|
403
|
+
'adversarial',
|
|
404
|
+
'attack',
|
|
405
|
+
'break',
|
|
406
|
+
'forge',
|
|
407
|
+
'bypass',
|
|
408
|
+
'poison',
|
|
409
|
+
'escape',
|
|
410
|
+
'exploit',
|
|
411
|
+
'payload',
|
|
401
412
|
])
|
|
402
413
|
|
|
403
414
|
/** Returns the file name a policy rule keys on, read from either host separator. */
|
|
@@ -220,6 +220,10 @@
|
|
|
220
220
|
{
|
|
221
221
|
"regex": "^(?:node:|(?:_(?:http_(?:agent|client|common|incoming|outgoing|server)|stream_(?:duplex|passthrough|readable|transform|wrap|writable)|tls_(?:common|wrap))|assert(?:/strict)?|async_hooks|buffer|child_process|cluster|console|constants|crypto|dgram|diagnostics_channel|dns(?:/promises)?|domain|events|fs(?:/promises)?|http|http2|https|inspector(?:/promises)?|module|net|os|path(?:/(?:posix|win32))?|perf_hooks|process|punycode|querystring|readline(?:/promises)?|repl|sqlite|stream(?:/(?:consumers|promises|web))?|string_decoder|sys|timers(?:/promises)?|tls|trace_events|tty|url|util(?:/types)?|v8|vm|wasi|worker_threads|zlib)(?:[/?#]|$)|@src/server(?:[/?#]|$)|@orkestrel/[^/]+/server(?:[/?#]|$)|(?:\\.\\./)+(?:server|src/server|app/server)(?:[/?#]|$))",
|
|
222
222
|
"message": "src/browser must not depend on Node or server-only modules"
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
"regex": "^(?:\\.\\./)+(?:src/)?core(?:[/?#]|$)",
|
|
226
|
+
"message": "src/browser must import src/core through the @src/core alias"
|
|
223
227
|
}
|
|
224
228
|
]
|
|
225
229
|
}
|
|
@@ -436,6 +440,14 @@
|
|
|
436
440
|
{
|
|
437
441
|
"regex": "^(?:node:|(?:_(?:http_(?:agent|client|common|incoming|outgoing|server)|stream_(?:duplex|passthrough|readable|transform|wrap|writable)|tls_(?:common|wrap))|assert(?:/strict)?|async_hooks|buffer|child_process|cluster|console|constants|crypto|dgram|diagnostics_channel|dns(?:/promises)?|domain|events|fs(?:/promises)?|http|http2|https|inspector(?:/promises)?|module|net|os|path(?:/(?:posix|win32))?|perf_hooks|process|punycode|querystring|readline(?:/promises)?|repl|sqlite|stream(?:/(?:consumers|promises|web))?|string_decoder|sys|timers(?:/promises)?|tls|trace_events|tty|url|util(?:/types)?|v8|vm|wasi|worker_threads|zlib)(?:[/?#]|$)|@src/server(?:[/?#]|$)|@orkestrel/[^/]+/server(?:[/?#]|$)|(?:\\.\\./)+(?:server|src/server|app/server)(?:[/?#]|$))",
|
|
438
442
|
"message": "src/vue must not depend on Node or server-only modules"
|
|
443
|
+
},
|
|
444
|
+
{
|
|
445
|
+
"regex": "^(?:\\.\\./)+(?:src/)?core(?:[/?#]|$)",
|
|
446
|
+
"message": "src/vue must import src/core through the @src/core alias"
|
|
447
|
+
},
|
|
448
|
+
{
|
|
449
|
+
"regex": "^(?:\\.\\./)+(?:src/)?browser(?:[/?#]|$)",
|
|
450
|
+
"message": "src/vue must import src/browser through the @src/browser alias"
|
|
439
451
|
}
|
|
440
452
|
]
|
|
441
453
|
}
|
|
@@ -488,6 +500,10 @@
|
|
|
488
500
|
{
|
|
489
501
|
"regex": "^(?:(?:vue|vite)(?:[/?#]|$)|@(?:vue|vitejs)/|@src/browser(?:[/?#]|$)|@orkestrel/[^/]+/browser(?:[/?#]|$)|(?:\\.\\./)+(?:browser|src/browser|app/browser)(?:[/?#]|$))",
|
|
490
502
|
"message": "src/server must not depend on Vue or browser-only modules"
|
|
503
|
+
},
|
|
504
|
+
{
|
|
505
|
+
"regex": "^(?:\\.\\./)+(?:src/)?core(?:[/?#]|$)",
|
|
506
|
+
"message": "src/server must import src/core through the @src/core alias"
|
|
491
507
|
}
|
|
492
508
|
]
|
|
493
509
|
}
|
|
@@ -720,6 +736,14 @@
|
|
|
720
736
|
{
|
|
721
737
|
"regex": "^(?:(?:vue|vite)(?:[/?#]|$)|@(?:vue|vitejs)/|@src/(?:browser|vue)(?:[/?#]|$)|@orkestrel/[^/]+/(?:browser|vue)(?:[/?#]|$)|(?:\\.\\./)+(?:browser|vue|src/(?:browser|vue)|app/browser)(?:[/?#]|$))",
|
|
722
738
|
"message": "src/bin must not depend on browser-only modules"
|
|
739
|
+
},
|
|
740
|
+
{
|
|
741
|
+
"regex": "^(?:\\.\\./)+(?:src/)?core(?:[/?#]|$)",
|
|
742
|
+
"message": "src/bin must import src/core through the @src/core alias"
|
|
743
|
+
},
|
|
744
|
+
{
|
|
745
|
+
"regex": "^(?:\\.\\./)+(?:src/)?server(?:[/?#]|$)",
|
|
746
|
+
"message": "src/bin must import src/server through the @src/server alias"
|
|
723
747
|
}
|
|
724
748
|
]
|
|
725
749
|
}
|