From e534cb97e11889c2697becf214bf2ed4b90eb7cd Mon Sep 17 00:00:00 2001 From: John Morrissey <544926+tachyon-beep@users.noreply.github.com> Date: Thu, 25 Jun 2026 14:46:59 +1000 Subject: [PATCH] docs(federation): sync filigree entity-associations fixture to v3 (warpline anchors) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Mirror the canonical Filigree contract fixture (shipped in filigree 3.1.0): each reverse-lookup row now also carries the bound issue's lifecycle facts (claimed_at, closed_at, status, status_category) and the per-issue commit anchors (claim_commit, close_commit). Additive only — our consumer (parse_entity_associations_response) has no serde deny_unknown_fields and ignores them; parses_canonical_filigree_entity_association_fixture still passes. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../filigree-entity-associations-response.json | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/docs/federation/fixtures/filigree-entity-associations-response.json b/docs/federation/fixtures/filigree-entity-associations-response.json index 54dbf341..387979a5 100644 --- a/docs/federation/fixtures/filigree-entity-associations-response.json +++ b/docs/federation/fixtures/filigree-entity-associations-response.json @@ -2,7 +2,7 @@ "_meta": { "contract": "filigree-entity-associations-response", "endpoint": "GET /api/entity-associations?entity_id={entity_id}", - "fixture_version": 1, + "fixture_version": 3, "stability": "normative", "authority": "Weft G15 / ADR-029 EntityAssociation producer-consumer conformance", "producer": "Filigree dashboard_routes.entities.api_list_associations_by_entity", @@ -12,8 +12,8 @@ "loomweave/docs/federation/fixtures/filigree-entity-associations-response.json" ], "verification": "Filigree: uv run pytest tests/api/test_entity_associations.py -q; Loomweave: cargo test -p loomweave-federation filigree::tests::parses_canonical_filigree_entity_association_fixture", - "updated": "2026-06-13", - "description": "Canonical live Filigree reverse-lookup response for EntityAssociation rows. The producer test emits this body through Filigree's HTTP route; the consumer test deserializes the same body in Loomweave." + "updated": "2026-06-24", + "description": "Canonical live Filigree reverse-lookup response for EntityAssociation rows. The producer test emits this body through Filigree's HTTP route; the consumer test deserializes the same body in Loomweave. v2 (warpline seam): each row carries the bound issue's lifecycle facts (claimed_at, closed_at, status, status_category) for warpline's 'changed since claimed/closed' correlation; all four are null for an orphaned binding. v3 (warpline commit-anchor seam, contract B): each row also carries the opaque per-issue commit anchors (claim_commit, close_commit) — the caller-supplied branch@sha the issue was claimed/closed at, stored verbatim and never parsed by Filigree; null for an orphaned binding or when no commit was supplied (warpline then falls back to the timestamp). Additive — Loomweave's consumer ignores unknown fields (no serde deny_unknown_fields), so a v1/v2 consumer still parses v3. The loomweave repo-local copy should be synced for documentation parity (non-breaking)." }, "shape_decl": { "kind": "filigree-entity-associations-fixture-shapes", @@ -54,7 +54,13 @@ "freshness_status": "unknown", "signature": null, "signoff_seq": null, - "signed_content_hash": null + "signed_content_hash": null, + "claimed_at": null, + "closed_at": null, + "claim_commit": null, + "close_commit": null, + "status": "open", + "status_category": "open" } ] }