state-hub/api/routers
tegwick 0b473c1bda
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Build and Publish Multi-Context Image / build-and-push (push) Successful in 1m3s
STATE-WP-0101-T02/T03: decision classes, evidence refusals, write-back route
T02: additive migration d5e6f7a8b9c0 (decision_class, memo_id,
approval_id, resolution_source, resolution_evidence, evidence_refs,
CHECKs, partial unique memo_id); typed evidence_refs; 409
evidence_required for text resolve, resolving PATCH fields and resolved
create on C1/C2; raise-only class; C3 refused as reserved.

T03: POST /decisions/{id}/resolve-evidence (link/resolve), projected
token verified by TokenReview with audience
state-hub-decision-writeback and an exact subject allowlist; outcome
record v1 validation, 8 KiB bound, secret scan; idempotent on
(decision_id, memo_id). Off by default (DECISION_WRITEBACK_ENABLED).
Tests use a fake reviewer; full suite 1286 passed.

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

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 5502@bnt-lap001
Assistant-Session: 68b3b02f-5d0f-4e71-8421-796f62e50196
2026-11-01 04:01:48 +01:00
..
__init__.py Add state-hub v0.1 — local-first state service for the Custodian 2026-02-24 17:47:49 +01:00
capability_requests.py STATE-WP-0093: per-recipient broadcast receipts and standing notices (T01-T06). 2026-09-22 00:26:33 +02:00
consistency_sweep.py feat(STATE-WP-0064): start parallel week with source-tagged sweep runners 2026-06-21 21:46:43 +02:00
contributions.py feat(classification-spine): implement STATE-WP-0065 repo-anchored model 2026-06-22 13:52:13 +02:00
decisions.py STATE-WP-0101-T02/T03: decision classes, evidence refusals, write-back route 2026-11-01 04:01:48 +01:00
domain_goals.py feat(state-hub): CUST-WP-0040 — NATS lifecycle event publishing for activity-core 2026-05-17 05:49:29 +02:00
domains.py feat(classification-spine): implement STATE-WP-0065 repo-anchored model 2026-06-22 13:52:13 +02:00
execution.py fix(retirement): close projection and launch contract gaps 2026-08-23 00:52:18 +02:00
extension_points.py feat(gems): three-pass schema migration aligning state-hub with GEMS 2026-03-02 23:39:17 +01:00
fabric.py add Fabric read model rollback activation 2026-08-31 23:07:10 +02:00
flows.py STATE-WP-0069 T06: add workplan flow entity and prefer open_workplans 2026-07-08 21:26:29 +02:00
identifier_migrations.py feat: converge mixed identifier projections 2026-08-31 01:27:21 +02:00
intake.py CUST-WP-0061-T01: intake work-record entity (stage 3) 2026-07-21 00:27:45 +02:00
interface_changes.py feat: make repository reads alias-aware 2026-08-29 10:47:51 +02:00
legacy_meter.py Add 8-hour default window for legacy-meter deploy monitoring 2026-07-09 01:36:02 +02:00
memo_notifications.py Add a dev memo-forwarding fixture and deduplicated intake notifications. 2026-10-03 21:25:46 +02:00
message_feed.py Inbox change feed v1 (STATE-WP-0098-T05); close out open waits 2026-10-14 02:48:06 +02:00
messages.py Inbox change feed v1 (STATE-WP-0098-T05); close out open waits 2026-10-14 02:48:06 +02:00
ops_runs.py Prepare State Hub retirement baseline 2026-08-09 16:19:53 +02:00
policy.py feat: use hub-core policy router 2026-06-07 13:14:08 +02:00
progress.py STATE-WP-0069 T04: Sunset headers and POST /progress body metering 2026-07-08 23:06:45 +02:00
recently_on_scope.py Add hourly RecentlyOnScope batch endpoint 2026-05-22 16:14:08 +02:00
reconciliation.py feat(classification-spine): implement STATE-WP-0065 repo-anchored model 2026-06-22 13:52:13 +02:00
repo_goals.py feat: make repository reads alias-aware 2026-08-29 10:47:51 +02:00
repos.py fix: bound repository collection identity projection 2026-09-05 02:03:52 +02:00
repository_renames.py feat: prove repository rename continuity 2026-08-29 15:05:09 +02:00
review_contracts.py feat(review): add multi-owner contracts and receipts 2026-08-22 20:57:51 +02:00
sbom.py feat: make repository reads alias-aware 2026-08-29 10:47:51 +02:00
services.py feat: make repository reads alias-aware 2026-08-29 10:47:51 +02:00
state.py CUST-WP-0074-T02 follow-up: blocked_on / wait_until reach the hub read model 2026-09-29 21:38:27 +02:00
suggestions.py feat(STATE-WP-0079): retire the suggestion-backlog surface (slice E1) 2026-08-20 08:11:14 +02:00
tasks.py CUST-WP-0074-T02: task wait qualifiers in the hub read model 2026-09-28 22:39:18 +02:00
technical_debt.py fix(api): normalize trailing slashes — no slash on param routes 2026-04-26 15:13:01 +02:00
token_events.py feat: make repository reads alias-aware 2026-08-29 10:47:51 +02:00
topics.py feat(classification-spine): implement STATE-WP-0065 repo-anchored model 2026-06-22 13:52:13 +02:00
tpsc.py feat: use hub-core TPSC router 2026-06-07 14:08:55 +02:00
work_record_projection.py Guard Forge retirement with an exact expected UUID set 2026-10-05 01:46:06 +02:00
workstream_dependencies.py CUST-WP-0074-T02: task wait qualifiers in the hub read model 2026-09-28 22:39:18 +02:00
workstreams.py fix(consistency): preserve immutable historical binding rows 2026-10-17 02:26:29 +02:00