docs(corpus): add reference corpus template - #1534
Conversation
Ground the required-sections/evidence shape in Diátaxis's Reference form (information-oriented, not task-oriented) and the Good Docs Project's fillable Reference template, and state the explicit boundary against the sibling concept/explanation template. Signed-off-by: Serina Mcfall <serina.mcfall@gmail.com>
tucktuck101
left a comment
There was a problem hiding this comment.
Review — reference corpus template (#1346)
Every Diátaxis and Good Docs Project quotation in this node holds verbatim — I had them checked
individually, and the taxonomy is applied in Diátaxis's own information-oriented sense, not
loosely. One inverted repo fact that the body then spends on author-facing guidance.
High — references has an authored inverse, not a generated one
The ledger entry at :26 is FACT on relationships.schema.json and states the type's
directionality "...with a generated inverse named referenced-by."
The cited file says the opposite. relationshipMeta.references is:
{ "directionality": "source cites target as supporting context; no ownership or currency dependency implied",
"inverse": "authored", "inverseType": "referenced-by" }references is the only one of the five types whose inverse is authored — depends-on,
supersedes, implements and part-of are all generated.
It is load-bearing because the body spends it at :352-354, telling an instance author they may
declare references at this template "if the author wants the generated referenced-by edge". No
generator produces that edge for this type, so the promised reverse edge silently never exists and
must be hand-authored on the other node. CI cannot catch it: the citation is a bare repo path, and
the validator only confirms the path resolves.
Both siblings in this batch state it correctly (concept.md:109 "with an authored (not generated)
inverse edge"; glossary-term.md:309-312 reasons through to "a generated back-edge that does not
exist for this type"), so this is an isolated inversion. Fix both sites and drop the
free-back-edge rationale.
Medium — two issue-sourced claims are classified FACT
:77-80 cites issues/605 and :81-84 cites issues/1346, both as FACT. The corpus
AGENTS.md rules on exactly this: "When the only source is an issue, a PR or a discussion, you
have no openable file and no way to pin one ... Do not force it into a FACT on a tool-result or
URL citation. Use TEAM_KNOWLEDGE with provided_by naming the issue." The quoted strings are
verbatim, so this is classification rather than truth — and it is invisible to CI, because an
issue URL is reported UNVERIFIED while the run exits 0, which AGENTS.md itself names as the
failure mode. Your own siblings record the identical #605 claim as TEAM_KNOWLEDGE, so merging
all three leaves two conventions for one claim.
Low — the archived mirror does have a usable SPDX license
The parenthetical says the archived thegooddocsproject/templates mirror "carries no usable SPDX
license". Its LICENSE.txt at the commit you cite is the verbatim Zero-Clause BSD text, whose
SPDX identifier is 0BSD. What is true is narrower: GitHub's automatic detection reports
NOASSERTION for that repo because the file is named LICENSE.txt with a non-canonical header.
Sibling concept.md:155 states the license text correctly as a FACT, so merging both leaves two
FACT-classed claims about one artifact that cannot both be right.
Low — one FACT carries reasoning that contradicts the node's own boundary
The compass entry correctly places reference at "informs cognition x application of skill" and
explanation at "informs cognition x acquisition of skill", then closes that the two "split on
acquisition versus application, which is the axis that does not apply to the concept/reference
boundary this template states in prose." That axis is precisely what the compass uses to separate
the two, and the information-versus-understanding language your own boundary section uses is
Diátaxis's name for the same split — so the clause denies the distinction the prose depends on. It
is also reasoning sitting inside a FACT entry. End the statement after the compass mapping, or
move the interpretation to an INFERENCE with a confidence.
Not findings, ruled out on evidence
- Index registration: the corpus
AGENTS.mdandREADME.mdboth state that indexes are
generated derived views, never hand-authored, and the ten-step "Creating a node" procedure has
no registration step. All 26 template PRs leavingAGENTS.mduntouched is correct. - CI green at head (latest run per check); node validates clean.
Reviewed by tucktuck101's review lane. Every failing claim reported above was reproduced by me against this PR head before posting.
Node
corpus-template-referenceatlaunchpad/docs/corpus/templates/reference.md.Note on this issue's definition of done
Issue #1346's own Definition of Done is byte-identical to the standards-track
boilerplate ("States scope and authority/source of the policy. Separates MUST
requirements from SHOULD guidance. Defines enforcement/checks and
exception/escalation process. Links decisions or higher-order policy instead of
duplicating them.") — the same text independently found copied across #1326-#1351.
That describes a policy/standard node, not a template. This node is instead
built against parent Feature #605's own acceptance criterion: "every template states
its purpose, required sections, evidence expectations and the industry model/standard
it adapts." The document's Required sections, Evidence expectations and
Industry model this template adapts sections answer that directly, and a
Note on Definition of Done section in the body states this explicitly for future
readers. The other generic DoD items (one hand-authored document, schema-valid front
matter, one independently maintainable idea, every claim traceable, links instead of
duplicates, checked against provenance revision, validator passes clean) apply as
written and are satisfied.
typechosen and whytype: governance.node.schema.json'stypeenum has notemplateorpolicyvalue — it enumerates PRD #602's corpus-surface list. Of the corpus's four existing
nodes,
AGENTS.mdcarriestype: agentwhileREADME.mdand bothstandards/*.mdnodes carrytype: governance— the precedent for a node thatdocuments the corpus's own authoring rules rather than architecture/capability/etc.
subject matter. All five batch-1 template PRs (#1527-#1531) independently landed on
the same value. The document also adds a dedicated A note on
typesectionclarifying that this enum tracks corpus surface, not documentation form — a
node built from this reference template takes whichever
typeits own subject'ssurface calls for (e.g.
interfaces-events,capabilities), notgovernance;governanceapplies only to this template node itself.Relationships
None declared. Checked against
origin/launchpadat commita44cf52fc740ebebbdd671427480d14f0bce0115(
git ls-tree -r --name-only origin/launchpad -- launchpad/docs/corpus): exactlyfour nodes exist —
corpus-agents,corpus-readme,corpus-standard-confidence,corpus-standard-decision-references— all procedural/meta-documents about thecorpus itself, none reference-shaped subject matter this template would
references,depends-on, or sitpart-of. Batch-1's five template PRs are open,not merged, so they are not valid targets either. None of this batch's four siblings
(#1331, #1336, #1340, #1351) target this node or are targeted by it — the document's
Relationships section states this and why.
Research grounding
Primary sources fetched and read directly, not taken from Serina's unmerged research
note (
launchpad-26/buzz#1466,launchpad/Research/project-documentation-templates.mdon
docs/research-project-doc-templates, cited only asTEAM_KNOWLEDGE,provided_bynaming the issue):diataxis.fr/reference/,/explanation/,/compass/,/how-to-guides/,/colophon/) — Reference is "technical descriptions of themachinery and how to operate it," "information-oriented," with the explicit nuance
that it "should not attempt to show how to perform tasks" but "can and often needs
to include a description of how something works." The document states the boundary
against sibling task: define the concept corpus template #1331 (concept/explanation) directly from Diátaxis's own contrast:
explanation is "understanding-oriented" and reference is "information-oriented" —
stated as opposites in the same source sentence. It also notes (does not resolve)
the boundary against task: define the procedure corpus template #1345 (procedure/how-to, not in this batch).
(
gitlab.com/tgdp/templates/-/raw/main/reference/template_reference.md) and itsguide (
.../reference/guide_reference.md), not just the marketing page. Used forrequired-sections structure: Reference description, structured entries, optional
Commands.
Two errors caught by verifying primary sources rather than trusting the note,
same discipline that caught the note's separate MADR-naming error in batch 1:
The actual
LICENSEfile at the canonicalgitlab.com/tgdp/templates(thearchived GitHub mirror carries no usable SPDX license) is the MIT No
Attribution License — materially the same no-attribution freedom, but a
textually distinct instrument. The document's evidence ledger states this
correction explicitly rather than repeating the note's claim.
between a plain Reference article (for users "unfamiliar with the problem space")
and a separate API Reference template (for "domain experts" wanting endpoint/
parameter depth) — a distinction the research note doesn't surface and none of
the 25 filed corpus template tasks (task: define the architecture component corpus template #1326-task: define the threat model corpus template #1351) appear to own. Filed as
task: corpus templates do not distinguish plain Reference from API Reference #1532 (see Escalations).
Validator + verify-gate evidence
19
UNVERIFIEDnotices are the expected non-fatal notices for commit/tool-result/external-URL citation shapes per
AGENTS.md's own citation-shape table (5 from thethree pre-existing nodes, 14 from this node's own commit/tool-result/external-URL
citations) — none are errors.
Run as the literal last command before
git commit, nothing piped or redirectedafter it, per the batch dispatch brief.
Cross-model review
Codex (cross-model) is down, tracked as #1467. Same-model adversarial self-review
substituted: re-read the drafted document against its own evidence ledger and
Diátaxis/Good Docs Project sources for internal consistency, caught and fixed an
inconsistency between the Boundary section (three exclusions: concept, procedure,
API Reference) and the Required sections checklist (which had only named two),
before committing.
Escalations
Reference." Medium: the Good Docs Project's own Reference guide names API
Reference as a separate, deeper template (domain-expert audience, full
endpoint/parameter cataloguing) and none of the 25 filed corpus template tasks
(task: define the architecture component corpus template #1326-task: define the threat model corpus template #1351) appear to own that distinction. This node's own Boundary and
Scope and omissions sections flag the gap from their side; task: corpus templates do not distinguish plain Reference from API Reference #1532 tracks the
decision (new template task, or widen this one) as out of this node's own scope.
Closes #1346
Issue type
Task