docs(corpus): standard for diagrams in corpus nodes (#1312) - #1490
Conversation
…STEP 1) Plans launchpad/docs/corpus/standards/diagrams.md against the constraint that decides its whole shape: ADR-0028 makes Markdown-with-front-matter the one canonical authored representation, and find_ownership_violations rejects every non-.md file under the corpus root -- including one placed under generated/. Measured with validate.py --root against a scratch corpus rather than assumed. Fixes three review-plan findings before building: an uncounted "two existing diagram-as-text sites" claim (git grep measures 20 box-drawing files and one mermaid fence), a done-when grep that returns 12 rather than 1 when run against a real ledger, and a GATES line that disclaimed the undischarged cross-model gate without naming the --draft mechanism that keeps it visible. Every citation this node will carry is checked to exist on origin/launchpad, so it avoids #1473's class of failure: a bare-path citation to AGENTS.md validates locally and hard-fails on the merge target, where AGENTS.md does not exist yet. Refs #1312 Signed-off-by: Serina Mcfall <serina.mcfall@gmail.com>
…ard (#1312 STEP 2) Twenty-five ledger entries, one commit-only FACT (the revision), and no relationships. The reason recorded for the absence is merge order rather than an empty corpus: corpus-agents is loadable from this branch's base and absent from origin/launchpad, where an unmatched relationship target is a hard error. Every openable citation was checked to exist on the merge target before it was written, so this node cannot reproduce #1473 -- it cites no file that resolves here and fails there. That is why AGENTS.md, which governs this work, is cited nowhere: it has not merged. Issue-sourced claims about which sibling task owns a deferred subject are TEAM_KNOWLEDGE attributed to the issue, never FACT. An issue URL cannot be SHA-pinned and the validator's repository-link check matches only file and tree views, so no openable citation form for one exists. type is governance because the schema defines type as the corpus surface a node documents and #1312 calls this the canonical policy node. audiences omits developer deliberately; section 9 says why rather than leaving it silent. Refs #1312 Signed-off-by: Serina Mcfall <serina.mcfall@gmail.com>
Nine sections answering #1312's definition of done clause by clause. The constraint that shapes all of it: a corpus diagram cannot be an image file. ADR-0028 makes Markdown-with-front-matter the one canonical authored form, and find_ownership_violations rejects every non-.md file under the corpus root -- including under generated/, because no generator exists yet to reproduce it. Section 3 quotes the validator's own two failure messages rather than paraphrasing them. Section 5 answers the question the task actually turns on. A diagram asserts relationships, relationships are substantive claims, and substantive claims need ledger entries -- but the body is discarded before anything is checked, so a claim whose only home is a diagram is unevidenced by construction. The rule: a diagram projects claims the ledger already carries and is never the only place a claim appears; it gets no entry of its own. The rejected alternative -- one entry per drawn edge -- is named with the reason, and the section says plainly that this is a choice and defers to #1314 if the evidence standard settles it otherwise. The worked example is this node's own diagram, every edge of which is backed by an entry in this node's own ledger, with the caption naming which. Section 6 forbids path:line anchors (#1459 -- the line is never bounds-checked) and requires bare paths, because that is what makes git diff --name-only against the recorded revision a real staleness test until #556 lands. Section 9 discloses the one FACT resting on tool-result citations, why AGENTS.md is cited nowhere, and three things that could not be verified -- starting with the fact that nothing in the tree establishes a Mermaid fence renders for anyone. Refs #1312 Signed-off-by: Serina Mcfall <serina.mcfall@gmail.com>
…rd (#1312) review-final raised eight findings and the cross-model Codex pass independently confirmed one of them before it ran out of credits. Six are fixed here; two are filed. Six ledger entries added. Four issue-ownership claims -- #1321, #1318, #1307 and #1473 -- were asserted in the body with nothing backing them, breaking the convention this node's own STEP 2 set and, worse, doing it in the node whose subject is traceability. That is the finding both reviewers reached independently. The other two entries carry the new #1478 caveat and the #1489 backfill. Section 5's MUST could not be satisfied by this node's own worked example. It required every diagram edge to trace to a ledger entry, but section 2 establishes that a rule this standard authors carries no entry and names its own authority instead -- and edge 3 of the example diagram ("a diagram lives inside the body") is backed by exactly such a rule. The MUST now admits both, the caption walks all five edges instead of three, and the reviewer checklist matches. A standard whose own example fails its own rule is evidence the rule was wrong, not the example. Two findings are filed rather than fixed, because they are about other artefacts: #1488 records three defects in AGENTS.md's create procedure found by following it literally -- including the one that causes #1473 -- and #1489 tracks the relationships backfill that ten sibling branches are all deferring to nobody. The plan's GATES paragraph is corrected, not rewritten: the original said Codex was unavailable, which was true when written. The appended note records what actually happened -- Codex recovered, ran, confirmed a finding, then ran out of credits mid-review without reaching a verdict. The gate is still not discharged. Refs #1312 Signed-off-by: Serina Mcfall <serina.mcfall@gmail.com>
tucktuck101
left a comment
There was a problem hiding this comment.
Request changes
Medium: permitted diagram forms never defined
launchpad/docs/corpus/standards/diagrams.md:185-186,211-212 makes every fenced diagram block legal; Mermaid and box-drawing are only preferences. Unknown fence languages, ASCII art, or an untagged code block all "comply." State the closed permitted set with exact fence-language handling, or explicitly declare any fenced diagram-as-text form permitted and make enforcement deliberate.
Medium: restates canonical citation/update policy as diagram-specific, with a self-contradicting example
:344-355 restates the general citation-prefer-bare-path. and update-ledger rules from the base AGENTS/CONTRACT as diagram-only MUSTs, while its own example (lines 325-327) cites a source under a self-authored edge rule with no credential (line 270). Reduce these to a diagram-specific application linking AGENTS.md/CONTRACT.md, and reconcile the example against the bare-path MUST.
What looks good
The section is otherwise concrete; the scope-and-omissions and enforcement sections read cleanly.
[panel: fable+codex]
Note: also unstack this after #1462 — it carries the same AGENTS.md/plan-636/test payload.
…-standard-diagrams Signed-off-by: Serina Mcfall <serina.mcfall@gmail.com>
…inst AGENTS.md (#1312) Section 3's MUST left "any fenced code block" legal by omission while Mermaid/box-drawing read as the only real options. Stated the open set as a deliberate choice consistent with section 7's own admission that nothing checks fence language, rather than closing it to a set this standard has no enforcement basis for. Section 6 restated AGENTS.md's citation-shape and ledger-update rules as diagram-only MUSTs, and its own worked example (edge 3, backed by a self-authored rule with no ledger entry) contradicted the MUST that every edge's source get a bare-path citation. Narrowed section 6 to the diagram-specific application -- citation follows the claim it projects, a self-authored-rule edge has nothing to cite -- and linked the general rules to AGENTS.md instead of restating them. review-final finding (fable+codex panel), verified against branch head before fixing: both gaps were still open. Signed-off-by: Serina Mcfall <serina.mcfall@gmail.com>
Round-2 findings addressedBoth verified against branch head (
Merged Fixed at |
Fixed since this review by follow-up commit f9c6c4a: the permitted-diagram-forms gap is now explicitly closed (open set, any fence language legal, stated as a deliberate choice), and the restated citation MUSTs were replaced with an explicit deferral to AGENTS.md. Verified directly against current text. Dismissing as stale/resolved.
There was a problem hiding this comment.
Reviewed commit d1b97acce0b56a86a7e3161028bd33630f299111 against merge base dea96f837690703b1298ab3f0e49e1b82fecb8cf.
Incomplete
This review is INCOMPLETE and must not be read as a full pass:
- no dimension was actually reviewed: the pipeline ran the 'default_reviewer' stub reviewer, which reports every dimension clean without reading it (a real dimension reviewer is #116)
Containment
No containment findings.
Fetched and empty: pr_review_comments.
Automated containment covers the delimiter boundary and unambiguous injection tells only. It does not cover injection phrased as ordinary, unremarkable prose. The absence of a containment finding is not evidence that this pull request contains no injection attempt.
Per Serina's decision on #1486, this node reconciles to #1313's documentation-standard before merging: - D1: carries the six required sections in the required relative order. - D3: MUST requirements and SHOULD guidance now occupy separate sections instead of being mixed through the narrative. - D4: every requirement carries a stable identifier, DG1-DG10 and DGS1-DGS6. - D5: every requirement names what enforces it, or states that nothing does. - D10: H1 is now 'Standard: diagrams', matching the subject the id names. - G4: top-level sections are no longer numbered; internal references name a section or a requirement identifier instead of a section number. No normative content changed - every MUST and SHOULD in the previous revision is preserved, relocated and identified. Explanatory prose is retained in named sections between SHOULD and Enforcement. Refs #1486 Refs #1312 Signed-off-by: tucktuck101 <jeffreytaylorrobertson@gmail.com>
Summary
Adds
launchpad/docs/corpus/standards/diagrams.md, the canonical policy node for diagramsinside corpus nodes: what form one may take, when a node carries one, what evidence it
owes, and what enforces it. The shape is forced by measurement rather than taste — a
corpus diagram cannot be an image file, because
validate.pyrejects every non-.mdfileunder the corpus root including one placed under
generated/. Nine sections, 31 evidenceentries, no other corpus file touched.
Related issue
Closes #1312. Part of #605.
Issue type
Task
Agent provenance
Objective
One hand-authored corpus node at
launchpad/docs/corpus/standards/diagrams.mdstating thediagram policy for the documentation corpus.
Impacted components
No other file is touched.
validate.py,node.schema.json, the ADRs andlaunchpad/docs/corpus/AGENTS.mdare all unchanged, per the issue's out-of-scope list.Approach and rejected alternatives
The question the task turns on: a diagram asserts relationships, relationships are
substantive claims, and substantive claims need ledger entries — but the body is discarded
before anything is checked, so a claim whose only home is a diagram is unevidenced by
construction.
Chosen: a diagram projects what the node already establishes, and is never the only
place a claim appears. It gets no ledger entry of its own.
Rejected — one ledger entry per drawn edge. It invents a granularity the schema does
not describe (the schema says one entry per claim and gives diagrams no hook), and it
does not survive contact with the checker, which cannot tell the two versions apart.
Between two unenforced rules, the one worth having keeps every claim on the surface that
is checked. Section 5 states plainly that this is a choice rather than a fact and defers
to #1314 if the evidence standard settles it otherwise.
Also rejected — citing
launchpad/docs/corpus/AGENTS.md, the instruction node thatgoverns this work. It has not merged, so a bare-path citation to it resolves on this branch
and hard-fails on
launchpad. That is open bug #1473. Every claim is sourced to a primaryfile that exists on the merge target instead; section 9 records the cost.
Verification
Command run:
Raw output:
The merge-target run is the one that matters, and the negative control is why it is worth
anything: it proves the check can actually fail rather than passing vacuously. The
cross-model reviewer reproduced that probe independently and got the same result.
The two
FAILmessages quoted in section 3 of the node are verbatim output of the samevalidator against a scratch corpus containing
generated/arch.pngandtopology.svg.Not verified
and a real pass ran — it reproduced the merge-target probe and independently confirmed
one finding — but it ran out of credits mid-review and never reached a verdict. The
gate was genuinely attempted and genuinely did not complete. This PR is a draft for that
reason.
CI step, config or statement in the tree says so. The node's preference for Mermaid rests
on reviewability in a PR diff, which is verified, not on rendering, which is not.
likely to change the node's preference between fence languages.
--rootagainst scratch corpora, not by committinga knowingly-invalid file into this branch's history.
UNVERIFIEDtool-result citations — the measured diagramcounts (1 Mermaid fence, 20 box-drawing files). Disclosed in section 9, since no check
holds that convention.
.superpowers/step ledger is gitignored, so it records the build locally only; thedurable record of the merge-target check is this PR body.
Security implications
None. The change adds two Markdown documents and no executable path, no dependency, no
configuration and no network surface. Nothing in the diff is read by any runtime component;
the only consumer is
validate.pyin CI, which parses front matter and never executes it.Escalations
Two review findings are filed rather than fixed, because they concern other artefacts:
AGENTS.md's create procedure, found by following itliterally as this task's plan required. One is the procedure gap that causes bug: code-references node's no-relationships rationale does not cover its own AGENTS.md citations #1473 and
was filed nowhere; ten sibling branches are following that procedure now.
relationshipsbackfill. Every standards node in the batchships an empty array for a reason that expires the day the batch merges, and nothing
tracked going back.
Six further findings from
review-finalwere fixed ind3e737frather than deferred,because each was a defect inside this deliverable: four issue-ownership claims asserted in
the body with no ledger entry (a finding the cross-model pass reached independently); a
MUST in section 5 that the node's own worked example could not satisfy; a ledger entry that
overclaimed; a missing #1478 caveat; and the plan's now-stale GATES paragraph, corrected by
appending what happened rather than rewriting what was true when written.
Left as a draft for your call, since the cross-model gate did not complete. To approve: