fix: preserve stale task identity history
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Build and Publish Multi-Context Image / build-and-push (push) Successful in 26s

Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a053ff-1d6f-7fe2-ac1c-a6eb40a42a0c
This commit is contained in:
tegwick 2026-08-31 02:02:35 +02:00
parent ddce470944
commit a32112e5ab
4 changed files with 65 additions and 44 deletions

View file

@ -11,12 +11,13 @@
"same_workplan_groups": 0,
"cross_repository_groups": 31
},
"projection_classification": {
"one_current_claimant_with_retired_history": 104,
"retired_history_only": 15,
"multiple_non_retired_claimants": 12
"slug_tombstone_shape": {
"exactly_one_untombstoned_workplan_slug": 104,
"tombstoned_workplan_slugs_only": 15,
"multiple_untombstoned_workplan_slugs": 12,
"note": "Slug tombstones are an operational clue, not task-level projection membership. Tasks have no projection-retirement field."
},
"multiple_non_retired_claimants": [
"multiple_untombstoned_workplan_slugs": [
{
"record_id_prefix": "CUST-WP-0010b-T",
"task_identity_groups": 2,
@ -25,7 +26,7 @@
"cust-wp-0010"
],
"workplan_status": "finished",
"cause": "duplicate workplan projection over one backing file"
"cause": "stale completed task rows left by an earlier wrong workplan/backing-file projection"
},
{
"record_id_prefix": "SECRETS-WP-0002-T",
@ -35,14 +36,20 @@
"secrets-wp-0002"
],
"workplan_status": "finished",
"cause": "duplicate workplan projection over one backing file"
"cause": "stale completed task rows left by an earlier wrong workplan/backing-file projection"
}
],
"decision": {
"retired_rows": "preserve as historical evidence; exclude from current projection ambiguity",
"duplicate_inside_matched_workplan": "refuse reset and report every claimant UUID",
"historical_rows": "preserve; a repeated label outside the owning workplan's desired task set is not current projection ambiguity",
"duplicate_inside_matched_workplan_desired_set": "refuse reset and report every claimant UUID",
"duplicate_inside_forge_projection": "refuse reset; require file-level disposition",
"new_task_identity_held_by_other_current_workplan": "refuse before insert",
"duplicate_across_retired_or_displaced_workplans": "does not block current projection reset"
"new_derived_task_uuid_held_by_other_current_workplan": "refuse before insert",
"duplicate_record_id_across_other_workplans": "preserve as historical evidence; do not block unless the forge repeats the identity or the derived UUID collides"
},
"live_reconcile": {
"state-hub": "noop at ddce470944e25b2f79927e7b8e2dfe3104cc4528",
"the-custodian": "applied 74 workplan and 169 task field updates; zero creates, retirements, cancellations, or refusals",
"secrets-engine": "applied 10 workplan and 26 task field updates; zero creates, retirements, cancellations, or refusals",
"second_pass": "the-custodian and secrets-engine both returned noop with every count zero"
}
}