You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
docs(articles): re-pin the series to f990bded for the first design pass - #41
The article series, re-pinned for the first UX/UI design pass
PR #34 published the article series pinned to b5e0a8be, and the owner ruled that the first refresh after PR #40 re-pins it. This is that refresh. It moves the series to f990bded (the merge of PR #34, after PR #40), regenerates the evidence there, and updates the prose PR #40 made stale. The goal is that the first UX/UI design pass starts from material that describes the Studio designers will actually open.
The question it answers: does the design-pass packet (compact Parts 1, 2 and 5, the designer's brief, and a Studio generated at the pin) describe today's Protocol? At b5e0a8be it did not. The brief described the composing panel before PR #40, said AI presentation had no carrying Spec, and Part 1 gave the CLI's Node range as >=20.
Working record. Branch docs/articles-refresh-1; base main at f990bded; head 53804437. The owner's working rules: refresh the series by its playbook so everything is ready for the first design pass; commits, push and this pull request are authorized. No arc Pack: the diff touches only docs/articles/ (6 files, +68 / −66) and changes no Spec carrier, readiness statement or decision row.
Ready for the design pass
Material
Where
The designer's brief: fixed ground, open design space, seven prototype questions
The hosted Studio stays out of the manuscripts on purpose: articles are publication drafts, and a preview URL is not a durable source. To build the same page set locally, run Part 2's try-it block.
What the pass owes the corpus. PR #40 added spec:consumers.ai-assisted-reading at idea. Its blocking question, decided by the owner, asks what contract would keep an assistant's own explanations or arrangements distinct from graph claims and reviewable. The provisional answer is that an assistant selects existing deterministic readings only. The trigger is this pass: "the UX design pass measures that assistant selection or a generated explanation helps a named review task." Part 2's brief and Part 5 now say so, so a prototype that tests assistant selection is in scope and its measurement has somewhere to land.
What changed
The pin. One line in the playbook names it, and the evidence sync reads that line. Every commit-pinned link (33 distinct paths, all present at f990bded), every git checkout line and every footer moved with it. The playbook's Step 2 now diffs the next refresh from f990bded.
Evidence, regenerated at the pin. All 11 blocks were rebuilt from the pin's git objects. Three changed:
Part 1's honesty sentence ("reject hand-authored delivery facts") needs no edit: at b5e0a8be a section-level deliveryFacts key slipped past it, and PR #40 refuses that. Part 3's code is all generated evidence; the worked example changed only its README.
The hosted Studio link lives in this description, not the manuscripts
A preview URL is not a durable publication source
this description
How Parts 2 and 5 present the AI capture
As an idea-stage owner question with a provisional answer, never as a ratified design
Parts 2 and 5
Try it
git fetch origin docs/articles-refresh-1 && git switch docs/articles-refresh-1 && npm ci
node docs/articles/sync-evidence.mjs --print-pin # f990bded1d7ca86f19f5746ef412613f8e908be3
npm run check:articles -- "$PWD"# Checked 11 evidence blocks at f990bded…
npm run --silent sdp -- studio . --exclude explorations --exclude examples --exclude test/fixtures/import/parity
open generated/spec-studio/index.html # gather an intent on a Spec page, then open Preview memo under Composing
Feedback wanted
Is Part 2's paragraph on the AI capture the right weight for a designer, or should the brief leave it to Part 5?
Should the first design pass have a roadmap entry? pack:roadmap has none today, and entries join only on the owner's word.
Next: the roadmap at the head
Rendered with recipe 55 over pack:roadmap at this head; this PR moves no entry.
The next work, from the roadmap
Roadmap: The Protocol's roadmap pack:roadmap
To state means the floor allows ready and a person still judges the statement. Built means every Spec of the entry's work states ready and has an implementation binding; it reports no passing test and no deployment.
The Protocol's next work, first entry first. The order is a preference: it dates, gates and sequences nothing, and what each entry still needs is read from the graph each time.
First the cleanup that removes the frozen plans, review reports and superseded concept material, as the roadmap and the pull request record make possible. Then the two steps a reader of the Studio's pages could not take, the words of a test line that checks a declaration and an outside register's entries, and then the composed-intent model the build backlog holds. What the first adopter's mass update asks for joins when the owner selects it; a capture landing adds nothing here. An entry leaves by an edit to this manifest once its selected work is complete or no longer belongs among the next work.
To design
Place
Entry
Next
Purpose and reach
1
The Protocol removes its frozen plans, review reports and superseded concept material spec:protocol.delivery-record-cleanup
itself idea → scoped, nothing holds it; blocked by spec:protocol.delivery-record-cleanup#question.durableContent
Remove plans/, reviews/ and the superseded concept material from the tree, after moving into the graph the durable content they still hold, so the repository keeps one delivery record: the graph, git and the pull requests.
3
An outside register is a named Studio input, so a cited token links to its entry spec:consumers.spec-studio.register-input
itself scoped → defined, held by no-blocking-open-questions; blocked by spec:consumers.spec-studio.register-input#question.registerEntry, spec:consumers.spec-studio.register-input#question.inputForm
A cited token reads as bare text on every page, and the register that defines it is neither linked nor shown.
To state
Place
Entry
Earlier waiting statements
Purpose and reach
2
A pinned declaration shows the words of each test line that cites it spec:consumers.spec-studio.cited-line-text
No preceding waiting statement in the statement queue.
The declarations page names each citing line by file and line only, so the reader leaves the page to read it, and has no route at all when the page set carries no source link.
To build
Place
Entry
Purpose and reach
Rests on
4
Views compose scoped intent instead of patching canonical source spec:consumers.edit-model
Let a view frame a requested change without giving derived surfaces a direct write path to canonical source.
nothing unbuilt
Waiting on the owner
spec:protocol.delivery-record-cleanup#question.durableContent (blocking), place 1: Which content in plans/, reviews/ and the concept documents does no Spec, test, decision or recipe carry yet, and where does each piece belong?
State spec:consumers.spec-studio.cited-line-text: it states scoped and its floor allows ready; place 2
State spec:protocol.delivery-record-cleanup: it states idea and its floor allows scoped; place 1
Deferred, with their triggers
spec:carrier.sdp-import.feature-adapter#question.featureAdapter: Which bare .feature constructs can an import adapter preserve honestly? Trigger: an adopter migrates a gen-1 .feature corpus into the Protocol
spec:consumers.agent-surface.combination-coverage#question.combinationCoverage: Which combinations of slot values should coverage enumerate and report? Trigger: a design pass asks which combinations no example exercises
spec:consumers.ai-assisted-reading#question.aiPresentationBoundary: If an assistant generates explanations or arrangements beyond selecting deterministic readings, what contract keeps its output distinct from graph claims and makes the exact reading reviewable, including how the exact output is retained with its model, prompt and inputs? Trigger: the UX design pass measures that assistant selection or a generated explanation helps a named review task
spec:consumers.impact-graph.symbol-reach#question.symbolIdentity: Which language-neutral identity and extraction boundary can support exhaustive symbol reach without freezing a single compiler's representation into the Protocol? Trigger: a reader needs symbol-level reach that file-level imports and curated anchors cannot give
spec:consumers.projections-model.roadmap-views#question.releaseReader: Does a reader need release or baseline views that the roadmap, the recipes and git tags do not serve? Trigger: the first published release
spec:consumers.reference-projection#question.namedOutsideReader: Does a human reader outside the repository need a reference projection the four shipped roots do not serve? The taxonomy row is not that reader. Trigger: a named consumer outside the repository, with a way to measure that demand inside the arc that builds the projection
spec:consumers.structural-mermaid#question.namedStructuralReader: Does a reader need diagrams rooted at code units, which census tables and Spec-rooted one-hop Mermaid do not serve? Trigger: a named reader with that need, plus a decision that refines spec:decisions.shipped-projections-frozen for the affected Mermaid rendering or supersedes that ruling whole
spec:observation.run-evidence.bound-file-freshness#question.freshness: When should changes to bound files make recorded run evidence stale? Trigger: a reader cannot tell whether a run at another commit still applies, because nothing says whether its bound files changed since
spec:observation.runtime-overlay#question.observationIdentity: Which external observation identity and freshness boundary is small enough for the graph while still supporting an honest observed delivery fact? Trigger: An adopter needs runtime measurements linked to measurable Spec targets and can supply an observation identity and freshness policy for review.
The design pass is not a roadmap entry. Its re-entry condition is the owner's decision to start it, using the packet above; its result feeds the AI-assisted reading question, whose trigger it is.
Verification
Measured at 53804437; re-run the commands rather than inheriting these results.
npm run check:articles -- "$PWD" checked all 11 blocks at f990bded and exited 0.
npm run check passed on a clean worktree of the head: all 14 steps through preflight, 4,137 tests in 135 files plus 102 in the CLI pass, with the Markdown link gate. A first run in the main checkout failed lint only on build output inside an agent's leftover worktree under the gitignored .tmp-scratch/; no repository file had a finding.
Every commit-pinned path in the articles exists at f990bded (git cat-file -e).
main's CI passed at f990bded.
CI passed on this head (run, pull-request run), the article-evidence step included; the Studio preview deployed to preview/41.
Updated article links, checkout instructions, source references, and footers to point to commit f990bded.
Refreshed displayed census figures and clarified readiness-floor reporting when a Spec’s kind or altitude is unratified.
Clarified the provisional boundaries for AI-assisted reading and when those boundaries will be revisited.
Updated CLI Node.js engine guidance and documented unspecified as a reserved contract key with a distinct coverage-gap diagnostic when selected by a bound example.
…esign pass
The owner's working rules: refresh the article series by its playbook
so everything is ready for the first UX/UI design pass, carrying out the
owner's ruling that the first refresh after PR #40 re-pins the articles.
Commits, push and the pull request are authorized. Base: main at
f990bde (the merge of PR #34, after PR #40). No arc Pack: the refresh
changes no Spec carrier, readiness statement or decision row.
- Move the pin from b5e0a8b to f990bde: the playbook baseline, every
commit-pinned link (all 33 paths exist at the pin), every checkout
command and footer.
- Regenerate the 11 evidence blocks at the pin (3 changed: both census
tables and byFile).
- Part 2: the composing panel's per-intent line and `Preview memo`; the
`floor not evaluated` state; the AI-assisted reading capture and its
owner question, whose trigger is this design pass.
- Part 5: the same capture, its provisional answer and trigger.
- Part 1: the CLI's Node range is ^20.19.0 || >=22.12.0.
- Playbook: Article 08 states the unspecified rule without the closed
L1-02 exception; house rule 9 names what the link gate checks.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No actionable comments were generated in the recent review.
Walkthrough
The article series now uses commit f990bded as its source baseline and updates its displayed corpus figures. It also documents Studio presentation details, a provisional boundary for AI-assisted reading, and clarifications to article review guidance.
Commit-pinned links and checkout instructions now use f990bded. Displayed census figures are updated. The documented CLI Node engine range changes to `^20.19.0
Describe Studio and AI-reading boundaries docs/articles/02-one-graph-many-views.md, docs/articles/05-ai-can-shape-the-reading.md
The articles add details about readiness floors and intent-panel previews. They describe a provisional AI-assisted-reading boundary, including its reopening condition and the distinction between prototypes and shipped functionality.
The README states that unspecified is reserved and describes the distinct coverage-gap diagnostic. It also clarifies which Markdown links the automated gate checks and which require manual review.
Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.
It could produce explanatory prose or a bespoke arrangement beside a deterministic projection. A summary might explain why two Specs conflict or translate a readiness floor failure into plainer language. This is where the fine-tuning and presentation finesse become valuable, and where the current guarantees need careful extension.
All three patterns are options to explore. None is a ratified product design today.
All three patterns are options to explore. None is a ratified product design today. The boundary has a carrying Spec, [`spec:consumers.ai-assisted-reading`](https://github.com/libar-dev/software-delivery-protocol/blob/f990bded1d7ca86f19f5746ef412613f8e908be3/specs/consumers/ai-assisted-reading.sdp.md), at `idea`. Its one blocking question asks what contract the second and third patterns would need. Its provisional answer, which the owner has yet to decide, allows only the first: select existing deterministic readings, and keep any generated text outside the Studio and the frozen projections, labelled as assistant output with its source commit and scope.
The reason will be displayed to describe this comment to others. Learn more.
Different AI roles get confused
This sentence puts both the second and third patterns under the open question in spec:consumers.ai-assisted-reading. But the second pattern has an agent write a deterministic generator that people review before use. The Spec’s question concerns assistant-written explanations or arrangements that do not keep that deterministic guarantee.
Readers may mistake ordinary generator development for the unresolved feature that lets a model write answers. Limit this sentence to the third pattern and describe reviewed generator changes separately.
Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The article series, re-pinned for the first UX/UI design pass
PR #34 published the article series pinned to
b5e0a8be, and the owner ruled that the first refresh after PR #40 re-pins it. This is that refresh. It moves the series tof990bded(the merge of PR #34, after PR #40), regenerates the evidence there, and updates the prose PR #40 made stale. The goal is that the first UX/UI design pass starts from material that describes the Studio designers will actually open.The question it answers: does the design-pass packet (compact Parts 1, 2 and 5, the designer's brief, and a Studio generated at the pin) describe today's Protocol? At
b5e0a8beit did not. The brief described the composing panel before PR #40, said AI presentation had no carrying Spec, and Part 1 gave the CLI's Node range as>=20.Working record. Branch
docs/articles-refresh-1; basemainatf990bded; head53804437. The owner's working rules: refresh the series by its playbook so everything is ready for the first design pass; commits, push and this pull request are authorized. No arc Pack: the diff touches onlydocs/articles/(6 files, +68 / −66) and changes no Spec carrier, readiness statement or decision row.Ready for the design pass
preview/34: its stamp names35f1094d, PR #34's merge ref, whose tree (385e3af9) is byte-identical to the pin'sspec:consumers.ai-assisted-reading#aiPresentationBoundary(below)The hosted Studio stays out of the manuscripts on purpose: articles are publication drafts, and a preview URL is not a durable source. To build the same page set locally, run Part 2's try-it block.
What the pass owes the corpus. PR #40 added
spec:consumers.ai-assisted-readingatidea. Its blocking question, decided by the owner, asks what contract would keep an assistant's own explanations or arrangements distinct from graph claims and reviewable. The provisional answer is that an assistant selects existing deterministic readings only. The trigger is this pass: "the UX design pass measures that assistant selection or a generated explanation helps a named review task." Part 2's brief and Part 5 now say so, so a prototype that tests assistant selection is in scope and its measurement has somewhere to land.What changed
The pin. One line in the playbook names it, and the evidence sync reads that line. Every commit-pinned link (33 distinct paths, all present at
f990bded), everygit checkoutline and every footer moved with it. The playbook's Step 2 now diffs the next refresh fromf990bded.Evidence, regenerated at the pin. All 11 blocks were rebuilt from the pin's git objects. Three changed:
b5e0a8bef990bdedready, 4scoped, 5ideaready, 4scoped, 8ideabyFileexcerptDelivery facts, build backlog, drift alarm, design backlog, 55 recipes and 5 skills are unchanged. The design diff (recipe 35) from
b5e0a8be's graph to the pin's: 3 Specs added (allidea), 43 changed, none removed; one Pack changed.Prose, measured against the pin (playbook Step 5).
Preview memoshows the exact text before it is copied or saved#memoPreviewrule and the intent label fix; brief question 6 asks exactly thisfloor not evaluated, not as belowidea#notEvaluatedruling: a new honesty state designers must render^20.19.0 || >=22.12.0unspecifiedrule without an exceptionunspecifiedis a reserved Then keyPart 1's honesty sentence ("reject hand-authored delivery facts") needs no edit: at
b5e0a8bea section-leveldeliveryFactskey slipped past it, and PR #40 refuses that. Part 3's code is all generated evidence; the worked example changed only its README.Rulings
Made by the owner:
mainDelegated to the agent, awaiting the owner's review:
f990bdedmainafter both merges, CI green; it holds the articles themselves, which the sync's git-object rebuild allowsidea-stage owner question with a provisional answer, never as a ratified designTry it
Feedback wanted
pack:roadmaphas none today, and entries join only on the owner's word.Next: the roadmap at the head
Rendered with recipe 55 over
pack:roadmapat this head; this PR moves no entry.The next work, from the roadmap
Roadmap: The Protocol's roadmap
pack:roadmapTo state means the floor allows ready and a person still judges the statement. Built means every Spec of the entry's work states ready and has an implementation binding; it reports no passing test and no deployment.
The Protocol's next work, first entry first. The order is a preference: it dates, gates and sequences nothing, and what each entry still needs is read from the graph each time.
First the cleanup that removes the frozen plans, review reports and superseded concept material, as the roadmap and the pull request record make possible. Then the two steps a reader of the Studio's pages could not take, the words of a test line that checks a declaration and an outside register's entries, and then the composed-intent model the build backlog holds. What the first adopter's mass update asks for joins when the owner selects it; a capture landing adds nothing here. An entry leaves by an edit to this manifest once its selected work is complete or no longer belongs among the next work.
To design
spec:protocol.delivery-record-cleanupidea→scoped, nothing holds it; blocked byspec:protocol.delivery-record-cleanup#question.durableContentplans/,reviews/and the superseded concept material from the tree, after moving into the graph the durable content they still hold, so the repository keeps one delivery record: the graph, git and the pull requests.spec:consumers.spec-studio.register-inputscoped→defined, held by no-blocking-open-questions; blocked byspec:consumers.spec-studio.register-input#question.registerEntry,spec:consumers.spec-studio.register-input#question.inputFormTo state
spec:consumers.spec-studio.cited-line-textTo build
spec:consumers.edit-modelWaiting on the owner
spec:protocol.delivery-record-cleanup#question.durableContent(blocking), place 1: Which content inplans/,reviews/and the concept documents does no Spec, test, decision or recipe carry yet, and where does each piece belong?spec:consumers.spec-studio.cited-line-text: it statesscopedand its floor allowsready; place 2spec:protocol.delivery-record-cleanup: it statesideaand its floor allowsscoped; place 1Deferred, with their triggers
spec:carrier.sdp-import.feature-adapter#question.featureAdapter: Which bare .feature constructs can an import adapter preserve honestly? Trigger: an adopter migrates a gen-1.featurecorpus into the Protocolspec:consumers.agent-surface.combination-coverage#question.combinationCoverage: Which combinations of slot values should coverage enumerate and report? Trigger: a design pass asks which combinations no example exercisesspec:consumers.ai-assisted-reading#question.aiPresentationBoundary: If an assistant generates explanations or arrangements beyond selecting deterministic readings, what contract keeps its output distinct from graph claims and makes the exact reading reviewable, including how the exact output is retained with its model, prompt and inputs? Trigger: the UX design pass measures that assistant selection or a generated explanation helps a named review taskspec:consumers.impact-graph.symbol-reach#question.symbolIdentity: Which language-neutral identity and extraction boundary can support exhaustive symbol reach without freezing a single compiler's representation into the Protocol? Trigger: a reader needs symbol-level reach that file-level imports and curated anchors cannot givespec:consumers.projections-model.roadmap-views#question.releaseReader: Does a reader need release or baseline views that the roadmap, the recipes and git tags do not serve? Trigger: the first published releasespec:consumers.reference-projection#question.namedOutsideReader: Does a human reader outside the repository need a reference projection the four shipped roots do not serve? The taxonomy row is not that reader. Trigger: a named consumer outside the repository, with a way to measure that demand inside the arc that builds the projectionspec:consumers.structural-mermaid#question.namedStructuralReader: Does a reader need diagrams rooted at code units, which census tables and Spec-rooted one-hop Mermaid do not serve? Trigger: a named reader with that need, plus a decision that refinesspec:decisions.shipped-projections-frozenfor the affected Mermaid rendering or supersedes that ruling wholespec:observation.run-evidence.bound-file-freshness#question.freshness: When should changes to bound files make recorded run evidence stale? Trigger: a reader cannot tell whether a run at another commit still applies, because nothing says whether its bound files changed sincespec:observation.runtime-overlay#question.observationIdentity: Which external observation identity and freshness boundary is small enough for the graph while still supporting an honestobserveddelivery fact? Trigger: An adopter needs runtime measurements linked to measurable Spec targets and can supply an observation identity and freshness policy for review.The design pass is not a roadmap entry. Its re-entry condition is the owner's decision to start it, using the packet above; its result feeds the AI-assisted reading question, whose trigger it is.
Verification
Measured at
53804437; re-run the commands rather than inheriting these results.npm run check:articles -- "$PWD"checked all 11 blocks atf990bdedand exited 0.npm run checkpassed on a clean worktree of the head: all 14 steps throughpreflight, 4,137 tests in 135 files plus 102 in the CLI pass, with the Markdown link gate. A first run in the main checkout failed lint only on build output inside an agent's leftover worktree under the gitignored.tmp-scratch/; no repository file had a finding.f990bded(git cat-file -e).main's CI passed atf990bded.preview/41.🤖 Generated with Claude Code
The PR appears safe to merge, with one non-blocking clarification needed in Part 5.
Findings
Summary
Re-pins the article series to
f990bdedand refreshes the design-pass material.f990bdedsource and its refreshed evidence.Reviews (1) · Last reviewed commit: "docs(articles): re-pin the series to f99..." · Reviewed by Greptile
Summary by CodeRabbit
f990bded.unspecifiedas a reserved contract key with a distinct coverage-gap diagnostic when selected by a bound example.