state-hub/tests
tegwick 43ffe883c3
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 1s
Build and Publish Multi-Context Image / build-and-push (push) Successful in 26s
feat(projection): reconcile a repository's projection against the forge
Implements ADR-012 decision 7 as amended (STATE-WP-0083-T03). Creates what the
forge has and the hub lacks, updates what differs, retires what no longer
derives. It never deletes: hub-native records reference workplans with ON DELETE
RESTRICT, and destroying a progress event to tidy a derived projection would
lose hub-native truth to fix a derived-state problem.

Retirement is refused by default. A record that stops deriving may mean a
deliberately deleted file or a caller pointed at the wrong branch; only the
caller can say which.

Verified against live data and rolled back: whitehat-security applied 5 updates
with no retirements; the-custodian refused, naming the four hub-first records
confirmed by hand to have no backing file.

Tasks of existing workplans are deliberately untouched — hub tasks carry no
canonical identifier, so matching is by title and a renamed heading would
destroy and recreate a record. Tasks are created only alongside a new workplan,
where nothing exists to mis-match. Tracked as T06.

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-26 01:19:10 +02:00
..
__init__.py feat(state-hub): integrate llm-connect as dependency (S3.1) 2026-02-27 08:32:17 +01:00
conftest.py STATE-WP-0070 T03: remove legacy workstream MCP aliases 2026-07-13 09:29:12 +02:00
test_capability_requests.py feat(classification-spine): implement STATE-WP-0065 repo-anchored model 2026-06-22 13:52:13 +02:00
test_classification.py feat(classification-spine): implement STATE-WP-0065 repo-anchored model 2026-06-22 13:52:13 +02:00
test_codex_mcp_launcher.py Prepare State Hub retirement baseline 2026-08-09 16:19:53 +02:00
test_codex_mcp_server.py Prepare State Hub retirement baseline 2026-08-09 16:19:53 +02:00
test_configure_codex.py Prepare State Hub retirement baseline 2026-08-09 16:19:53 +02:00
test_consistency_check.py fix(consistency): preserve repository domain in briefs 2026-08-23 13:57:22 +02:00
test_consistency_sweep.py feat(STATE-WP-0064): start parallel week with source-tagged sweep runners 2026-06-21 21:46:43 +02:00
test_cors.py feat: add workplan aliases and legacy meter 2026-06-04 08:25:31 +02:00
test_doi_scope_health.py scope refactoring 2026-05-01 01:47:14 +02:00
test_edge_outbox.py feat(statehub): add offline write buffer relay 2026-06-25 13:44:27 +02:00
test_edge_read_cache.py feat(edge): add offline read cache for allowlisted State Hub GET routes 2026-07-09 01:04:15 +02:00
test_edge_relay.py feat(statehub): add offline write buffer relay 2026-06-25 13:44:27 +02:00
test_ensure_gitignore_claude_rules.py Add gitignore-claude template and wire into registration flows 2026-07-08 15:06:18 +02:00
test_forge_projection.py feat(projection): reconcile a repository's projection against the forge 2026-08-26 01:19:10 +02:00
test_hub_core_imports.py feat: reuse hub-core base schemas 2026-06-07 16:42:54 +02:00
test_ingest_sbom.py feat(sbom): CUST-WP-0013 — expand SBOM infra to terraform, ansible, and tool manifests 2026-03-12 04:40:26 +01:00
test_instance_identity.py fix(config): bind the instance-identity settings to the env vars the chart sets 2026-08-25 12:55:11 +02:00
test_intake.py feat(consistency): rebuild authoritative intake IDs 2026-08-22 12:23:43 +02:00
test_legacy_meter.py feat(legacy-meter): scale retirement quiet period to call volume 2026-08-20 07:13:44 +02:00
test_lifecycle.py feat(tasks): adopt canonical task statuses 2026-05-26 01:32:50 +02:00
test_llm_connect_integration.py feat(state-hub): integrate llm-connect as dependency (S3.1) 2026-02-27 08:32:17 +01:00
test_mcp_legacy_deprecation.py Prepare State Hub retirement baseline 2026-08-09 16:19:53 +02:00
test_mcp_queued_receipts.py feat(statehub): add offline write buffer relay 2026-06-25 13:44:27 +02:00
test_mcp_registration.py Rename MCP server identifier from state-hub to dev-hub 2026-06-22 20:46:14 +02:00
test_mcp_smoke.py STATE-WP-0070 T04 (partial): drop open_workstreams from /state/summary 2026-07-13 10:04:38 +02:00
test_mcp_write_tools.py STATE-WP-0070 T03: remove legacy workstream MCP aliases 2026-07-13 09:29:12 +02:00
test_ops_run_projection.py Prepare State Hub retirement baseline 2026-08-09 16:19:53 +02:00
test_policy_router.py feat: use hub-core policy router 2026-06-07 13:14:08 +02:00
test_promote_intake.py CUST-WP-0061-T03: the promotion transition (statehub promote-intake) 2026-07-21 01:06:01 +02:00
test_quality_assessment.py feat: DoX assessment recording and soft visibility (STATE-WP-0077) 2026-07-22 21:18:40 +02:00
test_recently_on_scope.py feat(classification-spine): implement STATE-WP-0065 repo-anchored model 2026-06-22 13:52:13 +02:00
test_reconciliation.py feat(tasks): adopt canonical task statuses 2026-05-26 01:32:50 +02:00
test_register_from_classification.py fix(classification): harden registration updates 2026-08-23 11:30:36 +02:00
test_repo_manager_workplan_adapter.py feat(retirement): route SBOM scans through repo-manager 2026-08-21 23:15:34 +02:00
test_repo_sync.py feat(consistency): T04 push seal — closed-loop writeback for automated commits 2026-04-21 01:43:40 +02:00
test_review_contracts.py feat(review): add multi-owner contracts and receipts 2026-08-22 20:57:51 +02:00
test_routers_core.py fix(classification): harden registration updates 2026-08-23 11:30:36 +02:00
test_routers_td_ep_contrib.py fix(api): normalize trailing slashes — no slash on param routes 2026-04-26 15:13:01 +02:00
test_sbom_nexus_compat.py feat: project Nexus SBOM state into summaries 2026-08-22 20:12:16 +02:00
test_schema_state.py feat(deploy): run migrations as part of the release, and report schema state 2026-08-26 00:00:09 +02:00
test_services_router.py STATE-WP-0062 T5: docs, first-party↔repo test, mark workplan finished 2026-06-19 21:16:37 +02:00
test_statehub_register_cli.py feat: delegate project register; registrar-only ID minting 2026-08-18 21:51:30 +02:00
test_suggestions.py feat(STATE-WP-0079): retire the suggestion-backlog surface (slice E1) 2026-08-20 08:11:14 +02:00
test_summary_cache.py STATE-WP-0070 T04 (partial): drop open_workstreams from /state/summary 2026-07-13 10:04:38 +02:00
test_task_bulk_status_sync.py feat(classification-spine): implement STATE-WP-0065 repo-anchored model 2026-06-22 13:52:13 +02:00
test_task_flow_engine.py STATE-WP-0069 T06: add workplan flow entity and prefer open_workplans 2026-07-08 21:26:29 +02:00
test_todo_md_staleness.py Add GET /repos/todo-md-staleness for daily TODO.md review 2026-07-08 13:19:06 +02:00
test_token_events.py feat(classification-spine): implement STATE-WP-0065 repo-anchored model 2026-06-22 13:52:13 +02:00
test_token_passthrough.py feat(classification-spine): implement STATE-WP-0065 repo-anchored model 2026-06-22 13:52:13 +02:00
test_token_sources.py Fixed and improved token tracking 2026-05-23 13:59:05 +02:00
test_tpsc_router.py feat: use hub-core TPSC router 2026-06-07 14:08:55 +02:00
test_validate_repo_adr.py fix(project-rules): qualify ad-hoc record identifiers 2026-08-23 14:45:26 +02:00
test_work_record_check.py Test coverage for C-31 work-record sidetrack detector (CUST-WP-0060 review) 2026-07-20 23:09:40 +02:00
test_work_record_identifier_migration.py fix(retirement): close projection and launch contract gaps 2026-08-23 00:52:18 +02:00
test_work_record_index.py C-33: generated per-repo work-record index (CUST-WP-0061-T04) 2026-07-21 01:25:26 +02:00
test_work_record_registration.py C-32: fix-consistency registration for intake/decision work records (CUST-WP-0061-T02) 2026-07-21 00:48:10 +02:00
test_write_idempotency.py feat(statehub): add offline write buffer relay 2026-06-25 13:44:27 +02:00