docs: ausgelieferte Doku zitiert keine Issue-Nummern mehr, docs verify prueft es (schliesst #77)
Files changed: - .gitignore - CHANGES.md - EVALS.md - INSTALL.md - README.md - VERSION - docs/pipeline-rationale.md - instructions/CONTRACT.md - instructions/bootstrap.md - instructions/dev/issue-tracking.md - instructions/evolve-subtypes.md - instructions/kb-profiles.md - instructions/mcp-read-server.md - instructions/wiki-ingest/SKILL.md - kb/CONTRACT.md - kb/concepts/COLLECTION.md - kb/sources/COLLECTION.md - raw/CONTRACT.md - tools/.coveragerc - tools/CONTRACT.md - tools/README.md - tools/chemenu/commands/docs_verify.py - tools/chemenu/tests/test_docs_verify.py - types/source.schema.yaml - types/type-spec.md
This commit is contained in:
@@ -319,6 +319,37 @@ second pass), and an old body can carry private infrastructure detail into
|
||||
what is now a public tracker - both found in the same issue, both worth the
|
||||
same look.
|
||||
|
||||
## Citing an issue in the repo
|
||||
|
||||
**No file `dist export` ships may cite an issue number.** The board is reachable only from the
|
||||
origin repo, and this very file - the only one that says where it lives - is pruned along with
|
||||
the rest of `instructions/dev/`. A "#66" that survives into a distributed instance is therefore
|
||||
worse than a dead link: the reader cannot resolve it *and* cannot tell that it is unresolvable,
|
||||
so a rule appears to rest on evidence nobody can produce. `instructions/CONTRACT.md` § "Writing
|
||||
an instruction" asks the opposite ("self-contained enough for an agent with no prior context"),
|
||||
and an issue number is the exact counter-example to it.
|
||||
|
||||
Which is the same wayfinder/evidence split as in the section below, applied one layer out - but
|
||||
both halves land in the same place here:
|
||||
|
||||
- **A wayfinder** ("see #66 for the reasoning") is resolved: the reasoning goes into the text,
|
||||
and the number goes.
|
||||
- **A piece of evidence** ("removed in #66") is dated in words instead - "removed when the
|
||||
schema default was dropped". The sentence carries itself, and the number stays reachable
|
||||
through `git blame` -> the commit message, which names the issue anyway.
|
||||
|
||||
Where a pointer is genuinely worth having *here* and would leave nothing behind in words, keep
|
||||
it in a `<!-- dist:strip-start/end -->` block ([instructions/CONTRACT.md](../CONTRACT.md)
|
||||
§ `instructions/dev/`): visible in this repo, removed on export. Two passages use it today.
|
||||
|
||||
`tools/**/*.py` is deliberately outside all of this. A code comment addresses whoever edits that
|
||||
line, and that only ever happens in the origin repo, because `dist export` prunes the
|
||||
`stack-dev` skill together with this directory; a distributed `tools/` tree is runtime
|
||||
machinery, not reading material. The same holds for `.gitignore` and `tools/.coveragerc` -
|
||||
config, not documentation.
|
||||
|
||||
`docs verify` enforces the rule (below).
|
||||
|
||||
## What no tool checks
|
||||
|
||||
`wikitool` does not know this tracker exists, and should not learn. It ships to
|
||||
@@ -336,6 +367,16 @@ session following this file, or not at all - which is the argument for the
|
||||
sequence in step 7 being explicit about the order (body first, then close),
|
||||
rather than leaving it to be inferred from step 2.
|
||||
|
||||
The one rule here that *is* checked is § Citing an issue in the repo, and it is
|
||||
worth being clear about why that is not a contradiction. `docs verify`'s
|
||||
`check_no_issue_references` compiles `#\d+` and reads the text
|
||||
`dist_cmd.build_plan()` would write. It has no client, no URL and no notion of
|
||||
an issue's state - it cannot tell an open issue from a closed one, or a real
|
||||
number from an invented one. What it knows is that a shipped document is making
|
||||
a reference its reader cannot follow, which is a property of the *document*, not
|
||||
of the board. That is the line: a check may look at what this repo writes about
|
||||
the tracker; none may look at the tracker.
|
||||
|
||||
## Decision points
|
||||
|
||||
- **Issue or changelog?** An issue is work that is *not done*. `CHANGES.md` is
|
||||
|
||||
Reference in New Issue
Block a user