Skip to content

docs(catalog): converge doc tooling with canonical ways + retire operations mode#535

Merged
aaronsb merged 2 commits into
mainfrom
docs/adr-908-operations-domain
Jun 20, 2026
Merged

docs(catalog): converge doc tooling with canonical ways + retire operations mode#535
aaronsb merged 2 commits into
mainfrom
docs/adr-908-operations-domain

Conversation

@aaronsb

@aaronsb aaronsb commented Jun 20, 2026

Copy link
Copy Markdown
Owner

Brings the documentation catalog into structural conformance with the
canonicalized agent-ways documentation model. Two commits:

retire operations mode; adopt DD.NNN.P catalog ids (prior)

  • Retire the operations/O pseudo-mode — the four Diátaxis modes are a closed 2×2; operations is an audience facet carried by domain, not a fifth mode.
  • Adopt octet-style DD.NNN.P ids: identity is DD.NNN (assigned once); the Diátaxis pole P trails as a classifier, so re-shelving a page never churns its number.

converge doc tooling with canonical ways; enable retired guard (this session)

  • Re-vendor docs/scripts/doclint.py verbatim from canonical (agent-ways 901aaa1, PR bug: kg vocab config fails with authentication error #131): check_retired_refs enumerates via git ls-files --cached --others --exclude-standard (honors .gitignore, rglob fallback off-git) instead of walking the tree — gitignored corpora/scratch excluded, authored docs still enforced.
  • Re-vendor docs/scripts/doc; one deliberate local delta — the catalog citation stays ADR-908 (here ADR-302 resolves to the multimodal-ingestion ADR).
  • Enable legacy: {retired: true} — enforce ADR-900's vacated 1–99 range.
  • Gitignore raw audit/scan byproducts (ways/**/*-raw.json).
  • New .claude/ways/kg/documentation way — discloses the typed-graph model, DD.NNN.P scheme, tooling, and gotchas on docs/ edits.
  • ADR-908: note this repo seeded canonical's documentation model; warn against adding ADR-302 as a false local graph edge.

Structural conformance (verified)

  • doclint.py --check --enforce-adrs0 errors, 0 warnings (49 catalog pages + 120 ADRs).
  • Guard verified strict: an injected ADR-042 in a tracked ADR fails --check.
  • docs/ folders map to Diátaxis views; 49/50 non-ADR pages are catalog nodes (the 1 exclusion is a dated security-audit artifact, correctly opt-out).
  • Link check clean.

Upstream collaboration: the gitignore-aware scan fix was negotiated into canonical (agent-ways PR #131) rather than forked locally.

aaronsb added 2 commits June 16, 2026 19:43
The doc catalog mixed two axes onto one slot. "Operations" was added as a
fifth Diátaxis mode (letter O), but operations is an audience facet — it
answers who reads a page and which subsystem, which the domain axis already
captures. The four canonical modes are a closed 2x2 of reader posture; there
is no fifth quadrant. The 11 self-host pages are how-tos, reference, and
explanation that happen to be about running the platform.

Retiring O exposed a deeper flaw: the old id <digit>.<LETTER>.<serial> baked
mode (a mutable attribute) into the middle of the identity and scoped serials
to (domain, mode), so re-classifying a page forced its part number to change.
A handle that mutates when you re-shelve the part is not a handle.

Adopt octet-style DD.NNN.P: identity is DD.NNN (domain band + domain-scoped
serial, assigned once), and the Diataxis pole P trails as a classifier that
must agree with mode: but is not part of the key. Domain-scoped serials let
the linter treat any collision as a real clash.

- re-tag 11 self-host pages to true Diataxis mode (domain unchanged)
- drop operations from doclint.py MODE_LETTER; add check_duplicate_ids
- renumber all 49 catalog ids to DD.NNN.P (ids derived from domain+mode)
- update cli/mcp/fuse/schema generators to emit new ids
- amend ADR-908: identity-vs-classifier rationale + 2026-06-16 correction
…ed guard

Re-vendor the catalog linter from the agent-ways canonical tools and adopt the
gitignore-aware retired-range guard, closing the gap between this repo (the
reference implementation) and the framework model it seeded.

- re-vendor docs/scripts/doclint.py verbatim from canonical (901aaa1):
  check_retired_refs enumerates via `git ls-files` (honors .gitignore, rglob
  fallback off-git) instead of walking the tree, so gitignored corpora and
  scratch are excluded while authored docs stay enforced
- re-vendor docs/scripts/doc; keep the single local citation (ADR-908, since
  ADR-302 resolves to the multimodal-ingestion ADR in this repo's graph)
- enable legacy.retired:true — enforce ADR-900's vacated 1-99 range
- gitignore raw audit/scan byproducts (ways/**/*-raw.json)
- add .claude/ways/kg/documentation way — discloses the typed-graph model,
  DD.NNN.P scheme, tooling, and gotchas on docs/ edits
- ADR-908: note this repo seeded canonical's documentation model; warn against
  adding ADR-302 as a false local graph edge

Lint 0/0 (docs + ADRs enforced). Upstream fix: agent-ways PR #131.
@aaronsb aaronsb merged commit 9328f20 into main Jun 20, 2026
6 checks passed
@aaronsb aaronsb deleted the docs/adr-908-operations-domain branch June 20, 2026 05:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant