@orkestrel/scaffold 0.0.63 → 0.0.65
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/README.md +29 -104
- package/dist/bin/main.js +95 -27
- package/dist/bin/main.js.map +1 -1
- package/dist/host/AGENTS.md +2 -2
- package/dist/host/CLAUDE.md +6 -0
- package/dist/host/agents/orchestration.md +23 -15
- package/dist/host/agents/skills/enterprise-bootstrap/SKILL.md +184 -177
- package/dist/host/agents/skills/enterprise-bootstrap/references/bootstrap-reference.md +314 -91
- package/dist/host/agents/skills/enterprise-bootstrap/references/color-modes.md +241 -0
- package/dist/host/agents/skills/enterprise-bootstrap/references/components.md +83 -36
- package/dist/host/agents/skills/enterprise-bootstrap/references/frontend-design.md +297 -98
- package/dist/host/agents/skills/enterprise-bootstrap/references/inputs.md +25 -14
- package/dist/host/agents/skills/enterprise-bootstrap/references/inspection.md +216 -128
- package/dist/host/agents/skills/enterprise-bootstrap/references/responsive-layout.md +187 -0
- package/dist/host/agents/skills/enterprise-bootstrap/references/utilities.md +109 -20
- package/dist/host/agents/skills/orkestrel-debrief/references/field-testing.md +5 -5
- package/dist/host/agents/skills/orkestrel-falsify/references/reconcile.md +1 -1
- package/dist/host/agents/skills/orkestrel-publish/SKILL.md +15 -15
- package/dist/host/agents/skills/orkestrel-publish/references/wave.md +43 -17
- package/dist/host/agents/skills/orkestrel-publish/references/window.md +41 -16
- package/dist/host/claude/agents/orkestrel.md +56 -56
- package/dist/host/claude/agents/reviewer.md +13 -0
- package/dist/host/claude/rules/architecture.md +51 -45
- package/dist/host/claude/rules/documentation.md +18 -1
- package/dist/host/claude/rules/portability.md +2 -0
- package/dist/host/claude/rules/quality.md +1 -1
- package/dist/host/claude/rules/tests.md +12 -11
- package/dist/host/claude/rules/typescript.md +5 -0
- package/dist/host/claude/rules/workspace.md +25 -20
- package/dist/host/claude/rules/writing.md +4 -0
- package/dist/host/claude/settings.json +1 -1
- package/dist/host/claude/skills/enterprise-bootstrap/SKILL.md +10 -9
- package/dist/host/codex/agents/orkestrel.toml +3 -3
- package/dist/host/codex/agents/reviewer.toml +4 -2
- package/dist/host/configs/helpers.ts +311 -2
- package/dist/host/configs/policy.ts +1100 -51
- package/dist/host/dotfiles/oxlintrc.json +72 -1
- package/dist/host/guides/guide.md +749 -222
- package/dist/host/guides/scaffold.md +529 -394
- package/dist/host/manifest.json +53 -40
- package/dist/host/scripts/ollama.sh +322 -13
- package/dist/host/tests/config.test.ts +1200 -16
- package/dist/host/tests/policy.test.ts +157 -173
- package/dist/host/tests/setupPolicy.ts +522 -1007
- package/dist/src/core/index.cjs +402 -287
- package/dist/src/core/index.cjs.map +1 -1
- package/dist/src/core/index.d.cts +160 -128
- package/dist/src/core/index.d.ts +160 -128
- package/dist/src/core/index.js +400 -286
- package/dist/src/core/index.js.map +1 -1
- package/dist/src/server/index.cjs +28 -21
- package/dist/src/server/index.cjs.map +1 -1
- package/dist/src/server/index.d.cts +38 -33
- package/dist/src/server/index.d.ts +38 -33
- package/dist/src/server/index.js +28 -21
- package/dist/src/server/index.js.map +1 -1
- package/package.json +18 -19
package/dist/host/AGENTS.md
CHANGED
|
@@ -68,7 +68,7 @@ configs/ thin target wrappers around root Vite/TypeScript configuration
|
|
|
68
68
|
- **No nested functions.** Extract function declarations and assignments from bodies. The only exceptions are an anonymous callback passed directly as an argument and an anonymous function returned directly as a result.
|
|
69
69
|
- **Functional core, imperative shell.** Export pure leaves. Keep stateful or defining orchestration as class methods. Classes compose behavior; they do not forward 1:1 to helpers.
|
|
70
70
|
- **No superfluous wrappers.** A wrapper must add a boundary, invariant, composition, translation, lifecycle, or materially narrower contract. Otherwise use or rename the real symbol and update every consumer.
|
|
71
|
-
- **Minimal public API.** Add or substantively expand a capability with its first real consumer; do not speculate. This is a creation gate, never a later visibility gate. Once an intentional reusable capability exists, expose its top-level source exports through the correct environment barrel regardless of which consumers
|
|
71
|
+
- **Minimal public API.** Add or substantively expand a capability with its first real consumer; do not speculate. This is a creation gate, never a later visibility gate. Once an intentional reusable capability exists, expose its top-level source exports through the correct environment barrel regardless of which consumers use them, so developers receive the same supported mechanisms the package uses. Remove a symbol only when the capability itself must not exist. Prefer one minimal interface and one shared engine, allowing native backend overrides only for genuine faster paths.
|
|
72
72
|
- **No compatibility shims.** This is greenfield. Update every consumer in the same change.
|
|
73
73
|
- **Mechanism, not product policy.** Framework code supplies reusable mechanisms and stops before application decisions.
|
|
74
74
|
- **No polling architecture.** Park idle work on events and abort signals. Yield long work cooperatively.
|
|
@@ -101,7 +101,7 @@ configs/ thin target wrappers around root Vite/TypeScript configuration
|
|
|
101
101
|
7. **Document:** update the guide, examples, and parity contract.
|
|
102
102
|
8. **Verify:** audit discovery, deferrals, and package contents as applicable. Run the required gates and read their actual output before claiming success.
|
|
103
103
|
|
|
104
|
-
Quality gates before commit, in order. The acceptance gate is the non-mutating variant; run the mutating `lint` and then `format` first only to converge, then prove with the checks. `lint --fix` rewrites code and its output is not formatter-clean, so a `format` that ran before it leaves `format:check` failing on the file `lint`
|
|
104
|
+
Quality gates before commit, in order. The acceptance gate is the non-mutating variant; run the mutating `lint` and then `format` first only to converge, then prove with the checks. `lint --fix` rewrites code and its output is not formatter-clean, so a `format` that ran before it leaves `format:check` failing on the file `lint` rewrote:
|
|
105
105
|
|
|
106
106
|
```text
|
|
107
107
|
npm run format:check → npm run lint:check → npm run check → npm run build → npm test
|
package/dist/host/CLAUDE.md
CHANGED
|
@@ -53,3 +53,9 @@ follows it. This file adds only what Claude Code does differently, and cannot we
|
|
|
53
53
|
ChatGPT approval in the browser.
|
|
54
54
|
- `scripts/codex.sh` only reports readiness. It never installs, authenticates, logs out, reads the
|
|
55
55
|
auth cache, or performs a model call.
|
|
56
|
+
- `scripts/deps.sh` runs `npm ci --ignore-scripts` on every session start and resume whose
|
|
57
|
+
`package-lock.json` digest differs from `node_modules/.orkestrel-lock.sha256`, and a resume
|
|
58
|
+
follows every turn boundary. After a tracked command changes the lockfile in this checkout,
|
|
59
|
+
write the lockfile's SHA-256 digest to that marker in the same turn, before any unit or gate runs
|
|
60
|
+
here. A marker left stale reinstalls `node_modules` under a live suite on the next resume, and the
|
|
61
|
+
suite reports a missing package that is present a moment later.
|
|
@@ -138,7 +138,11 @@ Fall back in this order and record the substitution:
|
|
|
138
138
|
parallelism, independent review, or substantial context justifies it.
|
|
139
139
|
- Dispatch staging, packing, gate-chain invocation, and instrument authorship as units — `builder`
|
|
140
140
|
for a fully specified script, `verifier` for its evidence — each with a brief and an audit like
|
|
141
|
-
any other unit.
|
|
141
|
+
any other unit. The commit and the push stay with the Orchestrator.
|
|
142
|
+
- A release instrument installs, commits, or runs a mutating tree-wide command, which the
|
|
143
|
+
permission floor bars every role from, so its run is the Orchestrator's tracked command, retained
|
|
144
|
+
with its log as the authoring unit's acceptance evidence. An upload loop that must run inside a
|
|
145
|
+
one-time code's life with the user at the keyboard stays with the Orchestrator whole.
|
|
142
146
|
|
|
143
147
|
## Roles
|
|
144
148
|
|
|
@@ -265,13 +269,12 @@ edits, formatter and build races, cache phantoms, and validation cross-talk.
|
|
|
265
269
|
6. After integration, clear shared caches if needed, then have one independent `verifier` run the
|
|
266
270
|
authoritative tree-wide sweep. A writer's self-report never establishes green.
|
|
267
271
|
7. The Orchestrator's own sweep is a writing dispatch and queues behind the units that own those
|
|
268
|
-
files. A script that fixes one thing across every target is the
|
|
269
|
-
serialization rule,
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
mid-campaign rule under **Dispatch anatomy**. Never beside them.
|
|
272
|
+
files. A script that fixes one thing across every target is the most direct way to break the
|
|
273
|
+
serialization rule, because it does not feel like a dispatch — nobody was named, no brief was
|
|
274
|
+
written, and it finishes in seconds. It still writes into trees a live unit owns, and a unit
|
|
275
|
+
whose brief it invalidates will repair the same drift the other way and report a state that is
|
|
276
|
+
already false. Run it before the units, or after them, or send the decision to every unit in
|
|
277
|
+
flight per the mid-campaign rule under **Dispatch anatomy**. Never beside them.
|
|
275
278
|
8. A fleet pass that records a per-target status commits only the targets it recorded green. Reading
|
|
276
279
|
"is the tree dirty" instead of "did this target pass" pushes a red target the moment one exists,
|
|
277
280
|
and a flake makes that look like it worked. Refuse the failed row, name it, and re-run it alone
|
|
@@ -301,7 +304,7 @@ each CLI first (`codex --version`; `agent --version`, falling back to `agent.cmd
|
|
|
301
304
|
run the bench's authentication-state check where it exposes one. Neither answer is liveness. A
|
|
302
305
|
version string proves the binary is installed, and an authentication-state check reads stored
|
|
303
306
|
credentials, so both pass while the account is out of quota, while the routed model is unavailable to
|
|
304
|
-
it, while the server has already revoked the credential the check
|
|
307
|
+
it, while the server has already revoked the credential the check read, and inside a sandbox
|
|
305
308
|
with the network denied. Record a bench live only on a bounded round-tripped model call that came
|
|
306
309
|
back, and record what came back beside the routing decision. Probes are read-only, and the role file
|
|
307
310
|
owns each bench's exact probe.
|
|
@@ -362,7 +365,7 @@ longer holds.
|
|
|
362
365
|
plan did not consider; **unchanged**.
|
|
363
366
|
- Redraw the dependency order. Strike a unit whose subject a later unit deletes. State the new
|
|
364
367
|
prerequisite of a unit that acquired one.
|
|
365
|
-
- Walk the remaining units once and ask of each whether what
|
|
368
|
+
- Walk the remaining units once and ask of each whether what landed still supports it. A
|
|
366
369
|
decision taken inside a unit can remove a later unit's foundation, and the unit that took it
|
|
367
370
|
cannot see that.
|
|
368
371
|
- Re-baseline when a probe overturns a decision the plan rests on, not only at a phase boundary.
|
|
@@ -427,6 +430,8 @@ The harness bridge names the concrete mechanism for each of these.
|
|
|
427
430
|
so a report living only in the Orchestrator's context stops the next lane on arrival.
|
|
428
431
|
- Capture the unit's returned report to a file beside its brief under the same unit name, so a
|
|
429
432
|
unit's instruction and its outcome are one pair on disk.
|
|
433
|
+
- Name, inside a report that rests on a bench lane, that lane's journal path and session id, so
|
|
434
|
+
the provenance survives the journal's sweep.
|
|
430
435
|
- Amend a brief on re-run rather than restating it. A mid-campaign correction produces a successor
|
|
431
436
|
file recording what changed and why, and the original stays. A fix round's brief names the
|
|
432
437
|
findings it carries and where each came from.
|
|
@@ -604,7 +609,8 @@ command that outlives the turn that started it. Every law here binds all of them
|
|
|
604
609
|
byte offset rather than loading it, so an edit that shifts line numbers moves the text under that
|
|
605
610
|
offset and the shell resumes mid-construct. The run dies on a syntax error in a line the script
|
|
606
611
|
does not contain, which reads as a defect in the work rather than as the edit that caused it. Copy
|
|
607
|
-
the file, edit the copy, and launch the copy for the next run.
|
|
612
|
+
the file, edit the copy, and launch the copy for the next run. A successor's header names its own
|
|
613
|
+
file, its own log, and what changed from the file it supersedes.
|
|
608
614
|
- On a Windows host this binds every program-carrying command, not only long ones. Heredocs,
|
|
609
615
|
`node -e`, `node -p`, `&&` chaining, and any argument carrying `${...}` trip the Git Bash
|
|
610
616
|
approval classifier and turn an unattended run into a manual approval prompt. Write the program
|
|
@@ -848,9 +854,9 @@ either publishes packages nobody needed to publish or leaves a consumer pinned t
|
|
|
848
854
|
|
|
849
855
|
Every package is `0.0.x`, where a caret pins one exact release. A dependent therefore sees a new
|
|
850
856
|
version only after it re-pins and republishes, so the fleet publishes in topological layer order
|
|
851
|
-
derived from runtime `dependencies`
|
|
852
|
-
|
|
853
|
-
distinct types.
|
|
857
|
+
derived from the runtime `dependencies` and `peerDependencies` edges, never from a development
|
|
858
|
+
edge. Layers exist for a reason a flat pass cannot fix: ranges that disagree install duplicate
|
|
859
|
+
copies of the same package, and the compiler reads them as distinct types.
|
|
854
860
|
|
|
855
861
|
Read the order from the catalog table in `.claude/agents/orkestrel.md`, which `scaffold catalog`
|
|
856
862
|
regenerates from the registry. Its `Layer` column is the publish round. Regenerate it before
|
|
@@ -861,7 +867,9 @@ The tooling packages sit outside that order because nothing depends on them at r
|
|
|
861
867
|
is a development dependency of every package, including packages it depends on itself, so a runtime
|
|
862
868
|
layering would report a cycle that does not exist. Each package builds against the already-published
|
|
863
869
|
`scaffold`, never against an unpublished one, and a `scaffold` release therefore publishes on its own
|
|
864
|
-
and propagates as files rather than as a cascade.
|
|
870
|
+
and propagates as files rather than as a cascade. A package the fleet consumes as a development
|
|
871
|
+
dependency takes the same shape when its consumers' gates read its unpublished tip;
|
|
872
|
+
`.agents/skills/orkestrel-publish/references/wave.md` § Rule on the bump states that trigger.
|
|
865
873
|
|
|
866
874
|
`scaffold` also carries a second published surface beside `dist/src`: `package.json` ships
|
|
867
875
|
`dist/host`, the vendored file set every target receives through `repair`.
|