Skip to content

CLAUDE.md's 'six repos in step' is four repos, two of which still name a contract retired by #158 #277

Description

@Polichinel

Found by a falsification audit, 2026-08-16. This is the third version of this issue. The first two both overstated the problem, in different ways, and both errors came from counting instead of measuring. They are recorded at the bottom rather than edited away, because an issue about false claims in governance prose that quietly rewrites its own is self-refuting.

The claim

Every copy of the philosophy doc closes with:

Canonical copy of this philosophy: keep the six repos' versions in step; change this file first and propagate.

And this repo's .gitignore:235-239 explains why it is not tracked here:

Deliberately NOT tracked: this file is the canonical engineering philosophy propagated across the six platform repos, and it is edited there first — tracking a copy here would make this repo a second source of truth for a document that has one.

What is actually true, measured across all 27 directories under views_platform/

Seven files named CLAUDE.md exist, but they are two different documents.

repo document md5 tracking
views-postprocessing # Working in this repository 098b43be ignored
views-models # Working in this repository 098b43be tracked
views-faoapi # Working in this repository 8f4b2553 ignored
views-pipeline-core # Working in this repository 4bb41d46 ignored
views-frames # views-frames — Architecture / Tooling / Design principles 7f94c6f2 tracked
views-bayesian # views-bayesian — Architecture / Package Layout / Commands dfc62a54 tracked

(A seventh copy at _s3_worktree is a git worktree of views-models, not a separate repo.)

views-frames and views-bayesian do not carry this document at all. They carry ordinary per-repo technical CLAUDE.md files that happen to share a filename — different title, different sections, different purpose. They are not divergent copies; they are unrelated.

So the philosophy doc lives in four repos, not six. That is the first false thing in the sentence.

The good news: the four were almost in step

They differed by exactly two lines, and only one of them was a defect.

Line 87 — legitimate, not drift. views-pipeline-core says documentation/ADRs/ where the others say docs/ADRs/. Verified: views-pipeline-core/documentation/ADRs/ is where its ADRs actually live. Correct localisation.

Line 90 — a genuine stale reference, and it was ours. This repo and views-faoapi said:

Cross-repo contracts live in PLATFORM-001 (homed in views-appwrite)

PLATFORM-001 was renamed to The Appwrite Seam Contract by views-appwrite#158. The home repo has carried docs/ADRs/platform/appwrite_seam_contract.md and an ADR-011 "naming of cross-repo contracts" since. This repo's own ADR-013 records the rename twice — including Erratum E2, which exists because that same rename broke a URL and "#158 was then closed while four PLATFORM-001 citations" survived. This was a fifth.

views-models already had the corrected wording.

Fixed here by adopting views-models' line verbatim. This repo's copy is now byte-identical to views-models' (098b43be). That reduces divergence rather than adding a version — which corrects the second draft's reasoning that editing our copy would make things worse.

What remains

views-faoapi and views-pipeline-core still name PLATFORM-001 in the sentence that tells contributors where cross-repo contracts live. One line each, adopting views-models'/this repo's wording. Both files are untracked in those repos, so this is a local edit, not a PR.

The "six" is still wrong — it is four — and there is still no named canonical home. Two of the four are ignored, one is tracked, and the sentence says "change this file first and propagate" without saying where first is. With views-models and views-postprocessing now identical and current, the obvious candidate is views-models: it is tracked, so it has history and review, and it was already the only copy carrying the corrected name.

Suggested resolution — a decision, still not mine:

  1. Name views-models as the canonical copy in the text, or say plainly that there is no canonical copy and each repo owns its own.
  2. Correct "six" to "four", or propagate to two more repos and make it true.
  3. Propagate the contract-name fix to views-faoapi and views-pipeline-core.

The two earlier versions of this issue, and why they were wrong

Draft 1 claimed "there are four copies, not six" and listed five repos as having none. Wrong: I grepped a hand-written list of nine repo names instead of the directory. There are 27 directories.

Draft 2 claimed "six copies, five distinct versions" and treated the spread as evidence of serious drift. Wrong in the other direction: it counted views-frames and views-bayesian as divergent copies of this document when they are a different document, and it never diffed the files — so it never discovered that the four real copies differed by two lines, one of them correct.

Both errors are the same mistake the register has recorded repeatedly: a number asserted from a plausible-looking count rather than produced by a command against the actual thing. In an issue about exactly that.

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions