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.treesprojects three library collections: notes, reference, and instructions.ScaffoldManifest.filesnow seeds the sources contract and landing; it has no corresponding work entries.MANIFEST.promoted_skillscontains ten skills. E1 must derive its audit set from that tuple rather than copy a number into the implementation.[project.scripts]publishes 22commonplace-*names andcommands.mdhas 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.