@orkestrel/scaffold 0.0.108 → 0.0.109
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 +326 -91
- package/dist/agents/skills/orkestrel-dispatch/scripts/brief.js +110 -14
- package/dist/agents/skills/orkestrel-dispatch/scripts/chain.js +280 -0
- package/dist/agents/skills/orkestrel-dispatch/scripts/cite.js +188 -26
- package/dist/agents/skills/orkestrel-dispatch/scripts/launch.js +142 -43
- package/dist/agents/skills/orkestrel-dispatch/scripts/login.js +240 -62
- package/dist/agents/skills/orkestrel-dispatch/scripts/patch.js +323 -0
- package/dist/agents/skills/orkestrel-dispatch/scripts/result.js +169 -32
- package/dist/agents/skills/orkestrel-dispatch/scripts/sweep.js +290 -69
- package/dist/agents/skills/orkestrel-falsify/scripts/mutate.js +560 -0
- package/dist/agents/skills/orkestrel-harden/scripts/discovery.js +1052 -205
- package/dist/agents/skills/orkestrel-harden/scripts/measure.js +361 -0
- package/dist/agents/skills/orkestrel-harden/scripts/titles.js +455 -80
- package/dist/agents/skills/orkestrel-parallel/scripts/cases.js +327 -0
- package/dist/agents/skills/orkestrel-publish/scripts/compare.js +298 -51
- package/dist/agents/skills/orkestrel-publish/scripts/pins.js +170 -13
- package/dist/agents/skills/orkestrel-publish/scripts/swap.js +956 -191
- package/dist/agents/skills/orkestrel-publish/scripts/wave.js +707 -112
- package/dist/agents/skills/orkestrel-publish/scripts/window.js +235 -41
- package/dist/agents/skills/orkestrel-scout/scripts/map.js +341 -54
- package/dist/agents/templates/brief.md +1 -1
- package/dist/bin/main.js +51 -46
- package/dist/bin/main.js.map +1 -1
- package/dist/host/AGENTS.md +23 -21
- package/dist/host/agents/orchestration.md +43 -18
- package/dist/host/agents/platforms/windows.md +3 -3
- package/dist/host/agents/skills/orkestrel-align/SKILL.md +10 -13
- package/dist/host/agents/skills/orkestrel-align/references/fleet.md +4 -10
- package/dist/host/agents/skills/orkestrel-align/references/integration.md +1 -1
- package/dist/host/agents/skills/orkestrel-build/SKILL.md +16 -48
- package/dist/host/agents/skills/orkestrel-build/agents/openai.yaml +1 -1
- package/dist/host/agents/skills/orkestrel-debrief/SKILL.md +19 -16
- package/dist/host/agents/skills/orkestrel-debrief/agents/openai.yaml +1 -1
- package/dist/host/agents/skills/orkestrel-debrief/references/field-testing.md +15 -28
- package/dist/host/agents/skills/orkestrel-debrief/references/instruction-audit.md +5 -6
- package/dist/host/agents/skills/orkestrel-debrief/references/retention.md +4 -6
- package/dist/host/agents/skills/orkestrel-dispatch/SKILL.md +31 -20
- package/dist/host/agents/skills/orkestrel-dispatch/references/launch.md +3 -4
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/bench.ts +366 -75
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/brief.ts +126 -16
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/chain.ts +323 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/cite.ts +220 -31
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/launch.ts +176 -33
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/login.ts +294 -59
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/patch.ts +401 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/result.ts +199 -34
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/sweep.ts +330 -69
- package/dist/host/agents/skills/orkestrel-falsify/SKILL.md +10 -8
- package/dist/host/agents/skills/orkestrel-falsify/references/brief.md +1 -5
- package/dist/host/agents/skills/orkestrel-falsify/references/reconcile.md +1 -1
- package/dist/host/agents/skills/orkestrel-falsify/scripts/mutate.ts +701 -0
- package/dist/host/agents/skills/orkestrel-harden/SKILL.md +16 -12
- package/dist/host/agents/skills/orkestrel-harden/references/bindings.md +23 -81
- package/dist/host/agents/skills/orkestrel-harden/references/centralization.md +4 -5
- package/dist/host/agents/skills/orkestrel-harden/references/contract.md +2 -0
- package/dist/host/agents/skills/orkestrel-harden/references/document.md +33 -0
- package/dist/host/agents/skills/orkestrel-harden/references/equivalence.md +6 -3
- package/dist/host/agents/skills/orkestrel-harden/references/hardening.md +8 -4
- package/dist/host/agents/skills/orkestrel-harden/references/research.md +2 -0
- package/dist/host/agents/skills/orkestrel-harden/scripts/discovery.ts +1272 -279
- package/dist/host/agents/skills/orkestrel-harden/scripts/measure.ts +425 -0
- package/dist/host/agents/skills/orkestrel-harden/scripts/titles.ts +603 -98
- package/dist/host/agents/skills/orkestrel-journey/SKILL.md +75 -98
- package/dist/host/agents/skills/orkestrel-journey/references/captures.md +54 -17
- package/dist/host/agents/skills/orkestrel-journey/references/decide.md +1 -20
- package/dist/host/agents/skills/orkestrel-journey/references/layer.md +21 -31
- package/dist/host/agents/skills/orkestrel-journey/references/styles.md +1 -1
- package/dist/host/agents/skills/orkestrel-parallel/SKILL.md +28 -24
- package/dist/host/agents/skills/orkestrel-parallel/references/claude.md +15 -13
- package/dist/host/agents/skills/orkestrel-parallel/references/codex.md +1 -0
- package/dist/host/agents/skills/orkestrel-parallel/references/cursor.md +13 -13
- package/dist/host/agents/skills/orkestrel-parallel/scripts/cases.ts +389 -0
- package/dist/host/agents/skills/orkestrel-polish/SKILL.md +16 -20
- package/dist/host/agents/skills/orkestrel-polish/references/capture-harness.md +16 -26
- package/dist/host/agents/skills/orkestrel-publish/SKILL.md +12 -26
- package/dist/host/agents/skills/orkestrel-publish/agents/openai.yaml +2 -2
- package/dist/host/agents/skills/orkestrel-publish/references/adopt.md +23 -0
- package/dist/host/agents/skills/orkestrel-publish/references/release.md +4 -4
- package/dist/host/agents/skills/orkestrel-publish/references/wave.md +10 -9
- package/dist/host/agents/skills/orkestrel-publish/references/window.md +20 -25
- package/dist/host/agents/skills/orkestrel-publish/scripts/compare.ts +348 -59
- package/dist/host/agents/skills/orkestrel-publish/scripts/pins.ts +202 -22
- package/dist/host/agents/skills/orkestrel-publish/scripts/swap.ts +1061 -191
- package/dist/host/agents/skills/orkestrel-publish/scripts/wave.ts +812 -140
- package/dist/host/agents/skills/orkestrel-publish/scripts/window.ts +280 -38
- package/dist/host/agents/skills/orkestrel-scout/SKILL.md +3 -3
- package/dist/host/agents/skills/orkestrel-scout/scripts/map.ts +428 -70
- package/dist/host/agents/templates/brief.md +1 -1
- package/dist/host/agents/transports/claude-cli.md +3 -3
- package/dist/host/agents/transports/codex.md +2 -7
- package/dist/host/agents/transports/cursor.md +2 -3
- package/dist/host/claude/AGENTS.md +2 -2
- package/dist/host/claude/agents/analyst.md +3 -3
- package/dist/host/claude/agents/astra.md +3 -3
- package/dist/host/claude/agents/builder.md +1 -1
- package/dist/host/claude/agents/checker.md +1 -1
- package/dist/host/claude/agents/distiller.md +1 -1
- package/dist/host/claude/agents/grok.md +1 -1
- package/dist/host/claude/agents/opus.md +2 -2
- package/dist/host/claude/agents/orkestrel.md +57 -90
- package/dist/host/claude/agents/researcher.md +1 -1
- package/dist/host/claude/agents/reviewer.md +4 -0
- package/dist/host/claude/agents/scout.md +1 -1
- package/dist/host/claude/agents/verifier.md +1 -1
- package/dist/host/claude/rules/application.md +14 -21
- package/dist/host/claude/rules/architecture.md +34 -44
- package/dist/host/claude/rules/browser.md +3 -4
- package/dist/host/claude/rules/campaign.md +2 -2
- package/dist/host/claude/rules/documentation.md +25 -12
- package/dist/host/claude/rules/names.md +9 -4
- package/dist/host/claude/rules/patterns.md +6 -7
- package/dist/host/claude/rules/portability.md +1 -1
- package/dist/host/claude/rules/quality.md +4 -5
- package/dist/host/claude/rules/styles.md +2 -2
- package/dist/host/claude/rules/tests.md +57 -114
- package/dist/host/claude/rules/typescript.md +7 -9
- package/dist/host/claude/rules/workspace.md +21 -19
- package/dist/host/claude/rules/writing.md +2 -5
- package/dist/host/claude/skills/orkestrel-dispatch/SKILL.md +1 -1
- package/dist/host/claude/skills/orkestrel-harden/SKILL.md +1 -1
- package/dist/host/claude/skills/orkestrel-publish/SKILL.md +1 -1
- package/dist/host/claude/skills/orkestrel-scout/SKILL.md +1 -1
- package/dist/host/codex/agents/analyst.toml +9 -3
- package/dist/host/codex/agents/astra.toml +3 -4
- package/dist/host/codex/agents/builder.toml +1 -1
- package/dist/host/codex/agents/opus.toml +3 -4
- package/dist/host/codex/agents/orkestrel.toml +1 -1
- package/dist/host/codex/agents/researcher.toml +2 -2
- package/dist/host/codex/agents/verifier.toml +1 -1
- package/dist/host/configs/helpers.ts +21 -1
- package/dist/host/configs/policy.ts +299 -15
- package/dist/host/dotfiles/oxlintrc.json +137 -3
- package/dist/host/guides/agent.md +111 -134
- package/dist/host/guides/capture.md +801 -0
- package/dist/host/guides/probe.md +27 -8
- package/dist/host/guides/scaffold.md +96 -18
- package/dist/host/guides/study.md +534 -440
- package/dist/host/guides/test.md +111 -44
- package/dist/host/manifest.json +160 -240
- package/dist/host/tests/config.test.ts +971 -187
- package/dist/host/tests/policy.test.ts +127 -1
- package/dist/host/tests/setupPolicy.ts +893 -33
- package/dist/src/core/index.cjs +214 -86
- package/dist/src/core/index.cjs.map +1 -1
- package/dist/src/core/index.d.cts +122 -38
- package/dist/src/core/index.d.ts +122 -38
- package/dist/src/core/index.js +209 -85
- package/dist/src/core/index.js.map +1 -1
- package/dist/src/server/index.cjs +20 -27
- package/dist/src/server/index.cjs.map +1 -1
- package/dist/src/server/index.js +21 -28
- package/dist/src/server/index.js.map +1 -1
- package/package.json +11 -11
- package/dist/agents/skills/orkestrel-dispatch/scripts/helpers.js +0 -283
- package/dist/host/agents/skills/orkestrel-dispatch/references/bench.md +0 -25
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/helpers.ts +0 -333
- package/dist/host/guides/supervisor.md +0 -4890
|
@@ -165,7 +165,7 @@ A `Shape` cell holds an interface's data members as bare names in braces, `?` ma
|
|
|
165
165
|
`StageInterface.progress` is the seam a foreign coordinator reads to decide whose budget an expiry
|
|
166
166
|
belongs to, and this is the proof behind it.
|
|
167
167
|
[`RuntimeStage.test.ts`](../tests/src/server/stages/RuntimeStage.test.ts) proves the gauge boundary
|
|
168
|
-
deterministically: it holds one inspection at the results cache with a FIFO, reads `progress`
|
|
168
|
+
deterministically on Vitest 4: it holds one inspection at the results cache with a FIFO, reads `progress`
|
|
169
169
|
elevated while the caller's run is in flight, and reads it level with its pre-inspection value while
|
|
170
170
|
the stage evicts.
|
|
171
171
|
[`LintStage.test.ts`](../tests/src/server/stages/LintStage.test.ts) reads the same boundary at the
|
|
@@ -552,12 +552,31 @@ and proof waits for type readiness and the boot controls. See [Lifecycle](#lifec
|
|
|
552
552
|
the gate only while probe and the gate read one installed copy of each tool.
|
|
553
553
|
|
|
554
554
|
Declare `@orkestrel/probe` as a development dependency of the workspace it inspects. Its
|
|
555
|
-
`typescript` and `vitest` tools are optional peers
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
555
|
+
`typescript` and `vitest` tools are optional peers, with ranges `^6.0.3 || ^7.0.2` and
|
|
556
|
+
`^4.1.12 || ^5.0.5`. Probe resolves them and `oxlint` from that workspace when a direct probe is
|
|
557
|
+
constructed or a server begins onset. Starting refuses TypeScript majors outside 6 and 7 before
|
|
558
|
+
a stage starts. Vue workspaces can retain TypeScript 6 while other workspaces use TypeScript 7.
|
|
559
|
+
|
|
560
|
+
The type stage resolves `tsc` through `typescript/package.json` and its `bin` field. It requires
|
|
561
|
+
neither an in-process compiler API nor an exported `typescript/bin/tsc` subpath. Printed diagnostics
|
|
562
|
+
decide its result, so the differing TypeScript 6 and 7 exit codes do not change a verdict. The
|
|
563
|
+
runtime stage uses the mode-first `createVitest` overload: Vitest 4.1.12 requires that form, and
|
|
564
|
+
Vitest 5.0.5 retains it as a deprecated overload. The `oxlint` package carries no peer range.
|
|
565
|
+
|
|
566
|
+
TypeScript 7's `--showConfig` can succeed with partial JSON for a malformed project. Before
|
|
567
|
+
returning a project's identity, the type stage therefore validates it with `--noEmit` unless
|
|
568
|
+
warming or an earlier unoverlaid check already validated it. Configuration diagnostics name the
|
|
569
|
+
caller’s project rather than the generated scratch configuration.
|
|
570
|
+
|
|
571
|
+
Runtime eviction removes the generated file from Vitest 4's results cache. Vitest 5 exposes no
|
|
572
|
+
per-file cache eviction API, so the stage calls its public `clearCache()` method after each run.
|
|
573
|
+
That call clears results, dependencies, and filesystem module caches. The per-file FIFO cleanup
|
|
574
|
+
instrument applies only to Vitest 4; the runner-retention test checks both versions for generated
|
|
575
|
+
specifications left in the results cache.
|
|
576
|
+
|
|
577
|
+
Vitest 4 installs its termination handlers synchronously; Vitest 5 installs them after resolving
|
|
578
|
+
configuration. Probe removes handlers registered within the factory's async context before signal
|
|
579
|
+
delivery and preserves handlers the host registers outside that context, including during warming.
|
|
561
580
|
|
|
562
581
|
## Registering the server
|
|
563
582
|
|
|
@@ -746,7 +765,7 @@ const claim: Claim = {
|
|
|
746
765
|
const probe = new Probe({ workspace: process.cwd() })
|
|
747
766
|
const verdict = await probe.prove(claim)
|
|
748
767
|
verdict.digest // 'bdf03e5dfd6bd413ead671c7a2940fcf'
|
|
749
|
-
verdict.receipt //
|
|
768
|
+
verdict.receipt?.startsWith(`probe:${verdict.digest}:type:`) // true
|
|
750
769
|
await probe.destroy()
|
|
751
770
|
```
|
|
752
771
|
|
|
@@ -108,9 +108,10 @@ Exported from `@orkestrel/scaffold`, and reachable from
|
|
|
108
108
|
| `Plan` | interface | Holds the compiled, ordered artifact list and the selection it covers. |
|
|
109
109
|
| `PlanSummary` | interface | Represents the tally of one plan by artifact origin. |
|
|
110
110
|
| `Question` | interface | Represents one validation issue raised against a blueprint or a plan. |
|
|
111
|
-
| `
|
|
111
|
+
| `CompileResult` | interface | Represents the replayable outcome of one compile. |
|
|
112
112
|
| `SrcDefinition` | interface | Describes the build and export settings one published `src` environment contributes. |
|
|
113
113
|
| `StylesExtension` | interface | Represents a named sheet face under `src/<name>`. |
|
|
114
|
+
| `ToolchainHold` | interface | Represents one foreign tool range required by a browser framework. |
|
|
114
115
|
| `ViteMachinery` | interface | Names which host-specific pipelines a generated root Vite configuration carries. |
|
|
115
116
|
|
|
116
117
|
#### Constants
|
|
@@ -123,16 +124,18 @@ Exported from `@orkestrel/scaffold`, and reachable from
|
|
|
123
124
|
| `APP_SERVER_DEV_DEPENDENCIES` | const | Lists the development dependencies a private server application adds. |
|
|
124
125
|
| `ARTIFACT_TEMPLATES` | const | Holds formatter-stable template text for source, test, document, guide, and service artifacts. |
|
|
125
126
|
| `AXES` | const | Lists the axes a browser extension may occupy, frozen. |
|
|
126
|
-
| `BASE_DEV_DEPENDENCIES` | const | Holds the tooling versions
|
|
127
|
+
| `BASE_DEV_DEPENDENCIES` | const | Holds the baseline tooling versions, before framework holds apply. |
|
|
127
128
|
| `BIN_CONFIGS` | const | Lists the configuration files a workspace that ships its own executable adds, frozen. |
|
|
128
129
|
| `BIN_ENTRY_PATH` | const | Names the executable entry whose presence makes a workspace `bin`. |
|
|
129
130
|
| `BIN_OUTPUT_PATH` | const | Names the built executable a bin workspace's manifest command runs. |
|
|
130
131
|
| `BROWSE_DEV_DEPENDENCIES` | const | Names the development dependency a browser or styles surface adds. |
|
|
131
132
|
| `BROWSE_UPSTREAM` | const | Lists the packages `@orkestrel/browser` depends on at runtime, directly or transitively, frozen. |
|
|
133
|
+
| `CAPTURE_DEV_DEPENDENCIES` | const | Names the development dependency a browser application's journey axis adds. |
|
|
134
|
+
| `CAPTURE_UPSTREAM` | const | Lists the capture package and its fleet runtime dependency closure, frozen. |
|
|
132
135
|
| `CANON_PATHS` | const | Lists the instruction-canon paths staged for reading rather than for a target, frozen. |
|
|
133
136
|
| `CATALOG_AGENT_PATH` | const | Names the agent file whose marker-bounded package table the catalog verb alone owns. |
|
|
134
|
-
| `
|
|
135
|
-
| `
|
|
137
|
+
| `CATALOG_END_MARKER` | const | Names the marker closing the package table inside `CATALOG_AGENT_PATH`. |
|
|
138
|
+
| `CATALOG_START_MARKER` | const | Names the marker opening the package table inside `CATALOG_AGENT_PATH`. |
|
|
136
139
|
| `CONFIG_TEMPLATES` | const | Holds formatter-stable template text for every configuration artifact. |
|
|
137
140
|
| `CONFORMANCE_TEST_PATH` | const | Names the official-tooling drift proof whose presence makes a workspace `conformance`. |
|
|
138
141
|
| `CONTROL_CHARACTER_PATTERN` | const | Matches the Unicode controls, formatting controls, and line and paragraph separators rejected in text. |
|
|
@@ -203,6 +206,7 @@ Exported from `@orkestrel/scaffold`, and reachable from
|
|
|
203
206
|
| `TARGET_SKILL_NAMES` | const | Lists the package-facing skills a target receives pointers for, frozen and alphabetical. |
|
|
204
207
|
| `THEMES_BARREL_PATH` | const | Names the themes stylesheet marker. |
|
|
205
208
|
| `THEMES_ENTRY_PATH` | const | Names the themes build entry marker. |
|
|
209
|
+
| `TOOLCHAIN_HOLDS` | const | Holds foreign tool ranges required by selected browser frameworks, frozen. |
|
|
206
210
|
| `TREE_TEST_PATH` | const | Names the real-tree proof whose presence makes a workspace `tree`. |
|
|
207
211
|
| `VERSION_PATTERN` | const | Matches the exact `major.minor.patch` version syntax a blueprint declares. |
|
|
208
212
|
| `WORKSPACE_DEV_ENGINES` | const | Holds the `devEngines` record every generated manifest carries. |
|
|
@@ -298,6 +302,7 @@ Exported from `@orkestrel/scaffold`, and reachable from
|
|
|
298
302
|
| `artifactsToQuestions` | function | Measures a drafted artifact list against the laws a whole plan decides. |
|
|
299
303
|
| `blueprintToConfigArtifacts` | function | Compiles every artifact in the `configs` group. |
|
|
300
304
|
| `blueprintToDevDependencies` | function | Projects a blueprint into the development dependencies its manifest declares. |
|
|
305
|
+
| `blueprintToToolchainHolds` | function | Projects a blueprint into the toolchain holds its browser frameworks require. |
|
|
301
306
|
| `blueprintToDocumentArtifacts` | function | Compiles the generated workspace's root documentation. |
|
|
302
307
|
| `blueprintToExports` | function | Projects published environments and sheets into the manifest export map. |
|
|
303
308
|
| `blueprintToFaces` | function | Projects a blueprint into browser extensions restricted to occupied browser axes. |
|
|
@@ -661,7 +666,8 @@ answers a read and grant no verb write authority that it did not already have.
|
|
|
661
666
|
`new --app browser` command selects the journey axis, creates its birth-owned wrapper, defines
|
|
662
667
|
`appJourney` in the root configuration, and excludes the browser integration suite from
|
|
663
668
|
`app:browser`. Its manifest declares `test:journey` and invokes it after `npm run test:app` in
|
|
664
|
-
`test`.
|
|
669
|
+
`test`. It also declares `journey: capture journey` and `capture: capture frames` for explicit
|
|
670
|
+
scoped selections. A selection without a browser application emits no journey axis. `--styles`, `--themes`,
|
|
665
671
|
`--showcase`, and `--extend` select the structural facts and the extensions, and Surfaces and extensions
|
|
666
672
|
states what each emits and what each refuses. Creation leaves `setup` empty, and the remaining
|
|
667
673
|
structural facts take no creation option. Add a root `tests/setup*.test.ts` proof for `setup`,
|
|
@@ -778,6 +784,15 @@ manifest and planned `vite.config.ts` conflict, and the option to exclude `confi
|
|
|
778
784
|
A selection that excludes `configs` proceeds. An advisory alone does not make an aligned target
|
|
779
785
|
drift.
|
|
780
786
|
|
|
787
|
+
The probe workbench separates ordinary probes from benchmarks by filename. `test:probe` collects
|
|
788
|
+
`tmp/probes/**/*.test.ts`. `test:bench` collects `tmp/probes/**/*.bench.ts` and `tests/**/*.bench.ts`
|
|
789
|
+
with the explicit `--mode benchmark` option. Neither script belongs to a gate. In a benchmark file,
|
|
790
|
+
register a regular `it` or `test` callback that receives the context's `bench` fixture. Await
|
|
791
|
+
`bench(name, options, fn).run()` or `bench.compare(...)`; options precede the benchmark function.
|
|
792
|
+
The filename keeps the benchmark out of ordinary test runs, so no mode guard is required. The
|
|
793
|
+
script supplies the `import.meta.env.MODE` marker explicitly rather than relying on the command's
|
|
794
|
+
default mode. See the [Vitest benchmark guide](https://vitest.dev/guide/benchmarking).
|
|
795
|
+
|
|
781
796
|
A gate chain also reaches a sheet or framework face through `vitest run --config <wrapper>` when
|
|
782
797
|
the wrapper path belongs to that face in the planned configuration; a build invocation does not.
|
|
783
798
|
|
|
@@ -809,6 +824,12 @@ section. A name carrying no colon has no family, and a family the section declar
|
|
|
809
824
|
nothing to follow, so each of those is appended after the last declared script instead. `catalog`
|
|
810
825
|
writes no script region; it names the ranges alone.
|
|
811
826
|
|
|
827
|
+
The browser application's journey axis adds `journey` and `capture`. Their generated commands,
|
|
828
|
+
`capture journey` and `capture frames`, have no predecessor forms in the accepted set. Missing
|
|
829
|
+
commands append; generated values remain writable; `replaceManifestScripts` preserves customized
|
|
830
|
+
values while repairing siblings independently, so a selected or wrapped `journey` command survives
|
|
831
|
+
repair. Neither scoped command replaces `test:journey` in the gate chain.
|
|
832
|
+
|
|
812
833
|
The range region and the script region are not groups. `package.json` is birth-owned, so the
|
|
813
834
|
`manifest` group creates it when a workspace is first materialized and never rewrites it afterwards,
|
|
814
835
|
and `--groups` narrows the plan rather than the regions. `repair` and `overwrite` therefore
|
|
@@ -1109,7 +1130,10 @@ writes a suite, and a suite may drive a service the skeleton does not start.
|
|
|
1109
1130
|
`studies` says the workspace holds at least one exact-case `*.test.ts` file beneath `tests/studies`,
|
|
1110
1131
|
nested or direct, outside any `node_modules` or `.git` directory, which Vitest's default exclude
|
|
1111
1132
|
never collects, and it alone registers the `studies` Vitest project over that directory and its
|
|
1112
|
-
`test:studies` script. The project
|
|
1133
|
+
`test:studies` script. The project holds only proofs the `@orkestrel/study` engine drives. An
|
|
1134
|
+
end-to-end proof that no study engine drives is an integration test instead. It goes in
|
|
1135
|
+
`tests/integration.test.ts` when it crosses environments.
|
|
1136
|
+
The project loads `tests/setup.ts` alone. The tests import
|
|
1113
1137
|
`tests/setupStudy.ts`, a harness module the package owns, so scaffold plans no such file and no
|
|
1114
1138
|
project loads it as a setup file. A publishing workspace invokes the project from `prepublishOnly`,
|
|
1115
1139
|
after `npm test` and before the release proof; a `private: true` workspace invokes it from `test`,
|
|
@@ -1162,6 +1186,17 @@ reads `process.env.CAPTURE === '1'` for that boolean. The generated `test:journe
|
|
|
1162
1186
|
`test` chain runs it after the application projects. With the journey axis off, the ordinary
|
|
1163
1187
|
browser project retains its integration suite.
|
|
1164
1188
|
|
|
1189
|
+
The same axis adds `journey: capture journey` and `capture: capture frames`, using the executable
|
|
1190
|
+
from `node_modules/@orkestrel/capture`. Run `npm run journey -- <selector>` for behavior with
|
|
1191
|
+
capture off and `npm run capture -- <selector>` for frames with `CAPTURE=1`. A selector is `all`
|
|
1192
|
+
or a colon-delimited owner path declared by the wrapper. Narrow with `--variant <name>` and
|
|
1193
|
+
`--case <exact-full-name>`; frames also accept `--state <name>`. Replace the selector with
|
|
1194
|
+
`--changed <ref>` and inspect `--plan` before executing the changed set. The package refuses
|
|
1195
|
+
shared changes that cannot be narrowed and prints the explicit whole-suite command.
|
|
1196
|
+
The application wires the wrapper's discovery, tags, portfolios, registry, selection request,
|
|
1197
|
+
and final-case records to the capture protocol before running these commands. Scaffold seeds
|
|
1198
|
+
the dependency and scripts; it defines no application owner or state registry.
|
|
1199
|
+
|
|
1165
1200
|
The generated browser resolver and gate cover Chromium alone. The emitted `configs/browsers.ts` doc
|
|
1166
1201
|
block states the condition that reopens engine selection, and is that condition's one home.
|
|
1167
1202
|
|
|
@@ -1378,10 +1413,13 @@ digest in lowercase hexadecimal. Stamping a stamped page returns it unchanged. `
|
|
|
1378
1413
|
page carrying a repeated or malformed stamp, and a page whose head does not close on its own line.
|
|
1379
1414
|
|
|
1380
1415
|
The journey follows the same modes. The birth-owned `configs/app/vite.journey.config.ts` wrapper
|
|
1381
|
-
keeps your variant list and passes the Vite mode to the root
|
|
1382
|
-
factory, which selects the application through
|
|
1383
|
-
|
|
1384
|
-
|
|
1416
|
+
keeps your variant list and passes the Vite mode to the root
|
|
1417
|
+
`appJourney(variant, variants, mode?, override?)` factory, which selects the application through
|
|
1418
|
+
`resolveApplication` as well. Each variant project collects
|
|
1419
|
+
`tests/app/<application>/integration.test.ts` alone, sets the variant viewport, and provides
|
|
1420
|
+
`variant`, `variants`, and `capture`. The factory merges an optional `UserConfig` override last,
|
|
1421
|
+
through `mergeOverride`, so a wrapper changes only the fields it names and the project keeps its
|
|
1422
|
+
include and exclude replacement, viewport, commands, and plugin rules. The manifest runs `test:journey` for the base
|
|
1385
1423
|
application and `test:journey:<framework>`, the same command with `--mode <framework>`, for each
|
|
1386
1424
|
app-side browser extension, after `npm run test:app` in `test`.
|
|
1387
1425
|
|
|
@@ -1478,7 +1516,7 @@ scaffolding.stages // one CompileRecord per stage that ran
|
|
|
1478
1516
|
compiler.destroy()
|
|
1479
1517
|
```
|
|
1480
1518
|
|
|
1481
|
-
One rule decides the outcome: a `
|
|
1519
|
+
One rule decides the outcome: a `CompileResult` carries a plan exactly when no question blocks. A
|
|
1482
1520
|
refused blueprint is answered rather than raised, so a caller reads the refusal from the value it
|
|
1483
1521
|
asked for. Each stage records its input and its output, a failed stage records the coded reason
|
|
1484
1522
|
beside them, and the stages after a failed one never run.
|
|
@@ -1948,8 +1986,9 @@ version. The real npm resolver accepts the preserved range. Its narrowed-range c
|
|
|
1948
1986
|
|
|
1949
1987
|
The floors live in scaffold's own `package.json`. `BASE_DEV_DEPENDENCIES` and the tables beside it
|
|
1950
1988
|
derive each row scaffold installs from that manifest, and the self-pin from its `version` field, so
|
|
1951
|
-
the toolchain a generated workspace receives is the toolchain scaffold
|
|
1952
|
-
|
|
1989
|
+
the baseline toolchain a generated workspace receives is the toolchain scaffold declares. A selected
|
|
1990
|
+
browser framework can override a floor through `TOOLCHAIN_HOLDS`. The rows scaffold does
|
|
1991
|
+
not install are seeds — `@orkestrel/capture`, `@vitejs/plugin-vue`, `vue`, `vue-tsc`, `vite-plugin-singlefile`, and the
|
|
1953
1992
|
application-server fleet packages — and each carries the highest triple its supported major served
|
|
1954
1993
|
when it was written.
|
|
1955
1994
|
[`tests/src/core/constants.test.ts`](../tests/src/core/constants.test.ts) names that seeded set, so a
|
|
@@ -1957,10 +1996,48 @@ row entering or leaving the manifest moves a test rather than passing unnoticed.
|
|
|
1957
1996
|
of `STYLES_DEV_DEPENDENCIES`, is a seed as well: it carries the `^1.105.1` range the
|
|
1958
1997
|
`@orkestrel/veneer` checkout declared on 2026-09-30, and that test names it in the seeded set.
|
|
1959
1998
|
|
|
1999
|
+
`CAPTURE_DEV_DEPENDENCIES` seeds `@orkestrel/capture` at `^0.0.1` only when the blueprint's
|
|
2000
|
+
`journey` axis is enabled and its `app` includes `browser`. `CAPTURE_UPSTREAM` withholds that
|
|
2001
|
+
seed from capture itself and its fleet runtime closure: `@orkestrel/contract`,
|
|
2002
|
+
`@orkestrel/emitter`, `@orkestrel/process`, and `@orkestrel/timeout`. The frozen, sorted list
|
|
2003
|
+
follows dependencies and peers from capture's installed manifests and moves with the capture
|
|
2004
|
+
pin. Scaffold does not install capture; planning proofs cover every listed exclusion and an
|
|
2005
|
+
unlisted journey workspace. The installed closure-equality proof lands when scaffold installs
|
|
2006
|
+
capture. A browser source, styles surface, or browser setup without that journey application
|
|
2007
|
+
receives no capture seed. A runtime declaration remains in its existing section instead of
|
|
2008
|
+
being duplicated as a development dependency.
|
|
2009
|
+
|
|
1960
2010
|
Outside the selected showcase pair, a newer major is never crossed for you. `audit` reports one as a non-blocking `dependencies`
|
|
1961
|
-
question, and a person decides whether the generated toolchain supports it.
|
|
1962
|
-
|
|
1963
|
-
|
|
2011
|
+
question, and a person decides whether the generated toolchain supports it.
|
|
2012
|
+
|
|
2013
|
+
`TOOLCHAIN_HOLDS` records framework-specific ranges. `blueprintToToolchainHolds` selects those
|
|
2014
|
+
rows from the blueprint's occupied browser framework faces. A `src/vue` or `app/vue` face selects
|
|
2015
|
+
TypeScript `^6.0.3`: no stable `vue-tsc` runs on TypeScript 7, `@volar/typescript@2.4.30` declares
|
|
2016
|
+
the peer range `typescript <7`, and the TypeScript 7.0 announcement directs Vue projects to stay
|
|
2017
|
+
on TypeScript 6.0. Every workspace without that extension receives TypeScript `^7.0.2`.
|
|
2018
|
+
For a selected hold, `audit` reports the hold and its reason in place of the newer-major question
|
|
2019
|
+
and reports a declaration past the hold. A non-Vue workspace on TypeScript 7 raises no hold
|
|
2020
|
+
question. The constants proof ties each hold to its framework's planned range and scaffold's
|
|
2021
|
+
manifest baseline. Prove the framework on the later major before lifting its hold.
|
|
2022
|
+
|
|
2023
|
+
The dependency tables select these floors:
|
|
2024
|
+
|
|
2025
|
+
| Tool | Range | Scope |
|
|
2026
|
+
| ---------------------------- | ---------- | -------------------------------------------------------------- |
|
|
2027
|
+
| TypeScript | `^7.0.2` | Baseline without a Vue extension |
|
|
2028
|
+
| TypeScript | `^6.0.3` | A selected `src/vue` or `app/vue` face |
|
|
2029
|
+
| Vitest | `^5.0.5` | Every workspace |
|
|
2030
|
+
| `@vitest/browser-playwright` | `^5.0.5` | Browser tooling |
|
|
2031
|
+
| `oxlint` | `^1.90.0` | Every workspace |
|
|
2032
|
+
| `oxfmt` | `^0.75.0` | Every workspace |
|
|
2033
|
+
| `@microsoft/api-extractor` | `^7.60.0` | Declaration builds; uses its bundled TypeScript 6.0.3 engine |
|
|
2034
|
+
| `playwright` | `^1.64.1` | Browser tooling |
|
|
2035
|
+
| Vite | `^8.3.5` | Every workspace |
|
|
2036
|
+
| `@types/node` | `^24.19.2` | Every workspace; generated workspaces support Node `>=22.18.0` |
|
|
2037
|
+
|
|
2038
|
+
Node 26 types admit APIs that the supported runtime lacks. Inside the declared major the verbs
|
|
2039
|
+
raise the floor themselves, which is what makes the caret's own width beside the point:
|
|
2040
|
+
`^0.64.0` admits no `0.65.0`, and `repair` rewrites the range to `^0.65.0` rather than
|
|
1964
2041
|
widening it.
|
|
1965
2042
|
|
|
1966
2043
|
Compatibility and staleness are separate questions, so they are read by separate helpers.
|
|
@@ -2615,7 +2692,7 @@ and the regenerated root configuration registers no project for it. Restore the
|
|
|
2615
2692
|
hand, then run `repair`.
|
|
2616
2693
|
|
|
2617
2694
|
**A fleet target holding Vue code under `app/browser` cannot repair.** On 2026-09-30 the
|
|
2618
|
-
`elements`, `mailbox`,
|
|
2695
|
+
`elements`, `mailbox`, and `roughnotes` checkouts each held `.vue` files under
|
|
2619
2696
|
`app/browser`, read by a recursive count in each local checkout. The migration guard refuses
|
|
2620
2697
|
`repair` and `overwrite` in each of them until its components move to `app/vue`, so each moves them
|
|
2621
2698
|
in its own change before it adopts the release that carries the guard.
|
|
@@ -2859,7 +2936,8 @@ The generated guide index lists each occupied Vue face with its source, tests, a
|
|
|
2859
2936
|
- [`tests/src/bin/main.test.ts`](../tests/src/bin/main.test.ts) — the process entry point.
|
|
2860
2937
|
- [`tests/policy.test.ts`](../tests/policy.test.ts) — the path- and text-shaped policy laws:
|
|
2861
2938
|
mirrors, the root setup mirror, suppressions, the rule map, filenames, manifest scripts, skills,
|
|
2862
|
-
bridges,
|
|
2939
|
+
bridges, the prose sweep over every authored Markdown file, and the text-integrity sweep over the
|
|
2940
|
+
authored and source text. The syntax-shaped laws are the
|
|
2863
2941
|
rules of the vendored oxlint plugin `configs/policy.ts`, proven in `tests/config.test.ts`.
|
|
2864
2942
|
- [`tests/config.test.ts`](../tests/config.test.ts) — the root configuration's aliases, projects,
|
|
2865
2943
|
and outputs, every plugin rule against a case pair drawn from inside and outside its membership
|