feat(provenance): layered ProvenanceEnvelope + effective() leaf (WP-0007 T1)

Dependency-free leaf rail: ProvenanceEnvelope + SpanProvenanceDelta + effective()
(page envelope ⊕ span delta; zero-cost inheritance when uniform). Liveness/
Staleness/OverlayState enums. 6 tests green. (blueprint §7.3, §11)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-15 08:55:35 +02:00
parent 3b4f10a349
commit aca9bf30f9
3 changed files with 198 additions and 1 deletions

View File

@@ -11,6 +11,7 @@ created: "2026-06-15"
updated: "2026-06-15"
depends_on:
- SHARD-WP-0002
state_hub_workstream_id: "d551fba1-9c48-4841-a9a5-a9f190f73a60"
---
# SHARD-WP-0007 — Foundation implementation
@@ -41,8 +42,9 @@ projection, authz beyond the null provider, a network API. Those are later workp
```task
id: SHARD-WP-0007-T1
status: todo
status: done
priority: high
state_hub_task_id: "be8f9efe-cfba-46d0-be91-f9b6e87bc0d2"
```
`src/shard_wiki/provenance/`: the `ProvenanceEnvelope` value type (source_shard, source_rev?,
@@ -56,6 +58,7 @@ delta). Frozen dataclasses, no tree deps. Tests: ⊕ identity (no delta), overri
id: SHARD-WP-0007-T2
status: todo
priority: high
state_hub_task_id: "780ad01f-c3e1-4b49-9ae9-60e0324178a7"
```
`src/shard_wiki/model/`: `Identity` (shard-scoped stable handle, value-equal, survives edits),
@@ -70,6 +73,7 @@ identity stability vs content change; profile validation accepts/rejects.
id: SHARD-WP-0007-T3
status: todo
priority: high
state_hub_task_id: "f6e35ddb-ab1e-406a-82f8-563244455f6b"
```
`src/shard_wiki/adapters/`: `AdapterContract` (a `Protocol`/ABC with the operation verbs;
@@ -84,6 +88,7 @@ git-or-none history). Imports `model/`, `provenance/`. Tests: read a temp folder
id: SHARD-WP-0007-T4
status: todo
priority: medium
state_hub_task_id: "12d7fb8d-3842-4142-a462-9d1e6efe58bd"
```
`src/shard_wiki/adapters/conformance.py`: a battery that, given a binding, **verifies declared
@@ -98,6 +103,7 @@ lying stub fails with a precise diff.
id: SHARD-WP-0007-T5
status: todo
priority: high
state_hub_task_id: "c87b1896-59a5-4cde-a292-1086caebd085"
```
`src/shard_wiki/coordination/`: `DecisionLog` — append-only, **totally ordered per space**
@@ -112,6 +118,7 @@ append→ordered read; fold reproduces current state; read-your-writes.
id: SHARD-WP-0007-T6
status: todo
priority: high
state_hub_task_id: "fed38b60-dc0b-40cf-93e9-ab0260aa3ff9"
```
`src/shard_wiki/policy/` (leaf: presets + `resolve()` for canonical-source = chorus default);
@@ -126,6 +133,7 @@ the same name → chorus; alias from the log redirects resolution.
id: SHARD-WP-0007-T7
status: todo
priority: medium
state_hub_task_id: "86c0b255-e373-460d-859d-a39bf6ea4ffb"
```
A thin `shard_wiki` entry (attach shard, resolve, read) tying the slice together; an