docs: freshness stamps say what actually backs them - #1728
Merged
Conversation
`docs/README.md` carried `Last reviewed: June 4, 2026` and `docs/feature-inventory.md` carried `最后清点日期:2026-08-07` — two hand-maintained freshness assertions with no producer and nothing checking either one. Neither date is bumped: bumping converts an obviously stale assertion into a plausibly fresh false one. The README stamp entered the file in the single commit that reorganised the tree — a reorganisation, not a review — and no commit ever touched it again, across the six that have maintained the file since. There is no review cadence, reviewer or producer behind it. The header now states the mechanism that does keep the index true, per-change maintenance, and points at `git log` for the record that cannot go stale. The inventory stamp names an event that really happened, the full count-from-`src/` compile in #1052, and it is load-bearing: the 「总览统计(清点时点)」 block is scoped to it and six of nine spot-checked figures have drifted since. It is kept and reframed as an event date, with the overview figures named as a frozen reading that must not be hand-patched to look current. Co-authored-by: Claude
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
os-steve
marked this pull request as ready for review
September 6, 2026 14:14
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1570
What was wrong
Two documents asserted their own freshness with a hand-written date that nothing produced and nothing checked:
⛔ Neither date is bumped. Bumping is the one move that must not happen: a stamp nothing produces is a claim about a review no review backs, and moving it converts an obviously stale assertion into a plausibly fresh false one.
⭐ The card's "only such stamp in the repo" claim is false — and the two did not resolve the same way
The seat note on the card measured the second stamp. This PR confirms both, and the measurement is what separates them.
docs/README.mddocs/feature-inventory.mda09ea91b"docs: reorganize HotCRM documentation", a reorganisation, not a review891aaa18(#1052 / #1055), the full count-from-src/compile that created the filea09ea91b..HEAD)891aaa18..HEAD)## 总览统计(清点时点)is scoped to itdocs/README.md— the pickaxe finds exactly one commit that ever wrote that string, and six commits have maintained the file since without touching it. So the file is maintained; its stamp never was. There is no cadence, no reviewer, no producer. The header now states the mechanism that actually keeps the index true — a PR that adds, moves, retires or renames a document underdocs/updates the tables in the same PR — and points atgit logfor the freshness record that cannot go stale. Reworded in place rather than deleted, following PR #1569 on this same file: "A negative instruction is enforceable by a reader; an absent one is not." All 12 links in the index resolve, so the per-change claim is measured, not aspirational.docs/feature-inventory.md—总览统计(清点时点)is scoped to that date, and those figures have drifted hard since:Six of nine no longer match. The date is the only thing making that block true — remove it and a frozen reading starts reading as a claim about today's tree. So the stamp is kept and reframed, the shape PR #1705 (#1698) landed for the module-split inventory: it now says it is an event date rather than a freshness claim, that rows are maintained incrementally under the file's own 「锚点即真相」 rule, that incremental maintenance does not move the date, and — the
do_not_hand_patchhalf — that hand-editing the overview figures to match today's tree is not a count, it swaps an honest old reading for an unsourced new one.⭐ No deadlock is recreated. The #1698 lesson is that the only permitted action did not exist and the only available action was forbidden, so nothing happened. Every instruction either header now gives is one a maintainer can perform by hand today.
The sweep — re-derived by meaning, not by phrase
The two stamps share a semantics and share nothing lexically, so the English probe could never reach the Chinese one. The population was re-derived across
docs/(30 files) andcontent/docs/(240 files) on three independent axes:20[4-9]andYYYY-MM-DDshapes: 162 lines in 43 files. This is the net that does not depend on vocabulary at all.last reviewed / reviewed / as of / valid as of / up-to-date / freshness / generated / regenerate / measured / maintainedand清点 / 复核 / 审阅 / 最后更新 / 最近更新 / 截至 / 时点 / 盘点 / 核对 / 快照 / 重新实测: 284 lines in 93 files..md/.mdx/.jsonin both trees, the structural signature both known stamps share.date:,updated:,reviewed:,last_updated:) across both trees: zero.Difference set: empty. No third instance of this defect exists. The two known stamps are the whole population.
⭐ Found and classified as NOT this defect
A sweep that reports only its hits cannot be judged for what it missed, so:
docs/STATUS.md:3-9main— it is not a dated snapshot", with its figures pinned bytest/docs-declared-versions.test.ts. A freshness statement with a real producer.content/docs/whats-new.mdx:74CHANGELOG.mdcompiled from.changeset/). The fixed form.docs/architecture/module-split-inventory.json$maintenance/measured_at/$hand_editsblocks — this is the precedent's output (PR #1705), not an instance.docs/architecture/module-split-plan.md:4measured_at.commit— names its referent.docs/archive/**(7 files, 40+ dated lines)docs/archive/README.mdcarries a blanket, accurate disclaimer: "preserved for context only… may contain old object counts, old protocol versions". A frozen tree that says it is frozen.content/docs/administration/sandbox-and-releases.mdx:12(×3 locales)docs/developers/api_reference.md:12,docs/MAINTENANCE.md:33,44,docs/ARCHITECTURE.md×5,docs/DEPLOYMENT.md:95,docs/README.md:66*Supersedes … — 2026-08-31 ruling, item 5.*notes. Historical records of a past removal, not freshness claims.docs/requirements/0001-…md:8(**Raised**: 2026-06-21)content/docs/sales/forecasting.*(28 hits),service/knowledge-base.mdx:8,administration/state-machines.*content/docs/revenue/approvals.*,billing-handoff.*,customization/testing-and-ci.*,guides/files-and-comments.*content/docs/reference/security-and-compliance.mdx:13-14(and its.zh-Hans/.zh-Hanttwins) reads:package.jsonnow pins 17.3.0 —71a34523, "chore(deps): upgrade the ObjectStack platform to 17.3.0 (#1577)", landed 2026-09-04. The measurement stamp itself is a true historical statement; the appended present-tense clause about the current pin has drifted.⛔ Deliberately not fixed here. Editing
17.2.0→17.3.0would assert a re-measurement against 17.3.0 that nobody performed — the identical forbidden move this card rules against, one file over. An honest fix requires actually re-auditing the page's claims against 17.3.0, which is a different card with a different surface (3 locale files). This is drift in a transcribed machine fact (AGENTS.md documentation-discipline rule 5, the #610 / #965 / #977 / #1228 / #1536 lineage), not a producerless freshness stamp.Measurements the card and dispatch flagged as UNVERIFIED
0f478744with exact range syntax: 6 commits touchdocs/README.mdafter the stamp commit (b64c2048,36dc36c0,891aaa18,23dacc9b,72d56d23,7ba260b0). The card's1812a9bd/e2fddae8are pre-squash shas not onmain. And the premise re-read holds: the file is maintained; only its stamp is not — which is precisely why the replacement describes maintenance rather than deleting the line.mainat0f478744, which contains1a21aee2(refactor(views): retire the duplicate SIMPLE layout example from the lead showcase #1718, the LEA-015 row). Every reading ofdocs/feature-inventory.mdabove is taken on that ref.docs/feature-inventory.mdQUO-010/QUO-012 creditcrm_productwith three capabilities that were removed #1536 is CLOSED as completed (2026-09-06T00:37:57Z, PR docs(inventory): drop the crm_product capabilities the catalog no longer has #1619). Its ruling covers rows QUO-010 (:119) and QUO-012 (:121) and its declared file surface was those rows plus a changeset. This PR touches line 5 only, in the header block. No overlap. ⭐ Its 「锚点即真相」 maintenance rule is exactly what the new header now cites as the mechanism that maintains rows between counts.Changeset — derived from precedent
'hotcrm': patch. Derived by checking what every recent commit touching these two exact files used, not by category:docs/README.md:b64c2048(docs(readme): stop ordering the field transcript back into the tree (#1494) #1569) →patchdocs/feature-inventory.md:16705571(docs(inventory): drop the crm_product capabilities the catalog no longer has #1619) →patch;e5de6974(docs: three transcribed machine facts in docs/ become pointers (#1478) #1486, the closest shape —MAINTENANCE.md+feature-inventory.md) →patchdocs/architecture/**design artifacts:36dc36c0(docs(architecture): module-boundary inventory and split plan for the ADR-0130 multi-package artifact (#1448) #1449) andinventory-header-says-what-can-be-done.md(docs(architecture): make the module-split inventory's header true #1705).Both files here sit in the
patchlineage, so this is not one of the 88 empty-frontmatter declarations. Nosrc/changes; the built artifact is identical.No new gate, no new test
2026-08-31 ruling item 3 keeps gate-type mechanisms on the platform. Neither stamp is load-bearing to any guard — measured: zero references to
Last reviewed,最后清点,清点日期orfeature-inventoryanywhere intest/,scripts/,.github/,src/ore2e/.docs/README.mdis read bytest/docs-src-tree-paths.test.ts(TREE_DOCS,TREE_DIAGRAM_DOCS) andtest/docs-role-hierarchy.test.ts; all three readsrc/DIR/paths and a forbidden-term list, none pins the header, and the new text introduces no forbidden spelling. Green either side.content/docs/releases/untouched.CHANGELOG.mdand existing.changeset/*.mdread only.Verification —
pnpm verifyfully green, every stage read from the logVERIFY_EXIT=0. All eight stages ran:The token ratchet reads
src/**/*.tsonly, so a docs-only diff cannot move it — and it did not.Generated by Claude Code