Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
b17637a
plans: plan 45, design at the adopter's scale
darko-mijic Oct 13, 2026
b01dc0e
plans: plan 45 moves the platform onto the chunk's head as lane E
darko-mijic Oct 13, 2026
99caecf
feat(adopter): install commit pins and clean up failed examples
darko-mijic Oct 13, 2026
dcf8d32
fix(adopter): qualify pnpm git build permissions by source
darko-mijic Oct 13, 2026
03a73ac
test(adopter): reuse the prepared package in smoke checks
darko-mijic Oct 13, 2026
fab8a61
specs: design corpus checks, the architecture walk and component designs
darko-mijic Oct 13, 2026
9dcdd70
specs: the design loop at the adopter's scale
darko-mijic Oct 13, 2026
3b4a28d
specs: name a corpus finding's rule and rules file in the glossary
darko-mijic Oct 13, 2026
e09c4a6
specs: the Studio's static page set, split for honest binding
darko-mijic Oct 13, 2026
e33896a
explorations: a prototype of the Studio's Pack page on real data
darko-mijic Oct 13, 2026
764e576
specs: the Studio's acceptance reads the verifier binding as the grap…
darko-mijic Oct 13, 2026
c5a913f
specs: per-file rule parameters, the corpus report and unknown names
darko-mijic Oct 13, 2026
dd65597
Build compact design bundles and key-family registers
darko-mijic Oct 13, 2026
d640b7e
fix(adopter): address lane P review findings
darko-mijic Oct 13, 2026
bd6238f
specs: the Studio design pass's review findings
darko-mijic Oct 13, 2026
379b6c7
Clarify compact bundle contracts and register answers
darko-mijic Oct 13, 2026
664f270
merge: plan 45 wave 1, lane P
darko-mijic Oct 13, 2026
034e17d
merge: plan 45 wave 1, lane L
darko-mijic Oct 13, 2026
9ba6834
merge: plan 45 wave 1, lane B
darko-mijic Oct 13, 2026
af30233
merge: plan 45 wave 1, lane S
darko-mijic Oct 13, 2026
e281766
specs: state the rungs wave 1's design passes cleared, and record its…
darko-mijic Oct 13, 2026
f9884e3
Fix prose mention locations and refresh agent on-ramps
darko-mijic Oct 13, 2026
fb0c8f9
Refresh self-hosting oracle after plan 45 wave one
darko-mijic Oct 13, 2026
3ac181f
feat(studio): publish reader data through the studio verb
darko-mijic Oct 13, 2026
b85607e
Build Studio page elements and shared concept matching
darko-mijic Oct 13, 2026
fd87778
Build corpus rules and planned architecture recipes
darko-mijic Oct 13, 2026
c97b4a9
Merge branch 'chunk45/s3' into chunk45/s1
darko-mijic Oct 13, 2026
b398693
feat(studio): render complete static Studio pages
darko-mijic Oct 13, 2026
24bc95b
chore(studio): remove the replaced page prototype
darko-mijic Oct 13, 2026
7877f9f
fix: address corpus checks lane review findings
darko-mijic Oct 13, 2026
1af179b
fix(studio): address page and search review findings
darko-mijic Oct 13, 2026
c987c37
merge: plan 45 wave 2, lane x0
darko-mijic Oct 13, 2026
f1b7d78
merge: plan 45 wave 2, lane b2
darko-mijic Oct 13, 2026
eef8ba9
merge: plan 45 wave 2, lane s1
darko-mijic Oct 13, 2026
faa060c
plans: plan 45 records the rulings after wave 2
darko-mijic Oct 13, 2026
aa46a26
Integrate corpus-rule guidance and Studio review rulings
darko-mijic Oct 13, 2026
0f20896
Refresh the wave two self-hosting oracle and CLI fixture
darko-mijic Oct 13, 2026
cc88076
merge: plan 45 wave 2 integration, lane x1
darko-mijic Oct 13, 2026
7e93940
Fix adversarial recipe and corpus-rule findings
darko-mijic Oct 13, 2026
3bf0f0e
Record the build commit in hosted git archives
darko-mijic Oct 13, 2026
30f196a
merge: plan 45 wave 3, the adversarial reviews' fixes
darko-mijic Oct 13, 2026
e1d941d
close: plan 45 executed, the Pack summary's verbs agree with their co…
darko-mijic Oct 13, 2026
abf532d
fix: stop active watch rules and retain Studio entry matches
darko-mijic Oct 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 47 additions & 34 deletions .agents/skills/sdp-agent-surface/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,14 +99,15 @@ checkout: `exec` resolves dependency binaries, while this package does not link
own `node_modules/.bin`; an unresolved `sdp` can select macOS's unrelated binary. Do not invoke a
global `sdp` either.

The public projection publishers are `sdp view`, `sdp census`, `sdp mermaid`, and `sdp gherkin`.
Each of them, like `sdp build` and `sdp validate`, first removes all four projection roots, so
The public projection publishers are `sdp view`, `sdp census`, `sdp mermaid`, `sdp gherkin`,
and `sdp studio`.
Each of them, like `sdp build` and `sdp validate`, first removes all five projection roots, so
after one publisher runs only its own root is current
(`spec:consumers.wholesale-view-rewrite#rule.buildInvalidates`).
In this source checkout, `npm run generate:self-hosting` and `npm run check:self-hosting` preserve
and publish all four roots together. In check mode a prior tree must exist for each root; Design
Review checks repeat-render determinism, while census, Mermaid and Gherkin also compare the prior
tree's bytes with the current render.
and publish all five roots together. In check mode a prior tree must exist for each root; Design
Review checks repeat-render determinism, while census, Mermaid, Gherkin and Studio also compare
the prior tree's bytes with the current render.

The catalog of ready-made bodies is `docs/agent-surface/recipes.md` in the Protocol repository
and `node_modules/@libar-dev/software-delivery-protocol/docs/agent-surface/recipes.md` in an
Expand All @@ -125,33 +126,36 @@ pnpm exec sdp q "$(cat node_modules/@libar-dev/software-delivery-protocol/dist/r

### Which recipe answers a task

| The task | Run |
| ------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| Pick work to build | the build backlog (recipe 1); the design backlog (recipe 33) for designed, unbuilt Specs |
| Find code ahead of intent | the drift alarm (recipe 2) |
| Read what a Spec guarantees and who verifies it | Spec guarantees (recipe 3) |
| Review a changeset | changed-file impact (recipe 4), then the mention audit (recipe 22) over its scope |
| Locate a term or a concept | concept search (recipe 6); entry search (recipe 23) for the entry and its line |
| Check a Spec's stated next rung before a readiness edit | promotion preflight (recipe 9); the lower ladder (recipe 11) across the corpus |
| Compare stated readiness with the floor | readiness divergence (recipe 7) |
| Read warnings, gaps and verifier health | orphans and gaps (recipe 8); declared versus enabled verifiers (recipe 10) |
| Review a Pack | the Pack review backbone (recipe 5), Pack design (recipe 29), references into a design (recipe 27) |
| List open questions | the open-question register (recipe 20) |
| See what a Spec rests on | dependency footing (recipe 21); dependency cycles (recipe 26) |
| Change a Spec others rest on | design-change impact (recipe 30); the planning slice (recipe 19) |
| Check addresses written outside the Specs | address resolution (recipe 25) |
| List the signatures two parties share | pinned declarations (recipe 24) |
| Read a component and its reach | component membership (recipe 12), uses fan-in and fan-out (recipe 13), structural neighborhood (recipe 14) |
| Measure structural and projection coverage | census structural coverage (recipe 15), the projection-coverage upper bound (recipe 16) |
| Read the architecture | the architecture map (recipe 17), architecture crossings (recipe 32) |
| Weigh the decisions that shape it | the decision map (recipe 18), the decision register (recipe 31) |
| Reuse an architecture value | roles, layers and contexts (recipe 28) |
| Find keyed rules no example exercises | rule coverage (recipe 34) |
| See what changed since a design pass | the design diff (recipe 35) |
| Compose a design pass's reading | the context bundle (recipe 36), the perspective filter (recipe 37) |
| Apply a change proposal | the proposal check (recipe 38) |
| Slim a Spec its bound code now carries | slimming candidates (recipe 39) |
| Find files and components the anchors miss | the curation report (recipe 40) |
| The task | Run |
| -------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| Pick work to build | the build backlog (recipe 1); the design backlog (recipe 33) for designed, unbuilt Specs |
| Find code ahead of intent | the drift alarm (recipe 2) |
| Read what a Spec guarantees and who verifies it | Spec guarantees (recipe 3) |
| Review a changeset | changed-file impact (recipe 4), then the mention audit (recipe 22) over its scope |
| Locate a term or a concept | concept search (recipe 6); entry search (recipe 23) for the entry and its line |
| Check a Spec's stated next rung before a readiness edit | promotion preflight (recipe 9); the lower ladder (recipe 11) across the corpus |
| Compare stated readiness with the floor | readiness divergence (recipe 7) |
| Read warnings, gaps and verifier health | orphans and gaps (recipe 8); declared versus enabled verifiers (recipe 10) |
| Review a Pack | the Pack review backbone (recipe 5), Pack design (recipe 29), references into a design (recipe 27) |
| List open questions | the open-question register (recipe 20) |
| See what a Spec rests on | dependency footing (recipe 21); dependency cycles (recipe 26) |
| Change a Spec others rest on | design-change impact (recipe 30); the planning slice (recipe 19) |
| Check addresses written outside the Specs | address resolution (recipe 25) |
| List the signatures two parties share | pinned declarations (recipe 24) |
| Read a component and its reach | component membership (recipe 12), uses fan-in and fan-out (recipe 13), structural neighborhood (recipe 14) |
| Measure structural and projection coverage | census structural coverage (recipe 15), the projection-coverage upper bound (recipe 16) |
| Read the architecture | the architecture map (recipe 17), architecture crossings (recipe 32) |
| Check a corpus's architecture rules | the architecture walk (recipe 42) |
| Compare planned components with their realization | planned against realized components (recipe 43) |
| Weigh the decisions that shape it | the decision map (recipe 18), the decision register (recipe 31) |
| Reuse an architecture value | roles, layers and contexts (recipe 28) |
| Find keyed rules no example exercises | rule coverage (recipe 34) |
| See what changed since a design pass | the design diff (recipe 35) |
| Compose a design pass's reading | the context bundle (recipe 36), the perspective filter (recipe 37) |
| Apply a change proposal | the proposal check (recipe 38) |
| Slim a Spec its bound code now carries | slimming candidates (recipe 39) |
| Find files and components the anchors miss | the curation report (recipe 40) |
| List a family of keyed values (limits, error messages, tables) | the key-family register (recipe 41) |

For structural questions, use component membership, uses fan-in and fan-out, structural
neighborhood, census structural coverage, and the projection-coverage upper bound (recipes 12-16).
Expand Down Expand Up @@ -220,6 +224,13 @@ To iterate on a design pass after pass:
carries: pinned declarations an implemented, verified Spec may drop, and the files and
components the anchors miss, from an imports file `sdp build --imports` writes.

For corpus architecture, the architecture walk (recipe 42) reads forbidden layer pairs and
isolated contexts from `params.forbidden` and `params.isolated`, with optional `params.severity`.
Its `{ findings }` answer can run as a rules file under `sdp validate --rules`. Planned against
realized components (recipe 43) compares component design Specs with their satisfying anchors,
listing unrealized designs, differing fields and unreadable values. Neither recipe adds a Protocol
validator. Follow `sdp-authoring` for rules-file invocation and per-file parameter order.

Reach for the files only when you need the authored prose itself — the exact words to edit.

## The entry adapters
Expand Down Expand Up @@ -267,10 +278,12 @@ rows, and `leftOut` naming what `detail: true` adds (changed-file impact, recipe
recipe 29; the design diff, recipe 35). To filter any shipped answer, run it inside your own body:

```sh
pnpm --silent sdp:q "const answer = await (async () => { $(cat dist/recipes/29-pack-design.js) })(); return answer.members.filter((member) => member.blockingQuestions > 0)" --params '{"pack":"pack:design-iteration-v1"}' --json
pnpm --silent sdp:q "const answer = await (async (params) => { $(cat dist/recipes/29-pack-design.js) })({ pack: params.pack }); return answer.members.filter((member) => member.blockingQuestions > 0)" --params '{"pack":"pack:design-iteration-v1"}' --json
```

Keep your own part of such a body free of `$` and backticks, because the shell expands them.
Pass the inner body only its recipe's parameters. An unknown parameter name replaces a shipped
recipe's whole answer with `{ unknownParams, accepts }`, listing the unknown names and the names
it takes. Keep your own part of such a body free of `$` and backticks, because the shell expands them.

The graph is derived on every invocation, so a Spec you just authored is queryable immediately and
no committed artifact answers in the graph's name. The sink writes nothing. It evaluates local
Expand Down
28 changes: 21 additions & 7 deletions .agents/skills/sdp-authoring/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -201,11 +201,25 @@ so it needs no extra tag, status key, or side table.
passed; pass and fail stay in CI. Author no checked or verified status.
- Derive a count, a register, or a review scope each time you need it: census counts from
`sdp census`, open questions from recipe 20, one Spec's dependencies from recipe 21, prose
mentions from recipe 22, and a change's review scope from changed-file blast radius (recipe 4).
mentions from recipe 22, a family of Design and UI keys from the key-family register (recipe 41),
and a change's review scope from changed-file blast radius (recipe 4).
In prose, name the recipe and leave the number out.

`sdp validate` checks these homes and nothing your project adds. Keep a project policy, such as a
required Design key or a naming rule, as a script in your own repository.
Run a project policy, such as a required Design key or a naming rule, as an operator-selected
rules file through `sdp validate --rules PATH [--params FORM]...`. The file is a local async
JavaScript body with `g`, `graph`, `report` and `params`, returning `{ findings }`, as
`spec:validation.corpus-rules` states. Each `--params` follows its own `--rules`; the query grammar
admits JSON, `@PATH` and `KEY=@PATH`, and repeatable parameters merge within that file only:

```sh
pnpm exec sdp validate . --rules design/policy.js --params '{"requiredKey":"id"}' --rules node_modules/@libar-dev/software-delivery-protocol/dist/recipes/42-the-architecture-walk.js --params @design/architecture.json
```

Corpus findings name their rule and rules file and print apart from Protocol conformance and
honesty findings. The corpus summary also counts failed files; any Protocol error, corpus error
or failed rules file exits 1. Under `--watch`, each carrier cycle rereads the rules files, but a
rules-file edit alone starts no cycle. The architecture walk is recipe 42; planned against
realized components is recipe 43. These are corpus guidance, never Protocol validators.

### Say why a relation holds

Expand Down Expand Up @@ -501,10 +515,10 @@ coverage-unknown for the Markdown file. This repository binds its own skills exa
The build emits one registrar per bindable example, named `<spec-id-path>.test.generated.ts`
and placed beside the authored suite whose `specTest` anchor verifies that example; the Spec ID
owns the filename, so one consolidated suite can bind many examples without collisions.
Repository generation also publishes the independent Design Review, census, Mermaid, and
Gherkin-shaped read roots. Use the repository generate/check scripts to certify the complete
projection suite; do not treat the Gherkin read root as an authored carrier. In an adopter,
each publisher leaves only its own root current, because every build first removes all four;
Repository generation also publishes the independent Design Review, census, Mermaid,
Gherkin-shaped read roots, and Studio pages. Use the repository generate/check scripts to certify
the complete projection suite; do not treat the Gherkin read root as an authored carrier. In an adopter,
each publisher leaves only its own root current, because every build first removes all five;
run the publisher for the root you need to read.

4. Author the oracle for the space and bind it with a top-level `specOracle` anchor whose `models`
Expand Down
Loading
Loading