Skip to content

docs(corpus): standard for taxonomy (#1324) - #1519

Merged
tucktuck101 merged 2 commits into
launchpadfrom
task/1324-corpus-standard-taxonomy
Aug 28, 2026
Merged

docs(corpus): standard for taxonomy (#1324)#1519
tucktuck101 merged 2 commits into
launchpadfrom
task/1324-corpus-standard-taxonomy

Conversation

@serina-mcfall

Copy link
Copy Markdown

Summary

Adds launchpad/docs/corpus/standards/taxonomy.md, the canonical policy node for the type front-matter field: where its 13 closed-enum values originate, how to choose among them when a node's subject could plausibly fit more than one, and what to do if none of the 13 fit. Links to COMPATIBILITY.md for the enum-addition procedure rather than restating it.

Related issue

Closes #1324

Issue type

Task


Agent provenance

Field Value
Harness / provider Claude Code
Model claude-sonnet-5
Session reference N/A
Initiating human N/A

Objective

Create the one hand-authored canonical corpus document launchpad/docs/corpus/standards/taxonomy.md, governing the type field's 13-value closed enum.

Impacted components

  • launchpad/docs/corpus/standards/taxonomy.md

Approach and rejected alternatives

Modeled the document's shape directly on the two already-merged sibling standards (confidence.md, decision-references.md): Scope and authority / where the field's values come from / a MUST-numbered choosing procedure / enforcement table / exceptions and escalation / scope and omissions. Traced the enum's 13 values to PRD #602's own success-criteria bullet (confirmed by direct read, not by trusting the schema's paraphrase alone), rather than inventing a second, independently authored definition of each surface — the schema's own field description explicitly warns against that.

Rejected alternative: writing a one-line definition for each of the 13 enum values (architecture, layers, capabilities, etc.). No document in the repository defines these individually beyond the schema's shared one-line description, and manufacturing 13 new definitions would itself be the "second, independently invented taxonomy" the schema's description warns against. Instead the document gives a decision procedure grounded in how the enum has actually been used by the four nodes merged to origin/launchpad so far (three governance, one agent), and requires disclosing an imperfect fit in the node's own scope-and-omissions section — following the worked example already in corpus-readme.md.

Rejected relationship targets: the task brief suggested corpus-standard-status (#1323) as a plausible edge since both standards govern closed-enum fields. Checked git ls-tree -r --name-only origin/launchpad -- launchpad/docs/corpus directly rather than trusting the dispatch-time claim that #1323 and #1317 (corpus-standard-identifiers) were already merged — neither is. Both exist only on unmerged task branches (confirmed corpus-standard-status's commit is not an ancestor of origin/launchpad via git merge-base --is-ancestor). Per AGENTS.md step 9, a relationship target must exist on the branch being merged into, so neither is used. Declared one relationship instead: referencescorpus-readme, justified because corpus-readme.md's own scope-and-omissions section is the concrete worked example this document cites (type: governance as "the closest true fit, not an exact one").

Verification

Command run:

python3 launchpad/project-intelligence/corpus/validate.py

Raw output:

UNVERIFIED  corpus-agents: evidence entry 1, citation 1: is a commit reference, which names no openable file
UNVERIFIED  corpus-agents: evidence entry 20, citation 1: is a graph-edge or tool-result citation, which names no openable file
UNVERIFIED  corpus-readme: evidence entry 1, citation 1: is a commit reference, which names no openable file
UNVERIFIED  corpus-standard-confidence: evidence entry 1, citation 1: is a commit reference, which names no openable file
UNVERIFIED  corpus-standard-decision-references: evidence entry 1, citation 1: is a commit reference, which names no openable file
UNVERIFIED  corpus-standard-taxonomy: evidence entry 1, citation 1: is a commit reference, which names no openable file
UNVERIFIED  corpus-standard-taxonomy: evidence entry 11, citation 1: is a graph-edge or tool-result citation, which names no openable file
PASS  corpus validation found no errors; 7 item(s) reported unverified

Exit status: 0

Also ran, as the local pre-commit verify-gate hook requires:

python3 -m unittest discover -s launchpad/docs/corpus/schema/tests -p "test_*.py" -v

Raw output (tail):

Ran 27 tests in 0.048s

OK
  • Tests or checks were run and the raw output is pasted above
  • The diff is confined to the scope of the linked issue
  • No secrets, keys, tokens or hostnames were added to tracked files

Not verified

  • Whether any generated view or index consumes/groups nodes by type — no generator exists yet in this corpus, so how a projection would render or rank an imperfect-fit disclosure is untested.
  • Whether an author besides this one can actually apply the Choosing a value precedent-based heuristic in a case this document did not anticipate — the precedent sample is small (three governance nodes, one agent node).
  • Whether corpus-standard-status (task: document corpus standard for status #1323) or corpus-standard-identifiers (task: document corpus standard for identifiers #1317), once actually merged to launchpad, will contain content that changes this document's reasoning — confirmed neither is merged at the checked revision, but their eventual content was not read for this document's purposes.
  • No agent harness was tested reading this document as instructions; it is written and reviewed as corpus content only.

Security implications

None. This is a documentation-only change under launchpad/docs/corpus/standards/; it does not touch runtime code, secrets, or deployment configuration.

Escalations

None. The one open question flagged in the task brief — whether an edge to corpus-standard-status was warranted — resolved itself on verification: that node is not merged to origin/launchpad, so AGENTS.md's own rule rules it out without needing a judgment call.

…ed at (#636)

Rebased onto `launchpad` and reduced to one file. #1468, #1469 and #1477 merged
while this PR sat on CHANGES_REQUESTED, and each carried the shared #636 base,
so two of this branch's three files -- the #636 plan and test_validate.py --
are now byte-identical on `launchpad` and no longer belong in this diff. What
is left is the fix itself.

The consequence worth stating plainly: those merges landed the UNFIXED corpus
AGENTS.md on `launchpad`, including the line this commit removes -- "Do not
take that on this document's word -- the command is the check". The High
finding is on the default branch now, which is why this is a defect fix rather
than a pre-merge correction.

HIGH -- the provenance-update shortcut could certify stale evidence. Two
passages said an empty `git diff --name-only <recorded-sha> -- <ledger paths>`
established that every cited source was unchanged and every claim still stood.
Both are false for citation forms this document itself permits.

Measured, not argued. A file that DOES differ reports as changed with a bare
path and reports empty output with exit status 0 once `:127` or `:219-221` is
appended -- no error, no warning. So an unnormalized `path:line` citation makes
a changed file indistinguishable from an unchanged one, which is the worst
available failure shape for a provenance check. Recorded as a new FACT entry
with the tool-result citation that demonstrates it.

The rule now states its reach: normalize positions off the path first; only
bare path, file line and file range are in scope; graph edge, tool result,
commit and the two URL forms are excluded explicitly, so the branch is simply
unavailable when a ledger contains one. The conclusion is narrowed to what a
diff can support -- those files are unchanged -- with re-verification left as
the only thing that establishes a FACT still holds.

MEDIUM -- the one-node rule had no supporting ledger entry. "One node is one
independently maintainable idea" is a substantive instruction and the ledger's
only #636 entry backed the recorded-revision requirement instead. Added as
TEAM_KNOWLEDGE attributed to #636's definition of done, which states it
near-verbatim, matching the existing entry's classification for the same source.

Also corrected a wrong-direction cross-reference: "*Updating a node* below" in
Scope and omissions, where that section is above it.

The recorded revision stays at 0052f5a, re-checked against the NEW base after
the rebase rather than assumed to still hold: the two non-file citations were
excluded, the nine normalized file paths were passed to `git diff` against
0052f5a from `launchpad` tip 0ffc1c9, and the result was empty.

The second Medium is not addressed because it is stale -- the citation table
was already corrected by ebe2daf and says outright that it is seven rows and
is not a summary of CONTRACT.md section 3. The remaining cross-document
disagreement is tracked as #1478. Evidence is in the PR thread.

Validated against the full four-node corpus now on `launchpad`, not just this
node: PASS, 5 non-fatal UNVERIFIED notices, all commit or tool-result
citations that name no openable file.

Signed-off-by: Serina Mcfall <serina.mcfall@gmail.com>
Adds launchpad/docs/corpus/standards/taxonomy.md, the policy node
governing the type field's closed 13-value surface enum: where the
values originate (PRD #602's success criteria, quoted from
node.schema.json's own description), how to choose one when a node's
subject could plausibly fit more than one, and what to do if none of
the 13 fit (COMPATIBILITY.md's schema-change process, linked not
restated).

Verified before writing that corpus-standard-status (#1323) and
corpus-standard-identifiers (#1317) are not actually merged to
origin/launchpad despite being described as merged at dispatch time --
they exist only on unmerged task branches -- so no relationship
targets them. Declares one relationships edge, references ->
corpus-readme, justified by corpus-readme.md's own worked example of
an imperfect type fit ("governance is the closest true fit, not an
exact one"), which this document cites directly.

Closes #1324

Signed-off-by: Serina Mcfall <serina.mcfall@gmail.com>
@serina-mcfall serina-mcfall added the by:agent Filed or authored by an AI agent, not a human label Aug 27, 2026
@serina-mcfall
serina-mcfall marked this pull request as ready for review August 27, 2026 01:51
@tucktuck101 tucktuck101 self-assigned this Aug 27, 2026

@tucktuck101 tucktuck101 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review — standard for taxonomy (#1324)

The vocabulary is exactly right: the 13 type values match node.schema.json's closed enum
precisely — in order, nothing added, nothing missing, nothing renamed. For a taxonomy standard
that is the thing that had to be correct, and it is. The defect is structural.

Medium — no ## MUST section and no ## SHOULD section

The document's top-level headings, verbatim from grep -n '^## ':

Scope and authority / Where the 13 values come from / Choosing a value /
If none of the 13 fit / Enforcement, and where it stops /
Exceptions and escalation / Relationships / Scope and omissions

There is no ## MUST and no ## SHOULD. #1324's own definition-of-done carries the
MUST/SHOULD-split checkbox, and the meta-standard requires the two as separate sections — one
list with mixed modal verbs does not satisfy it however clearly the verbs are written. This is
the same remedy #1507 records against the sibling nodes and that #1508 is landing in this very
batch for confidence.md, so it is an established fix rather than a judgement call.

"Choosing a value" and "If none of the 13 fit" carry the normative content; splitting them into
## MUST / ## SHOULD preserves every identifier and cross-reference.

Batch correction — the AGENTS.md hunk is not an index registration

launchpad/docs/corpus/AGENTS.md at this head is byte-identical to the launchpad tip
(verified with git diff --quiet). The hunk is the task/636 change inherited through a stale
merge base (919886b41), not a registration this PR adds — merging produces no net AGENTS.md
change and there is no cross-standard conflict there. No standards index exists to register in.

What is correct

  • 13-value type enum reproduced exactly from the schema — verified value by value.
  • "If none of the 13 fit" routes to the schema's COMPATIBILITY.md change process rather than
    inventing a local escape, which is the right answer.
  • The enforcement section states where the check stops instead of overstating it.
  • 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.

@tucktuck101 tucktuck101 removed their assignment Aug 27, 2026
@tucktuck101
tucktuck101 merged commit 01d30b2 into launchpad Aug 28, 2026
28 checks passed
@serina-mcfall
serina-mcfall deleted the task/1324-corpus-standard-taxonomy branch August 31, 2026 20:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

by:agent Filed or authored by an AI agent, not a human

Projects

None yet

Development

Successfully merging this pull request may close these issues.

task: document corpus standard for taxonomy

2 participants