state-hub/api/services
tegwick 7a21fef0e4
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 25s
fix(projection): repair rows retired before retirement released identifiers
The previous commit made retirement stamp the slug, but `stale` excludes rows
already retired — so nothing revisits them and the stamp never reaches the 32
rows retired earlier today: core-hub's two REPO-WP rows and the 30 ad-hoc
records. Each still holds an identifier no file derives, blocking whichever
repository legitimately owns it.

The reset now stamps any retired row whose identifier is still unreleased,
using that row's own retirement timestamp rather than today's, so the record
keeps saying when it was retired. Completing a decision already taken is not a
new retirement, so this runs without acknowledgement and is reported as
`released`, separately from `retired`.

Repairing it in the reset rather than by hand keeps the hub a read model and
makes the fix reproducible for any row that reaches this state again.

735 pass.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 2583210@bnt-lap001
Assistant-Session: f2bff2d5-e9b2-4338-92ca-10282a927006
2026-08-28 01:25:06 +02:00
..
token_sources Fixed and improved token tracking 2026-05-23 13:59:05 +02:00
__init__.py Implement RecentlyOnScope domain digest 2026-05-22 13:45:53 +02:00
consistency_sweep.py finish(STATE-WP-0064): cut over scheduler and split sweep errors from failures 2026-06-22 01:20:59 +02:00
execution_queue.py fix(retirement): close projection and launch contract gaps 2026-08-23 00:52:18 +02:00
fabric_graph.py Implement financial Fabric vNext read model 2026-05-24 02:52:59 +02:00
forge_credential.py feat(forge): resolve an optional forge read credential (STATE-WP-0084-T02/T03) 2026-08-27 23:12:57 +02:00
forge_projection.py fix(projection): repair rows retired before retirement released identifiers 2026-08-28 01:25:06 +02:00
legacy_compat.py feat(api): retire phase-1/2 /workstreams REST aliases with 410 stranglers 2026-07-10 13:31:57 +02:00
legacy_meter.py feat(legacy-meter): scale retirement quiet period to call volume 2026-08-20 07:13:44 +02:00
lifecycle.py feat(classification-spine): implement STATE-WP-0065 repo-anchored model 2026-06-22 13:52:13 +02:00
markitect_templates.py Implement RecentlyOnScope domain digest 2026-05-22 13:45:53 +02:00
ops_run_projection.py Prepare State Hub retirement baseline 2026-08-09 16:19:53 +02:00
recently_on_scope.py feat(classification-spine): implement STATE-WP-0065 repo-anchored model 2026-06-22 13:52:13 +02:00
reconciliation.py feat(classification-spine): implement STATE-WP-0065 repo-anchored model 2026-06-22 13:52:13 +02:00
repo_manager_dual_run.py feat(retirement): route SBOM scans through repo-manager 2026-08-21 23:15:34 +02:00
review_contracts.py feat(review): add multi-owner contracts and receipts 2026-08-22 20:57:51 +02:00
sbom_nexus.py feat: route SBOM writes to Nexus behind flag 2026-08-22 19:55:08 +02:00
schema_state.py feat(deploy): run migrations as part of the release, and report schema state 2026-08-26 00:00:09 +02:00
suggestion_relevance.py Finish CUST-WP-0011 and implement STATE-WP-0061 suggestion backlog. 2026-07-06 10:52:49 +02:00
suggestion_wsjf.py Finish CUST-WP-0011 and implement STATE-WP-0061 suggestion backlog. 2026-07-06 10:52:49 +02:00
summary_cache.py feat: project Nexus SBOM state into summaries 2026-08-22 20:12:16 +02:00
task_record_id_backfill.py fix(backfill): qualify short task ids with their workplan 2026-08-26 02:17:46 +02:00
work_record_identifier_migration.py fix(retirement): close projection and launch contract gaps 2026-08-23 00:52:18 +02:00
workplan_files.py feat(classification-spine): implement STATE-WP-0065 repo-anchored model 2026-06-22 13:52:13 +02:00
write_idempotency.py feat(STATE-WP-0079): retire the suggestion-backlog surface (slice E1) 2026-08-20 08:11:14 +02:00