Skip to content

Commit 89f9dc7

Browse files
alicodingclaude
andcommitted
docs: goal 0052 slice-1 acceptance recorded -- 5 of 8 boxes met
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FJ8wStsHyu7XPLTspNjMnQ
1 parent b111547 commit 89f9dc7

1 file changed

Lines changed: 32 additions & 16 deletions

File tree

docs/goals/0052-contract-surface.md

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -98,27 +98,43 @@ the contract travels as files/clipboard/MCP, period (SPEC §1.1).
9898

9999
## Acceptance (checkable)
100100

101-
- [ ] Every importable envelope (all seven families) has a generated
101+
- [x] Every importable envelope (all seven families) has a generated
102102
schema; CI fails when types change without regeneration; a
103-
hand-edit fails the same check.
104-
- [ ] The symmetry audit is recorded in this file: every import
105-
surface listed with its UI-reachable export confirmed (or the
106-
gap fixed in-goal).
107-
- [ ] Exports carry a stable schema id; the id's evolution rules are
108-
recorded in the same ADR that goal 0046 consumes (one
109-
semantics, cross-referenced).
110-
- [ ] The export-id ADR is written and implemented; a far-side-shaped
111-
round trip (export → modify → reimport-as-update) passes as a
112-
test through the real import path.
113-
- [ ] State manifest readable via MCP and present in exports; values
114-
match the build (asserted in test against build info).
103+
hand-edit fails the same check — slice 1 (ADR-0036):
104+
`internal/contract`, invopop/jsonschema, drift gate is
105+
`TestContractSchemas_MatchCommitted` (regenerate-and-compare, so
106+
local and CI enforce identically).
107+
- [x] The symmetry audit is recorded in this file: all seven
108+
families verified bidirectional 2026-08-14 (inventory pass) —
109+
every family's export AND import reachable from its own page's
110+
row menu / file picker; no gaps found, nothing to fix.
111+
- [x] Exports carry a stable schema id (`mill://schema/<family>/v1`
112+
in every envelope's `schema` field); evolution rules
113+
(additive-optional within a major, breaking changes bump) are
114+
ADR-0036 Decision 2 — the single change-classification
115+
vocabulary goal 0046's entity-field ADR consumes.
116+
- [x] The export-id ADR is written and implemented (ADR-0036
117+
Decision 3; the compositionservice_export.go open question is
118+
resolved and its comment updated): all seven exports emit `id`,
119+
one uniform import rule everywhere, update-not-create confirmed
120+
by the committed round-trip test through the real
121+
clipboard-apply confirm path (prior state snapshotted).
122+
Re-import of a known id now updates in place behind a
123+
confirm-first dialog on every file-picker surface.
124+
- [ ] State manifest readable via MCP; values match the build
125+
(asserted in test against build info). AMENDED by ADR-0036
126+
Decision 4: NOT stamped into entity exports — that would churn
127+
every exported file on every app upgrade, breaking the
128+
byte-identical-when-unchanged property; the envelope's schema id
129+
is the per-export versioning, the manifest travels beside the
130+
data (mill://manifest + the root document). Slice 2.
115131
- [ ] A seeded workflow demonstrates the evidence-receipt node
116132
end-to-end (seeds ARE the proof).
117133
- [ ] The root contract document is generated, committed,
118134
drift-checked, exposed as an MCP resource, and exportable as
119135
one file; node discovery supports type/metadata filtering; both
120136
forms derive from the same registry code paths (asserted by a
121137
test comparing them).
122-
- [ ] SPEC.md gains the contract-surface section (status LOCKED for
123-
the format decision, with the rejected-formats reasoning
124-
pointed at this file).
138+
- [x] SPEC.md gains the contract-surface section — §9.6, LOCKED for
139+
the slice-1 mechanics, rejected-formats reasoning pointed at
140+
this file; remaining slices named there as not-yet-built.

0 commit comments

Comments
 (0)