Skip to content

Identity-fluff wording in README/requirements fails the local docs gate #53

Description

@forkwright

Finding

kanon lint --writing currently fails on 5 occurrences of identity-fluff wording ("sovereign"/"sovereignty" used as an identity claim rather than a factual description) across the two most-canonical documents in the repo. readme-lint and docs-manifest-check are both required stages in .kanon-ci.toml, so a fresh clone currently fails its own local gate before any new change is applied.

Evidence

Verified by running kanon lint --writing . against origin/main (tip 28420ad):

README.md:5 [WRITING/identity-fluff] identity-fluff word (state what the thing is/does, not an identity claim)
docs/requirements.md:7 [WRITING/identity-fluff] identity-fluff word (state what the thing is/does, not an identity claim)
docs/requirements.md:109 [WRITING/identity-fluff] identity-fluff word (state what the thing is/does, not an identity claim)
docs/requirements.md:117 [WRITING/identity-fluff] identity-fluff word (state what the thing is/does, not an identity claim)
docs/requirements.md:124 [WRITING/identity-fluff] identity-fluff word (state what the thing is/does, not an identity claim)

README.md:5 — "Sovereign web runtime with agent co-tenancy."
docs/requirements.md:7 — "2. Presents a zero-friction, unlinkable, sovereign interface to origins."
docs/requirements.md:109 — "R10.1 ... (sovereignty, custom rules, full audit, active ops, agent co-tenancy, knowledge graph integration)."
docs/requirements.md:117 — "- Sovereignty: runs entirely locally, no cloud dependency beyond operators LLM API key"
docs/requirements.md:124 — "- Update sovereignty: operator controls when and what updates are applied"

None of these lines are flagged by check-doc-refs.py or check-doc-manifest.py (dangling/mismatch/missing/unlisted) — only kanon lint --writing, invoked as readme-lint and inside docs-manifest-check, catches this class. The rule evidently postdates the last edit to these two files: nothing else in the corpus trips it.

GitHub CI does not surface this: gate-attestation.yml only verifies a Gate-Passed trailer is present on the PR tip, it does not re-run kanon lint, so a trailer stamped under an older kanon lint ruleset stays valid-looking on main even after the ruleset tightens.

Why this matters

Every future PR that touches any part of the canonical doc corpus inherits these 5 pre-existing failures in readme-lint / docs-manifest-check, regardless of what that PR actually changes, because both stages lint the whole corpus rather than a diff. A contributor who did not cause the drift has to fix it before they can get a real Gate-Passed trailer.

Desired correction

Reword the 5 flagged lines to state the fact rather than the identity claim (e.g. "sovereignty" -> "local-only operation" / "operator control", matching the wording already used for the same underlying facts elsewhere in docs/requirements.md R11). Re-run kanon lint --writing . to confirm zero violations, then the full .kanon-ci.toml pipeline.

Done when: kanon lint --writing . reports zero WRITING/identity-fluff findings and all five .kanon-ci.toml stages pass on the fix commit.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions