{ "artifacts": { "entities/ambiguities.jsonl": "{\"schema_version\": 1, \"ambiguity_id\": \"amb_04374a01e8579a661fb1d1aa\", \"scope\": {\"kind\": \"journal\"}, \"normalized_query\": \"alice\", \"original_query\": \"Alice\", \"latest_query\": \"Alice\", \"first_seen\": \"2026-08-04T00:00:00Z\", \"last_seen\": \"2026-08-04T00:00:00Z\", \"observed_tier\": 5, \"occurrence_count\": 1, \"status\": \"open\", \"ranked_candidates\": [{\"id\": \"alice_chen\", \"name\": \"Alice Chen\", \"tier\": 5, \"score\": 92.3076923076923}, {\"id\": \"alice_chan\", \"name\": \"Alice Chan\", \"tier\": 5, \"score\": 90.0}], \"origins\": [{\"lane\": \"segment\", \"day\": \"20260804\", \"segment_id\": \"s1\"}], \"origin_keys\": [\"{\\\"day\\\":\\\"20260804\\\",\\\"lane\\\":\\\"segment\\\",\\\"segment_id\\\":\\\"s1\\\"}\"], \"audit\": {\"prior_choices\": []}}\n{\"schema_version\": 1, \"ambiguity_id\": \"amb_7ffaa5cbbfc8319f825215a2\", \"scope\": {\"kind\": \"facet\", \"facet\": \"work\"}, \"normalized_query\": \"strasse\", \"original_query\": \"Stra\u00dfe\", \"latest_query\": \"Stra\u00dfe\", \"first_seen\": \"2026-08-04T00:00:00Z\", \"last_seen\": \"2026-08-04T00:00:00Z\", \"observed_tier\": 8, \"occurrence_count\": 1, \"status\": \"resolved\", \"ranked_candidates\": [{\"id\": \"alice_chen\", \"name\": \"Alice Chen\", \"tier\": 8, \"score\": 92.3076923076923}, {\"id\": \"alice_chan\", \"name\": \"Alice Chan\", \"tier\": 8, \"score\": 90.0}], \"origins\": [{\"lane\": \"import\", \"source_id\": \"Stra\u00dfe Verlag\", \"field\": \"author\"}], \"origin_keys\": [\"{\\\"field\\\":\\\"author\\\",\\\"lane\\\":\\\"import\\\",\\\"source_id\\\":\\\"Stra\\\\u00dfe Verlag\\\"}\"], \"audit\": {\"prior_choices\": []}, \"resolved_entity_id\": \"strasse_handels_gmbh\", \"resolved_at\": \"2026-08-04T00:00:00Z\"}\n", "entities/{id}/entity.json": "{\n \"id\": \"alice_johnson\",\n \"name\": \"Alice Johnson\",\n \"type\": \"Person\",\n \"created_at\": 1785889922582,\n \"aka\": [\n \"Ali\",\n \"AJ\"\n ],\n \"emails\": [\n \"alice@example.com\"\n ]\n}\n", "entities/{id}/entity.json (unicode)": "{\n \"id\": \"jose_garcia\",\n \"name\": \"Jos\u00e9 Garc\u00eda\",\n \"type\": \"Person\",\n \"created_at\": 1785889922583,\n \"description\": \"raw UTF-8 on disk, never \\\\u escapes\"\n}\n", "entities/{id}/history/events/{seq}-{version_id}.json": "{\n \"actor\": null,\n \"caller\": null,\n \"entity_id\": \"alice_johnson\",\n \"identity_after\": {\n \"aka\": [\n \"Ali\",\n \"AJ\"\n ],\n \"created_at\": 1785889922582,\n \"emails\": [\n \"alice@example.com\"\n ],\n \"id\": \"alice_johnson\",\n \"name\": \"Alice Johnson\",\n \"type\": \"Person\"\n },\n \"identity_before\": null,\n \"kind\": \"create\",\n \"operation\": {},\n \"schema_version\": 1,\n \"seq\": 1,\n \"ts\": \"2026-08-05T00:32:02.582506Z\",\n \"version_id\": \"vh_49d7adcbf786461cb11c00081afa9780\"\n}\n" }, "crash_boundaries": { "case_count": 4, "cases": [ { "change_survives": false, "identity_on_disk": "before", "note": "interrupted before anything was staged", "reconciles": true, "staged_events": 0, "visible_events_after": 0 }, { "change_survives": false, "detail": "the staged event is discarded \u2014 intent without commit", "identity_on_disk": "before", "note": "interrupted after staging, before the identity write", "reconciles": true, "staged_events": 1, "visible_events_after": 0 }, { "change_survives": true, "detail": "the staged event is published \u2014 the commit already happened", "identity_on_disk": "after", "note": "interrupted after the identity write, before publishing", "reconciles": true, "staged_events": 1, "visible_events_after": 1 }, { "change_survives": true, "identity_on_disk": "after", "note": "all three steps completed", "reconciles": true, "staged_events": 0, "visible_events_after": 1 } ], "note": "The write protocol is prepare \u2192 write identity \u2192 publish. Every interruption point reconciles cleanly, and which ones preserve the change identifies the commit point: the IDENTITY WRITE. \u26d4 The order is therefore not negotiable \u2014 publishing first would durably record a change that did not happen, and writing the identity last would lose committed changes on every interruption." }, "generated_by": "make core-fixtures", "identity_map": { "case_count": 5, "cases": [ { "does_not_resolve": [ "alpha" ], "note": "written identity wins over the directory it sits in", "reference_would_resolve": { "alpha": "alpha" }, "resolves": { "written_alpha": "alpha" }, "store": { "alpha": { "created_at": 1785889922582, "id": "written_alpha", "name": "Alpha", "type": "Person" } } }, { "does_not_resolve": [], "note": "no written identity \u2014 the directory name stands in. \u26a0 This is the ONLY case where a directory name resolves anything, and it does not retire when the repair lands: a restored backup arrives un-repaired, so this path is permanent.", "reference_would_resolve": { "legacy": "legacy" }, "resolves": { "legacy": "legacy" }, "store": { "legacy": { "created_at": 1785889922582, "name": "Legacy", "type": "Person" } } }, { "does_not_resolve": [ "alpha" ], "entry_count": 3, "note": "mixed store, no collision \u2014 one entry per entity", "resolves": { "gamma": "gamma", "legacy": "legacy", "written_alpha": "alpha" }, "store": { "alpha": { "created_at": 1785889922582, "id": "written_alpha", "name": "Alpha", "type": "Person" }, "gamma": { "created_at": 1785889922582, "id": "gamma", "name": "Gamma", "type": "Person" }, "legacy": { "created_at": 1785889922582, "name": "Legacy", "type": "Person" } } }, { "entry_count": 1, "loser": "beta", "loser_obligation": "\u26d4 The loser is RETURNED, in the result. A warning log is not surfacing \u2014 it is the silent drop this boundary exists to prevent, wearing a different coat. An entity that is merely old must not become unreachable without the caller learning of it.", "note": "\ud83d\udd34 collision \u2014 one entity's WRITTEN identity is another's DIRECTORY name. Two entities, one key, by construction: the map holds one fewer entry than the store has entities.", "resolves": { "beta": "alpha" }, "store": { "alpha": { "created_at": 1785889922582, "id": "beta", "name": "Alpha", "type": "Person" }, "beta": { "created_at": 1785889922582, "name": "Beta", "type": "Person" } }, "store_entity_count": 2, "winner": "alpha", "winner_rule": "the entity whose WRITTEN identity claims the key wins, consistent with the written value being authoritative" }, { "entry_count": 0, "loser": "broken", "loser_obligation": "surfaced in the result, not dropped", "note": "a malformed identity file. \u26a0 The reference swallows the parse error and drops the entity with no trace, which is defensible for a fail-open read and indefensible for a map that decides identity.", "reference_behaviour": "dropped silently", "resolves": {}, "store": { "broken": "<<>>" } } ], "note": "\u26d4 NOT reference behaviour \u2014 the reference resolves identity from the directory name everywhere and cannot produce this oracle. These cases SPECIFY the rebuild, and each records what the reference would answer so the difference is legible." }, "identity_repair": { "case_count": 3, "cases": [ { "after_repair": { "aka": [ "Ali", "AJ" ], "created_at": 1785889922582, "emails": [ "alice@example.com" ], "id": "alice_johnson", "name": "Alice Johnson", "type": "Person" }, "before_repair": { "aka": [ "Ali", "AJ" ], "created_at": 1785889922582, "emails": [ "alice@example.com" ], "name": "Alice Johnson", "type": "Person" }, "entity_dir": "alice_johnson", "note": "no identity written \u2014 the real population", "reachable": true }, { "after_repair": { "aka": [ "Ali", "AJ" ], "created_at": 1785889922582, "emails": [ "alice@example.com" ], "id": "alice_johnson", "name": "Alice Johnson", "type": "Person" }, "before_repair": { "aka": [ "Ali", "AJ" ], "created_at": 1785889922582, "emails": [ "alice@example.com" ], "id": "some_other_identity", "name": "Alice Johnson", "type": "Person" }, "entity_dir": "alice_johnson", "guards": "\u26d4 The repair is ONE-SHOT, guarded by a durable completion marker. \u26a0 'Idempotent' is true only WITHIN the migration, so an interrupted run can resume; it is NOT a licence to re-run afterwards, which is destructive. \u26d4 And the repair refuses any entity carrying a staged prepared event, or reconciles it first \u2014 it must never rewrite an identity out from under a pending comparison.", "hazard": "\ud83d\udd34 This branch rewrites the exact field the reconciliation comparison keys on. Once a reader resolves identity from the WRITTEN value, overwriting it changes that entity's effective identity \u2014 so an entity carrying a staged prepared event whose snapshots record the written value reconciles cleanly BEFORE the repair and is permanently unmutatable AFTER it. The repair becomes the thing that bricks.", "invariant": "The repair may never change an entity's EFFECTIVE identity: the resolved map before and after must be equal.", "note": "identity disagrees with the directory \u2014 \ud83d\udd34 the DANGEROUS branch", "reachable_in_reference": false }, { "after_repair": { "aka": [ "Ali", "AJ" ], "created_at": 1785889922582, "emails": [ "alice@example.com" ], "id": "alice_johnson", "name": "Alice Johnson", "type": "Person" }, "before_repair": { "aka": [ "Ali", "AJ" ], "created_at": 1785889922582, "emails": [ "alice@example.com" ], "id": "alice_johnson", "name": "Alice Johnson", "type": "Person" }, "entity_dir": "alice_johnson", "note": "already correct \u2014 the repair is a no-op, and idempotent", "reachable": true } ], "note": "\u26d4 NOT oracle cases \u2014 the reference has no repair. This is the one-time capture that makes the written identity authoritative: for each entity, the identity in force is its DIRECTORY NAME, and the repair writes that into the file. Add it when absent, overwrite it when it disagrees, leave it when it already matches. Idempotent, so an interrupted run resumes by rerunning.", "ordering": "\ud83d\udd34 The repair runs BEFORE the written identity is authoritative. Inverted, a record with no written identity resolves to nothing.", "reader_obligation": "\u26a0 Read-compat does not retire when the repair completes. A restored backup arrives un-repaired, so the fallback to the directory name is permanent, not transitional." }, "inputs": { "ambiguity_rows": [ { "ambiguity_id": "amb_04374a01e8579a661fb1d1aa", "audit": { "prior_choices": [] }, "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Alice", "normalized_query": "alice", "observed_tier": 5, "occurrence_count": 1, "origin_keys": [ "{\"day\":\"20260804\",\"lane\":\"segment\",\"segment_id\":\"s1\"}" ], "original_query": "Alice", "origins": [ { "day": "20260804", "lane": "segment", "segment_id": "s1" } ], "ranked_candidates": [ { "id": "alice_chen", "name": "Alice Chen", "score": 92.3076923076923, "tier": 5 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 5 } ], "schema_version": 1, "scope": { "kind": "journal" }, "status": "open" }, { "ambiguity_id": "amb_7ffaa5cbbfc8319f825215a2", "audit": { "prior_choices": [] }, "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Stra\u00dfe", "normalized_query": "strasse", "observed_tier": 8, "occurrence_count": 1, "origin_keys": [ "{\"field\":\"author\",\"lane\":\"import\",\"source_id\":\"Stra\\u00dfe Verlag\"}" ], "original_query": "Stra\u00dfe", "origins": [ { "field": "author", "lane": "import", "source_id": "Stra\u00dfe Verlag" } ], "ranked_candidates": [ { "id": "alice_chen", "name": "Alice Chen", "score": 92.3076923076923, "tier": 8 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 8 } ], "resolved_at": "2026-08-04T00:00:00Z", "resolved_entity_id": "strasse_handels_gmbh", "schema_version": 1, "scope": { "facet": "work", "kind": "facet" }, "status": "resolved" } ], "history_event": { "actor": null, "caller": null, "entity_id": "alice_johnson", "identity_after": { "aka": [ "Ali", "AJ" ], "created_at": 1785889922582, "emails": [ "alice@example.com" ], "id": "alice_johnson", "name": "Alice Johnson", "type": "Person" }, "identity_before": null, "kind": "create", "operation": {}, "schema_version": 1, "seq": 1, "ts": "2026-08-05T00:32:02.582506Z", "version_id": "vh_49d7adcbf786461cb11c00081afa9780" }, "identity": { "aka": [ "Ali", "AJ" ], "created_at": 1785889922582, "emails": [ "alice@example.com" ], "id": "alice_johnson", "name": "Alice Johnson", "type": "Person" }, "identity_unicode": { "created_at": 1785889922583, "description": "raw UTF-8 on disk, never \\u escapes", "id": "jose_garcia", "name": "Jos\u00e9 Garc\u00eda", "type": "Person" } }, "inputs_note": "\u26a0 These are the VALUES that produced the artifacts, and their key order is NOT the artifacts' key order \u2014 this whole file is serialised with sorted keys, which normalises it away. The identity file and the ambiguity rows preserve INSERTION order on disk, so re-serialising an input from here yields alphabetical keys and will not match the artifact bytes. \u26d4 Do not read that as a corpus defect. For a byte comparison the ARTIFACT is its own oracle: parse it order-preservingly, re-serialise, compare. These inputs are for semantic assertions.", "negative": { "ambiguity_rows": [ { "refusal": "unsupported or missing schema_version", "row": { "ambiguity_id": "amb_04374a01e8579a661fb1d1aa", "audit": { "prior_choices": [] }, "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Alice", "normalized_query": "alice", "observed_tier": 5, "occurrence_count": 1, "origin_keys": [ "{\"day\":\"20260804\",\"lane\":\"segment\",\"segment_id\":\"s1\"}" ], "original_query": "Alice", "origins": [ { "day": "20260804", "lane": "segment", "segment_id": "s1" } ], "ranked_candidates": [ { "id": "alice_chen", "name": "Alice Chen", "score": 92.3076923076923, "tier": 5 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 5 } ], "scope": { "kind": "journal" }, "status": "open" }, "rule": "schema_version is required" }, { "refusal": "unsupported or missing schema_version", "row": { "ambiguity_id": "amb_04374a01e8579a661fb1d1aa", "audit": { "prior_choices": [] }, "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Alice", "normalized_query": "alice", "observed_tier": 5, "occurrence_count": 1, "origin_keys": [ "{\"day\":\"20260804\",\"lane\":\"segment\",\"segment_id\":\"s1\"}" ], "original_query": "Alice", "origins": [ { "day": "20260804", "lane": "segment", "segment_id": "s1" } ], "ranked_candidates": [ { "id": "alice_chen", "name": "Alice Chen", "score": 92.3076923076923, "tier": 5 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 5 } ], "schema_version": 99, "scope": { "kind": "journal" }, "status": "open" }, "rule": "schema_version must match" }, { "refusal": "unsupported or missing schema_version", "row": { "ambiguity_id": "amb_04374a01e8579a661fb1d1aa", "audit": { "prior_choices": [] }, "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Alice", "normalized_query": "alice", "observed_tier": 5, "occurrence_count": 1, "origin_keys": [ "{\"day\":\"20260804\",\"lane\":\"segment\",\"segment_id\":\"s1\"}" ], "original_query": "Alice", "origins": [ { "day": "20260804", "lane": "segment", "segment_id": "s1" } ], "ranked_candidates": [ { "id": "alice_chen", "name": "Alice Chen", "score": 92.3076923076923, "tier": 5 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 5 } ], "schema_version": true, "scope": { "kind": "journal" }, "status": "open" }, "rule": "a bool is not a version" }, { "refusal": "missing ambiguity_id", "row": { "audit": { "prior_choices": [] }, "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Alice", "normalized_query": "alice", "observed_tier": 5, "occurrence_count": 1, "origin_keys": [ "{\"day\":\"20260804\",\"lane\":\"segment\",\"segment_id\":\"s1\"}" ], "original_query": "Alice", "origins": [ { "day": "20260804", "lane": "segment", "segment_id": "s1" } ], "ranked_candidates": [ { "id": "alice_chen", "name": "Alice Chen", "score": 92.3076923076923, "tier": 5 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 5 } ], "schema_version": 1, "scope": { "kind": "journal" }, "status": "open" }, "rule": "ambiguity_id is required" }, { "refusal": "ambiguity_id does not match scope/query", "row": { "ambiguity_id": "amb_wrong", "audit": { "prior_choices": [] }, "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Alice", "normalized_query": "alice", "observed_tier": 5, "occurrence_count": 1, "origin_keys": [ "{\"day\":\"20260804\",\"lane\":\"segment\",\"segment_id\":\"s1\"}" ], "original_query": "Alice", "origins": [ { "day": "20260804", "lane": "segment", "segment_id": "s1" } ], "ranked_candidates": [ { "id": "alice_chen", "name": "Alice Chen", "score": 92.3076923076923, "tier": 5 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 5 } ], "schema_version": 1, "scope": { "kind": "journal" }, "status": "open" }, "rule": "ambiguity_id must equal the recomputed scope|query digest" }, { "refusal": "scope is not an object", "row": { "ambiguity_id": "amb_04374a01e8579a661fb1d1aa", "audit": { "prior_choices": [] }, "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Alice", "normalized_query": "alice", "observed_tier": 5, "occurrence_count": 1, "origin_keys": [ "{\"day\":\"20260804\",\"lane\":\"segment\",\"segment_id\":\"s1\"}" ], "original_query": "Alice", "origins": [ { "day": "20260804", "lane": "segment", "segment_id": "s1" } ], "ranked_candidates": [ { "id": "alice_chen", "name": "Alice Chen", "score": 92.3076923076923, "tier": 5 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 5 } ], "schema_version": 1, "scope": "journal", "status": "open" }, "rule": "scope must be an object" }, { "refusal": "scope has an unknown kind", "row": { "ambiguity_id": "amb_04374a01e8579a661fb1d1aa", "audit": { "prior_choices": [] }, "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Alice", "normalized_query": "alice", "observed_tier": 5, "occurrence_count": 1, "origin_keys": [ "{\"day\":\"20260804\",\"lane\":\"segment\",\"segment_id\":\"s1\"}" ], "original_query": "Alice", "origins": [ { "day": "20260804", "lane": "segment", "segment_id": "s1" } ], "ranked_candidates": [ { "id": "alice_chen", "name": "Alice Chen", "score": 92.3076923076923, "tier": 5 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 5 } ], "schema_version": 1, "scope": { "kind": "elsewhere" }, "status": "open" }, "rule": "scope kind must be journal or facet" }, { "refusal": "journal scope includes a facet", "row": { "ambiguity_id": "amb_04374a01e8579a661fb1d1aa", "audit": { "prior_choices": [] }, "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Alice", "normalized_query": "alice", "observed_tier": 5, "occurrence_count": 1, "origin_keys": [ "{\"day\":\"20260804\",\"lane\":\"segment\",\"segment_id\":\"s1\"}" ], "original_query": "Alice", "origins": [ { "day": "20260804", "lane": "segment", "segment_id": "s1" } ], "ranked_candidates": [ { "id": "alice_chen", "name": "Alice Chen", "score": 92.3076923076923, "tier": 5 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 5 } ], "schema_version": 1, "scope": { "facet": "work", "kind": "journal" }, "status": "open" }, "rule": "a journal scope carries no facet" }, { "refusal": "facet scope has no facet", "row": { "ambiguity_id": "amb_04374a01e8579a661fb1d1aa", "audit": { "prior_choices": [] }, "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Alice", "normalized_query": "alice", "observed_tier": 5, "occurrence_count": 1, "origin_keys": [ "{\"day\":\"20260804\",\"lane\":\"segment\",\"segment_id\":\"s1\"}" ], "original_query": "Alice", "origins": [ { "day": "20260804", "lane": "segment", "segment_id": "s1" } ], "ranked_candidates": [ { "id": "alice_chen", "name": "Alice Chen", "score": 92.3076923076923, "tier": 5 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 5 } ], "schema_version": 1, "scope": { "kind": "facet" }, "status": "open" }, "rule": "a facet scope requires a facet" }, { "refusal": "missing normalized_query", "row": { "ambiguity_id": "amb_04374a01e8579a661fb1d1aa", "audit": { "prior_choices": [] }, "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Alice", "normalized_query": "", "observed_tier": 5, "occurrence_count": 1, "origin_keys": [ "{\"day\":\"20260804\",\"lane\":\"segment\",\"segment_id\":\"s1\"}" ], "original_query": "Alice", "origins": [ { "day": "20260804", "lane": "segment", "segment_id": "s1" } ], "ranked_candidates": [ { "id": "alice_chen", "name": "Alice Chen", "score": 92.3076923076923, "tier": 5 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 5 } ], "schema_version": 1, "scope": { "kind": "journal" }, "status": "open" }, "rule": "normalized_query must be non-empty" }, { "refusal": "missing original_query", "row": { "ambiguity_id": "amb_04374a01e8579a661fb1d1aa", "audit": { "prior_choices": [] }, "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Alice", "normalized_query": "alice", "observed_tier": 5, "occurrence_count": 1, "origin_keys": [ "{\"day\":\"20260804\",\"lane\":\"segment\",\"segment_id\":\"s1\"}" ], "origins": [ { "day": "20260804", "lane": "segment", "segment_id": "s1" } ], "ranked_candidates": [ { "id": "alice_chen", "name": "Alice Chen", "score": 92.3076923076923, "tier": 5 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 5 } ], "schema_version": 1, "scope": { "kind": "journal" }, "status": "open" }, "rule": "original_query is required" }, { "refusal": "observed_tier is not a low-confidence tier", "row": { "ambiguity_id": "amb_04374a01e8579a661fb1d1aa", "audit": { "prior_choices": [] }, "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Alice", "normalized_query": "alice", "observed_tier": 4, "occurrence_count": 1, "origin_keys": [ "{\"day\":\"20260804\",\"lane\":\"segment\",\"segment_id\":\"s1\"}" ], "original_query": "Alice", "origins": [ { "day": "20260804", "lane": "segment", "segment_id": "s1" } ], "ranked_candidates": [ { "id": "alice_chen", "name": "Alice Chen", "score": 92.3076923076923, "tier": 5 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 5 } ], "schema_version": 1, "scope": { "kind": "journal" }, "status": "open" }, "rule": "observed_tier is one of the low-confidence tiers 5-8" }, { "refusal": "status is not open or resolved", "row": { "ambiguity_id": "amb_04374a01e8579a661fb1d1aa", "audit": { "prior_choices": [] }, "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Alice", "normalized_query": "alice", "observed_tier": 5, "occurrence_count": 1, "origin_keys": [ "{\"day\":\"20260804\",\"lane\":\"segment\",\"segment_id\":\"s1\"}" ], "original_query": "Alice", "origins": [ { "day": "20260804", "lane": "segment", "segment_id": "s1" } ], "ranked_candidates": [ { "id": "alice_chen", "name": "Alice Chen", "score": 92.3076923076923, "tier": 5 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 5 } ], "schema_version": 1, "scope": { "kind": "journal" }, "status": "maybe" }, "rule": "status is open or resolved" }, { "refusal": "resolved row has no entity choice", "row": { "ambiguity_id": "amb_04374a01e8579a661fb1d1aa", "audit": { "prior_choices": [] }, "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Alice", "normalized_query": "alice", "observed_tier": 5, "occurrence_count": 1, "origin_keys": [ "{\"day\":\"20260804\",\"lane\":\"segment\",\"segment_id\":\"s1\"}" ], "original_query": "Alice", "origins": [ { "day": "20260804", "lane": "segment", "segment_id": "s1" } ], "ranked_candidates": [ { "id": "alice_chen", "name": "Alice Chen", "score": 92.3076923076923, "tier": 5 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 5 } ], "schema_version": 1, "scope": { "kind": "journal" }, "status": "resolved" }, "rule": "a resolved row names the entity chosen" }, { "refusal": "open row contains a resolved choice", "row": { "ambiguity_id": "amb_04374a01e8579a661fb1d1aa", "audit": { "prior_choices": [] }, "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Alice", "normalized_query": "alice", "observed_tier": 5, "occurrence_count": 1, "origin_keys": [ "{\"day\":\"20260804\",\"lane\":\"segment\",\"segment_id\":\"s1\"}" ], "original_query": "Alice", "origins": [ { "day": "20260804", "lane": "segment", "segment_id": "s1" } ], "ranked_candidates": [ { "id": "alice_chen", "name": "Alice Chen", "score": 92.3076923076923, "tier": 5 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 5 } ], "resolved_entity_id": "alice_chen", "schema_version": 1, "scope": { "kind": "journal" }, "status": "open" }, "rule": "an open row carries no resolved choice" }, { "refusal": "ranked_candidates is not a populated list", "row": { "ambiguity_id": "amb_04374a01e8579a661fb1d1aa", "audit": { "prior_choices": [] }, "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Alice", "normalized_query": "alice", "observed_tier": 5, "occurrence_count": 1, "origin_keys": [ "{\"day\":\"20260804\",\"lane\":\"segment\",\"segment_id\":\"s1\"}" ], "original_query": "Alice", "origins": [ { "day": "20260804", "lane": "segment", "segment_id": "s1" } ], "ranked_candidates": [], "schema_version": 1, "scope": { "kind": "journal" }, "status": "open" }, "rule": "ranked_candidates is populated" }, { "refusal": "ranked candidate has no id", "row": { "ambiguity_id": "amb_04374a01e8579a661fb1d1aa", "audit": { "prior_choices": [] }, "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Alice", "normalized_query": "alice", "observed_tier": 5, "occurrence_count": 1, "origin_keys": [ "{\"day\":\"20260804\",\"lane\":\"segment\",\"segment_id\":\"s1\"}" ], "original_query": "Alice", "origins": [ { "day": "20260804", "lane": "segment", "segment_id": "s1" } ], "ranked_candidates": [ { "name": "Alice Chen", "score": 92.3076923076923, "tier": 5 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 5 } ], "schema_version": 1, "scope": { "kind": "journal" }, "status": "open" }, "rule": "a ranked candidate has an id" }, { "refusal": "ranked candidate has no name", "row": { "ambiguity_id": "amb_04374a01e8579a661fb1d1aa", "audit": { "prior_choices": [] }, "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Alice", "normalized_query": "alice", "observed_tier": 5, "occurrence_count": 1, "origin_keys": [ "{\"day\":\"20260804\",\"lane\":\"segment\",\"segment_id\":\"s1\"}" ], "original_query": "Alice", "origins": [ { "day": "20260804", "lane": "segment", "segment_id": "s1" } ], "ranked_candidates": [ { "id": "alice_chen", "score": 92.3076923076923, "tier": 5 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 5 } ], "schema_version": 1, "scope": { "kind": "journal" }, "status": "open" }, "rule": "a ranked candidate has a name" }, { "refusal": "ranked candidate has an invalid tier", "row": { "ambiguity_id": "amb_04374a01e8579a661fb1d1aa", "audit": { "prior_choices": [] }, "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Alice", "normalized_query": "alice", "observed_tier": 5, "occurrence_count": 1, "origin_keys": [ "{\"day\":\"20260804\",\"lane\":\"segment\",\"segment_id\":\"s1\"}" ], "original_query": "Alice", "origins": [ { "day": "20260804", "lane": "segment", "segment_id": "s1" } ], "ranked_candidates": [ { "id": "alice_chen", "name": "Alice Chen", "score": 92.3076923076923, "tier": 7 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 5 } ], "schema_version": 1, "scope": { "kind": "journal" }, "status": "open" }, "rule": "a ranked candidate's tier equals the observed tier" }, { "refusal": "ranked candidate has an invalid score", "row": { "ambiguity_id": "amb_04374a01e8579a661fb1d1aa", "audit": { "prior_choices": [] }, "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Alice", "normalized_query": "alice", "observed_tier": 5, "occurrence_count": 1, "origin_keys": [ "{\"day\":\"20260804\",\"lane\":\"segment\",\"segment_id\":\"s1\"}" ], "original_query": "Alice", "origins": [ { "day": "20260804", "lane": "segment", "segment_id": "s1" } ], "ranked_candidates": [ { "id": "alice_chen", "name": "Alice Chen", "score": "high", "tier": 5 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 5 } ], "schema_version": 1, "scope": { "kind": "journal" }, "status": "open" }, "rule": "a ranked candidate's score is numeric" }, { "refusal": "origins and origin_keys are inconsistent", "row": { "ambiguity_id": "amb_04374a01e8579a661fb1d1aa", "audit": { "prior_choices": [] }, "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Alice", "normalized_query": "alice", "observed_tier": 5, "occurrence_count": 1, "origin_keys": [ "{\"day\":\"20260804\",\"lane\":\"segment\",\"segment_id\":\"s1\"}" ], "original_query": "Alice", "origins": [], "ranked_candidates": [ { "id": "alice_chen", "name": "Alice Chen", "score": 92.3076923076923, "tier": 5 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 5 } ], "schema_version": 1, "scope": { "kind": "journal" }, "status": "open" }, "rule": "origins and origin_keys are consistent and populated" }, { "refusal": "origin has no lane", "row": { "ambiguity_id": "amb_04374a01e8579a661fb1d1aa", "audit": { "prior_choices": [] }, "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Alice", "normalized_query": "alice", "observed_tier": 5, "occurrence_count": 1, "origin_keys": [ "{\"day\":\"20260804\",\"lane\":\"segment\",\"segment_id\":\"s1\"}" ], "original_query": "Alice", "origins": [ { "day": "20260804", "segment_id": "s1" } ], "ranked_candidates": [ { "id": "alice_chen", "name": "Alice Chen", "score": 92.3076923076923, "tier": 5 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 5 } ], "schema_version": 1, "scope": { "kind": "journal" }, "status": "open" }, "rule": "an origin names its lane" }, { "refusal": "origins and origin_keys are inconsistent", "row": { "ambiguity_id": "amb_04374a01e8579a661fb1d1aa", "audit": { "prior_choices": [] }, "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Alice", "normalized_query": "alice", "observed_tier": 5, "occurrence_count": 1, "origin_keys": [ "a", "b" ], "original_query": "Alice", "origins": [ { "day": "20260804", "lane": "segment", "segment_id": "s1" } ], "ranked_candidates": [ { "id": "alice_chen", "name": "Alice Chen", "score": 92.3076923076923, "tier": 5 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 5 } ], "schema_version": 1, "scope": { "kind": "journal" }, "status": "open" }, "rule": "origins and origin_keys are the same length" }, { "refusal": "invalid occurrence_count", "row": { "ambiguity_id": "amb_04374a01e8579a661fb1d1aa", "audit": { "prior_choices": [] }, "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Alice", "normalized_query": "alice", "observed_tier": 5, "occurrence_count": 0, "origin_keys": [ "{\"day\":\"20260804\",\"lane\":\"segment\",\"segment_id\":\"s1\"}" ], "original_query": "Alice", "origins": [ { "day": "20260804", "lane": "segment", "segment_id": "s1" } ], "ranked_candidates": [ { "id": "alice_chen", "name": "Alice Chen", "score": 92.3076923076923, "tier": 5 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 5 } ], "schema_version": 1, "scope": { "kind": "journal" }, "status": "open" }, "rule": "occurrence_count is at least one" }, { "refusal": "invalid audit.prior_choices", "row": { "ambiguity_id": "amb_04374a01e8579a661fb1d1aa", "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Alice", "normalized_query": "alice", "observed_tier": 5, "occurrence_count": 1, "origin_keys": [ "{\"day\":\"20260804\",\"lane\":\"segment\",\"segment_id\":\"s1\"}" ], "original_query": "Alice", "origins": [ { "day": "20260804", "lane": "segment", "segment_id": "s1" } ], "ranked_candidates": [ { "id": "alice_chen", "name": "Alice Chen", "score": 92.3076923076923, "tier": 5 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 5 } ], "schema_version": 1, "scope": { "kind": "journal" }, "status": "open" }, "rule": "the audit block is present" }, { "refusal": "prior choice has no resolved_entity_id", "row": { "ambiguity_id": "amb_04374a01e8579a661fb1d1aa", "audit": { "prior_choices": [ {} ] }, "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Alice", "normalized_query": "alice", "observed_tier": 5, "occurrence_count": 1, "origin_keys": [ "{\"day\":\"20260804\",\"lane\":\"segment\",\"segment_id\":\"s1\"}" ], "original_query": "Alice", "origins": [ { "day": "20260804", "lane": "segment", "segment_id": "s1" } ], "ranked_candidates": [ { "id": "alice_chen", "name": "Alice Chen", "score": 92.3076923076923, "tier": 5 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 5 } ], "schema_version": 1, "scope": { "kind": "journal" }, "status": "open" }, "rule": "a prior choice carries its entity, timestamp and replacement" }, { "refusal": "missing latest_query", "row": { "ambiguity_id": "amb_04374a01e8579a661fb1d1aa", "audit": { "prior_choices": [] }, "first_seen": "2026-08-04T00:00:00Z", "last_seen": "2026-08-04T00:00:00Z", "normalized_query": "alice", "observed_tier": 5, "occurrence_count": 1, "origin_keys": [ "{\"day\":\"20260804\",\"lane\":\"segment\",\"segment_id\":\"s1\"}" ], "original_query": "Alice", "origins": [ { "day": "20260804", "lane": "segment", "segment_id": "s1" } ], "ranked_candidates": [ { "id": "alice_chen", "name": "Alice Chen", "score": 92.3076923076923, "tier": 5 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 5 } ], "schema_version": 1, "scope": { "kind": "journal" }, "status": "open" }, "rule": "latest_query is required" }, { "refusal": "missing first_seen", "row": { "ambiguity_id": "amb_04374a01e8579a661fb1d1aa", "audit": { "prior_choices": [] }, "last_seen": "2026-08-04T00:00:00Z", "latest_query": "Alice", "normalized_query": "alice", "observed_tier": 5, "occurrence_count": 1, "origin_keys": [ "{\"day\":\"20260804\",\"lane\":\"segment\",\"segment_id\":\"s1\"}" ], "original_query": "Alice", "origins": [ { "day": "20260804", "lane": "segment", "segment_id": "s1" } ], "ranked_candidates": [ { "id": "alice_chen", "name": "Alice Chen", "score": 92.3076923076923, "tier": 5 }, { "id": "alice_chan", "name": "Alice Chan", "score": 90.0, "tier": 5 } ], "schema_version": 1, "scope": { "kind": "journal" }, "status": "open" }, "rule": "first_seen is required" } ], "note": "A row set is validated in full before any bytes are written, and both mutation entry points re-read strictly under the lock first \u2014 so one bad row makes the whole file unwritable while it stays readable. \u26a0 These rows are a FLOOR, not a census: 11 of the validator's rules still have no row, several of them type-confusion rules that a typed deserialisation papers over \u2014 which is exactly the class a port loses silently. A reimplementation asserts every row here AND enumerates the rules that have none.", "row_count": 28 }, "read_edges": { "ambiguity_line_that_is_not_an_object": { "line": "[1, 2, 3]", "must": "refuse under a strict read, and be skipped under a lenient one", "note": "A third strict-read branch, distinct from malformed JSON and from a validation failure: a line that parses cleanly and is not an object. It is rejected BEFORE row validation and has its own message, so a reader handling only the other two either mis-types or lets it through." }, "history_event_with_boolean_sequence": { "bytes": "{\n \"actor\": null,\n \"caller\": null,\n \"entity_id\": \"alice_johnson\",\n \"identity_after\": {\n \"aka\": [\n \"Ali\",\n \"AJ\"\n ],\n \"created_at\": 1785889922582,\n \"emails\": [\n \"alice@example.com\"\n ],\n \"id\": \"alice_johnson\",\n \"name\": \"Alice Johnson\",\n \"type\": \"Person\"\n },\n \"identity_before\": null,\n \"kind\": \"create\",\n \"operation\": {},\n \"schema_version\": 1,\n \"seq\": true,\n \"ts\": \"2026-08-05T00:32:02.582506Z\",\n \"version_id\": \"vh_0000000000000000000000000000ffff\"\n}\n", "event": { "actor": null, "caller": null, "entity_id": "alice_johnson", "identity_after": { "aka": [ "Ali", "AJ" ], "created_at": 1785889922582, "emails": [ "alice@example.com" ], "id": "alice_johnson", "name": "Alice Johnson", "type": "Person" }, "identity_before": null, "kind": "create", "operation": {}, "schema_version": 1, "seq": true, "ts": "2026-08-05T00:32:02.582506Z", "version_id": "vh_0000000000000000000000000000ffff" }, "must": "parse", "note": "A boolean IS an integer in the reference language, so its sequence guard accepts this as 1 and orders the event first. A faithful-looking guard elsewhere refuses it -- refusing where the reference recovers. \u26a0 The adjacent ambiguity validator explicitly excludes booleans, so the two modules genuinely disagree; this pins the history side.", "sequence_value": 1 }, "history_event_without_fractional_seconds": { "bytes": "{\n \"actor\": null,\n \"caller\": null,\n \"entity_id\": \"alice_johnson\",\n \"identity_after\": {\n \"aka\": [\n \"Ali\",\n \"AJ\"\n ],\n \"created_at\": 1785889922582,\n \"emails\": [\n \"alice@example.com\"\n ],\n \"id\": \"alice_johnson\",\n \"name\": \"Alice Johnson\",\n \"type\": \"Person\"\n },\n \"identity_before\": null,\n \"kind\": \"create\",\n \"operation\": {},\n \"schema_version\": 1,\n \"seq\": 1,\n \"ts\": \"2026-08-05T00:32:02Z\",\n \"version_id\": \"vh_0000000000000000000000000000fffe\"\n}\n", "event": { "actor": null, "caller": null, "entity_id": "alice_johnson", "identity_after": { "aka": [ "Ali", "AJ" ], "created_at": 1785889922582, "emails": [ "alice@example.com" ], "id": "alice_johnson", "name": "Alice Johnson", "type": "Person" }, "identity_before": null, "kind": "create", "operation": {}, "schema_version": 1, "seq": 1, "ts": "2026-08-05T00:32:02Z", "version_id": "vh_0000000000000000000000000000fffe" }, "must": "parse", "note": "The producer omits the fractional part entirely when the microsecond component is zero, so the timestamp is VARIABLE WIDTH and roughly one event in 10^6 looks like this. A reader with a fixed six-digit format refuses it, and because history is iterated whole, one such event takes out that entity's entire history." } }, "reconciliation": { "absent_by_design": "There is no key-order case. The reference does reconcile a reordered identity file, but this artifact is serialised with sorted keys, so such a case would reach a consumer as a byte-identical duplicate of the discard case \u2014 present, green, and testing nothing. \u26a0 This corpus verifies OUTCOMES by driving the real code; it does not verify that serialisation preserved the INPUT distinction a case exists to encode. That gap is real and this note stands in for it.", "case_count": 6, "cases": [ { "after": { "aka": [ "Ali", "AJ" ], "created_at": 1785889922582, "description": "a friend", "emails": [ "alice@example.com" ], "id": "alice_johnson", "name": "Alice Johnson", "type": "Person" }, "before": { "aka": [ "Ali", "AJ" ], "created_at": 1785889922582, "emails": [ "alice@example.com" ], "id": "alice_johnson", "name": "Alice Johnson", "type": "Person" }, "disk": { "aka": [ "Ali", "AJ" ], "created_at": 1785889922582, "description": "a friend", "emails": [ "alice@example.com" ], "id": "alice_johnson", "name": "Alice Johnson", "type": "Person" }, "note": "disk equals identity_after \u2014 publish", "outcome": "publish" }, { "after": { "aka": [ "Ali", "AJ" ], "created_at": 1785889922582, "description": "a friend", "emails": [ "alice@example.com" ], "id": "alice_johnson", "name": "Alice Johnson", "type": "Person" }, "before": { "aka": [ "Ali", "AJ" ], "created_at": 1785889922582, "emails": [ "alice@example.com" ], "id": "alice_johnson", "name": "Alice Johnson", "type": "Person" }, "disk": { "aka": [ "Ali", "AJ" ], "created_at": 1785889922582, "emails": [ "alice@example.com" ], "id": "alice_johnson", "name": "Alice Johnson", "type": "Person" }, "note": "disk equals identity_before \u2014 discard", "outcome": "discard" }, { "after": { "aka": [ "Ali", "AJ" ], "created_at": 1785889922582, "description": "a friend", "emails": [ "alice@example.com" ], "id": "alice_johnson", "name": "Alice Johnson", "type": "Person" }, "before": { "aka": [ "Ali", "AJ" ], "created_at": 1785889922582, "emails": [ "alice@example.com" ], "id": "alice_johnson", "name": "Alice Johnson", "type": "Person" }, "disk": { "aka": [ "Ali", "AJ" ], "created_at": 1785889922582, "emails": [ "alice@example.com" ], "id": "alice_johnson", "name": "Alice Johnson", "schema_version": 2, "type": "Person" }, "note": "disk matches neither \u2014 repair required, journal unchanged", "outcome": "repair_required" }, { "after": { "aka": [ "Ali", "AJ" ], "created_at": 1785889922582, "description": "a friend", "emails": [ "alice@example.com" ], "id": "alice_johnson", "name": "Alice Johnson", "type": "Person" }, "before": { "aka": [ "Ali", "AJ" ], "created_at": 1785889922582, "emails": [ "alice@example.com" ], "id": "alice_johnson", "name": "Alice Johnson", "type": "Person" }, "disk": { "aka": [ "Ali", "AJ" ], "created_at": 1785889922582.0, "emails": [ "alice@example.com" ], "id": "alice_johnson", "name": "Alice Johnson", "type": "Person" }, "note": "int vs float on created_at \u2014 equal under this interpreter's structural equality, so it DISCARDS rather than refusing", "outcome": "discard" }, { "after": { "aka": [ "Ali", "AJ" ], "created_at": 1785889922582, "description": "a friend", "emails": [ "alice@example.com" ], "id": "alice_johnson", "name": "Alice Johnson", "type": "Person" }, "before": { "aka": [ "Ali", "AJ" ], "created_at": 1785889922582, "emails": [ "alice@example.com" ], "id": "alice_johnson", "name": "Alice Johnson", "type": "Person" }, "disk": { "created_at": 1785889922582, "emails": [ "alice@example.com" ], "id": "alice_johnson", "name": "Alice Johnson", "type": "Person" }, "note": "a missing optional field is not the same as an empty one", "outcome": "repair_required" }, { "after": { "aka": [ "Ali", "AJ" ], "created_at": 1785889922582, "description": "a friend", "emails": [ "alice@example.com" ], "id": "alice_johnson", "name": "Alice Johnson", "type": "Person" }, "before": { "aka": [ "Ali", "AJ" ], "created_at": 1785889922582, "emails": [ "alice@example.com" ], "id": "alice_johnson", "name": "Alice Johnson", "type": "Person" }, "disk": { "aka": [ "Ali", "AJ" ], "created_at": 1785889922582, "emails": [ "alice@example.com" ], "name": "Alice Johnson", "type": "Person" }, "entity_dir": "alice_johnson", "note": "no identity written on disk at all \u2014 the read-compat population; reconciles because the resolved identity is stamped into the object before comparison", "outcome": "discard" } ], "note": "Run before every mutation. Publish when the identity on disk equals identity_after, discard when it equals identity_before, otherwise refuse and leave the journal unchanged. The refusal is permanent for that entity until a human repairs it, and reads keep working throughout." }, "serialization": { "ambiguities": { "empty_file": "an empty row set writes a zero-byte file rather than removing it", "flags": "ensure_ascii=False, one compact object per line" }, "history_event": { "filename": "{seq:020d}-{version_id}.json", "filename_note": "zero-padded, so lexical order is chronological order", "flags": "indent=2, ensure_ascii=False, sort_keys=True", "mode": "0600" }, "identity": { "flags": "indent=2, ensure_ascii=False, sort_keys absent", "mode": "0600" }, "note": "Two conventions live one directory apart and both are load bearing: the identity file preserves insertion order, history events sort their keys. Both write raw UTF-8 and one trailing newline, and both land at mode 0600 through an atomic replace." }, "timestamps": { "ambiguity_ts": "ISO-8601 UTC ending in Z, second precision", "created_at": "epoch milliseconds, integer", "history_ts": "ISO-8601 UTC ending in Z, VARIABLE WIDTH \u2014 the fractional part is omitted entirely when the microsecond component is zero, so a reader that requires six digits fails on those records" }, "versions": { "python_slugify": "8.0.4", "rapidfuzz": "3.14.3", "text_unidecode": "1.3", "unicodedata": "15.1.0" } }