@orkestrel/scaffold 0.0.77 → 0.0.78
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/bench.js +204 -0
- package/dist/agents/skills/orkestrel-dispatch/scripts/brief.js +102 -0
- package/dist/agents/skills/orkestrel-dispatch/scripts/cite.js +95 -0
- package/dist/agents/skills/orkestrel-dispatch/scripts/helpers.js +207 -0
- package/dist/agents/skills/orkestrel-dispatch/scripts/launch.js +108 -0
- package/dist/agents/skills/orkestrel-dispatch/scripts/login.js +114 -0
- package/dist/agents/skills/orkestrel-dispatch/scripts/result.js +108 -0
- package/dist/agents/skills/orkestrel-dispatch/scripts/sweep.js +156 -0
- package/dist/agents/skills/orkestrel-harden/scripts/discovery.js +196 -0
- package/dist/agents/skills/orkestrel-publish/scripts/compare.js +206 -0
- package/dist/agents/skills/orkestrel-publish/scripts/pins.js +93 -0
- package/dist/agents/skills/orkestrel-publish/scripts/wave.js +458 -0
- package/dist/agents/skills/orkestrel-publish/scripts/window.js +188 -0
- package/dist/agents/skills/orkestrel-scout/scripts/map.js +300 -0
- package/dist/agents/templates/brief.md +55 -0
- package/dist/bin/main.js +4 -2
- package/dist/bin/main.js.map +1 -1
- package/dist/host/AGENTS.md +77 -135
- package/dist/host/agents/orchestration.md +147 -998
- package/dist/host/agents/skills/enterprise-bootstrap/SKILL.md +2 -2
- package/dist/host/agents/skills/enterprise-bootstrap/references/inspection.md +1 -1
- package/dist/host/agents/skills/{orkestrel-align-packages → orkestrel-align}/SKILL.md +6 -13
- package/dist/host/agents/skills/{orkestrel-align-packages → orkestrel-align}/agents/openai.yaml +1 -1
- package/dist/host/agents/skills/{orkestrel-align-packages → orkestrel-align}/references/fleet.md +5 -7
- package/dist/host/agents/skills/{orkestrel-build-application → orkestrel-build}/SKILL.md +11 -22
- package/dist/host/agents/skills/{orkestrel-build-application → orkestrel-build}/agents/openai.yaml +1 -1
- package/dist/host/agents/skills/orkestrel-debrief/SKILL.md +8 -16
- package/dist/host/agents/skills/orkestrel-debrief/references/instruction-audit.md +3 -3
- package/dist/host/agents/skills/orkestrel-debrief/references/retention.md +13 -13
- package/dist/host/agents/skills/orkestrel-dispatch/SKILL.md +61 -0
- package/dist/host/agents/skills/orkestrel-dispatch/agents/openai.yaml +4 -0
- package/dist/host/agents/skills/orkestrel-dispatch/references/bench.md +25 -0
- package/dist/host/agents/skills/orkestrel-dispatch/references/launch.md +32 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/bench.ts +259 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/brief.ts +110 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/cite.ts +115 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/helpers.ts +239 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/launch.ts +124 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/login.ts +123 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/result.ts +129 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/sweep.ts +157 -0
- package/dist/host/agents/skills/orkestrel-falsify/SKILL.md +42 -193
- package/dist/host/agents/skills/orkestrel-falsify/references/brief.md +38 -108
- package/dist/host/agents/skills/orkestrel-falsify/references/reconcile.md +35 -134
- package/dist/host/agents/skills/{orkestrel-harden-package → orkestrel-harden}/SKILL.md +10 -14
- package/dist/host/agents/skills/{orkestrel-harden-package → orkestrel-harden}/agents/openai.yaml +1 -1
- package/dist/host/agents/skills/{orkestrel-harden-package → orkestrel-harden}/references/hardening.md +3 -4
- package/dist/host/agents/skills/orkestrel-harden/scripts/discovery.ts +228 -0
- package/dist/host/agents/skills/{orkestrel-prove-journey → orkestrel-journey}/SKILL.md +15 -23
- package/dist/host/agents/skills/orkestrel-journey/agents/openai.yaml +4 -0
- package/dist/host/agents/skills/{orkestrel-prove-journey → orkestrel-journey}/references/captures.md +1 -1
- package/dist/host/agents/skills/{orkestrel-polish-surface → orkestrel-polish}/SKILL.md +25 -33
- package/dist/host/agents/skills/{orkestrel-polish-surface → orkestrel-polish}/agents/openai.yaml +1 -1
- package/dist/host/agents/skills/{orkestrel-polish-surface → orkestrel-polish}/references/capture-harness.md +3 -3
- package/dist/host/agents/skills/orkestrel-publish/SKILL.md +33 -20
- package/dist/host/agents/skills/orkestrel-publish/references/release.md +39 -0
- package/dist/host/agents/skills/orkestrel-publish/references/wave.md +22 -21
- package/dist/host/agents/skills/orkestrel-publish/references/window.md +27 -14
- package/dist/host/agents/skills/orkestrel-publish/scripts/compare.ts +220 -0
- package/dist/host/agents/skills/orkestrel-publish/scripts/pins.ts +114 -0
- package/dist/host/agents/skills/orkestrel-publish/scripts/wave.ts +629 -0
- package/dist/host/agents/skills/orkestrel-publish/scripts/window.ts +242 -0
- package/dist/host/agents/skills/orkestrel-scout/SKILL.md +28 -0
- package/dist/host/agents/skills/orkestrel-scout/agents/openai.yaml +4 -0
- package/dist/host/agents/skills/orkestrel-scout/scripts/map.ts +352 -0
- package/dist/host/agents/templates/brief.md +21 -142
- package/dist/host/agents/transports/claude-cli.md +21 -0
- package/dist/host/agents/transports/codex.md +38 -159
- package/dist/host/agents/transports/cursor.md +16 -65
- package/dist/host/claude/AGENTS.md +38 -0
- package/dist/host/claude/agents/analyst.md +14 -53
- package/dist/host/claude/agents/astra.md +26 -0
- package/dist/host/claude/agents/builder.md +14 -30
- package/dist/host/claude/agents/checker.md +13 -57
- package/dist/host/claude/agents/distiller.md +11 -26
- package/dist/host/claude/agents/grok.md +12 -35
- package/dist/host/claude/agents/opus.md +14 -30
- package/dist/host/claude/agents/planner.md +10 -44
- package/dist/host/claude/agents/researcher.md +11 -30
- package/dist/host/claude/agents/reviewer.md +11 -95
- package/dist/host/claude/agents/scout.md +9 -23
- package/dist/host/claude/agents/verifier.md +15 -33
- package/dist/host/claude/rules/documentation.md +8 -2
- package/dist/host/claude/rules/portability.md +7 -1
- package/dist/host/claude/rules/quality.md +36 -96
- package/dist/host/claude/rules/styles.md +3 -0
- package/dist/host/claude/rules/tests.md +6 -3
- package/dist/host/claude/rules/workspace.md +19 -15
- package/dist/host/claude/rules/writing.md +57 -108
- package/dist/host/claude/settings.json +5 -3
- package/dist/host/claude/skills/enterprise-bootstrap/SKILL.md +1 -1
- package/dist/host/claude/skills/{orkestrel-align-packages → orkestrel-align}/SKILL.md +2 -2
- package/dist/host/claude/skills/{orkestrel-build-application → orkestrel-build}/SKILL.md +2 -2
- package/dist/host/claude/skills/orkestrel-dispatch/SKILL.md +11 -0
- package/dist/host/claude/skills/orkestrel-falsify/SKILL.md +2 -1
- package/dist/host/claude/skills/{orkestrel-harden-package → orkestrel-harden}/SKILL.md +2 -2
- package/dist/host/claude/skills/{orkestrel-prove-journey → orkestrel-journey}/SKILL.md +2 -2
- package/dist/host/claude/skills/orkestrel-polish/SKILL.md +12 -0
- package/dist/host/claude/skills/orkestrel-scout/SKILL.md +11 -0
- package/dist/host/codex/agents/analyst.toml +14 -31
- package/dist/host/codex/agents/astra.toml +25 -0
- package/dist/host/codex/agents/builder.toml +13 -20
- package/dist/host/codex/agents/checker.toml +13 -27
- package/dist/host/codex/agents/distiller.toml +9 -22
- package/dist/host/codex/agents/grok.toml +11 -30
- package/dist/host/codex/agents/opus.toml +14 -22
- package/dist/host/codex/agents/orkestrel.toml +1 -1
- package/dist/host/codex/agents/planner.toml +11 -28
- package/dist/host/codex/agents/researcher.toml +10 -22
- package/dist/host/codex/agents/reviewer.toml +11 -27
- package/dist/host/codex/agents/scout.toml +11 -17
- package/dist/host/codex/agents/verifier.toml +16 -12
- package/dist/host/codex/config.toml +18 -21
- package/dist/host/cursor/mcp.json +0 -4
- package/dist/host/cursor/rules/orchestration.mdc +12 -20
- package/dist/host/dotfiles/mcp.json +0 -4
- package/dist/host/dotfiles/oxlintrc.json +7 -0
- package/dist/host/guides/probe.md +9 -9
- package/dist/host/guides/scaffold.md +117 -71
- package/dist/host/guides/test.md +1 -1
- package/dist/host/manifest.json +321 -184
- package/dist/host/scripts/codex.sh +0 -0
- package/dist/host/scripts/cursor.sh +0 -0
- package/dist/host/scripts/deps.sh +0 -0
- package/dist/host/scripts/ollama.sh +0 -0
- package/dist/host/tests/config.test.ts +68 -46
- package/dist/host/tests/policy.test.ts +1 -5
- package/dist/host/tests/setupPolicy.ts +179 -4
- package/dist/src/core/index.cjs +255 -84
- package/dist/src/core/index.cjs.map +1 -1
- package/dist/src/core/index.d.cts +94 -29
- package/dist/src/core/index.d.ts +94 -29
- package/dist/src/core/index.js +253 -85
- package/dist/src/core/index.js.map +1 -1
- package/dist/src/server/index.cjs +55 -9
- package/dist/src/server/index.cjs.map +1 -1
- package/dist/src/server/index.d.cts +29 -4
- package/dist/src/server/index.d.ts +29 -4
- package/dist/src/server/index.js +56 -11
- package/dist/src/server/index.js.map +1 -1
- package/package.json +15 -11
- package/dist/host/CLAUDE.md +0 -61
- package/dist/host/agents/skills/orkestrel-prove-journey/agents/openai.yaml +0 -4
- package/dist/host/agents/transports/claude.md +0 -49
- package/dist/host/claude/agents/application.md +0 -36
- package/dist/host/claude/agents/sol.md +0 -61
- package/dist/host/claude/skills/orkestrel-polish-surface/SKILL.md +0 -12
- package/dist/host/codex/agents/application.toml +0 -25
- package/dist/host/codex/agents/sol.toml +0 -19
- /package/dist/host/agents/skills/{orkestrel-align-packages → orkestrel-align}/references/integration.md +0 -0
- /package/dist/host/agents/skills/{orkestrel-harden-package → orkestrel-harden}/references/centralization.md +0 -0
- /package/dist/host/agents/skills/{orkestrel-harden-package → orkestrel-harden}/references/contract.md +0 -0
- /package/dist/host/agents/skills/{orkestrel-harden-package → orkestrel-harden}/references/research.md +0 -0
- /package/dist/host/agents/skills/{orkestrel-prove-journey → orkestrel-journey}/references/decide.md +0 -0
- /package/dist/host/agents/skills/{orkestrel-prove-journey → orkestrel-journey}/references/layer.md +0 -0
- /package/dist/host/agents/skills/{orkestrel-prove-journey → orkestrel-journey}/references/statechart.md +0 -0
- /package/dist/host/agents/skills/{orkestrel-prove-journey → orkestrel-journey}/references/styles.md +0 -0
|
@@ -18,9 +18,11 @@ the verbs write and compare.
|
|
|
18
18
|
`CANON_PATHS` names the instruction canon — the coding and orchestration contracts, the rules, the
|
|
19
19
|
skills, the templates, the transport contracts, the agent roles, the bench configuration, and the
|
|
20
20
|
MCP registrations — which stays in one place and is published for reading. A target carries the
|
|
21
|
-
`AGENTS.md`
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
`AGENTS.md` pointer that names where a reader finds it, the catalog agent file the `catalog` verb
|
|
22
|
+
rewrites, and the skill pointer set for each package-facing skill `TARGET_SKILL_NAMES` lists: the
|
|
23
|
+
Claude bridge, the Codex sidecar, and a `SKILL.md` pointer that names the canonical skill. It
|
|
24
|
+
carries nothing else at a canon path: a file found at one is a superseded copy, and `overwrite`
|
|
25
|
+
deletes it.
|
|
24
26
|
`REFERENCE_PATHS` names the `guides` directory — a mirror of every published `@orkestrel` guide
|
|
25
27
|
beside this package's own — which is staged for reading at `dist/host/guides/` and claims nothing in
|
|
26
28
|
a target on its own. The `SEED_GUIDE_PATHS` constant names the mirrors the compiler claims, so
|
|
@@ -169,9 +171,11 @@ Exported from `@orkestrel/scaffold`, and reachable from
|
|
|
169
171
|
| `SERVICE_TEST_INCLUDE` | const | Names the include the live-service project covers, which is a directory rather than one proof. |
|
|
170
172
|
| `SHOWCASE_CONFIG_PATH` | const | Names the Vite wrapper whose presence makes a workspace `showcase`. |
|
|
171
173
|
| `SHOWCASE_DEV_DEPENDENCIES` | const | Names the development dependency used only by the optional single-file showcase build. |
|
|
174
|
+
| `SKILLS_CONFIG_PATH` | const | Names the TypeScript wrapper whose presence makes a workspace `skills`. |
|
|
172
175
|
| `SOURCE_BROWSER_DEV_DEPENDENCIES` | const | Lists the development dependencies a published browser `src` environment adds. |
|
|
173
176
|
| `SRC_MATRIX` | const | Holds the build and export settings each published `src` environment contributes, frozen. |
|
|
174
177
|
| `TAB_WIDTH` | const | Sets the columns one tab occupies when the formatter measures a line, matching `tabWidth`. |
|
|
178
|
+
| `TARGET_SKILL_NAMES` | const | Lists the package-facing skills a target receives pointers for, frozen and alphabetical. |
|
|
175
179
|
| `VERSION_PATTERN` | const | Matches the exact `major.minor.patch` version syntax a blueprint declares. |
|
|
176
180
|
| `WORKSPACE_DEV_ENGINES` | const | Holds the `devEngines` record every generated manifest carries. |
|
|
177
181
|
| `WORKSPACE_OWNED_PATHS` | const | Lists the vendored paths whose present bytes belong to each workspace, frozen. |
|
|
@@ -243,6 +247,7 @@ Exported from `@orkestrel/scaffold`, and reachable from
|
|
|
243
247
|
| `matchesRange` | function | Tests whether a declared range already admits a published version. |
|
|
244
248
|
| `nameToGuide` | function | Derives the guide mirror path a package name answers for. |
|
|
245
249
|
| `planToSummary` | function | Projects a plan into its tally by artifact origin. |
|
|
250
|
+
| `renderSkillPointer` | function | Renders the `SKILL.md` pointer a target carries in place of a canonical skill. |
|
|
246
251
|
| `selectGroups` | function | Selects the groups a compile covers, in plan order. |
|
|
247
252
|
| `selectHostPaths` | function | Selects the host paths a named workspace vendors. |
|
|
248
253
|
| `serializeTypeScriptString` | function | Serializes one string as a single-quoted TypeScript literal. |
|
|
@@ -399,6 +404,7 @@ The inventory contracts carry these data members.
|
|
|
399
404
|
| `computeDigest` | function | Computes the SHA-256 digest of text. |
|
|
400
405
|
| `computeFileDigest` | function | Computes the SHA-256 digest of one file's exact bytes. |
|
|
401
406
|
| `computeManifestDigest` | function | Computes the digest of a vendored host's declared membership. |
|
|
407
|
+
| `decodeHexText` | function | Decodes exact bytes stated in hexadecimal as strict UTF-8 text. |
|
|
402
408
|
| `filesToHost` | function | Assembles a whole vendored host from live files and the installed floor. |
|
|
403
409
|
| `hexToDigest` | function | Projects exact bytes stated in hexadecimal to their SHA-256 digest. |
|
|
404
410
|
| `isExactCaseFile` | function | Tests whether a path is a physical file with exact on-disk casing. |
|
|
@@ -597,8 +603,9 @@ answers a read and grant no verb write authority that it did not already have.
|
|
|
597
603
|
empty. The other structural facts do not need creation flags. Add a root `tests/setup*.test.ts` proof for
|
|
598
604
|
`setup`, `tests/guides.test.ts` for `guides`, `tests/integration.test.ts` for `integration`,
|
|
599
605
|
`tests/conformance.test.ts` for `conformance`, `tests/setupService.ts` for `service`,
|
|
600
|
-
`tests/setupGlobal.ts` for `global`, `configs/app/vite.showcase.config.ts` for `showcase`,
|
|
601
|
-
`configs/app/vite.journey.config.ts` for `journey
|
|
606
|
+
`tests/setupGlobal.ts` for `global`, `configs/app/vite.showcase.config.ts` for `showcase`,
|
|
607
|
+
`configs/app/vite.journey.config.ts` for `journey`, and `configs/agents/tsconfig.skills.json` for
|
|
608
|
+
`skills`;
|
|
602
609
|
reading verbs detect each exact-case file and register its fixed machinery. An explicitly supplied
|
|
603
610
|
plan with `vendors` owns and protects the birth-owned `scripts/service.sh` inventory skeleton.
|
|
604
611
|
Reading verbs do not infer its vendor list from edited text and cannot preserve an arbitrary present
|
|
@@ -611,16 +618,17 @@ Limits states what makes that one proof generable when the others are not.
|
|
|
611
618
|
### Reading a target
|
|
612
619
|
|
|
613
620
|
`audit`, `repair`, `catalog`, and `overwrite` derive the blueprint from the target itself. The name
|
|
614
|
-
and the declared `@orkestrel/*` packages come from `package.json`. The environment axes come
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
`
|
|
621
|
+
and the declared `@orkestrel/*` packages come from `package.json`. The environment axes come from
|
|
622
|
+
the directories the target actually ships, because a directory is the fact and a declaration beside
|
|
623
|
+
it could disagree. The remaining facts come from exact-case files: `src/bin/main.ts` selects `bin`,
|
|
624
|
+
each root `tests/setup*.test.ts` match selects `setup`, `tests/guides.test.ts` selects `guides`,
|
|
625
|
+
`tests/integration.test.ts` selects `integration`, `tests/conformance.test.ts` selects
|
|
619
626
|
`conformance`, `tests/setupService.ts` selects `service`, `tests/setupGlobal.ts` selects `global`,
|
|
620
|
-
`configs/app/vite.showcase.config.ts` selects `showcase`,
|
|
621
|
-
`configs/
|
|
622
|
-
the fact by itself. `tests/distribution.test.ts` selects nothing: the
|
|
623
|
-
target ships already decides the `distribution` project, and the file is
|
|
627
|
+
`configs/app/vite.showcase.config.ts` selects `showcase`, `configs/app/vite.journey.config.ts`
|
|
628
|
+
selects `journey`, and `configs/agents/tsconfig.skills.json` selects `skills`. A containing
|
|
629
|
+
directory does not select the fact by itself. `tests/distribution.test.ts` selects nothing: the
|
|
630
|
+
published `src` axis the target ships already decides the `distribution` project, and the file is
|
|
631
|
+
planned from that.
|
|
624
632
|
|
|
625
633
|
`vendors` is not reconstructed. Its artifact, `scripts/service.sh`, is a birth-owned inventory
|
|
626
634
|
skeleton rather than a working installer, so edited script text is not a trustworthy declaration of
|
|
@@ -641,6 +649,12 @@ fresh workspace therefore carries no guides project or script. When a developer
|
|
|
641
649
|
writable script region. That region accepts the prior generated Vitest-only value and preserves a
|
|
642
650
|
customized command. The rest of the manifest remains birth-owned.
|
|
643
651
|
|
|
652
|
+
The `skills` fact follows the same rule. The exact-case `configs/agents/tsconfig.skills.json`
|
|
653
|
+
wrapper selects it; the root configuration then defines and registers the `skills` project over
|
|
654
|
+
`tests/agents/**/*.test.ts`, and the manifest gains `test:skills` in the `test` chain and
|
|
655
|
+
`check:skills` in the `check` chain. The scaffold checkout carries that wrapper because it ships the
|
|
656
|
+
skill scripts under `.agents/skills/*/scripts/` with their mirrored proofs.
|
|
657
|
+
|
|
644
658
|
The plan-reading verbs compare the Vitest project set named by the target manifest with the
|
|
645
659
|
project set the planned root configuration registers. Every planned proof project must also be
|
|
646
660
|
reachable from the manifest's `test` chain. A target whose manifest does not set `private: true` may
|
|
@@ -906,7 +920,7 @@ because the shape is chosen once and read afterwards: `new` refuses the advisory
|
|
|
906
920
|
caller creating a workspace holds the same refusal, and the Compile section states it.
|
|
907
921
|
|
|
908
922
|
`bin`, `setup`, `guides`, `integration`, `conformance`, `service`, `vendors`, `global`, `showcase`,
|
|
909
|
-
and `
|
|
923
|
+
`journey`, and `skills` are structural facts. Reading verbs set each only when the workspace physically ships the directory
|
|
910
924
|
or exact-case file that defines it, never because of the workspace's name and never because a
|
|
911
925
|
sibling fact is set.
|
|
912
926
|
|
|
@@ -1065,24 +1079,26 @@ than a silent no-op.
|
|
|
1065
1079
|
A plan selects over the following groups, and a compile that names none covers all of them. Their
|
|
1066
1080
|
order is the order a plan lists its artifacts in.
|
|
1067
1081
|
|
|
1068
|
-
| Group | Holds
|
|
1069
|
-
| --------------- |
|
|
1070
|
-
| `manifest` | `package.json`
|
|
1071
|
-
| `configs` | The root and per-target build configuration, and the root dotfiles
|
|
1072
|
-
| `source` | The selected environment barrels and entries
|
|
1073
|
-
| `tests` | The shared setup modules, the entry tests, and the policy sweep
|
|
1074
|
-
| `guides` | The guide index and the vendored guide mirrors
|
|
1075
|
-
| `docs` | `README.md` beside the `AGENTS.md`
|
|
1076
|
-
| `orchestration` | The harness permission file, the bench scripts,
|
|
1082
|
+
| Group | Holds |
|
|
1083
|
+
| --------------- | ------------------------------------------------------------------------------------------------- |
|
|
1084
|
+
| `manifest` | `package.json` |
|
|
1085
|
+
| `configs` | The root and per-target build configuration, and the root dotfiles |
|
|
1086
|
+
| `source` | The selected environment barrels and entries |
|
|
1087
|
+
| `tests` | The shared setup modules, the entry tests, and the policy sweep |
|
|
1088
|
+
| `guides` | The guide index and the vendored guide mirrors |
|
|
1089
|
+
| `docs` | `README.md` beside the `AGENTS.md` pointer |
|
|
1090
|
+
| `orchestration` | The harness permission file, the bench scripts, the catalog agent file, and the skill pointer set |
|
|
1077
1091
|
|
|
1078
1092
|
The plan claims paths inside the instruction canon deliberately, and each has a reason. The `docs`
|
|
1079
|
-
group carries the `AGENTS.md`
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1093
|
+
group carries the `AGENTS.md` pointer that names where each contract is read, planned at those canon
|
|
1094
|
+
destinations as this package's own template content. The `orchestration` group carries
|
|
1095
|
+
`CATALOG_AGENT_PATH`, a host-origin artifact at a canon path, because the `catalog` verb refuses a
|
|
1096
|
+
target that lacks the file. It also carries the skill pointer set, three host-origin artifacts for
|
|
1097
|
+
each name in `TARGET_SKILL_NAMES`, so every harness in a target discovers the package-facing skills
|
|
1098
|
+
while their bodies, references, and scripts stay in the installed package. Every other canon path is
|
|
1099
|
+
staged for reading, so no group selection copies a contract into a target, and a copy a target holds
|
|
1100
|
+
at one of them is foreign drift in the group `inferGroup` gives it. A scoped audit reads the canon
|
|
1101
|
+
through that same selection, so a run excluding a group reports nothing there.
|
|
1086
1102
|
|
|
1087
1103
|
## Ownership and drift
|
|
1088
1104
|
|
|
@@ -1121,11 +1137,18 @@ turns each path scaffold owns the bytes of into a content-owned artifact, leavin
|
|
|
1121
1137
|
workspace-owned paths and the mirror pointers the preceding rows name. What a verb claims at a
|
|
1122
1138
|
vendored path is the hydrated ownership, and `HostArtifact` carries the same narrowing on the type.
|
|
1123
1139
|
|
|
1124
|
-
The `AGENTS.md`
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1140
|
+
The `AGENTS.md` pointer sits outside that row. Its bytes come from a frozen template rather than
|
|
1141
|
+
from the data root, so the pure core face already claims them content-owned and hydration leaves
|
|
1142
|
+
them alone. `repair` and `overwrite` restore a missing pointer and replace a drifted one, in every
|
|
1143
|
+
face, which is what keeps a target's resolution instructions in agreement with the release it
|
|
1144
|
+
installed.
|
|
1145
|
+
|
|
1146
|
+
A skill pointer takes the other route. Its `HostArtifact` sets `pointer`, so hydration reads the
|
|
1147
|
+
staged canonical `SKILL.md` and derives the target's bytes with `renderSkillPointer` rather than
|
|
1148
|
+
copying them, and the hydrated artifact is computed, content-owned text. `repair` and `overwrite`
|
|
1149
|
+
restore a missing pointer and replace a hand-edited one with the derived bytes. A staged canonical
|
|
1150
|
+
skill that does not open with a frontmatter block is a broken host, and hydration refuses it with a
|
|
1151
|
+
`TARGET` error naming the staged file and the pointer path.
|
|
1129
1152
|
|
|
1130
1153
|
Birth ownership is what makes a generated workspace the consumer's. `materialize` writes a
|
|
1131
1154
|
birth-owned path into a vacant target. A later `repair` or `overwrite` call treats that path as
|
|
@@ -1490,18 +1513,23 @@ succeed without making requests; remote hooks run setup. Claude Code Cloud conti
|
|
|
1490
1513
|
`scripts/ollama.sh`.
|
|
1491
1514
|
|
|
1492
1515
|
`CANON_PATHS` is the instruction canon, staged for reading instead: the `AGENTS.md` coding contract,
|
|
1493
|
-
the
|
|
1494
|
-
under `.claude/rules/` and `.cursor/rules/`, the skills under `.agents/skills/` and
|
|
1495
|
-
the templates under `.agents/templates/`, the transport contracts under
|
|
1496
|
-
agent roles under `.claude/agents/` and `.codex/agents/`, the
|
|
1497
|
-
configuration, and the `.mcp.json` and `.cursor/mcp.json` server
|
|
1498
|
-
every one of them, and a target receives a copy only where the plan
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
bytes themselves, because the `catalog` verb refuses a target that lacks the file.
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1516
|
+
the `.claude/AGENTS.md` Claude Code bridge, the `.agents/orchestration.md` agent-operation contract,
|
|
1517
|
+
the rules under `.claude/rules/` and `.cursor/rules/`, the skills under `.agents/skills/` and
|
|
1518
|
+
`.claude/skills/`, the templates under `.agents/templates/`, the transport contracts under
|
|
1519
|
+
`.agents/transports/`, the agent roles under `.claude/agents/` and `.codex/agents/`, the
|
|
1520
|
+
`.codex/config.toml` bench configuration, and the `.mcp.json` and `.cursor/mcp.json` server
|
|
1521
|
+
registrations. A release stages every one of them, and a target receives a copy only where the plan
|
|
1522
|
+
claims the path. At the `AGENTS.md` destination it receives the pointer: different content at the
|
|
1523
|
+
same path, planned as this package's own template content. At `CATALOG_AGENT_PATH` it receives the
|
|
1524
|
+
staged bytes themselves, because the `catalog` verb refuses a target that lacks the file. For each
|
|
1525
|
+
name in `TARGET_SKILL_NAMES` it receives the skill pointer set: the `.claude/skills/<name>/SKILL.md`
|
|
1526
|
+
bridge and the `.agents/skills/<name>/agents/openai.yaml` sidecar as staged bytes, and at
|
|
1527
|
+
`.agents/skills/<name>/SKILL.md` a pointer that hydration derives from the staged canonical skill. A
|
|
1528
|
+
blueprint carrying the `skills` fact ships its own skill canon and receives no pointer set.
|
|
1529
|
+
Everywhere else in the canon a target holds nothing, and a reader reaches the contracts from a
|
|
1530
|
+
scaffold checkout sitting beside the repository, or from the
|
|
1531
|
+
`node_modules/@orkestrel/scaffold/dist/host/` root inside the installed package, which is what the
|
|
1532
|
+
`AGENTS.md` pointer scaffold plans into a target names.
|
|
1505
1533
|
|
|
1506
1534
|
`REFERENCE_PATHS` is the fleet's guides, staged for reading like the canon and owned like neither
|
|
1507
1535
|
of the other lists. It holds the `guides` directory, so a release stages this repository's mirror of
|
|
@@ -1561,12 +1589,12 @@ a commit is a property of the content host. Scaffold neither creates that lag no
|
|
|
1561
1589
|
response as fresher than the host served it.
|
|
1562
1590
|
|
|
1563
1591
|
A canon destination costs no request. The fetch list drops every canon destination and `filesToHost`
|
|
1564
|
-
keeps the installed floor bytes for each one, claimed or not. The rule covers the destinations a
|
|
1565
|
-
does claim as well: the `AGENTS.md`
|
|
1566
|
-
|
|
1567
|
-
a fetched canon path. A fill carrying no row for a
|
|
1568
|
-
is what lets one `Host` carry live bytes beside
|
|
1569
|
-
surface.
|
|
1592
|
+
keeps the installed floor bytes for each one, claimed or not. The rule covers the destinations a
|
|
1593
|
+
plan does claim as well: the `AGENTS.md` pointer is written from this package's own templates, the
|
|
1594
|
+
catalog agent file is claimed by presence, and the skill pointer set reads the installed floor
|
|
1595
|
+
bytes, so no byte a target holds is taken from a fetched canon path. A fill carrying no row for a
|
|
1596
|
+
canon path is complete rather than spoiled, which is what lets one `Host` carry live bytes beside
|
|
1597
|
+
floor bytes without mixing baselines within a surface.
|
|
1570
1598
|
|
|
1571
1599
|
`.claude/settings.json` is in that set, and the artifact planned for it is content-owned. `repair`
|
|
1572
1600
|
and `overwrite` restore its bytes, so an edit made to it inside a target is reverted at the next
|
|
@@ -1700,14 +1728,23 @@ except the manifest.
|
|
|
1700
1728
|
`configs/browsers.ts` resolution, serves the bundle over a loopback server, and drives it in
|
|
1701
1729
|
Playwright Chromium.
|
|
1702
1730
|
- One template artifact each for `README.md` and `guides/README.md`.
|
|
1703
|
-
- One template artifact
|
|
1704
|
-
`AGENTS.md` names the coding contract, the orchestration contract, the rules,
|
|
1705
|
-
resolves each against a sibling scaffold checkout or
|
|
1706
|
-
|
|
1707
|
-
into every context that loads it.
|
|
1708
|
-
|
|
1731
|
+
- One template artifact for `AGENTS.md`. It is a pointer rather than a contract:
|
|
1732
|
+
`AGENTS.md` names the coding contract, the orchestration contract, the rules, the skills, and the
|
|
1733
|
+
`.claude/AGENTS.md` Claude Code bridge, and resolves each against a sibling scaffold checkout or
|
|
1734
|
+
the installed package. It imports nothing, because an `@path` import inlines the imported file
|
|
1735
|
+
into every context that loads it. No `CLAUDE.md` is planned: Claude Code reads `AGENTS.md`
|
|
1736
|
+
directly, and a `CLAUDE.md` beside it stops that reading, so the path stays canon with no
|
|
1737
|
+
claimant, a copy a target still holds reports `foreign`, and `overwrite` deletes it. Scaffold
|
|
1738
|
+
owns the pointer's bytes, so a release that moves the wording moves every target's copy at its
|
|
1739
|
+
next `repair`.
|
|
1709
1740
|
- One host artifact per vendored path the workspace selects. A vendored directory is one planned
|
|
1710
1741
|
path that expands into the files the data root stores beneath it.
|
|
1742
|
+
- Three host artifacts for each name in `TARGET_SKILL_NAMES`, unless the blueprint carries the
|
|
1743
|
+
`skills` fact: the Claude bridge and the Codex sidecar as copies of the staged bytes, and the
|
|
1744
|
+
`SKILL.md` pointer, which carries the canonical frontmatter over a body that names the canonical
|
|
1745
|
+
skill and how to run its scripts from the installed package. A script runs from its built `.js`
|
|
1746
|
+
twin under `node_modules/@orkestrel/scaffold/dist/agents/skills/<skill>/scripts/`, because Node
|
|
1747
|
+
refuses to strip types for a file under `node_modules`.
|
|
1711
1748
|
|
|
1712
1749
|
Every generated manifest declares the toolchain it is gated on. The `engines.node` field carries
|
|
1713
1750
|
the blueprint's `engines` value, which defaults to the `>=22.18.0` range. The
|
|
@@ -1925,17 +1962,22 @@ tree carrying no uncommitted work. An untracked copy is left standing, and a git
|
|
|
1925
1962
|
outside the dirty reading as well, so a target can carry its own file at a canon path through every
|
|
1926
1963
|
visit. The audit reads canon membership by path, so such a copy stays a `foreign` finding and that
|
|
1927
1964
|
target exits `1` on every run. `repair` never closes it either: that verb writes the planned paths a
|
|
1928
|
-
target is missing or has let drift and deletes nothing, so it restores the `AGENTS.md` and
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1965
|
+
target is missing or has let drift and deletes nothing, so it restores the `AGENTS.md` pointer and
|
|
1966
|
+
the skill pointer set and leaves every other copy where it is; a `CLAUDE.md` a target still holds is
|
|
1967
|
+
a `foreign` finding the same way, and `overwrite` deletes it. A maintainer who wants a local MCP
|
|
1968
|
+
server registration keeps it outside the repository, in the harness's own local or user scope,
|
|
1969
|
+
rather than at `.mcp.json`, where the file is drift whoever wrote it.
|
|
1970
|
+
|
|
1971
|
+
**A target holds no dispatchable role beyond the catalog agent.** The canon is staged for reading,
|
|
1972
|
+
so a target receives the `AGENTS.md` pointer, `.claude/agents/orkestrel.md`, and the skill pointer
|
|
1973
|
+
set for each package-facing skill `TARGET_SKILL_NAMES` lists: the Claude bridge, the Codex sidecar,
|
|
1974
|
+
and a pointer that names the canonical skill, all content-owned and restored by `repair`. It
|
|
1975
|
+
receives no other agent role, no bench configuration, and no MCP registration. A harness running in
|
|
1976
|
+
a target loads none of those from `node_modules` either, so a role, a bench, or a server that target
|
|
1977
|
+
needs is defined in the harness's own local or user scope — the seam the preceding registration
|
|
1978
|
+
entry already names. Fleet targets are not orchestration hosts: `TARGET_SKILL_NAMES` leaves out the
|
|
1979
|
+
dispatch, publish, scout, and align skills, which run from a scaffold checkout, and a blueprint
|
|
1980
|
+
carrying the `skills` fact ships its own skill canon and receives no pointer set. A session that
|
|
1939
1981
|
dispatches roles starts on scaffold, where `.agents/orchestration.md` and the role files sit, and
|
|
1940
1982
|
attaches the target it is working on.
|
|
1941
1983
|
|
|
@@ -2115,6 +2157,10 @@ you for asking for the generated proof back.
|
|
|
2115
2157
|
The generated distribution proof takes its release contract from the outside. The generated
|
|
2116
2158
|
`prepublishOnly` invokes it as `npm run test:distribution -- --mode release`, and the proof reads
|
|
2117
2159
|
`import.meta.env.MODE === 'release'` and **fails** on an unreachable registry rather than skipping.
|
|
2160
|
+
The project factories the root configuration registers receive the invocation record, and each of
|
|
2161
|
+
their projects runs in the invocation's mode. Vitest runs a project whose factory returns no mode in
|
|
2162
|
+
Vitest's own `test` mode, where the proof skips. A journey project is such a project: its
|
|
2163
|
+
birth-owned wrapper drops the record, so it runs in `test` whatever mode the run names.
|
|
2118
2164
|
An ordinary local run skips that case, because a developer offline is not a defect; a release run
|
|
2119
2165
|
does not, because skipping there passes the publish gate without ever proving the artifact installs.
|
|
2120
2166
|
A workspace that replaces the generated proof takes that contract with it: presence ownership leaves
|
package/dist/host/guides/test.md
CHANGED
|
@@ -1480,7 +1480,7 @@ packages wrote is still refused when it is one suite's policy, a redeclaration o
|
|
|
1480
1480
|
`@orkestrel` package already publishes, or a race; a shape few packages wrote still ships when the
|
|
1481
1481
|
mechanism is a contract every consumer has to implement identically.
|
|
1482
1482
|
|
|
1483
|
-
The journey layer in `src/browser` is that second case. It is what `orkestrel-
|
|
1483
|
+
The journey layer in `src/browser` is that second case. It is what `orkestrel-journey`
|
|
1484
1484
|
requires every browser workspace to implement, and a workspace writing its own copy of it writes a
|
|
1485
1485
|
slightly different resolver, a slightly different set of failure voices, and a journey that reads as
|
|
1486
1486
|
if it proved something it did not. Publishing it once is what keeps those implementations identical.
|