System-contract witness baseline — 2026-08-27

Audited commit: 6660bd2ad0d53938551ac283f60463f3c3d91b8e

Audit boundary: the tracked tree at that commit and a pristine project created from it with commonplace-init. Unrelated source-ingest work in the operator's working tree was outside this audit and is not part of any count below.

Post-audit delta check: commits through 64e84517 changed article, source, and article-workshop content plus quote-verification implementation and tests. They did not touch the manifest, installer, collection validator, promoted skills, command catalogue, or other witness-producing surfaces used below, so the generated classifications and counts remain pinned to the audited commit rather than being silently relabelled as a later audit.

This ledger replaces prose counts from the 2026-08-19 and 2026-08-23 checks. A count is a witness at this commit, not a contract to freeze in a test. Guards should compare declared, discovered, projected, and consumed sets.

Finding classification

Finding Classification at this commit Current witness or disposition
I1 Still-open contradiction Accepted ADR 021 requires four shipped collections, a version marker, and marker-backed refresh. ScaffoldManifest ships three library collections; init writes no marker and preserves every differing existing file. Architecture's former “re-sync” wording is gone, but ADR 021 remains operative.
I2 Still-open contradiction; measured witness changed The pristine projection has 532 missing-link warnings across 181 files and one projection-specific type failure. The old 516 count is stale; the unclosed graph remains the same contradiction.
V1 Still-open contradiction; measured witness changed The promoted validation skill's one-level kb/*/COLLECTION.md loop sees five of eight installed collection contracts and omits all three nested library collections.
I3 Partially repaired edge plus stale witnesses Installed kb/sources/ now has a contract and landing. The generated template no longer says kb/types/ is not a collection. Installed kb/work/ still lacks both, while collection_dirs() and collection-conformance review still exclude the contract-bearing global type collection.
T1 Still-open contradiction; implementation ownership transferred Cross-collection tag routing and unqualified mark wording still disagree with collection-local generation and validation. Design and adoption move to kb/work/tag-contract-convergence/; this workshop retains the original witnesses and closure check.
E1 Still-open contradiction; inventory count changed Native Windows remains supported while promoted procedures retain unpaired POSIX behavior. MANIFEST.promoted_skills now contains ten entries; prose saying nine or “remaining six” is stale.
M1 Still open in one packet; two independent packets resolved after rebaseline Global-note-status and path-valued-type cleanup landed with parsed guards on 2026-08-27. Areas/Topics remains dependent on tag-contract adoption. Snapshot-pointer and text-promotion remain resolved.
C1 Resolved; prose count changed but guard remains sound pyproject.toml and commands.md now expose 22 names each. The exact set-parity test, rather than a frozen count, remains the operative guard.
F1 Resolved Generic freshness acceptance remains withdrawn. The stale active-workshop summary that still called it live must be corrected.
S1 Resolved ADR 072's tracked-ingest authority and whole-file snapshot immutability remain aligned.

No new independent contradiction was confirmed. The new installed-reference type failure belongs to I2's already-open projection-integrity scope.

Generated install witnesses

The manifest seeds eight collection contracts in a pristine project:

kb/commonplace/instructions/COLLECTION.md
kb/commonplace/notes/COLLECTION.md
kb/commonplace/reference/COLLECTION.md
kb/instructions/COLLECTION.md
kb/notes/COLLECTION.md
kb/reference/COLLECTION.md
kb/sources/COLLECTION.md
kb/types/COLLECTION.md

The validation skill's one-level glob sees the five top-level contracts and misses the three under kb/commonplace/. The current recursive collection_dirs() sees seven because it excludes every path containing a types component. The generated routing table names kb/work/ as a writable collection, but the scaffold creates only its directory.

Pristine installed validation produced:

Installed surface Files with missing-link warnings Missing-link warnings Failures
kb/commonplace/notes 146 462 0
kb/commonplace/reference 30 55 1
kb/commonplace/instructions 1 1 0
kb/types 4 14 0
Total 181 532 1

The failure is the installed copy of proposals/semantic-contract-for-tags-and-tag-heads.md: its repository-relative collection-local type pointer remains kb/reference/types/design-proposal.md instead of projecting to kb/commonplace/reference/types/design-proposal.md. Missing links remain warnings, so process exit alone cannot establish product integrity.

Resolved against the corresponding source artifact, missing targets divide as follows:

Intended target class Missing edges
kb/sources/ 335
kb/agent-memory-systems/ 101
kb/types/ 34
kb/agentic-systems/ 31
kb/notes/ 9
kb/reference/ 5
src/ 5
kb/articles/ 3
kb/reports/ 3
AGENTS.md 2
kb/tasks/ 2
kb/log.md 1
kb/work/ 1

Manifest-derived inventories

  • ScaffoldManifest.trees projects three library collections: notes, reference, and instructions.
  • ScaffoldManifest.files now seeds the sources contract and landing; it has no corresponding work entries.
  • MANIFEST.promoted_skills contains ten skills. E1 must derive its audit set from that tuple rather than copy a number into the implementation.
  • [project.scripts] publishes 22 commonplace-* names and commands.md has 22 unique matching headings. C1's set-equality guard remains valid.

Rebaseline rule

Every open plan links this ledger and names the audited commit. Before a plan starts implementation after HEAD changes, refresh only its executable witnesses and classify changes as: still open, partially repaired, stale, newly observed, or count-only drift under a structural guard. Do not silently carry a dated number forward.