docs: cross-rung contract pointers in README (F5 SLICE-5, #14)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -98,6 +98,39 @@ CI.
|
|||||||
Design: `vscode-cowriting-plugin-content/specs/coauthoring-propose-accept.md`.
|
Design: `vscode-cowriting-plugin-content/specs/coauthoring-propose-accept.md`.
|
||||||
Live smoke: [`docs/MANUAL-SMOKE-F4.md`](docs/MANUAL-SMOKE-F4.md).
|
Live smoke: [`docs/MANUAL-SMOKE-F4.md`](docs/MANUAL-SMOKE-F4.md).
|
||||||
|
|
||||||
|
## F5 — Cross-rung format + round-trip (Feature #14)
|
||||||
|
|
||||||
|
The `.threads/` sidecar is the **published cross-rung contract**: any rung of
|
||||||
|
the ladder (this editor → Gitea substrate → rfc-app) reads and writes the same
|
||||||
|
record per the contract; git push/pull is the transport, no re-homing ever.
|
||||||
|
|
||||||
|
- **Normative contract (INV-14):**
|
||||||
|
`vscode-cowriting-plugin-content/specs/coauthoring-sidecar-contract.md` —
|
||||||
|
format changes land there first, then schema, then code.
|
||||||
|
- **Machine-checkable half:**
|
||||||
|
[`schemas/coauthoring-sidecar.schema.json`](schemas/coauthoring-sidecar.schema.json);
|
||||||
|
validate any sidecar from any rung with
|
||||||
|
`node scripts/validate-sidecar.mjs <file>`. The unit suite validates every
|
||||||
|
serialized artifact — contract drift fails CI.
|
||||||
|
- **Identity crosses rungs:** `Provenance.email` (git's own join key —
|
||||||
|
populated from the workspace git config when available) and
|
||||||
|
`agent.onBehalfOf` (who the machine acted for).
|
||||||
|
- **Writers preserve unknown fields (INV-15):** rewriting a sidecar never
|
||||||
|
destroys another rung's data — unknown keys survive, after known keys,
|
||||||
|
sorted.
|
||||||
|
- **Newer-major sidecars are read-only (INV-16):** the editor renders what it
|
||||||
|
understands, warns once, and writes nothing (the store refuses as a
|
||||||
|
backstop).
|
||||||
|
- **Deterministic merge (INV-17):** `src/mergeArtifacts.ts` — union-by-id,
|
||||||
|
documented tie-breaks, every resolved divergence surfaced in `conflicts`.
|
||||||
|
- **The round-trip is proven, not asserted:**
|
||||||
|
[`scripts/crossrung-reply.mjs`](scripts/crossrung-reply.mjs) is a
|
||||||
|
self-contained conforming foreign writer (the Gitea-rung stand-in); host E2E
|
||||||
|
drives editor-thread → stand-in reply → external-change → the reply renders
|
||||||
|
in the thread.
|
||||||
|
|
||||||
|
Design: `vscode-cowriting-plugin-content/specs/coauthoring-cross-rung-format.md`.
|
||||||
|
|
||||||
## Develop
|
## Develop
|
||||||
|
|
||||||
- `npm run watch` — rebuild on change.
|
- `npm run watch` — rebuild on change.
|
||||||
|
|||||||
Reference in New Issue
Block a user