diff --git a/.kaizen/agents/custodian-codex/supervision.json b/.kaizen/agents/custodian-codex/supervision.json index 731fad47..bdd96c60 100644 --- a/.kaizen/agents/custodian-codex/supervision.json +++ b/.kaizen/agents/custodian-codex/supervision.json @@ -763,6 +763,57 @@ "final_verification_ref": "docs/assessments/netkingdom-2026-10-14/hosted-public-registration-verification.json", "verified_at": "2026-10-14T22:19:51.870244+00:00", "refinement_note": "Freshened stale ops-mason publication proof and added a fresh-profile in-memory authentication transport. First login timed out during Firefox update; user-requested retry succeeded. Preserve both authentication attempts; no unchanged-success scoring." + }, + { + "proposal_id": "STATE-WP-0095-T06-cluster-frozen-receiving-r1", + "disposition": "pending", + "outcome": "pending", + "proposal_ref": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/proposal-metadata.json", + "original_revision": 1, + "original_digest_sha256": "5bef9e7818ce1ebc64b81e300b6b40dcfc710a8625d6e0595534f8284dc2052d", + "original_digest": "5bef9e7818ce1ebc64b81e300b6b40dcfc710a8625d6e0595534f8284dc2052d", + "current_revision": 4, + "current_digest_sha256": "63a02e8296d126c0158b7eb2c4ce79c7eeb6f8d6f61298d473c1065c7557ba32", + "target": "railiance01 state-hub release/API/MCP and exact-new-trial migration Job only", + "expected_result": "Normal owner image promotion makes exact frozen cluster receiving available; API/MCP ready, expected c4 schema and exact three historical parents/15 tasks preserved; only then is later registrar admission eligible. No original TLS/identity native acceptance is inferred.", + "verification_ref": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/FINAL-PROPOSAL.md", + "rollback_ref": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/MIGRATION-JOB-RECOVERY.md", + "cost_estimate_eur": null, + "risk_estimate_eur": null, + "cost_estimate": "Unknown attributable execution/network/operator recovery cost on existing infrastructure; no zero-cost claim or budget reservation inferred.", + "risk_estimate": "Unpriced production coordination outage, message migration locks/data compatibility, retained active migration Job, uncertain connection/lock mapping and recovery time; three-minute Helm wait is not a bound on outage or DB effects. Explicit supervised risk disposition required.", + "supervisor": "Bernd Worsch", + "approval_ref": null, + "approved_revision": null, + "approved_digest_sha256": null, + "executed_revision": null, + "executed_digest_sha256": null, + "refinement_or_rescue": true, + "promotion_evidence": false, + "reason": "Exact native rollout proposal remains pending. Source preparation, synthetic compatibility and public artifact verification are evidence only; earlier preparation failures and revisions remain one trial.", + "revisions": [ + { + "revision": 1, + "proposal_ref": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/REVIEW.md", + "digest_sha256": "5bef9e7818ce1ebc64b81e300b6b40dcfc710a8625d6e0595534f8284dc2052d", + "disposition": "not_submitted_or_unadjudicated", + "executed": false + }, + { + "revision": 2, + "proposal_ref": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r2/REVIEW.md", + "digest_sha256": "c8f13ed5d67d4743ea8e81bf720367022c820a060d7b225e84338eab2907493f", + "disposition": "not_submitted_or_unadjudicated", + "executed": false + }, + { + "revision": 3, + "proposal_ref": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r3-readiness/ROLLOUT-SUPPLEMENT.md", + "digest_sha256": "df2962fd1588784a987e37932bd67f03f6248ea6384cf4bbb74ad1fe2e26be2b", + "disposition": "not_submitted_or_unadjudicated", + "executed": false + } + ] } ], "trials": [ diff --git a/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/REVIEW.md b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/REVIEW.md new file mode 100644 index 00000000..5051c266 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/REVIEW.md @@ -0,0 +1,85 @@ +# Exact cluster historical receiving successor + +Status: source candidate for independent review; not approval or deployment. +Stable proposal ID: `STATE-WP-0095-T06-cluster-frozen-receiving-r1`. + +The cluster publisher stopped before mutation because its strict scan found +15 bare task labels and five label collisions in three archived workplans. +Those files already bind three historical parent UUIDs and 15 distinct task +UUIDs. The current receiving path otherwise derives new qualified UUIDs. +The successor reuses the exact full-SHA historical receiving path and permits +registrar preservation only for exact hash-bound closed task occurrences. +Strict scan findings remain visible. Existing history is neither renamed nor +rewritten; no aliases, migration or broad grandfather rule is introduced. + +`exact-frozen-source-manifest.json` binds all three source files and 15 existing +task bindings. `existing-row-metadata-readback.json` records 18 read-only HTTP200 +returns: existing parent ownership and terminal status match. It does not prove +future delivered behavior. The receiving and registrar BINDINGS must be equal. +`source-patch-manifest.json` binds exact base commits, inputs and output files. + +## Exact target and staged order + +1. Review and integrate the State Hub source patch under STATE-WP-0095-T05. + Prepared base is 4ab66e363ed00a67ad1ea0434854bc4284c7a26e. Prior owner-local + brief/index/evidence changes are excluded. Run receiver tests and normal CI; + record the final commit, CI-produced immutable `main-` image and + registry digest in the final proposal. The future commit/image cannot yet be + named: this proposal is not execution-ready until those pins exist. Deploy + only this reviewed source closure; any unrelated difference from deployed + main-7d99282 requires review in the final rollout scope. +2. Before asking for rollout approval, capture fresh CPU/headroom using + `make railiance-state-hub-headroom`, normal server dry-run/diff and exact + release/image rollback metadata. Target is release `state-hub`, namespace + `state-hub`, railiance01 (observed node IP 92.205.62.239), both API and MCP. + Read-only observation currently finds both ready on image main-7d99282, + Helm release 75. Projected revision 75 Helm values independently confirm the + image pin; chart appVersion is stale and must not supply rollback identity. + No new database migration is introduced by this patch; the normal existing + hook still runs and must be reviewed with the final image closure. +3. Exact ordinary owner deployment, after scoped approval, is the PROMOTE.md + Helm upgrade with the pinned CI tag, `--reuse-values --atomic --timeout3m`. + No live code-copy, ad-hoc API repair or guard bypass is an alternative. +4. Verify delivered historical module hash and candidate manifest, API health, + schema unchanged and both API/MCP ready. Using the existing reviewed owner + verification path, prove the three parents / 15 tasks and full row snapshots + unchanged, plus foreign-holder/nonterminal/missing-row refusal in rolled-back + transactions. No committed probe writes. Preserve refusal receipts. +5. Only after that return, review/integrate the registrar successor under + RMGR-WP-0019-T05 (base b02e1cefb0e07fe246dc9fe9c5a989fe06116587). + Re-run read-only actual cluster allocator: expected seven assignments in + exactly two files, all three archives byte-identical, all strict findings + retained. No earlier guard may be disabled while receiving is old. +6. Normal cluster owner consistency/publication can then manage RCLUSTER-WP-0018 + parent/five task UUIDs and the single pre-existing ADHOC task UUID. The latter + exact path/ID/derived UUID and expected one-field diff are recorded in + `managed-adhoc-backfill.json` and `.preview.patch`; do not manually apply it. + Root publisher's reviewed expected file set must include that ordinary + backfill and generated indexes, in addition to its four reviewed TLS source + additions. No archived source belongs in that mutation set. Return actual + normal receiving/publication receipts and compare all historical full rows. + +## Verification and rollback limits + +Before registrar admission, a failed receiving rollout follows normal Helm +atomic rollback; observed baseline is revision 75/image main-7d99282, requiring +freshness recheck. If registrar was admitted later, first fence cluster sync +and restore its refusal gate before rolling receiving back. Preserve all source +UUIDs/IDs, existing rows and failures. Never roll back through history rewrite, +DB reset, direct UUID patch or retirement. Check API/MCP health, schema and exact +historical row snapshots after rollback. Rollback does not create recovery assent. + +No existing founder approval for older STATE95 trials covers this successor. +Monetary cost, EUR risk exposure, final diff and outage window remain unknown +until the exact CI image and fresh headroom/dry-run are reviewed. Source tests +are local and read-only metadata checks made no production changes. This packet +makes no zero-cost, deployment or autonomy claim. No new credential is requested. + +## Cross-owner case and unfinished security work + +`coordination-cases.json` attaches the registrar wait to existing project driver +SHR-WP-0001; no new driver, worker wake or external message is created. Human +rollout review remains a human gate. The cluster TLS workplan remains blocked +from publication until this lawful receiving path exists. Independent original +TLS recovery and current consumer registration/private-admission acceptance +remain outstanding under NK-WP-0049-T35/T36/T33; none follows from source sync. diff --git a/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/exact-frozen-source-manifest.json b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/exact-frozen-source-manifest.json new file mode 100644 index 00000000..2cf441bf --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/exact-frozen-source-manifest.json @@ -0,0 +1,129 @@ +{ + "status": "source_manifest_only_not_receiving_or_registrar_admission", + "bindings": [ + { + "repo": "railiance-cluster", + "path": "workplans/archived/260622-RAIL-BS-WP-0002-k3s-baseline.md", + "sha256": "8d6f8533c119117686bc0d5bb9ed5349726aa6c3189ff98b53409c68ac685ca9", + "record_id": "RAIL-BS-WP-0002", + "uuid": "4c63dfc6-9eac-4e79-9f77-8f644ad7147d", + "parent_record_id": "RAIL-BS-WP-0002", + "source_status": "finished", + "tasks": [ + { + "label": "T01", + "uuid": "3f042630-eab0-4c6a-9167-e2b28ff20e40", + "status": "done", + "source": "workplans/archived/260622-RAIL-BS-WP-0002-k3s-baseline.md#task-block-1" + }, + { + "label": "T02", + "uuid": "e8510646-46ed-4697-a345-f3d3009eea78", + "status": "done", + "source": "workplans/archived/260622-RAIL-BS-WP-0002-k3s-baseline.md#task-block-2" + }, + { + "label": "T03", + "uuid": "dab2c07f-8aa0-4635-8df6-857e87e93fc5", + "status": "done", + "source": "workplans/archived/260622-RAIL-BS-WP-0002-k3s-baseline.md#task-block-3" + }, + { + "label": "T04", + "uuid": "5c3d40e4-239b-488e-9519-6f7a38d2325f", + "status": "done", + "source": "workplans/archived/260622-RAIL-BS-WP-0002-k3s-baseline.md#task-block-4" + }, + { + "label": "T05", + "uuid": "7f9e0e58-a130-467a-a2d0-b3f2564e496f", + "status": "done", + "source": "workplans/archived/260622-RAIL-BS-WP-0002-k3s-baseline.md#task-block-5" + } + ] + }, + { + "repo": "railiance-cluster", + "path": "workplans/archived/260622-RAIL-BS-WP-0003-pgpool-ha-failover-fix.md", + "sha256": "4dc2f61e15adc3c5c81f9ecf8b933512275b95e8f829fac52ae7cde1385cea4a", + "record_id": "RAIL-BS-WP-0003", + "uuid": "7ee9ee22-1fae-4567-9194-8d70a9e0f45b", + "parent_record_id": "RAIL-BS-WP-0003", + "source_status": "finished", + "tasks": [ + { + "label": "T01", + "uuid": "6841c93a-f146-47eb-9f7c-8fa0e02c1bbc", + "status": "done", + "source": "workplans/archived/260622-RAIL-BS-WP-0003-pgpool-ha-failover-fix.md#task-block-1" + }, + { + "label": "T02", + "uuid": "ab166073-30a7-4702-a037-4091e8706e20", + "status": "done", + "source": "workplans/archived/260622-RAIL-BS-WP-0003-pgpool-ha-failover-fix.md#task-block-2" + }, + { + "label": "T03", + "uuid": "140da396-8e30-4f4d-b88c-c42c0cd46c01", + "status": "done", + "source": "workplans/archived/260622-RAIL-BS-WP-0003-pgpool-ha-failover-fix.md#task-block-3" + }, + { + "label": "T04", + "uuid": "d8a3ba40-fda0-4c1f-a9f1-ffcd621a5b3d", + "status": "done", + "source": "workplans/archived/260622-RAIL-BS-WP-0003-pgpool-ha-failover-fix.md#task-block-4" + } + ] + }, + { + "repo": "railiance-cluster", + "path": "workplans/archived/260622-RAIL-BS-WP-0004-safety-net.md", + "sha256": "04f787078232395bd2d43861de16c521848559fa286f06e1caa9cb779aa71ac3", + "record_id": "RAIL-BS-WP-0004", + "uuid": "7e8b0c20-51eb-40c9-9e3b-85dd380d7625", + "parent_record_id": "RAIL-BS-WP-0004", + "source_status": "finished", + "tasks": [ + { + "label": "T01", + "uuid": "4526a842-ea31-4874-9231-92ab556cfe7b", + "status": "done", + "source": "workplans/archived/260622-RAIL-BS-WP-0004-safety-net.md#task-block-1" + }, + { + "label": "T02", + "uuid": "a6313e06-1976-46a7-8e31-df4eb2eca880", + "status": "done", + "source": "workplans/archived/260622-RAIL-BS-WP-0004-safety-net.md#task-block-2" + }, + { + "label": "T03", + "uuid": "05d42a55-921f-4aa7-bb76-e8af9c7e0ac3", + "status": "done", + "source": "workplans/archived/260622-RAIL-BS-WP-0004-safety-net.md#task-block-3" + }, + { + "label": "T04", + "uuid": "08233868-d522-4117-bc4e-6c0f52545665", + "status": "done", + "source": "workplans/archived/260622-RAIL-BS-WP-0004-safety-net.md#task-block-4" + }, + { + "label": "T05", + "uuid": "2d5acff7-4a4e-4ddd-ad06-08237ad3dac8", + "status": "done", + "source": "workplans/archived/260622-RAIL-BS-WP-0004-safety-net.md#task-block-5" + }, + { + "label": "T06", + "uuid": "f8e4a094-c367-40eb-b895-da17bc144b07", + "status": "done", + "source": "workplans/archived/260622-RAIL-BS-WP-0004-safety-net.md#task-block-6" + } + ] + } + ], + "all_historical_bytes_ids_uuids_preserved": true +} diff --git a/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/existing-row-metadata-readback.json b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/existing-row-metadata-readback.json new file mode 100644 index 00000000..ef56505d --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/existing-row-metadata-readback.json @@ -0,0 +1,181 @@ +{ + "status": "read_only_metadata", + "base": "http://127.0.0.1:8000", + "rows": [ + { + "kind": "task", + "uuid": "3f042630-eab0-4c6a-9167-e2b28ff20e40", + "http_status": 200, + "status": "done", + "record_id": "RAIL-BS-WP-0002-T01", + "actual_uuid": "3f042630-eab0-4c6a-9167-e2b28ff20e40", + "actual_parent": "4c63dfc6-9eac-4e79-9f77-8f644ad7147d", + "expected_parent": "4c63dfc6-9eac-4e79-9f77-8f644ad7147d" + }, + { + "kind": "task", + "uuid": "e8510646-46ed-4697-a345-f3d3009eea78", + "http_status": 200, + "status": "done", + "record_id": "RAIL-BS-WP-0002-T02", + "actual_uuid": "e8510646-46ed-4697-a345-f3d3009eea78", + "actual_parent": "4c63dfc6-9eac-4e79-9f77-8f644ad7147d", + "expected_parent": "4c63dfc6-9eac-4e79-9f77-8f644ad7147d" + }, + { + "kind": "task", + "uuid": "dab2c07f-8aa0-4635-8df6-857e87e93fc5", + "http_status": 200, + "status": "done", + "record_id": "RAIL-BS-WP-0002-T03", + "actual_uuid": "dab2c07f-8aa0-4635-8df6-857e87e93fc5", + "actual_parent": "4c63dfc6-9eac-4e79-9f77-8f644ad7147d", + "expected_parent": "4c63dfc6-9eac-4e79-9f77-8f644ad7147d" + }, + { + "kind": "task", + "uuid": "5c3d40e4-239b-488e-9519-6f7a38d2325f", + "http_status": 200, + "status": "done", + "record_id": "RAIL-BS-WP-0002-T04", + "actual_uuid": "5c3d40e4-239b-488e-9519-6f7a38d2325f", + "actual_parent": "4c63dfc6-9eac-4e79-9f77-8f644ad7147d", + "expected_parent": "4c63dfc6-9eac-4e79-9f77-8f644ad7147d" + }, + { + "kind": "task", + "uuid": "7f9e0e58-a130-467a-a2d0-b3f2564e496f", + "http_status": 200, + "status": "done", + "record_id": "RAIL-BS-WP-0002-T05", + "actual_uuid": "7f9e0e58-a130-467a-a2d0-b3f2564e496f", + "actual_parent": "4c63dfc6-9eac-4e79-9f77-8f644ad7147d", + "expected_parent": "4c63dfc6-9eac-4e79-9f77-8f644ad7147d" + }, + { + "kind": "workplan", + "uuid": "4c63dfc6-9eac-4e79-9f77-8f644ad7147d", + "http_status": 200, + "status": "finished", + "record_id": null, + "actual_uuid": "4c63dfc6-9eac-4e79-9f77-8f644ad7147d" + }, + { + "kind": "task", + "uuid": "6841c93a-f146-47eb-9f7c-8fa0e02c1bbc", + "http_status": 200, + "status": "done", + "record_id": "RAIL-BS-WP-0003-T01", + "actual_uuid": "6841c93a-f146-47eb-9f7c-8fa0e02c1bbc", + "actual_parent": "7ee9ee22-1fae-4567-9194-8d70a9e0f45b", + "expected_parent": "7ee9ee22-1fae-4567-9194-8d70a9e0f45b" + }, + { + "kind": "task", + "uuid": "ab166073-30a7-4702-a037-4091e8706e20", + "http_status": 200, + "status": "done", + "record_id": "RAIL-BS-WP-0003-T02", + "actual_uuid": "ab166073-30a7-4702-a037-4091e8706e20", + "actual_parent": "7ee9ee22-1fae-4567-9194-8d70a9e0f45b", + "expected_parent": "7ee9ee22-1fae-4567-9194-8d70a9e0f45b" + }, + { + "kind": "task", + "uuid": "140da396-8e30-4f4d-b88c-c42c0cd46c01", + "http_status": 200, + "status": "done", + "record_id": "RAIL-BS-WP-0003-T03", + "actual_uuid": "140da396-8e30-4f4d-b88c-c42c0cd46c01", + "actual_parent": "7ee9ee22-1fae-4567-9194-8d70a9e0f45b", + "expected_parent": "7ee9ee22-1fae-4567-9194-8d70a9e0f45b" + }, + { + "kind": "task", + "uuid": "d8a3ba40-fda0-4c1f-a9f1-ffcd621a5b3d", + "http_status": 200, + "status": "done", + "record_id": "RAIL-BS-WP-0003-T04", + "actual_uuid": "d8a3ba40-fda0-4c1f-a9f1-ffcd621a5b3d", + "actual_parent": "7ee9ee22-1fae-4567-9194-8d70a9e0f45b", + "expected_parent": "7ee9ee22-1fae-4567-9194-8d70a9e0f45b" + }, + { + "kind": "workplan", + "uuid": "7ee9ee22-1fae-4567-9194-8d70a9e0f45b", + "http_status": 200, + "status": "finished", + "record_id": null, + "actual_uuid": "7ee9ee22-1fae-4567-9194-8d70a9e0f45b" + }, + { + "kind": "task", + "uuid": "4526a842-ea31-4874-9231-92ab556cfe7b", + "http_status": 200, + "status": "done", + "record_id": "RAIL-BS-WP-0004-T01", + "actual_uuid": "4526a842-ea31-4874-9231-92ab556cfe7b", + "actual_parent": "7e8b0c20-51eb-40c9-9e3b-85dd380d7625", + "expected_parent": "7e8b0c20-51eb-40c9-9e3b-85dd380d7625" + }, + { + "kind": "task", + "uuid": "a6313e06-1976-46a7-8e31-df4eb2eca880", + "http_status": 200, + "status": "done", + "record_id": "RAIL-BS-WP-0004-T02", + "actual_uuid": "a6313e06-1976-46a7-8e31-df4eb2eca880", + "actual_parent": "7e8b0c20-51eb-40c9-9e3b-85dd380d7625", + "expected_parent": "7e8b0c20-51eb-40c9-9e3b-85dd380d7625" + }, + { + "kind": "task", + "uuid": "05d42a55-921f-4aa7-bb76-e8af9c7e0ac3", + "http_status": 200, + "status": "done", + "record_id": "RAIL-BS-WP-0004-T03", + "actual_uuid": "05d42a55-921f-4aa7-bb76-e8af9c7e0ac3", + "actual_parent": "7e8b0c20-51eb-40c9-9e3b-85dd380d7625", + "expected_parent": "7e8b0c20-51eb-40c9-9e3b-85dd380d7625" + }, + { + "kind": "task", + "uuid": "08233868-d522-4117-bc4e-6c0f52545665", + "http_status": 200, + "status": "done", + "record_id": "RAIL-BS-WP-0004-T04", + "actual_uuid": "08233868-d522-4117-bc4e-6c0f52545665", + "actual_parent": "7e8b0c20-51eb-40c9-9e3b-85dd380d7625", + "expected_parent": "7e8b0c20-51eb-40c9-9e3b-85dd380d7625" + }, + { + "kind": "task", + "uuid": "2d5acff7-4a4e-4ddd-ad06-08237ad3dac8", + "http_status": 200, + "status": "done", + "record_id": "RAIL-BS-WP-0004-T05", + "actual_uuid": "2d5acff7-4a4e-4ddd-ad06-08237ad3dac8", + "actual_parent": "7e8b0c20-51eb-40c9-9e3b-85dd380d7625", + "expected_parent": "7e8b0c20-51eb-40c9-9e3b-85dd380d7625" + }, + { + "kind": "task", + "uuid": "f8e4a094-c367-40eb-b895-da17bc144b07", + "http_status": 200, + "status": "done", + "record_id": "RAIL-BS-WP-0004-T06", + "actual_uuid": "f8e4a094-c367-40eb-b895-da17bc144b07", + "actual_parent": "7e8b0c20-51eb-40c9-9e3b-85dd380d7625", + "expected_parent": "7e8b0c20-51eb-40c9-9e3b-85dd380d7625" + }, + { + "kind": "workplan", + "uuid": "7e8b0c20-51eb-40c9-9e3b-85dd380d7625", + "http_status": 200, + "status": "finished", + "record_id": null, + "actual_uuid": "7e8b0c20-51eb-40c9-9e3b-85dd380d7625" + } + ], + "writes_performed": false +} diff --git a/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r2/REVIEW.md b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r2/REVIEW.md new file mode 100644 index 00000000..ec2d71d8 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r2/REVIEW.md @@ -0,0 +1,126 @@ +# Exact cluster historical receiving successor + +Status: revised source candidate for independent review; not approval or deployment. +Revision: 2 (r2). Original r1 retained. Corrects registrar base and full-image migration/rollback scope. +Stable proposal ID: `STATE-WP-0095-T06-cluster-frozen-receiving-r1`. + +The cluster publisher stopped before mutation because its strict scan found +15 bare task labels and five label collisions in three archived workplans. +Those files already bind three historical parent UUIDs and 15 distinct task +UUIDs. The current receiving path otherwise derives new qualified UUIDs. +The successor reuses the exact full-SHA historical receiving path and permits +registrar preservation only for exact hash-bound closed task occurrences. +Strict scan findings remain visible. Existing history is neither renamed nor +rewritten; no aliases, migration or broad grandfather rule is introduced. + +`exact-frozen-source-manifest.json` binds all three source files and 15 existing +task bindings. `existing-row-metadata-readback.json` records 18 read-only HTTP200 +returns: existing parent ownership and terminal status match. It does not prove +future delivered behavior. The receiving and registrar BINDINGS must be equal. +`source-patch-manifest.json` binds exact base commits, inputs and output files. + +## Exact target and staged order + +1. Review and integrate the State Hub source patch under STATE-WP-0095-T05. + Prepared base is 4ab66e363ed00a67ad1ea0434854bc4284c7a26e. Prior owner-local + brief/index/evidence changes are excluded. Run receiver tests and normal CI; + record the final commit, CI-produced immutable `main-` image and + registry digest in the final proposal. The future commit/image cannot yet be + named: this proposal is not execution-ready until those pins exist. Deploy + only this reviewed source closure; any unrelated difference from deployed + main-7d99282 requires review in the final rollout scope. +2. Before asking for rollout approval, capture fresh CPU/headroom using + `make railiance-state-hub-headroom`, normal server dry-run/diff and exact + release/image rollback metadata. Target is release `state-hub`, namespace + `state-hub`, railiance01 (observed node IP 92.205.62.239), both API and MCP. + Read-only observation currently finds both ready on image main-7d99282, + Helm release 75. Projected revision 75 Helm values independently confirm the + image pin; chart appVersion is stale and must not supply rollback identity. + The receiver patch itself adds no migration, but the full current image + includes inbox-feed migration c4d5e6f7a8b9 (previous head b3c4d5e6f7a8). + Its normal pre-upgrade hook backfills two tables, adds indexes/NOT NULL + constraints, a tombstone table and write/delete triggers. This is a database + change and must be explicitly covered by rollout review and measured on a + disposable migrated schema before approval; no unchanged-schema claim applies. +3. Exact ordinary owner deployment, after scoped approval, is the PROMOTE.md + Helm upgrade with the pinned CI tag, `--reuse-values --atomic --timeout3m`. + No live code-copy, ad-hoc API repair or guard bypass is an alternative. +4. Verify delivered historical module hash and candidate manifest, API health, + expected schema c4d5e6f7a8b9 and both API/MCP ready. Using the existing reviewed owner + verification path, prove the three parents / 15 tasks and full row snapshots + unchanged, plus foreign-holder/nonterminal/missing-row refusal in rolled-back + transactions. No committed probe writes. Preserve refusal receipts. +5. Only after that return, review/integrate the registrar successor under + RMGR-WP-0019-T05 (base 9ebde0a9bd60d5c82910494fbe6bd1b891455cee). + Re-run read-only actual cluster allocator: expected seven assignments in + exactly two files, all three archives byte-identical, all strict findings + retained. No earlier guard may be disabled while receiving is old. +6. Normal cluster owner consistency/publication can then manage RCLUSTER-WP-0018 + parent/five task UUIDs and the single pre-existing ADHOC task UUID. The latter + exact path/ID/derived UUID and expected one-field diff are recorded in + `managed-adhoc-backfill.json` and `.preview.patch`; do not manually apply it. + Root publisher's reviewed expected file set must include that ordinary + backfill and generated indexes, in addition to its four reviewed TLS source + additions. No archived source belongs in that mutation set. Return actual + normal receiving/publication receipts and compare all historical full rows. + +## Verification and rollback limits + +Before registrar admission, a failed receiving rollout follows normal Helm +atomic rollback; observed baseline is revision 75/image main-7d99282, requiring +freshness recheck. If registrar was admitted later, first fence cluster sync +and restore its refusal gate before rolling receiving back. Preserve all source +UUIDs/IDs, existing rows and failures. Never roll back through history rewrite, +DB reset, direct UUID patch or retirement. A Helm rollback does not reverse the migration. Do not automatically run +Alembic downgrade: that would discard feed revision/tombstone data. Verify the +old application against the additive migrated schema in a disposable fixture +before accepting image-only rollback; check trigger behavior for old message +writers and feed consumers. Check API/MCP health, retained schema and exact +historical row snapshots after rollback. Rollback does not create recovery assent. + +No existing founder approval for older STATE95 trials covers this successor. +Monetary cost, EUR risk exposure, final diff and outage window remain unknown +until the exact CI image and fresh headroom/dry-run are reviewed. Source tests +are local and read-only metadata checks made no production changes. This packet +makes no zero-cost, deployment or autonomy claim. No new credential is requested. + +## Cross-owner case and unfinished security work + +`coordination-cases.json` attaches the registrar wait to existing project driver +SHR-WP-0001; no new driver, worker wake or external message is created. Human +rollout review remains a human gate. The cluster TLS workplan remains blocked +from publication until this lawful receiving path exists. Independent original +TLS recovery and current consumer registration/private-admission acceptance +remain outstanding under NK-WP-0049-T35/T36/T33; none follows from source sync. + +## Full image closure and publication preparation, r2 + +The deployed-to-current source closure is hashed in +`deployed-to-current-source-closure.json`: 51 changed paths, including 13 +runtime/build paths. Besides exact receiver preservation, current main adds the +inbox feed API, database-managed transaction revisions/tombstones, idempotent +archive timestamps, projection-retired read metadata, C43 advisory consistency +findings, template instructions and bounded repo-push deadlines. Existing +message-feed tests exercise migration up/down and DDL parity; root's full tests +must confirm their actual database execution rather than a skipped suite. + +The existing CI image workflow vendors hub-core from moving main and installs +unlocked dependencies atop a moving Python base. An immutable primary Git SHA +therefore does not fully identify the image source/dependency closure. Before +rollout approval require the actual successful build task and exact registry +manifest/config digest, then inspect the produced local image read-only for +receiver module SHA, Alembic head, hub-core source/package SHA and installed +package inventory. If exact dependency provenance is unavailable, retain that +unknown as a rollout risk; do not claim hermetic or exact deployed closure. No +new build process or private registry credential is introduced by this packet. + +`publish_receiver_source.py` defaults to read-only validation. After root +review/integration, its explicit source-only execution performs normal scanner, +exact-path commit and optional push while preserving staged brief/index and +working evidence. It does not deploy, sync work records, touch Repo Manager or +request credentials. Commit failure retains source/normal hook refusal. Push +failure is unverified and must be resolved by remote-ref observation, never an +automatic retry. `lookup_ci_metadata.py` uses existing public task endpoint and +unauthenticated registry HEAD, emits only fixed metadata, and refuses absent or +unverified artifacts. A login requirement remains unknown and triggers normal +routing, not token retrieval. See `bounded-preflight-commands.md`. diff --git a/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r2/canonical-source-readback.json b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r2/canonical-source-readback.json new file mode 100644 index 00000000..5ef3feab --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r2/canonical-source-readback.json @@ -0,0 +1,48 @@ +{ + "schema": "receiver-canonical-source-readback.v1", + "source_revision": "51bc70d1ff8f25450a8650d8e50caf053093a02e", + "parent_revision": "4ab66e363ed00a67ad1ea0434854bc4284c7a26e", + "exact_reviewed_paths": true, + "files": [ + { + "path": "api/services/historical_projection.py", + "expected_sha256": "e3c4bf965764b32a6df5d61c71272ee22569df9a9ddae2a3fc3df97ec554e0b2", + "committed_matches": true, + "working_matches": true + }, + { + "path": "tests/test_cluster_historical_projection.py", + "expected_sha256": "183f0574aa01f69269a06d162b29b5b95c3415f6fce0560bb92188c09be26507", + "committed_matches": true, + "working_matches": true + }, + { + "path": "workplans/STATE-WP-0095-historical-source-receiving.md", + "expected_sha256": "aeb307597dba0d92594d55242bd69ed6a391e7fdd58bb16c839ec8cbce44b349", + "committed_matches": true, + "working_matches": true + }, + { + "path": "tests/fixtures/railiance-cluster/workplans/archived/260622-RAIL-BS-WP-0002-k3s-baseline.md", + "expected_sha256": "8d6f8533c119117686bc0d5bb9ed5349726aa6c3189ff98b53409c68ac685ca9", + "committed_matches": true, + "working_matches": true + }, + { + "path": "tests/fixtures/railiance-cluster/workplans/archived/260622-RAIL-BS-WP-0003-pgpool-ha-failover-fix.md", + "expected_sha256": "4dc2f61e15adc3c5c81f9ecf8b933512275b95e8f829fac52ae7cde1385cea4a", + "committed_matches": true, + "working_matches": true + }, + { + "path": "tests/fixtures/railiance-cluster/workplans/archived/260622-RAIL-BS-WP-0004-safety-net.md", + "expected_sha256": "04f787078232395bd2d43861de16c521848559fa286f06e1caa9cb779aa71ac3", + "committed_matches": true, + "working_matches": true + } + ], + "remote_lookup_exit": 0, + "remote_revision": "51bc70d1ff8f25450a8650d8e50caf053093a02e", + "remote_matches": true, + "no_deployment_claim": true +} diff --git a/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r2/deployed-to-current-source-closure.json b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r2/deployed-to-current-source-closure.json new file mode 100644 index 00000000..2938e2bd --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r2/deployed-to-current-source-closure.json @@ -0,0 +1,275 @@ +{ + "schema": "statehub-deployed-source-closure.v1", + "deployed_source_revision": "7d992821fb890207c738162d67ee3e4ba566a950", + "candidate_base_revision": "4ab66e363ed00a67ad1ea0434854bc4284c7a26e", + "changed_files": [ + { + "path": ".claude/rules/session-protocol.md", + "sha256": "9fd893a4192367f9465fa9814eb01a9882b26cabb2536e0a2eb99da4f1456019", + "included_in_runtime_build": false + }, + { + "path": ".custodian-brief.md", + "sha256": "36b5c3446e5be2190bc23d7b9ddebf9f781a6ced4c4ef1137ddb259f29d88ca6", + "included_in_runtime_build": false + }, + { + "path": "AGENTS.md", + "sha256": "20abf88ae838ec73fdfbf6131f51e1d81988a9c0b77608f61bdb2e242a01d908", + "included_in_runtime_build": false + }, + { + "path": "WORK-RECORDS.md", + "sha256": "eb2a785fc8486a1e8929c122c7c1619e068737e6826d342ee26bfc49b7182d36", + "included_in_runtime_build": false + }, + { + "path": "api/main.py", + "sha256": "c24b0e0915ad0af4c608b2daae6b4f91691dba14ffea561c7a182e9e1383effa", + "included_in_runtime_build": true + }, + { + "path": "api/models/__init__.py", + "sha256": "cafc5c36350c36dad96b44b5524d36498cdb732372ac87a2c72f929868412d1e", + "included_in_runtime_build": true + }, + { + "path": "api/models/agent_message.py", + "sha256": "97c3bf5f66304d0ddefbb5f0fa7889e087b17b9c9064676f3a8221c8865914a0", + "included_in_runtime_build": true + }, + { + "path": "api/routers/message_feed.py", + "sha256": "8e71d80397cd8cfa446682a14e6f4b1aabc3db17c748a279f95da61acf9b9aa9", + "included_in_runtime_build": true + }, + { + "path": "api/routers/messages.py", + "sha256": "1d1c57f1e1ada29237f41445d4a622975b951b80c06b314826922c93530c8124", + "included_in_runtime_build": true + }, + { + "path": "api/schemas/inbox_feed.py", + "sha256": "f9778d7860703850e22f73ba270c1b30d42e7f09453336b2a7dd9730e730fabf", + "included_in_runtime_build": true + }, + { + "path": "api/schemas/workplan.py", + "sha256": "12aca42108d32346fa0f41b966705e52865355503ce2e2da006e7a8643481e08", + "included_in_runtime_build": true + }, + { + "path": "docs/a5-topic-spine-comparison-packet.md", + "sha256": "1f4d786cce5c9ac987fd69a5718edcb4a7c19aeaca56cdbc4b4f58ee8541d8f5", + "included_in_runtime_build": false + }, + { + "path": "docs/decision-contest-convention.md", + "sha256": "880ad58afd330d2ad4f89dfc62c7a6f72d66ae9c87ac1508172cdd9028dc5245", + "included_in_runtime_build": false + }, + { + "path": "docs/evidence/2026-10-06-state-hub-rollout-7d99282.json", + "sha256": "3d35f03d49b46746338b7f09e96f7eb51f2bdd9644ac19dc7d53566654360fab", + "included_in_runtime_build": false + }, + { + "path": "docs/evidence/a5-topic-spine-comparison-cases.json", + "sha256": "60b38ba14c44a49f676c6513bf5f8446c5adebc696b579d8c8551d55a718185f", + "included_in_runtime_build": false + }, + { + "path": "docs/evidence/legacy-meter-weekly-review-20261005.json", + "sha256": "dd075cc02a1de42becda428fafaa8cc5caa11e3232ee0172b9089f46f55decdf", + "included_in_runtime_build": false + }, + { + "path": "docs/evidence/legacy-meter-weekly-review-20261006.json", + "sha256": "8bf2f184cae6e96f63f9224d7336a6b4491b27c0e74517d3f3ab37ff08f420a4", + "included_in_runtime_build": false + }, + { + "path": "docs/evidence/legacy-meter-weekly-review-20261007.json", + "sha256": "a04d9fce8df82a1ce47ff7556ebee8eb04158c21f863127e7c55473e2c669756", + "included_in_runtime_build": false + }, + { + "path": "docs/evidence/legacy-meter-weekly-review-20261008.json", + "sha256": "9f238a35af9e16c342038a8e6744007d0561e4ae62a6c491293a374cf4565cb4", + "included_in_runtime_build": false + }, + { + "path": "docs/evidence/legacy-meter-weekly-review-20261009.json", + "sha256": "360132e3f6f525a3cc0b5a4083aee773bd2fa7600108c62eeac46df3ee9b758f", + "included_in_runtime_build": false + }, + { + "path": "docs/evidence/legacy-meter-weekly-review-20261010.json", + "sha256": "1cea43063b0bf805946d67f5c3273c34b89fa92e181914670a6b81eb79e2803d", + "included_in_runtime_build": false + }, + { + "path": "docs/evidence/legacy-meter-weekly-review-20261011.json", + "sha256": "e6e1834e21ad9a76abdc39fefdd7b3bbaa953be7165e07f97c1c779667e4c3dd", + "included_in_runtime_build": false + }, + { + "path": "docs/evidence/legacy-meter-weekly-review-20261012.json", + "sha256": "3d2023269ec1aab1092fd5a27a8d3b95ecdc8c16a2860458c85c101a2b1bcc01", + "included_in_runtime_build": false + }, + { + "path": "docs/evidence/legacy-meter-weekly-review-20261013.json", + "sha256": "e44067306b7c5a79b0aebb430266ca5962ab8d0680168558df8e2a838b03ac90", + "included_in_runtime_build": false + }, + { + "path": "docs/evidence/legacy-meter-weekly-review-20261014.json", + "sha256": "50d5c8e116e9ec924b901cc58ba2b9faa49f0037c62f47d01685f84cf65af8f7", + "included_in_runtime_build": false + }, + { + "path": "docs/inbox-change-feed-contract.md", + "sha256": "64db876d40cca484d7f30d2a91903aa79a10c9b2a4c739db372615e003e6ae55", + "included_in_runtime_build": false + }, + { + "path": "docs/workplan-convention.md", + "sha256": "408d5aa86b61403720f20b48ce478428ddce4693faacf6e741e14ef4e084833f", + "included_in_runtime_build": false + }, + { + "path": "migrations/versions/c4d5e6f7a8b9_inbox_feed_revision.py", + "sha256": "48f1730037be99b5623e878d7f20a06bec243ce27317fde81c82e16006d7b3ce", + "included_in_runtime_build": true + }, + { + "path": "registry/capabilities/capability.statehub.progress-log.md", + "sha256": "71dacad9cca8df30d487720e3072a278c489e6c52d74b3fcb84f26d61c07c846", + "included_in_runtime_build": false + }, + { + "path": "registry/capabilities/capability.statehub.workstream-coordinate.md", + "sha256": "818428997975e8f2d64d85946937b4076806a9eedda1a31d1f701f80d1a6cf31", + "included_in_runtime_build": false + }, + { + "path": "registry/indexes/capabilities.yaml", + "sha256": "eab454bd985ab6ab83c38fd29e6e58ebdfe1e09bbc5388edddaa07a88133619a", + "included_in_runtime_build": false + }, + { + "path": "scripts/consistency_check.py", + "sha256": "1827921c79b476bee823c2ddf9896aeb83f3efca6548427e17b3244216bbc6b5", + "included_in_runtime_build": true + }, + { + "path": "scripts/project_rules/agents-codex.template", + "sha256": "45d0bc055438b21c219ef108fb7f8a9ac29855293e605ce5bbf911036f8cf6b7", + "included_in_runtime_build": true + }, + { + "path": "scripts/project_rules/session-protocol.template", + "sha256": "2fd296642b81b5a1d12660d8d1a4f54ae5d074345cc05d5de38aabab90ad01ac", + "included_in_runtime_build": true + }, + { + "path": "scripts/project_rules/workplan-convention.template", + "sha256": "ca291b913a5592aa67d89df914c6799bdda77fd2ba77c8cf7152998459d0c746", + "included_in_runtime_build": true + }, + { + "path": "scripts/repo_sync.py", + "sha256": "e02ea7983ce5accd0f5b0a35bbe6dba5572ec36b5b51cfd5c60e337146e3fda2", + "included_in_runtime_build": true + }, + { + "path": "tests/test_c07_retired_rows.py", + "sha256": "d8e0db343cc000570f2d6751ba094a4c83ad6caa70dc297aa1dfb0f4472a6ae1", + "included_in_runtime_build": false + }, + { + "path": "tests/test_consistency_check.py", + "sha256": "3505dd6288e9764d34001f3a4cf0f41b0166e2d0cf98776a3e3a35b0ac25ece3", + "included_in_runtime_build": false + }, + { + "path": "tests/test_message_feed.py", + "sha256": "7915b1a61f90d506215a70d10fd260fe422ae7c07acdde06187ac0836be8f1e6", + "included_in_runtime_build": false + }, + { + "path": "tests/test_push_deadline.py", + "sha256": "1bad625eabe96b7a4da6f00ab2228991be0777a705f11f34f153c33256e72e30", + "included_in_runtime_build": false + }, + { + "path": "workplans/ADHOC-2026-10-06.md", + "sha256": "b11786c9d4929c749ecc0d611ad617ed17c72a631f89c246dbdbb495459f385c", + "included_in_runtime_build": false + }, + { + "path": "workplans/ADHOC-2026-10-13.md", + "sha256": "4f7bbab61d00eea6988ec16b2451bb204db2c9033cc0629cc0239c8ceee25508", + "included_in_runtime_build": false + }, + { + "path": "workplans/STATE-WP-0071-railiance01-workstream-caller-deploy.md", + "sha256": "ec48419b9901693817caf96ae82714bd0edfa5d3ab38ca1fa86ccf603fd6d129", + "included_in_runtime_build": false + }, + { + "path": "workplans/STATE-WP-0073-legacy-meter-decline-and-remote-audit.md", + "sha256": "ab17f5f779a52f38ad2bec38f19f700ff408138b00c390a5317d35ba86c5fa77", + "included_in_runtime_build": false + }, + { + "path": "workplans/STATE-WP-0079-retirement-strangler.md", + "sha256": "6926943850aacc8cee80dad1ab3eadeedbff002b8be4f259f3ff7cb5c999fea3", + "included_in_runtime_build": false + }, + { + "path": "workplans/STATE-WP-0080-register-project-flavor-awareness.md", + "sha256": "6c56f3fd92ebcaf73638eabf43a411afca7cebcd2c62ff79fca50497ca2fe08c", + "included_in_runtime_build": false + }, + { + "path": "workplans/STATE-WP-0094-routed-gates-and-owner-returns.md", + "sha256": "3f1ae0254bd9b44bc1210202fedb5a904a010b0a619073770b3552b144d73bf1", + "included_in_runtime_build": false + }, + { + "path": "workplans/STATE-WP-0097-unlinked-decision-supersession.md", + "sha256": "ecb334506917f07bc5226286ded7ce193b1c2e98c53ae8543db1205c35ae9627", + "included_in_runtime_build": false + }, + { + "path": "workplans/STATE-WP-0098-hub-core-receipt-inputs.md", + "sha256": "eabe057705f5f1f9635a4f040442480b5c596e851d488427d0948cb27fa00ecf", + "included_in_runtime_build": false + }, + { + "path": "workplans/archived/260708-STATE-WP-0069-workplan-terminology-legacy-retirement.md", + "sha256": "16825ce819e9eb70710038feb1119879fd2e78faaeaee885f0d63e4448d1a2ae", + "included_in_runtime_build": false + }, + { + "path": "workplans/archived/260714-STATE-WP-0070-workplan-terminology-phase2-retirement.md", + "sha256": "895c014d61f0cb2b2b2edfe5007db9bcd7ee56975390f2f7874bfd0ec66c4a8b", + "included_in_runtime_build": false + } + ], + "candidate_receiver_patch_sha256": "5cb52c26c902ed1cd95156f25c2e4d9107e6b2a808212960aa766074314b819d", + "new_migration": "c4d5e6f7a8b9", + "previous_schema_head": "b3c4d5e6f7a8", + "schema_head_after_normal_migrate_hook": "c4d5e6f7a8b9", + "floating_build_inputs": [ + "hub-core main archive", + "python:3.12-slim base", + "apt indexes/packages", + "pip uv installer", + "unlocked pip dependency resolution", + "Docker CLI download" + ], + "no_native_actions": true +} diff --git a/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r2/full-image-review-notes.json b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r2/full-image-review-notes.json new file mode 100644 index 00000000..ef51eb88 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r2/full-image-review-notes.json @@ -0,0 +1,61 @@ +{ + "schema": "statehub-full-image-source-review.v1", + "deployed_revision": "7d99282", + "candidate_base": "4ab66e363ed00a67ad1ea0434854bc4284c7a26e", + "source_only": true, + "runtime_change_reviews": [ + { + "paths": [ + "api/main.py", + "api/models/__init__.py", + "api/models/agent_message.py", + "api/routers/message_feed.py", + "api/routers/messages.py", + "api/schemas/inbox_feed.py", + "migrations/versions/c4d5e6f7a8b9_inbox_feed_revision.py" + ], + "behavior": "Adds inbox feed snapshots/cursors/tombstones and one database revision per inbox write transaction; archive timestamp becomes first-write-wins. Router ordered before dynamic messages path. Parameterized page queries; source/version/horizon cursors reject mismatches.", + "rollout_risks": [ + "Migration backfills all current messages/receipts, adds constraints/indexes/triggers and takes normal ALTER TABLE locks; production cardinality/runtime/lock budget not observed.", + "Transaction advisory lock serializes message/receipt writes; long inbox transactions can delay other inbox writers.", + "Snapshot reads all current inbox rows; page limit deliberately never splits a revision, so a large transaction can exceed nominal page count. New load/resource effects require owner acceptance.", + "Helm rollback leaves additive schema/triggers; no automatic data-destructive downgrade is proposed.", + "Contract acceptance in STATE-WP-0098 is source context, not approval of this new exact deployment proposal." + ] + }, + { + "paths": [ + "api/schemas/workplan.py", + "scripts/consistency_check.py" + ], + "behavior": "Exposes projection-retired metadata, treats retired missing-source rows as INFO tombstones, adds advisory C43 unlinked supersession check. No new consistency repair mutation is added by C43.", + "rollout_risks": [ + "Consistency now reads decisions for an extra advisory finding; unusual decision text can change warnings, not decision authority." + ] + }, + { + "paths": [ + "scripts/repo_sync.py", + "scripts/project_rules/agents-codex.template", + "scripts/project_rules/session-protocol.template", + "scripts/project_rules/workplan-convention.template" + ], + "behavior": "Push deadline rises120s with explicit remote-unverified timeout result; instruction templates require source workplan refinement after substantive progress.", + "rollout_risks": [ + "Push timeout remains uncertain; remote ref must be inspected before retry." + ] + } + ], + "build_limits": [ + "Primary commit/tag does not pin floating hub-core main, Python base or unlocked dependency resolution. Require actual image manifest digest and in-image module/package hashes.", + "No current app image/source contains the proposed receiver until canonical source commit and normal CI publication succeed." + ], + "unchanged_in_git_delta": [ + "Dockerfile", + "pyproject.toml", + "uv.lock", + ".forgejo/workflows/image.yaml", + "Helm chart" + ], + "production_actions": 0 +} diff --git a/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r3-readiness/IMAGE-RECEIPT-SUPPLEMENT.md b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r3-readiness/IMAGE-RECEIPT-SUPPLEMENT.md new file mode 100644 index 00000000..519e972a --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r3-readiness/IMAGE-RECEIPT-SUPPLEMENT.md @@ -0,0 +1,32 @@ +# Final image receipt attachment to revision 3 + +Stable proposal ID `STATE-WP-0095-T06-cluster-frozen-receiving-r1`, revision 3. +This attaches new actual image evidence to the frozen [rollout supplement](ROLLOUT-SUPPLEMENT.md) +and [source readiness manifest](source-patch-manifest.json); it does not reset the +trial, claim deployment approval or change the source patch. + +The [public image inspection receipt](/home/worsch/the-custodian/docs/changes/netkingdom-target-2026-10-17/statehub-public-image-inspection.json) +binds source 51bc70d and manifest +`sha256:c802690ee1811b3d77df4077936f9cdced1385514e8673fcbc9232b84d645015`. +Root verified 22 compressed layers (129.68MiB), 233 selected code-file hashes, +86 installed package METADATA records and exact CI build ID 51bc70d. The selected +receiver and c4migration files independently match committed source. The +174 hub-core source/installed files and installed hub-core 0.2.0 metadata +`sha256:84a59c6ea36d6d8a0b91b76e52f351a5ce6f2fd9ace8a4c887b51bab05973953` +are inventory evidence bound to these image bytes; floating build origin remains +unknown. No image was executed, installed into the system or pulled by a daemon. + +The [anonymous registry metadata](/home/worsch/the-custodian/docs/changes/netkingdom-target-2026-10-17/statehub-anonymous-registry-metadata.json) +resolves the initial HEAD401 as ordinary OCI challenge flow, using an ephemeral +anonymous pull token only in memory. No credential file or login was needed. +The [actual migration fixture result](/home/worsch/the-custodian/docs/changes/netkingdom-target-2026-10-17/migration-compat-r1-result.json) +retains ten passing SQL compatibility oracles, and its +[independent cleanup receipt](/home/worsch/the-custodian/docs/changes/netkingdom-target-2026-10-17/migration-compat-r1-cleanup.json) +verifies both exact containers and run-label resources absent. + +Full old/new application acceptance, production migration locks/runtime, exact +reuse-values upgrade diff and refreshed rollback/headroom/schema facts remain +bounded by the main supplement. EUR execution cost and risk exposure remain +unknown, with no new budget grant. Keep registrar refusal until receiving is +delivered and verified; source publication or source-only T08 completion cannot +substitute for the T06 native rollout gate. diff --git a/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r3-readiness/ROLLOUT-SUPPLEMENT.md b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r3-readiness/ROLLOUT-SUPPLEMENT.md new file mode 100644 index 00000000..bbe59fd3 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r3-readiness/ROLLOUT-SUPPLEMENT.md @@ -0,0 +1,120 @@ +# Receiver-first rollout supplement — revision 3 + +Stable proposal ID: `STATE-WP-0095-T06-cluster-frozen-receiving-r1`. +This is another revision of the same proposal, not another trial. R1/R2, +including failed dry-run and public HEAD challenge observations, remain retained. +Status: prepared for review. No live rollout approval or registrar admission. + +## Actual source, image and source-only readiness + +Receiver source is published at 51bc70d1ff8f25450a8650d8e50caf053093a02e; +independent readback confirms the exact six reviewed files, matching working +and committed bytes and origin/main. Public CI build-and-push task 12624 is +successful for that full source revision. Normal anonymous OCI challenge flow +verified image `forgejo.coulomb.social/coulomb/state-hub:main-51bc70d` manifest +`sha256:c802690ee1811b3d77df4077936f9cdced1385514e8673fcbc9232b84d645015`. +The earlier unauthenticated HEAD401 is a protocol challenge, not a private +credential requirement; root used an ephemeral anonymous token in memory only, +without credential files, login, image execution or daemon pull. + +Root's selected image layer inspection binds receiver historical module +`sha256:e3c4bf965764b32a6df5d61c71272ee22569df9a9ddae2a3fc3df97ec554e0b2` +and inbox migration source +`sha256:48f1730037be99b5623e878d7f20a06bec243ce27317fde81c82e16006d7b3ce` +to that manifest. Selected package metadata and hub-core file inventory are +also retained. This identifies observed bytes; it does not establish hermetic +build origins, complete dependency acceptance or full application behavior. +The workflow still fetched floating hub-core/main and unlocked dependencies; +this task did not change the workflow or locks. Image selection must retain the +verified digest identity through final rendered/deployed image verification. + +The source-only Makefile successor is separately bound in +`source-patch-manifest.json` and `state-hub-readiness.patch`, based on 51bc70d. +It changes only the two existing Secret-template server dry-run requests to +server-side apply, without force-conflicts, value edits or policy changes. +The completed source task STATE-WP-0095-T08 has normally allocated UUID +2dd9b04f-2250-5a8a-b5bc-c8a009872858; existing tasks/IDs remain unchanged and +T06 remains the native gate. Two Make command-fixture branches passed using +`--noconftest`; no destructive default database fixtures were loaded. The exact +candidate full Make server dry-run passed 0 on fixed railiance01 kubeconfig. +This readiness-only Make/test/workplan change is not a new application image. +Canonical integration/publication remains subject to root review. + +## Preserved failure and successful read-only checks + +The old Make server dry-run failed 2 in its first platform DB Secret template +phase: client-side kubectl apply generates the last-applied annotation, which +the existing Platform ValidatingAdmissionPolicy `reject-secret-last-applied` +correctly rejects. Owner policy source explicitly recommends server-side apply +or replace. The original refusal and fixed closed error indicators are retained; +no raw stderr or Secret content is in the receipts. The non-secret remainder +independently passed all five phases, including current app chart admission. +The narrow successor then passed the whole existing server dry-run without +force or actual Secret writes. The policy remains unchanged. + +Root's target identity/headroom check passed. Fresh headroom remains required +near any later upgrade; dated aggregate headroom does not guarantee scheduling. +Server admission used intended public source values. It is not an exact Helm +`--reuse-values` upgrade diff; that reviewed values-preserving dry-run/diff is +still required before native approval. No raw Helm values/manifests or existing +Secret contents should become public evidence. Readiness results and a source +commit are not a live image promotion. + +## Full-image migration and actual disposable compatibility evidence + +The full deployed 7d99282→51bc70d image delta includes the inbox feed and +migration c4d5e6f7a8b9 over b3c4d5e6f7a8, even though the receiver patch alone +adds no migration. It backfills message/receipt revisions, adds indexes and NOT +NULL constraints, sequence/tombstone storage, and write/delete triggers. Inbox +writers acquire a shared transaction advisory lock; snapshot reads all current +inbox rows and a large revision can exceed the feed's nominal page size. +Full source closure and these risks were retained in R2 review files. + +Root executed the independently reviewed disposable PostgreSQL fixture against +manifest f4ee1144010f2a2207785bc20638bab2e21eeed40edf563d39bb6198257a97ff. +All ten closed oracles passed, including actual old-model DDL, real migration +SQL, legacy-row backfill, compiled old insert/receipt/update/noop/delete shapes +and tombstones while leaving the additive schema installed. Synthetic migration +elapsed 0.0055s. Independent cleanup verified both exact containers and exact run +label absent. No production API, real credential or native acceptance was used. + +This is SQL-shape compatibility on a tiny synthetic dataset, not full old/new +HTTP/ORM acceptance, production data/schema inspection, production migration +lock/time budget, backup/PITR proof or permission to run the migration. The +source-controlled full feed suite's default conftest is destructive; run it +only in separately reviewed exact disposable database containment if additional +acceptance is needed. Keep source, failed source checks and actual receipts. + +## Exact remaining rollout boundary and rollback + +Before approval, root must integrate/review the readiness source, retain the +final source/artifact pins, complete the exact reuse-values dry-run/diff and +refresh target release/image/headroom/schema metadata. Current observed baseline +is Helm revision 75 with API and MCP image main-7d99282, independently confirmed +through projected revision 75 values; chart appVersion is stale and is not image +identity. No new live approval is inferred from older StateHub trials or inbox +contract acceptance. EUR execution cost and risk exposure remain unknown and +must be explicit in the final human-reviewed proposal; this supplement grants +no cost/risk budget and claims no zero-cost rollout. + +Any later promotion uses the ordinary State Hub CI/Helm owner path, reviewed +immutable image identity, atomic bounded upgrade and verified API/MCP readiness. +Check expected migrated schema, delivered module/image hash, health and exact +three parent / 15 task row preservation. Safe refusal probes must roll back their +transactions; no committed probe mutation or direct UUID patch is authorized. +The migration hook may change schema before an application upgrade succeeds. +A Helm rollback does not undo that schema change or recover migration data. +Do not automatically run Alembic downgrade: it discards revision/tombstone data. +Image-only rollback to the freshly verified prior release must retain the +additive schema and verify old application behavior/health and row preservation; +if that recovery is not acceptable, resolve an owner recovery plan before rollout. + +Keep the registrar's current refusal guard until the delivered receiving +verification return. Only then may the independently reviewed exact registrar +successor be integrated and normal cluster sync manage seven UUID fields in two +files, including the one-field existing ADHOC backfill. Preserve all three +archived source bytes, IDs and 15 existing task UUIDs. The expected unresolved +STATE95→RMGR19T06 edge is not permission to enable the registrar early. Fence +cluster sync and restore registrar refusal before any rollback removing receiver +support. This work does not satisfy original TLS recovery or selected native +registration/private-admission acceptance under NK49T35/T36/T33. diff --git a/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r3-readiness/source-patch-manifest.json b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r3-readiness/source-patch-manifest.json new file mode 100644 index 00000000..681a6b89 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r3-readiness/source-patch-manifest.json @@ -0,0 +1,36 @@ +{ + "schema": "statehub-readiness-source-candidate.v1", + "stable_proposal_id": "STATE-WP-0095-T06-cluster-frozen-receiving-r1", + "revision": 3, + "scope": "source_preflight_readiness_only_no_runtime_rollout", + "base_revision": "51bc70d1ff8f25450a8650d8e50caf053093a02e", + "runtime_source_revision": "51bc70d1ff8f25450a8650d8e50caf053093a02e", + "runtime_image_digest": "sha256:c802690ee1811b3d77df4077936f9cdced1385514e8673fcbc9232b84d645015", + "files": [ + { + "path": "Makefile", + "action": "modify", + "base_sha256": "b958e4a518303a99e1618ffc36e6d902466b45583e356457acf954d6377e7da8", + "candidate_sha256": "5584ef94071044cca8215141ecd8aee8d6ae5cfe73e8f5719358c680eb8af0d4" + }, + { + "path": "tests/test_server_dryrun_commands.py", + "action": "add", + "base_sha256": null, + "candidate_sha256": "e5c3f667bca9d1172c9b0001328cb8ce1d97ff5895b0533e9876977108b11281" + }, + { + "path": "workplans/STATE-WP-0095-historical-source-receiving.md", + "action": "modify", + "base_sha256": "aeb307597dba0d92594d55242bd69ed6a391e7fdd58bb16c839ec8cbce44b349", + "candidate_sha256": "ef10359cc5974283b5bdbfc602adf14e3c24362adf00640698d2937c6538483a" + } + ], + "patch_sha256": "4c52fd5a102df43ceb8e007d93d34efe861a3b321527cf5f3e195e35113c36a0", + "tests": { + "command": "/home/worsch/state-hub/.venv/bin/python -m pytest --noconftest -q --tb=short state-hub/tests/test_server_dryrun_commands.py", + "passed": 2, + "duration_seconds": 0.7 + }, + "server_dryrun_status": "passed_no_force_no_live_writes" +} diff --git a/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/FINAL-PROPOSAL.md b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/FINAL-PROPOSAL.md new file mode 100644 index 00000000..ac463eb3 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/FINAL-PROPOSAL.md @@ -0,0 +1,119 @@ +# Exact receiver-first rollout proposal — revision 4 + +Stable proposal ID: `STATE-WP-0095-T06-cluster-frozen-receiving-r1`. +Status: pending supervisor review; no live action approved or performed. +This remains the same trial across all retained source/preflight refinements. + +Promote State Hub API, MCP and its normal migration hook on railiance01 to +`forgejo.coulomb.social/coulomb/state-hub:main-51bc70d@sha256:c802690ee1811b3d77df4077936f9cdced1385514e8673fcbc9232b84d645015` through the ordinary owner +Helm path. The purpose is to preserve exactly three frozen cluster workplan +UUIDs and 15 existing task UUIDs when later ordinary cluster receiving resumes. +Keep the registrar refusal guard until the deployed receiver is verified. + +Runtime source is 51bc70d1ff8f25450a8650d8e50caf053093a02e; current readiness +source is 086d79a2736e34b916bd7de3c8a65e2ea38a3d64. The readiness commit changes +Make/test/workplan only; it is not another application image. CI task 12624 +succeeded. [Actual public image inspection](/home/worsch/the-custodian/docs/changes/netkingdom-target-2026-10-17/statehub-public-image-inspection.json) +binds 22 layers, 233 selected code-file hashes,86 package metadata records, build +ID 51bc70d and selected receiver/migration hashes to the approved image digest. +Floating dependency origin remains unknown; no hermetic/full-app claim is made. + +The full deployed 7d99282→51bc70d image change includes inbox-feed migration +c4d5e6f7a8b9, backfill/index/NOT NULL changes, triggers and a shared transaction +advisory lock, plus the other reviewed runtime changes in [the source closure](../r2/full-image-review-notes.json). +[Actual disposable migration compatibility](/home/worsch/the-custodian/docs/changes/netkingdom-target-2026-10-17/migration-compat-r1-result.json) +passed all ten SQL-shape oracles; [independent exact cleanup](/home/worsch/the-custodian/docs/changes/netkingdom-target-2026-10-17/migration-compat-r1-cleanup.json) +passed. The 0.0055s synthetic timing is not a production lock/runtime estimate. + +[Exact digest-pinned reuse-values server dry-run](exact-reuse-values-dryrun-result-4-pinned-package.json) +passed against the exact pinned chart package: eight object identities unchanged and only API/MCP/migration Job image +paths differ. Hooks did not execute; no raw Helm values/release contents or +logs were retained. [Source-chart versus exact-package parity](chart-package-render-parity.json) +independently matches all eight intended object/spec hashes and image references. +Four helper control tests passed. Initial metadata-filter +refusal and successful tag-only predecessor remain retained. Existing Make +Secret-template preflight now passes with exactly scoped SSA dry-run and no +force or Secret value changes; the original correct admission refusal remains. + +## Exact proposed owner command and artifact + +The local packaged chart is [state-hub-0.1.0.tgz](state-hub-0.1.0.tgz), +SHA256 `b5c0663d830fc8d3b65080f237a0be8d01f8b2f7fec9dc33aeba91b1b6b281d4`. Its [file closure](chart-package-manifest.json) is frozen. +No remote staging has occurred. After exact supervisor approval, the normal +owner path stages only this public chart in the fresh private directory below, +checks its SHA256, then invokes this command. Abort if path already exists, +archive/image identity differs, release baseline changed or fresh headroom fails. + +```sh +ssh railiance01 'test ! -e /tmp/statehub-frozen-receiver-b5c0663d830f && install -d -m 0700 /tmp/statehub-frozen-receiver-b5c0663d830f' +scp /home/worsch/the-custodian/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/state-hub-0.1.0.tgz railiance01:/tmp/statehub-frozen-receiver-b5c0663d830f/state-hub-0.1.0.tgz +ssh railiance01 'sha256sum /tmp/statehub-frozen-receiver-b5c0663d830f/state-hub-0.1.0.tgz' +ssh railiance01 'KUBECONFIG=/etc/rancher/k3s/k3s.yaml helm -n state-hub upgrade state-hub /tmp/statehub-frozen-receiver-b5c0663d830f/state-hub-0.1.0.tgz --reuse-values --set-string image.tag=main-51bc70d@sha256:c802690ee1811b3d77df4077936f9cdced1385514e8673fcbc9232b84d645015 --atomic --timeout 3m' +``` + +The hash comparison is an explicit stop condition, not an unchecked display. +These are proposed privileged commands only, not commands run by this packet. +The private directory/archive are owned by this attempt and can be removed via +the same exact path after verification/recovery; no broad /tmp cleanup. +No force, reset-values, live Secret write, guard change or direct API UUID repair +belongs to this scope. The ordinary live upgrade runs its normal migration hook; +the read-only dry-run explicitly disabled hook execution. + +## Verification, conditional failure handling and rollback limits + +Fresh metadata at 2026-10-16T23:43:51Z confirms railiance01 node 92.205.62.239, +Helm 75 deployed, API/MCP Ready 1 each with observed generations, and no existing +migration Job. Both running imageIDs are +`forgejo.coulomb.social/coulomb/state-hub@sha256:b128ac983a1045acb2ec245e439846204a924c413d1bbc3b710b6f3fafe39313`. +Fresh headroom is 420m/ok. Existing normal `/state/health` projection confirms +primary/railiance01 and applied=expected=b3c4d5e6f7a8, without database exec, +DSN access or credential retrieval. See [the fresh baseline](fresh-public-baseline.json). +Refresh target/headroom/release/image/schema and prior Job UID again if these +facts become stale or change before an approved trial. The rollback baseline +remains the freshly confirmed Helm 75/main-7d99282 identity. Capture the new trial Job UID/image/release and its owned Pod UIDs/IPs. +Verify actual delivered digest, receiver module hash, expected schema, health, +both API/MCP Ready and full historical row preservation. Refusal probes must +roll back transactions and produce no committed probe writes. + +**The migration Job has no activeDeadlineSeconds. Helm's three-minute timeout +and atomic application rollback do not stop an active Job, undo schema changes +or bound outage.** Approval must also explicitly cover cancellation of only the +new exact trial Job UID after failed/timed-out Helm if still active, with UID +precondition, checked image/ownership, foreground propagation and observation of +only its bound owned Pods. See [the exact recovery limits](MIGRATION-JOB-RECOVERY.md). + +Database quiescence is not implied by Pod absence. An existing private owner +path must bind the trial's backend identities and verify those connections, +transactions and locks gone, without query text, values, secrets or a new +credential grant. Availability of that mapping is currently unknown. If UID, +connection mapping, privilege or quiescence is unknown, STOP for attended +Kubernetes/database-owner recovery. No broad backend cancellation, finalizer +removal, blanket deletion or new runtime broker is authorized by this proposal. + +After verified quiescence and actual-schema assessment, image-only rollback may +use the freshly confirmed prior release through the normal owner path: + +```sh +ssh railiance01 'KUBECONFIG=/etc/rancher/k3s/k3s.yaml helm -n state-hub rollback state-hub 75 --no-hooks --wait --timeout 3m' +``` + +Revision 75 is conditional on the fresh baseline still matching; otherwise stop +and revise. No automatic Alembic downgrade/old-data restore: committed additive +schema and feed data remain. Verify old application health/compatibility and +historical rows on the actual retained schema. Mixed/unknown state requires +attended owner recovery, not a success claim. Any already admitted registrar +must first be re-fenced before removing receiver support. + +## Cost, risk and authority + +Attributable EUR execution cost and credible loss exposure are unknown and +unpriced. Existing infrastructure avoids a new resource purchase, but operator +recovery time, coordination outage, migration locks/data compatibility and +floating build provenance remain meaningful risks. There is no zero-cost +claim, EUR budget reservation, autopilot grant or three-minute outage promise. +Bernd Worsch must explicitly disposition this exact proposal and its conditional +recovery scope. Source/synthetic readiness is not approval or promotion evidence. + +Subsequent registrar admission and ordinary cluster publication remain dependent +on actual delivered receiving proof. TLS recovery and owner-native selected +registration/private admission under NK49T35/T36/T33 remain outstanding. diff --git a/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/MIGRATION-JOB-RECOVERY.md b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/MIGRATION-JOB-RECOVERY.md new file mode 100644 index 00000000..15c92e12 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/MIGRATION-JOB-RECOVERY.md @@ -0,0 +1,61 @@ +# Migration Job failure and recovery supplement — revision 4 + +Stable proposal ID `STATE-WP-0095-T06-cluster-frozen-receiving-r1`. +This is a further revision of the same trial. Frozen R1/R2/R3 and actual failed +preparation outcomes stay retained. There is no supervisor approval or live +execution represented here; this is pending proposal metadata. + +The current Helm migration hook Job has no activeDeadlineSeconds and retains +failed Jobs with `before-hook-creation,hook-succeeded`. The ordinary +`--atomic --timeout 3m` bounds the Helm wait only. It neither bounds migration +lifetime/outage nor rolls the database back. An active hook may outlive failed +Helm and continue holding locks. No chart modification is proposed here. + +Any approval of this exact trial must explicitly include the following scoped +failure handling; cancellation is conditional, not performed in preparation: + +1. Retain the preflight release/image revision and any preexisting exact Job UID. + Record trial start and the new state-hub/state-hub-migrate Job UID, creation + timestamp, release/hook ownership and exact approved image as soon as the + trial Job is observable. Capture its owned Pod UIDs/IPs and ownerReferences. + A reused name, old UID, foreign ownership, unexpected image, ambiguous origin + or missing mapping refuses automatic cancellation; escalate to the owner. +2. If Helm fails/times out and this exact admitted trial Job or its owned Pods + remain active, re-read UID/image/ownership immediately. Use the normal + Kubernetes owner path to delete only this Job with an exact UID precondition + and foreground propagation. Include cancellation and observation of only its + already bound owned Pods in the approval. Never delete by name alone after + drift, cancel another release, remove a finalizer, disable guards or issue + blanket Pod/namespace deletion. Verify controller cannot recreate the trial + Pod and all bound Job/Pod UIDs are gone or terminated. Preserve safe failure + metadata and cancellation/termination receipts. +3. Pod disappearance alone is not database quiescence. Through the existing + private database-owner execution path, bind migration connections to the + captured trial Pod/IP and start window, and retain only backend PID plus + backend-start identity, transaction/state and lock-count metadata. Never + select query text, SQL parameter values, credentials, connection strings or + Secret contents. Verify those exact connections/transactions and their locks + absent after cancellation. Source NAT/pooling, recycled addresses, missing + pre-observation or insufficient access can make that binding unknown; do not + call it quiescent in that case. Retain the refusal and stop for attended + database-owner recovery. No automatic broad pg_cancel/terminate_backend is + included; such an intervention needs its own exact owner disposition. +4. Only after verified migration quiescence assess actual schema head and health + and decide image-only rollback to the freshly verified prior release. Helm + may already have reverted application resources; verify actual state rather + than replaying blindly. The additive c4d5e6f7a8b9 schema and feed data remain + installed if migration committed. Never run automatic Alembic downgrade or + restore older production bytes over current data. If state is mixed or + unknown, retain evidence and require attended recovery; do not claim success. +5. Keep normal cluster sync fenced by the existing registrar refusal until + receiving is delivered and verified. Before removing receiving support after + registrar admission, fence cluster sync and restore that refusal first. + +The synthetic migration fixture proves a small SQL compatibility case and exact +cleanup only. It does not prove production migration timing, concurrent lock +behavior, session identity mapping, backup/PITR, full application compatibility +or this cancellation path. Root's exact values-preserving dry-run and fresh +headroom/release/schema observations remain required before approval. Record +these unknowns and the recovery operator in the final supervisor disposition. +Costs and credible EUR loss exposure remain unpriced; there is no autopilot +budget/risk grant or three-minute outage claim. diff --git a/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/chart-package-manifest.json b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/chart-package-manifest.json new file mode 100644 index 00000000..84fb6cf6 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/chart-package-manifest.json @@ -0,0 +1,68 @@ +{ + "archive_sha256": "sha256:b5c0663d830fc8d3b65080f237a0be8d01f8b2f7fec9dc33aeba91b1b6b281d4", + "archive_bytes": 8815, + "files": [ + { + "path": "state-hub/Chart.yaml", + "sha256": "sha256:d714e2c5cfd5f437deb60c45d641b9576dbc211a487094fca90732d88c7ee9cc" + }, + { + "path": "state-hub/values.yaml", + "sha256": "sha256:d56509456ef0f1d2ad933d943547132aee5229125f1fd8842e45dc611b309699" + }, + { + "path": "state-hub/templates/_helpers.tpl", + "sha256": "sha256:972754d466cd1457998ac350e855c9b12b2a5e2407751e0b72c2e5264bbc8ed0" + }, + { + "path": "state-hub/templates/classification-configmap.yaml", + "sha256": "sha256:301c12fec3e9046639c5c80fd607c6210c82ffe81cd442c4b10ddb357087d501" + }, + { + "path": "state-hub/templates/configmap.yaml", + "sha256": "sha256:451491a63d33766faf1a7c14647dd435d8a947e6a8e224fc40053e29077ef0cd" + }, + { + "path": "state-hub/templates/deployment.yaml", + "sha256": "sha256:09a0f784d245c585cace26265ec1c9faa71f1221be899ad94ee45c0d729da8df" + }, + { + "path": "state-hub/templates/ingress.yaml", + "sha256": "sha256:5c6d842007676ceedc7db18bb94bdb7c811fe357aeb99709dc985af9e0e898bd" + }, + { + "path": "state-hub/templates/mcp-deployment.yaml", + "sha256": "sha256:b59017b21fc76db3bd9f1cf56cbaf9948d6e6466df8b7415d1abf732512d1872" + }, + { + "path": "state-hub/templates/mcp-service.yaml", + "sha256": "sha256:906cc583daedf4ad9c207e627b3b1d259d2619fa6643be89746dc0dc27025a7a" + }, + { + "path": "state-hub/templates/migrate-job.yaml", + "sha256": "sha256:2c907abe41a426e78ce7c5bfa631a41fb322687f4238ec9f3d9dec813d0f4c79" + }, + { + "path": "state-hub/templates/namespace.yaml", + "sha256": "sha256:7fb0c6c87767c3cab0999173d7778cc621aab0498acd1937c3d02614b7037176" + }, + { + "path": "state-hub/templates/service.yaml", + "sha256": "sha256:f26936071cda5f0ef775625f3284b9c416dacebfccec1d984d5c46c5e756609f" + }, + { + "path": "state-hub/templates/serviceaccount.yaml", + "sha256": "sha256:48349a38dc4376ede81c798256b2bd520b5e3c390b052217b49630cbdff719f3" + }, + { + "path": "state-hub/PROMOTE.md", + "sha256": "sha256:891fe255c0c186f72da8626b974417e348e1fec2eb875697e1d5cf469da3cb6e" + }, + { + "path": "state-hub/files/repo-classification.allowed.yaml", + "sha256": "sha256:9c36fbd5308b19695f9f05d86f8e315bbeccdd267575ce4e2fccf6fb2ea82e32" + } + ], + "intended_remote_private_directory": "/tmp/statehub-frozen-receiver-b5c0663d830f", + "remote_staging_performed": false +} diff --git a/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/chart-package-render-parity.json b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/chart-package-render-parity.json new file mode 100644 index 00000000..cb797ec0 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/chart-package-render-parity.json @@ -0,0 +1,109 @@ +{ + "schema": "receiver.source-chart-vs-exact-package-parity.v1", + "status": "passed", + "source_chart_result_sha256": "sha256:3bc7aab8b98a8a8fefcacab49757e072937f1a2976a23449c20bb93203085d77", + "packaged_chart_result_sha256": "sha256:73f8ff4094a929c2ec87e28487aa0bc73faa6a02d9377a9ccaad40295d1a084d", + "chart_archive_sha256": "sha256:b5c0663d830fc8d3b65080f237a0be8d01f8b2f7fec9dc33aeba91b1b6b281d4", + "source_chart_images_only": true, + "packaged_chart_images_only": true, + "packaged_changed_objects": 3, + "objects": [ + { + "identity": [ + "apps/v1", + "Deployment", + "state-hub", + "state-hub" + ], + "present_in_both": true, + "intended_object_hash_matches": true, + "intended_spec_hash_matches": true, + "images_match": true + }, + { + "identity": [ + "apps/v1", + "Deployment", + "state-hub", + "state-hub-mcp" + ], + "present_in_both": true, + "intended_object_hash_matches": true, + "intended_spec_hash_matches": true, + "images_match": true + }, + { + "identity": [ + "batch/v1", + "Job", + "state-hub", + "state-hub-migrate" + ], + "present_in_both": true, + "intended_object_hash_matches": true, + "intended_spec_hash_matches": true, + "images_match": true + }, + { + "identity": [ + "v1", + "ConfigMap", + "state-hub", + "state-hub-classification-allowed" + ], + "present_in_both": true, + "intended_object_hash_matches": true, + "intended_spec_hash_matches": true, + "images_match": true + }, + { + "identity": [ + "v1", + "ConfigMap", + "state-hub", + "state-hub-config" + ], + "present_in_both": true, + "intended_object_hash_matches": true, + "intended_spec_hash_matches": true, + "images_match": true + }, + { + "identity": [ + "v1", + "Service", + "state-hub", + "state-hub" + ], + "present_in_both": true, + "intended_object_hash_matches": true, + "intended_spec_hash_matches": true, + "images_match": true + }, + { + "identity": [ + "v1", + "Service", + "state-hub", + "state-hub-mcp" + ], + "present_in_both": true, + "intended_object_hash_matches": true, + "intended_spec_hash_matches": true, + "images_match": true + }, + { + "identity": [ + "v1", + "ServiceAccount", + "state-hub", + "state-hub" + ], + "present_in_both": true, + "intended_object_hash_matches": true, + "intended_spec_hash_matches": true, + "images_match": true + } + ], + "production_mutations": false +} diff --git a/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/exact-reuse-values-dryrun-result-2.json b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/exact-reuse-values-dryrun-result-2.json new file mode 100644 index 00000000..ed60c51d --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/exact-reuse-values-dryrun-result-2.json @@ -0,0 +1,135 @@ +{ + "schema": "statehub.exact-reuse-values-readonly-diff.v1", + "status": "passed_images_only", + "dryrun_argv": [ + "helm", + "--kubeconfig", + "/home/worsch/.kube/config-railiance01", + "-n", + "state-hub", + "upgrade", + "state-hub", + "deploy/railiance/apps/charts/state-hub", + "--reuse-values", + "--set-string", + "image.tag=main-51bc70d", + "--dry-run=server", + "--hide-secret", + "--no-hooks", + "--timeout", + "3m" + ], + "production_mutations": false, + "hooks_executed": false, + "raw_helm_values_release_content_logs_retained": false, + "limitations": [ + "Dry-run admission/render only, not an actual image pull/migration/deployment.", + "Helm timeout does not stop a later live migration Job; exact scoped cancellation/quiescence remains required." + ], + "stage": "exact_upgrade_server_dryrun", + "objects": [ + { + "api_version": "apps/v1", + "kind": "Deployment", + "namespace": "state-hub", + "name": "state-hub", + "intended_images": [ + "forgejo.coulomb.social/coulomb/state-hub:main-51bc70d" + ], + "intended_spec_sha256": "sha256:31832c3561806a80344ade835c92d5c01259d808cf4112ba2daf0b3a407d2625", + "baseline_object_sha256": "sha256:25ef5a48aac77f327c1cbe51714694d1a78ba6124826b2ac4e372b768fb3ee80", + "intended_object_sha256": "sha256:e7820e9f9d21765f11acc8d68a5712249e39913cc7552f19d4a436d939aa9842", + "changed_paths": [ + "/spec/template/spec/containers/0/image" + ] + }, + { + "api_version": "apps/v1", + "kind": "Deployment", + "namespace": "state-hub", + "name": "state-hub-mcp", + "intended_images": [ + "forgejo.coulomb.social/coulomb/state-hub:main-51bc70d" + ], + "intended_spec_sha256": "sha256:499751411c67065a183ad73f5043bc39e3b15519861162cd8aac97eb9e166178", + "baseline_object_sha256": "sha256:c1a6b1eb987da62c72386c893894da7a25927800a47057fbad5888acf31136f9", + "intended_object_sha256": "sha256:0a773486258bf88ce828bd2fade69635edfc04bb088619b8d430e7ba136df1a0", + "changed_paths": [ + "/spec/template/spec/containers/0/image" + ] + }, + { + "api_version": "batch/v1", + "kind": "Job", + "namespace": "state-hub", + "name": "state-hub-migrate", + "intended_images": [ + "forgejo.coulomb.social/coulomb/state-hub:main-51bc70d" + ], + "intended_spec_sha256": "sha256:2cf9bf6d1f65fd2b0e4f52bf363c5601a2079c5803b5e5eaf7d9c38c28e909af", + "baseline_object_sha256": "sha256:99a97fae3a9d6a6b12cd1a5adb7819fe0bda22560aacd24351fb0c4014827147", + "intended_object_sha256": "sha256:60a8b9e41f0a09834a9e3c98220b195b48c4342a8939d544ef001487be063385", + "changed_paths": [ + "/spec/template/spec/containers/0/image" + ] + }, + { + "api_version": "v1", + "kind": "ConfigMap", + "namespace": "state-hub", + "name": "state-hub-classification-allowed", + "intended_images": [], + "intended_spec_sha256": "sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", + "baseline_object_sha256": "sha256:924d16a0a6b4ba8a46b59f0990dcc2adc6dd813cf5d7d83bdb389844068d7cfd", + "intended_object_sha256": "sha256:924d16a0a6b4ba8a46b59f0990dcc2adc6dd813cf5d7d83bdb389844068d7cfd", + "changed_paths": [] + }, + { + "api_version": "v1", + "kind": "ConfigMap", + "namespace": "state-hub", + "name": "state-hub-config", + "intended_images": [], + "intended_spec_sha256": "sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", + "baseline_object_sha256": "sha256:26707b20933b4f6de78f9059c0efec6df7f0e90c8f1a67db6d2f1ac72e674560", + "intended_object_sha256": "sha256:26707b20933b4f6de78f9059c0efec6df7f0e90c8f1a67db6d2f1ac72e674560", + "changed_paths": [] + }, + { + "api_version": "v1", + "kind": "Service", + "namespace": "state-hub", + "name": "state-hub", + "intended_images": [], + "intended_spec_sha256": "sha256:da5895e6aee1f619d16c07dafd4342cf7ec8f9de0944a84979c624a4e9eea22a", + "baseline_object_sha256": "sha256:62098bbc3ef6265e072f416ecb11de85d59fce7e2e0d22b2616bd233e720dafe", + "intended_object_sha256": "sha256:62098bbc3ef6265e072f416ecb11de85d59fce7e2e0d22b2616bd233e720dafe", + "changed_paths": [] + }, + { + "api_version": "v1", + "kind": "Service", + "namespace": "state-hub", + "name": "state-hub-mcp", + "intended_images": [], + "intended_spec_sha256": "sha256:4e04175b03bcd75833109d6843e282cee79d73eae2bc85e36097264b832ba26f", + "baseline_object_sha256": "sha256:ab096d239c9cd72e6177a260d9b4d548a7d5b7c0a285c3a11b7267193e336bba", + "intended_object_sha256": "sha256:ab096d239c9cd72e6177a260d9b4d548a7d5b7c0a285c3a11b7267193e336bba", + "changed_paths": [] + }, + { + "api_version": "v1", + "kind": "ServiceAccount", + "namespace": "state-hub", + "name": "state-hub", + "intended_images": [], + "intended_spec_sha256": "sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", + "baseline_object_sha256": "sha256:750594b51a534d603f50640d02a3c4eec79cc52fe07d5f442102d37b7299adb8", + "intended_object_sha256": "sha256:750594b51a534d603f50640d02a3c4eec79cc52fe07d5f442102d37b7299adb8", + "changed_paths": [] + } + ], + "changed_object_count": 3, + "intended_diff_only_images": true, + "object_identity_set_unchanged": true +} diff --git a/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/exact-reuse-values-dryrun-result-3-digest-pinned.json b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/exact-reuse-values-dryrun-result-3-digest-pinned.json new file mode 100644 index 00000000..eba11836 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/exact-reuse-values-dryrun-result-3-digest-pinned.json @@ -0,0 +1,135 @@ +{ + "schema": "statehub.exact-reuse-values-readonly-diff.v1", + "status": "passed_images_only", + "dryrun_argv": [ + "helm", + "--kubeconfig", + "/home/worsch/.kube/config-railiance01", + "-n", + "state-hub", + "upgrade", + "state-hub", + "deploy/railiance/apps/charts/state-hub", + "--reuse-values", + "--set-string", + "image.tag=main-51bc70d@sha256:c802690ee1811b3d77df4077936f9cdced1385514e8673fcbc9232b84d645015", + "--dry-run=server", + "--hide-secret", + "--no-hooks", + "--timeout", + "3m" + ], + "production_mutations": false, + "hooks_executed": false, + "raw_helm_values_release_content_logs_retained": false, + "limitations": [ + "Dry-run admission/render only, not an actual image pull/migration/deployment.", + "Helm timeout does not stop a later live migration Job; exact scoped cancellation/quiescence remains required." + ], + "stage": "exact_upgrade_server_dryrun", + "objects": [ + { + "api_version": "apps/v1", + "kind": "Deployment", + "namespace": "state-hub", + "name": "state-hub", + "intended_images": [ + "forgejo.coulomb.social/coulomb/state-hub:main-51bc70d@sha256:c802690ee1811b3d77df4077936f9cdced1385514e8673fcbc9232b84d645015" + ], + "intended_spec_sha256": "sha256:2538909a869e66ca9d8104f00be445c1a467de8ea49bc5d4ca21790a35a439d9", + "baseline_object_sha256": "sha256:25ef5a48aac77f327c1cbe51714694d1a78ba6124826b2ac4e372b768fb3ee80", + "intended_object_sha256": "sha256:01e7278447f3204ec8abfd9a7b5b6be61850995b3e792fc1f97fbc3207536d69", + "changed_paths": [ + "/spec/template/spec/containers/0/image" + ] + }, + { + "api_version": "apps/v1", + "kind": "Deployment", + "namespace": "state-hub", + "name": "state-hub-mcp", + "intended_images": [ + "forgejo.coulomb.social/coulomb/state-hub:main-51bc70d@sha256:c802690ee1811b3d77df4077936f9cdced1385514e8673fcbc9232b84d645015" + ], + "intended_spec_sha256": "sha256:4caed4f0aed1397ca80d6360d75ea1c9c34eea2670c4bacafc2fb5114bfec4a2", + "baseline_object_sha256": "sha256:c1a6b1eb987da62c72386c893894da7a25927800a47057fbad5888acf31136f9", + "intended_object_sha256": "sha256:9a4376e004060a4ec2c76784fd50ec6ce05f61b3793f6458625d88122a7b8713", + "changed_paths": [ + "/spec/template/spec/containers/0/image" + ] + }, + { + "api_version": "batch/v1", + "kind": "Job", + "namespace": "state-hub", + "name": "state-hub-migrate", + "intended_images": [ + "forgejo.coulomb.social/coulomb/state-hub:main-51bc70d@sha256:c802690ee1811b3d77df4077936f9cdced1385514e8673fcbc9232b84d645015" + ], + "intended_spec_sha256": "sha256:8f8760e6b51b38bf576ff34e3038f7339fb86fd2d4796c477641104636770749", + "baseline_object_sha256": "sha256:99a97fae3a9d6a6b12cd1a5adb7819fe0bda22560aacd24351fb0c4014827147", + "intended_object_sha256": "sha256:6909dca9acd5e1b816491b91b6a32ef6d934e288e2d8d0d3d66fac9fe67468ec", + "changed_paths": [ + "/spec/template/spec/containers/0/image" + ] + }, + { + "api_version": "v1", + "kind": "ConfigMap", + "namespace": "state-hub", + "name": "state-hub-classification-allowed", + "intended_images": [], + "intended_spec_sha256": "sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", + "baseline_object_sha256": "sha256:924d16a0a6b4ba8a46b59f0990dcc2adc6dd813cf5d7d83bdb389844068d7cfd", + "intended_object_sha256": "sha256:924d16a0a6b4ba8a46b59f0990dcc2adc6dd813cf5d7d83bdb389844068d7cfd", + "changed_paths": [] + }, + { + "api_version": "v1", + "kind": "ConfigMap", + "namespace": "state-hub", + "name": "state-hub-config", + "intended_images": [], + "intended_spec_sha256": "sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", + "baseline_object_sha256": "sha256:26707b20933b4f6de78f9059c0efec6df7f0e90c8f1a67db6d2f1ac72e674560", + "intended_object_sha256": "sha256:26707b20933b4f6de78f9059c0efec6df7f0e90c8f1a67db6d2f1ac72e674560", + "changed_paths": [] + }, + { + "api_version": "v1", + "kind": "Service", + "namespace": "state-hub", + "name": "state-hub", + "intended_images": [], + "intended_spec_sha256": "sha256:da5895e6aee1f619d16c07dafd4342cf7ec8f9de0944a84979c624a4e9eea22a", + "baseline_object_sha256": "sha256:62098bbc3ef6265e072f416ecb11de85d59fce7e2e0d22b2616bd233e720dafe", + "intended_object_sha256": "sha256:62098bbc3ef6265e072f416ecb11de85d59fce7e2e0d22b2616bd233e720dafe", + "changed_paths": [] + }, + { + "api_version": "v1", + "kind": "Service", + "namespace": "state-hub", + "name": "state-hub-mcp", + "intended_images": [], + "intended_spec_sha256": "sha256:4e04175b03bcd75833109d6843e282cee79d73eae2bc85e36097264b832ba26f", + "baseline_object_sha256": "sha256:ab096d239c9cd72e6177a260d9b4d548a7d5b7c0a285c3a11b7267193e336bba", + "intended_object_sha256": "sha256:ab096d239c9cd72e6177a260d9b4d548a7d5b7c0a285c3a11b7267193e336bba", + "changed_paths": [] + }, + { + "api_version": "v1", + "kind": "ServiceAccount", + "namespace": "state-hub", + "name": "state-hub", + "intended_images": [], + "intended_spec_sha256": "sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", + "baseline_object_sha256": "sha256:750594b51a534d603f50640d02a3c4eec79cc52fe07d5f442102d37b7299adb8", + "intended_object_sha256": "sha256:750594b51a534d603f50640d02a3c4eec79cc52fe07d5f442102d37b7299adb8", + "changed_paths": [] + } + ], + "changed_object_count": 3, + "intended_diff_only_images": true, + "object_identity_set_unchanged": true +} diff --git a/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/exact-reuse-values-dryrun-result-4-pinned-package.json b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/exact-reuse-values-dryrun-result-4-pinned-package.json new file mode 100644 index 00000000..3a94eaae --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/exact-reuse-values-dryrun-result-4-pinned-package.json @@ -0,0 +1,136 @@ +{ + "schema": "statehub.exact-reuse-values-readonly-diff.v1", + "status": "passed_images_only", + "dryrun_argv": [ + "helm", + "--kubeconfig", + "/home/worsch/.kube/config-railiance01", + "-n", + "state-hub", + "upgrade", + "state-hub", + "/home/worsch/the-custodian/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/state-hub-0.1.0.tgz", + "--reuse-values", + "--set-string", + "image.tag=main-51bc70d@sha256:c802690ee1811b3d77df4077936f9cdced1385514e8673fcbc9232b84d645015", + "--dry-run=server", + "--hide-secret", + "--no-hooks", + "--timeout", + "3m" + ], + "production_mutations": false, + "hooks_executed": false, + "raw_helm_values_release_content_logs_retained": false, + "limitations": [ + "Dry-run admission/render only, not an actual image pull/migration/deployment.", + "Helm timeout does not stop a later live migration Job; exact scoped cancellation/quiescence remains required." + ], + "chart_archive_sha256": "sha256:b5c0663d830fc8d3b65080f237a0be8d01f8b2f7fec9dc33aeba91b1b6b281d4", + "stage": "exact_upgrade_server_dryrun", + "objects": [ + { + "api_version": "apps/v1", + "kind": "Deployment", + "namespace": "state-hub", + "name": "state-hub", + "intended_images": [ + "forgejo.coulomb.social/coulomb/state-hub:main-51bc70d@sha256:c802690ee1811b3d77df4077936f9cdced1385514e8673fcbc9232b84d645015" + ], + "intended_spec_sha256": "sha256:2538909a869e66ca9d8104f00be445c1a467de8ea49bc5d4ca21790a35a439d9", + "baseline_object_sha256": "sha256:25ef5a48aac77f327c1cbe51714694d1a78ba6124826b2ac4e372b768fb3ee80", + "intended_object_sha256": "sha256:01e7278447f3204ec8abfd9a7b5b6be61850995b3e792fc1f97fbc3207536d69", + "changed_paths": [ + "/spec/template/spec/containers/0/image" + ] + }, + { + "api_version": "apps/v1", + "kind": "Deployment", + "namespace": "state-hub", + "name": "state-hub-mcp", + "intended_images": [ + "forgejo.coulomb.social/coulomb/state-hub:main-51bc70d@sha256:c802690ee1811b3d77df4077936f9cdced1385514e8673fcbc9232b84d645015" + ], + "intended_spec_sha256": "sha256:4caed4f0aed1397ca80d6360d75ea1c9c34eea2670c4bacafc2fb5114bfec4a2", + "baseline_object_sha256": "sha256:c1a6b1eb987da62c72386c893894da7a25927800a47057fbad5888acf31136f9", + "intended_object_sha256": "sha256:9a4376e004060a4ec2c76784fd50ec6ce05f61b3793f6458625d88122a7b8713", + "changed_paths": [ + "/spec/template/spec/containers/0/image" + ] + }, + { + "api_version": "batch/v1", + "kind": "Job", + "namespace": "state-hub", + "name": "state-hub-migrate", + "intended_images": [ + "forgejo.coulomb.social/coulomb/state-hub:main-51bc70d@sha256:c802690ee1811b3d77df4077936f9cdced1385514e8673fcbc9232b84d645015" + ], + "intended_spec_sha256": "sha256:8f8760e6b51b38bf576ff34e3038f7339fb86fd2d4796c477641104636770749", + "baseline_object_sha256": "sha256:99a97fae3a9d6a6b12cd1a5adb7819fe0bda22560aacd24351fb0c4014827147", + "intended_object_sha256": "sha256:6909dca9acd5e1b816491b91b6a32ef6d934e288e2d8d0d3d66fac9fe67468ec", + "changed_paths": [ + "/spec/template/spec/containers/0/image" + ] + }, + { + "api_version": "v1", + "kind": "ConfigMap", + "namespace": "state-hub", + "name": "state-hub-classification-allowed", + "intended_images": [], + "intended_spec_sha256": "sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", + "baseline_object_sha256": "sha256:924d16a0a6b4ba8a46b59f0990dcc2adc6dd813cf5d7d83bdb389844068d7cfd", + "intended_object_sha256": "sha256:924d16a0a6b4ba8a46b59f0990dcc2adc6dd813cf5d7d83bdb389844068d7cfd", + "changed_paths": [] + }, + { + "api_version": "v1", + "kind": "ConfigMap", + "namespace": "state-hub", + "name": "state-hub-config", + "intended_images": [], + "intended_spec_sha256": "sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", + "baseline_object_sha256": "sha256:26707b20933b4f6de78f9059c0efec6df7f0e90c8f1a67db6d2f1ac72e674560", + "intended_object_sha256": "sha256:26707b20933b4f6de78f9059c0efec6df7f0e90c8f1a67db6d2f1ac72e674560", + "changed_paths": [] + }, + { + "api_version": "v1", + "kind": "Service", + "namespace": "state-hub", + "name": "state-hub", + "intended_images": [], + "intended_spec_sha256": "sha256:da5895e6aee1f619d16c07dafd4342cf7ec8f9de0944a84979c624a4e9eea22a", + "baseline_object_sha256": "sha256:62098bbc3ef6265e072f416ecb11de85d59fce7e2e0d22b2616bd233e720dafe", + "intended_object_sha256": "sha256:62098bbc3ef6265e072f416ecb11de85d59fce7e2e0d22b2616bd233e720dafe", + "changed_paths": [] + }, + { + "api_version": "v1", + "kind": "Service", + "namespace": "state-hub", + "name": "state-hub-mcp", + "intended_images": [], + "intended_spec_sha256": "sha256:4e04175b03bcd75833109d6843e282cee79d73eae2bc85e36097264b832ba26f", + "baseline_object_sha256": "sha256:ab096d239c9cd72e6177a260d9b4d548a7d5b7c0a285c3a11b7267193e336bba", + "intended_object_sha256": "sha256:ab096d239c9cd72e6177a260d9b4d548a7d5b7c0a285c3a11b7267193e336bba", + "changed_paths": [] + }, + { + "api_version": "v1", + "kind": "ServiceAccount", + "namespace": "state-hub", + "name": "state-hub", + "intended_images": [], + "intended_spec_sha256": "sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a", + "baseline_object_sha256": "sha256:750594b51a534d603f50640d02a3c4eec79cc52fe07d5f442102d37b7299adb8", + "intended_object_sha256": "sha256:750594b51a534d603f50640d02a3c4eec79cc52fe07d5f442102d37b7299adb8", + "changed_paths": [] + } + ], + "changed_object_count": 3, + "intended_diff_only_images": true, + "object_identity_set_unchanged": true +} diff --git a/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/exact-reuse-values-dryrun-result.json b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/exact-reuse-values-dryrun-result.json new file mode 100644 index 00000000..757ff769 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/exact-reuse-values-dryrun-result.json @@ -0,0 +1,32 @@ +{ + "schema": "statehub.exact-reuse-values-readonly-diff.v1", + "status": "failed", + "dryrun_argv": [ + "helm", + "--kubeconfig", + "/home/worsch/.kube/config-railiance01", + "-n", + "state-hub", + "upgrade", + "state-hub", + "deploy/railiance/apps/charts/state-hub", + "--reuse-values", + "--set-string", + "image.tag=main-51bc70d", + "--dry-run=server", + "--hide-secret", + "--no-hooks", + "--timeout", + "3m" + ], + "production_mutations": false, + "hooks_executed": false, + "raw_helm_values_release_content_logs_retained": false, + "limitations": [ + "Dry-run admission/render only, not an actual image pull/migration/deployment.", + "Helm timeout does not stop a later live migration Job; exact scoped cancellation/quiescence remains required." + ], + "stage": "exact_upgrade_server_dryrun", + "error_class": "Refusal", + "error_label": "literal_sensitive_env_refused" +} diff --git a/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/fresh-public-baseline.json b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/fresh-public-baseline.json new file mode 100644 index 00000000..0f4c25f2 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/fresh-public-baseline.json @@ -0,0 +1,89 @@ +{ + "observed_at": "2026-10-16T23:43:51.990198+00:00", + "production_mutations": false, + "secret_values_read": false, + "raw_diagnostics_retained": false, + "target_node_confirmed": "92.205.62.239", + "helm_release": [ + { + "revision": 75, + "status": "deployed", + "chart": "state-hub-0.1.0", + "app_version": "main-5dd3df9", + "updated": "2026-10-06T12:02:21.111126728+02:00" + } + ], + "deployments": [ + { + "name": "state-hub", + "generation": 76, + "observed_generation": 76, + "ready_replicas": 1, + "images": [ + "forgejo.coulomb.social/coulomb/state-hub:main-7d99282" + ] + }, + { + "name": "state-hub-mcp", + "generation": 48, + "observed_generation": 48, + "ready_replicas": 1, + "images": [ + "forgejo.coulomb.social/coulomb/state-hub:main-7d99282" + ] + } + ], + "existing_migration_job": { + "lookup_exit": 1, + "state": "absent" + }, + "headroom_exit": 0, + "headroom": { + "ok": true, + "reasons": [], + "notes": [ + "Aggregate remaining millicores is not a kube-scheduler guarantee.", + "Preflight does not lower requests and does not start Helm." + ], + "observed_at": "2026-10-16T23:43:54.278373+00:00", + "remaining_cpu_m": 420 + }, + "health": { + "status": "ok", + "instance_role": "primary", + "instance_label": "railiance01" + }, + "db_schema": { + "source": "normal_owner_public_health_projection", + "status": "ok", + "applied": "b3c4d5e6f7a8", + "expected": "b3c4d5e6f7a8" + }, + "schema": "receiver-fresh-public-baseline.v1", + "workload_image_identity": [ + { + "pod_name": "state-hub-5d977977f9-bd2bs", + "pod_uid": "160a2d7c-dba2-4a5c-983d-442f78cd1151", + "containers": [ + { + "name": "state-hub", + "image": "forgejo.coulomb.social/coulomb/state-hub:main-7d99282", + "image_id": "forgejo.coulomb.social/coulomb/state-hub@sha256:b128ac983a1045acb2ec245e439846204a924c413d1bbc3b710b6f3fafe39313", + "ready": true + } + ] + }, + { + "pod_name": "state-hub-mcp-6c4757bb75-jx7f9", + "pod_uid": "36e68593-2ce3-474d-aacb-eba5bd04b84b", + "containers": [ + { + "name": "state-hub-mcp", + "image": "forgejo.coulomb.social/coulomb/state-hub:main-7d99282", + "image_id": "forgejo.coulomb.social/coulomb/state-hub@sha256:b128ac983a1045acb2ec245e439846204a924c413d1bbc3b710b6f3fafe39313", + "ready": true + } + ] + } + ] +} diff --git a/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/pending-supervision-entry.json b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/pending-supervision-entry.json new file mode 100644 index 00000000..beaf0317 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/pending-supervision-entry.json @@ -0,0 +1,51 @@ +{ + "proposal_id": "STATE-WP-0095-T06-cluster-frozen-receiving-r1", + "disposition": "pending", + "outcome": "pending", + "proposal_ref": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/proposal-metadata.json", + "original_revision": 1, + "original_digest_sha256": "5bef9e7818ce1ebc64b81e300b6b40dcfc710a8625d6e0595534f8284dc2052d", + "original_digest": "5bef9e7818ce1ebc64b81e300b6b40dcfc710a8625d6e0595534f8284dc2052d", + "current_revision": 4, + "current_digest_sha256": "63a02e8296d126c0158b7eb2c4ce79c7eeb6f8d6f61298d473c1065c7557ba32", + "target": "railiance01 state-hub release/API/MCP and exact-new-trial migration Job only", + "expected_result": "Normal owner image promotion makes exact frozen cluster receiving available; API/MCP ready, expected c4 schema and exact three historical parents/15 tasks preserved; only then is later registrar admission eligible. No original TLS/identity native acceptance is inferred.", + "verification_ref": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/FINAL-PROPOSAL.md", + "rollback_ref": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/MIGRATION-JOB-RECOVERY.md", + "cost_estimate_eur": null, + "risk_estimate_eur": null, + "cost_estimate": "Unknown attributable execution/network/operator recovery cost on existing infrastructure; no zero-cost claim or budget reservation inferred.", + "risk_estimate": "Unpriced production coordination outage, message migration locks/data compatibility, retained active migration Job, uncertain connection/lock mapping and recovery time; three-minute Helm wait is not a bound on outage or DB effects. Explicit supervised risk disposition required.", + "supervisor": "Bernd Worsch", + "approval_ref": null, + "approved_revision": null, + "approved_digest_sha256": null, + "executed_revision": null, + "executed_digest_sha256": null, + "refinement_or_rescue": true, + "promotion_evidence": false, + "reason": "Exact native rollout proposal remains pending. Source preparation, synthetic compatibility and public artifact verification are evidence only; earlier preparation failures and revisions remain one trial.", + "revisions": [ + { + "revision": 1, + "proposal_ref": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/REVIEW.md", + "digest_sha256": "5bef9e7818ce1ebc64b81e300b6b40dcfc710a8625d6e0595534f8284dc2052d", + "disposition": "not_submitted_or_unadjudicated", + "executed": false + }, + { + "revision": 2, + "proposal_ref": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r2/REVIEW.md", + "digest_sha256": "c8f13ed5d67d4743ea8e81bf720367022c820a060d7b225e84338eab2907493f", + "disposition": "not_submitted_or_unadjudicated", + "executed": false + }, + { + "revision": 3, + "proposal_ref": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r3-readiness/ROLLOUT-SUPPLEMENT.md", + "digest_sha256": "df2962fd1588784a987e37932bd67f03f6248ea6384cf4bbb74ad1fe2e26be2b", + "disposition": "not_submitted_or_unadjudicated", + "executed": false + } + ] +} diff --git a/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/pending-supervision-record-addition.json b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/pending-supervision-record-addition.json new file mode 100644 index 00000000..bdd6db60 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/pending-supervision-record-addition.json @@ -0,0 +1,21 @@ +{ + "schema": "custodian.pending-supervision-addition.v1", + "status": "candidate_only_not_applied", + "target_record": ".kaizen/agents/custodian-codex/supervision.json", + "expected_record_sha256": "407340493ffe584e9a245911d01f60e8f9ec1478f84478388f0210fd0c8b1a6d", + "operation": "append_one_proposal_if_ID_absent_and_record_preimage_matches", + "entry_ref": "pending-supervision-entry.json", + "entry_sha256": "8231ccf6534f9521e7477d9b0d013a0087b7f7173b94a31a396f04e159fbf1d1", + "preserve_authority_fields": [ + "agent_id", + "scope", + "mode", + "supervisor", + "runtime_enforcement", + "autopilot_grant", + "cost_budget_eur", + "risk_limit_eur" + ], + "authority_changes": false, + "approval_or_execution_inferred": false +} diff --git a/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/proposal-metadata.json b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/proposal-metadata.json new file mode 100644 index 00000000..e49a9206 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/proposal-metadata.json @@ -0,0 +1,295 @@ +{ + "schema": "custodian.supervised-rollout-proposal.v1", + "proposal_id": "STATE-WP-0095-T06-cluster-frozen-receiving-r1", + "revision": 4, + "status": "prepared_pending_supervisor_review_not_authorized", + "prior_revisions_retained": [ + 1, + 2, + 3 + ], + "original_revision": 1, + "original_digest_sha256": "5bef9e7818ce1ebc64b81e300b6b40dcfc710a8625d6e0595534f8284dc2052d", + "target": { + "host": "railiance01", + "node_ip": "92.205.62.239", + "namespace": "state-hub", + "release": "state-hub", + "deployments": [ + "state-hub", + "state-hub-mcp" + ], + "migration_job_name": "state-hub-migrate", + "migration_job_uid": "must_capture_exact_new_trial_UID_after_approved_creation_before_any_conditional_cancellation" + }, + "source_revision": "51bc70d1ff8f25450a8650d8e50caf053093a02e", + "readiness_source_patch_sha256": "4c52fd5a102df43ceb8e007d93d34efe861a3b321527cf5f3e195e35113c36a0", + "image": { + "tag": "main-51bc70d", + "digest": "sha256:c802690ee1811b3d77df4077936f9cdced1385514e8673fcbc9232b84d645015", + "ci_task": 12624, + "ci_status": "success", + "selected_source_files": 233, + "package_metadata_records": 86, + "floating_build_origins": "unknown_observed_bytes_bound_to_manifest", + "exact_pull_reference": "forgejo.coulomb.social/coulomb/state-hub:main-51bc70d@sha256:c802690ee1811b3d77df4077936f9cdced1385514e8673fcbc9232b84d645015" + }, + "expected_result": "Normal owner image promotion makes exact frozen cluster receiving available; API/MCP ready, expected c4 schema and exact three historical parents/15 tasks preserved; only then is later registrar admission eligible. No original TLS/identity native acceptance is inferred.", + "verification_ref": "../r3-readiness/ROLLOUT-SUPPLEMENT.md; MIGRATION-JOB-RECOVERY.md", + "rollback_ref": "MIGRATION-JOB-RECOVERY.md", + "observed_rollback_baseline": { + "helm_revision": 75, + "image_tag": "main-7d99282", + "freshness": "must_refresh_before_trial", + "schema_downgrade": "forbidden_automatic", + "migration_job_quiescence_required": true, + "image_digest": "sha256:b128ac983a1045acb2ec245e439846204a924c413d1bbc3b710b6f3fafe39313", + "observed_at": "2026-10-16T23:43:51.990198+00:00", + "current_schema": "b3c4d5e6f7a8", + "existing_migration_job": "absent", + "remaining_cpu_m": 420 + }, + "requested_conditional_recovery_scope": [ + "Exact-new-trial Job UID/image/ownership-bound foreground cancellation if still active after failed Helm, with UID precondition", + "Observation of only that bound Job and its owned Pod UIDs and inability to recreate", + "Private owner metadata-only verification of bound migration connections/transactions/locks quiescent", + "Image-only owner rollback only after quiescence and actual-schema assessment; no automatic schema downgrade" + ], + "explicit_exclusions": [ + "No deployment before exact supervisor disposition", + "No Repo Manager admission before delivered receiver proof", + "No Secret value read/write, native credential request or guard change", + "No broad backend cancellation, namespace cleanup, finalizer removal or old-data restore", + "No owner-native TLS/recovery/private-admission claim" + ], + "cost_estimate_eur": null, + "risk_estimate_eur": null, + "cost_estimate": "Unknown attributable execution/network/operator recovery cost on existing infrastructure; no zero-cost claim or budget reservation inferred.", + "risk_estimate": "Unpriced production coordination outage, message migration locks/data compatibility, retained active migration Job, uncertain connection/lock mapping and recovery time; three-minute Helm wait is not a bound on outage or DB effects. Explicit supervised risk disposition required.", + "remaining_readiness": [ + "Fresh execution-time release/image/schema/headroom and prior/new Job identity baseline", + "Exact supervisor disposition including conditional Job cancellation scope, mapping-unknown attended recovery fallback and unpriced risk" + ], + "approval_ref": null, + "approved_revision": null, + "approved_digest_sha256": null, + "executed_revision": null, + "executed_digest_sha256": null, + "production_execution_started": false, + "refinement_or_rescue": true, + "promotion_evidence": false, + "artifacts": [ + { + "path": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/REVIEW.md", + "sha256": "sha256:5bef9e7818ce1ebc64b81e300b6b40dcfc710a8625d6e0595534f8284dc2052d" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r2/REVIEW.md", + "sha256": "sha256:c8f13ed5d67d4743ea8e81bf720367022c820a060d7b225e84338eab2907493f" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r3-readiness/ROLLOUT-SUPPLEMENT.md", + "sha256": "sha256:df2962fd1588784a987e37932bd67f03f6248ea6384cf4bbb74ad1fe2e26be2b" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r3-readiness/IMAGE-RECEIPT-SUPPLEMENT.md", + "sha256": "sha256:dbd5d08cfe9e19499634a7f3de756704697712caa041b05814fc211b90820fe6" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r3-readiness/source-patch-manifest.json", + "sha256": "sha256:98211e65bebeee2c25ca75c6b9f0bc45128093baaba02069b6c41a15be32fe74" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/MIGRATION-JOB-RECOVERY.md", + "sha256": "sha256:bfbd229bcb534c4f104b40090dba6c2dd0e2e040dce627e923143f81035880bc" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/statehub-public-image-inspection.json", + "sha256": "sha256:5d182e5b0a3e9462024c0b9a123d631215f1b2d0568f18060b10a310a8251741" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/statehub-anonymous-registry-metadata.json", + "sha256": "sha256:30f80aeb153bfe33076e2e5b94ae127e97ed38c0e1d033dabfd94934cef8be9a" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/migration-compat-r1-result.json", + "sha256": "sha256:c290afa92777c4635a5ee06c1bf6c3f28b1a265b6bff6a91f5aee45f799c2923" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-17/migration-compat-r1-cleanup.json", + "sha256": "sha256:1d7e0830460c0e2c537027f94242b01661702aec1b2f93aa9041af6eb14cde21" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/FINAL-PROPOSAL.md", + "sha256": "sha256:2b2909528d37831bdff783b2ff0d764896ddb624caf743812353f993b401874f" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/chart-package-manifest.json", + "sha256": "sha256:5ed8dc93e5e304edfbe159b1da74a19c7ae3709e3cd6418055360efe50b5d730" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/state-hub-0.1.0.tgz", + "sha256": "sha256:b5c0663d830fc8d3b65080f237a0be8d01f8b2f7fec9dc33aeba91b1b6b281d4" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/reuse_values_dryrun.py", + "sha256": "sha256:17ae578ded53ce1cbf69c15dfd0a6629906548666712351ae0fb9bd5c4e05690" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/test_reuse_values_dryrun.py", + "sha256": "sha256:65c2d1306b5c03fcb53351839c5960ae7382b280794642f484a06579076d81f0" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/exact-reuse-values-dryrun-result.json", + "sha256": "sha256:0fa4cf5f7dce1cb7ef738b7ed16c7af8530197a36e830c741bfaeb8ea4460c81" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/exact-reuse-values-dryrun-result-2.json", + "sha256": "sha256:b2e97bd92ec10ac0b6bb6c00a50643665ecd7d960125cdfb497f4ffcfdc1e78c" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/exact-reuse-values-dryrun-result-3-digest-pinned.json", + "sha256": "sha256:3bc7aab8b98a8a8fefcacab49757e072937f1a2976a23449c20bb93203085d77" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/fresh-public-baseline.json", + "sha256": "sha256:594cc1ef68599b58b59ed02ddac030ff4ed0d866353140a3a663aaa47c554369" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/exact-reuse-values-dryrun-result-4-pinned-package.json", + "sha256": "sha256:73f8ff4094a929c2ec87e28487aa0bc73faa6a02d9377a9ccaad40295d1a084d" + }, + { + "path": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/chart-package-render-parity.json", + "sha256": "sha256:69dd2c671d933bec502dc05205797cfa637a2cfa17e6d5701118f3bf30f5c488" + } + ], + "current_readiness_source_revision": "086d79a2736e34b916bd7de3c8a65e2ea38a3d64", + "final_proposal_ref": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/FINAL-PROPOSAL.md", + "exact_reuse_values_dryrun": { + "status": "passed_images_only", + "object_count": 8, + "changed_objects": 3, + "only_changed_paths": "API/MCP/migration Job container image fields", + "result_ref": "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/exact-reuse-values-dryrun-result-4-pinned-package.json", + "hook_execution": false, + "pinned_chart_archive_sha256": "sha256:b5c0663d830fc8d3b65080f237a0be8d01f8b2f7fec9dc33aeba91b1b6b281d4", + "package_source_chart_parity": "all8identity/object/spec/image_matches" + }, + "chart_package": { + "sha256": "sha256:b5c0663d830fc8d3b65080f237a0be8d01f8b2f7fec9dc33aeba91b1b6b281d4", + "local_path": "/home/worsch/the-custodian/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/state-hub-0.1.0.tgz", + "intended_remote_path": "/tmp/statehub-frozen-receiver-b5c0663d830f/state-hub-0.1.0.tgz", + "staged": false + }, + "execution_commands": [ + [ + "ssh", + "railiance01", + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml helm -n state-hub upgrade state-hub /tmp/statehub-frozen-receiver-b5c0663d830f/state-hub-0.1.0.tgz --reuse-values --set-string image.tag=main-51bc70d@sha256:c802690ee1811b3d77df4077936f9cdced1385514e8673fcbc9232b84d645015 --atomic --timeout 3m" + ] + ], + "rollback_commands": [ + [ + "ssh", + "railiance01", + "KUBECONFIG=/etc/rancher/k3s/k3s.yaml helm -n state-hub rollback state-hub 75 --no-hooks --wait --timeout 3m" + ] + ], + "job_timeout_limit": "No activeDeadlineSeconds; Helm timeout/atomic is not Job cancellation, outage bound or schema rollback.", + "database_quiescence_mapping_available": "unknown; require existing private owner path or STOP attended owner recovery; no credential grant/framework", + "fresh_baseline": { + "observed_at": "2026-10-16T23:43:51.990198+00:00", + "production_mutations": false, + "secret_values_read": false, + "raw_diagnostics_retained": false, + "target_node_confirmed": "92.205.62.239", + "helm_release": [ + { + "revision": 75, + "status": "deployed", + "chart": "state-hub-0.1.0", + "app_version": "main-5dd3df9", + "updated": "2026-10-06T12:02:21.111126728+02:00" + } + ], + "deployments": [ + { + "name": "state-hub", + "generation": 76, + "observed_generation": 76, + "ready_replicas": 1, + "images": [ + "forgejo.coulomb.social/coulomb/state-hub:main-7d99282" + ] + }, + { + "name": "state-hub-mcp", + "generation": 48, + "observed_generation": 48, + "ready_replicas": 1, + "images": [ + "forgejo.coulomb.social/coulomb/state-hub:main-7d99282" + ] + } + ], + "existing_migration_job": { + "lookup_exit": 1, + "state": "absent" + }, + "headroom_exit": 0, + "headroom": { + "ok": true, + "reasons": [], + "notes": [ + "Aggregate remaining millicores is not a kube-scheduler guarantee.", + "Preflight does not lower requests and does not start Helm." + ], + "observed_at": "2026-10-16T23:43:54.278373+00:00", + "remaining_cpu_m": 420 + }, + "health": { + "status": "ok", + "instance_role": "primary", + "instance_label": "railiance01" + }, + "db_schema": { + "source": "normal_owner_public_health_projection", + "status": "ok", + "applied": "b3c4d5e6f7a8", + "expected": "b3c4d5e6f7a8" + }, + "schema": "receiver-fresh-public-baseline.v1", + "workload_image_identity": [ + { + "pod_name": "state-hub-5d977977f9-bd2bs", + "pod_uid": "160a2d7c-dba2-4a5c-983d-442f78cd1151", + "containers": [ + { + "name": "state-hub", + "image": "forgejo.coulomb.social/coulomb/state-hub:main-7d99282", + "image_id": "forgejo.coulomb.social/coulomb/state-hub@sha256:b128ac983a1045acb2ec245e439846204a924c413d1bbc3b710b6f3fafe39313", + "ready": true + } + ] + }, + { + "pod_name": "state-hub-mcp-6c4757bb75-jx7f9", + "pod_uid": "36e68593-2ce3-474d-aacb-eba5bd04b84b", + "containers": [ + { + "name": "state-hub-mcp", + "image": "forgejo.coulomb.social/coulomb/state-hub:main-7d99282", + "image_id": "forgejo.coulomb.social/coulomb/state-hub@sha256:b128ac983a1045acb2ec245e439846204a924c413d1bbc3b710b6f3fafe39313", + "ready": true + } + ] + } + ] + }, + "read_only_helper_tests": { + "passed": 4, + "duration_seconds": 0.08, + "scope": "isolated --noconftest; exact readonly argv/image/nonimage delta and credential-coordinate negative controls" + } +} diff --git a/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/reuse_values_dryrun.py b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/reuse_values_dryrun.py new file mode 100644 index 00000000..6c92a911 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/reuse_values_dryrun.py @@ -0,0 +1,121 @@ +#!/usr/bin/env python3 +"""Read-only exact owner Helm reuse-values render/diff; no raw output retained.""" +import copy +import hashlib +import json +import os +from pathlib import Path +import re +import subprocess +import yaml +OWNER=Path('/home/worsch/state-hub') +KUBE='/home/worsch/.kube/config-railiance01' +CHART=str(Path(__file__).resolve().parent/'state-hub-0.1.0.tgz') +CHART_SHA256='b5c0663d830fc8d3b65080f237a0be8d01f8b2f7fec9dc33aeba91b1b6b281d4' +TAG='main-51bc70d@sha256:c802690ee1811b3d77df4077936f9cdced1385514e8673fcbc9232b84d645015' +HELM=['helm','--kubeconfig',KUBE,'-n','state-hub'] +DRYRUN=HELM+['upgrade','state-hub',CHART,'--reuse-values','--set-string','image.tag='+TAG, + '--dry-run=server','--hide-secret','--no-hooks','--timeout','3m'] +PUBLIC_COORDINATES={'OPENBAO_K8S_TOKEN_PATH':'/var/run/secrets/openbao/token', + 'FORGE_READ_SECRET_PATH':'platform/data/workloads/state-hub/forge-derivation', + 'FORGE_READ_SECRET_KEY':'FORGE_READ_TOKEN'} +ALLOWED={'ConfigMap','Deployment','Job','Service','ServiceAccount','Namespace','Ingress'} +LIMIT=2*1024*1024 +class Refusal(RuntimeError):pass + +def digest(obj):return 'sha256:'+hashlib.sha256(json.dumps(obj,sort_keys=True,separators=(',',':')).encode()).hexdigest() + +def parse(raw): + if len(raw)>LIMIT:raise Refusal('render_size_refused') + result=[] + for obj in yaml.safe_load_all(raw): + if not obj:continue + if not isinstance(obj,dict) or obj.get('kind') not in ALLOWED:raise Refusal('unexpected_or_secret_resource_refused') + result.append(obj) + return result + +def sections(raw): + text=raw.decode() + if '\nMANIFEST:\n' not in text:raise Refusal('helm_render_sections_unrecognized') + before,manifest=text.split('\nMANIFEST:\n',1) + manifest=manifest.split('\nNOTES:',1)[0] + hooks=before.split('\nHOOKS:\n',1)[1] if '\nHOOKS:\n' in before else '' + return parse(hooks)+parse(manifest) + +def identity(obj): + meta=obj.get('metadata') or {} + return (obj['apiVersion'],obj['kind'],meta.get('namespace') or ('' if obj['kind']=='Namespace' else 'state-hub'),meta['name']) + +def diff_paths(a,b,prefix=''): + if type(a)!=type(b):return [prefix] + if isinstance(a,dict): + paths=[] + for key in sorted(set(a)|set(b)): + path=prefix+'/'+key.replace('~','~0').replace('/','~1') + paths.extend([path] if key not in a or key not in b else diff_paths(a[key],b[key],path)) + return paths + if isinstance(a,list): + if len(a)!=len(b):return [prefix] + return [p for i,(x,y) in enumerate(zip(a,b)) for p in diff_paths(x,y,prefix+'/'+str(i))] + return [] if a==b else [prefix] + +def compare(old,new): + baseline={identity(o):o for o in old};intended={identity(o):o for o in new} + if len(baseline)!=len(old) or len(intended)!=len(new):raise Refusal('duplicate_object_identity') + rows=[] + for key in sorted(set(baseline)|set(intended)): + a=baseline.get(key);b=intended.get(key);paths=diff_paths(a,b) + images=[] + if b and b['kind'] in {'Deployment','Job'}: + spec=b.get('spec',{}).get('template',{}).get('spec',{}) + for container in (spec.get('containers',[])+spec.get('initContainers',[])): + image=container.get('image','') + if not re.fullmatch(r'forgejo\.coulomb\.social/coulomb/state-hub:main-[0-9a-f]{7}(?:@sha256:[0-9a-f]{64})?',image):raise Refusal('unexpected_image_refused') + images.append(image) + for env in container.get('env',[]): + if 'value' in env and re.search(r'PASSWORD|TOKEN|SECRET|DATABASE_URL',env.get('name',''),re.I): + if env.get('name') not in PUBLIC_COORDINATES or env['value']!=PUBLIC_COORDINATES[env['name']]:raise Refusal('literal_sensitive_env_refused') + rows.append({'api_version':key[0],'kind':key[1],'namespace':key[2],'name':key[3], + 'intended_images':images,'intended_spec_sha256':digest(b.get('spec',{})) if b else None, + 'baseline_object_sha256':digest(a) if a else None,'intended_object_sha256':digest(b) if b else None, + 'changed_paths':paths}) + image_path=re.compile(r'^/spec/template/spec/(?:initContainers|containers)/[0-9]+/image$') + only_images=all(image_path.fullmatch(p) for row in rows for p in row['changed_paths']) + return {'objects':rows,'changed_object_count':sum(bool(r['changed_paths']) for r in rows), + 'intended_diff_only_images':only_images,'object_identity_set_unchanged':set(baseline)==set(intended)} + +def command(args): + env=dict(os.environ);env['KUBECONFIG']=KUBE + p=subprocess.run(args,cwd=OWNER,env=env,capture_output=True,timeout=45) + if len(p.stdout)>LIMIT:raise Refusal('command_output_size_refused') + if p.returncode: + lower=p.stderr.decode(errors='replace').lower() + label=next((label for marker,label in [('reject-secret-last-applied','secret_annotation_policy_refused'),('forbidden','admission_or_auth_refused'),('cannot patch','patch_validation_refused'),('is invalid','resource_validation_refused'),('timeout','bounded_timeout'),('connection refused','api_unavailable')] if marker in lower),'unknown_refusal') + raise Refusal(label) + return p.stdout + +def main(): + result={'schema':'statehub.exact-reuse-values-readonly-diff.v1','status':'failed', + 'dryrun_argv':DRYRUN,'production_mutations':False,'hooks_executed':False, + 'raw_helm_values_release_content_logs_retained':False, + 'limitations':['Dry-run admission/render only, not an actual image pull/migration/deployment.', + 'Helm timeout does not stop a later live migration Job; exact scoped cancellation/quiescence remains required.']} + try: + archive=Path(CHART) + if archive.is_symlink() or not archive.is_file() or hashlib.sha256(archive.read_bytes()).hexdigest()!=CHART_SHA256:raise Refusal('reviewed_chart_archive_drift') + result['chart_archive_sha256']='sha256:'+CHART_SHA256 + nodes=json.loads(command(['kubectl','--kubeconfig',KUBE,'get','nodes','-o','json'])) + if not any(a.get('address')=='92.205.62.239' for n in nodes.get('items',[]) for a in n.get('status',{}).get('addresses',[])):raise Refusal('target_identity_refused') + result['stage']='baseline_release_manifest' + old=parse(command(HELM+['get','manifest','state-hub'])) + result['stage']='baseline_release_hooks' + old+=parse(command(HELM+['get','hooks','state-hub'])) + result['stage']='exact_upgrade_server_dryrun' + new=sections(command(DRYRUN)) + result.update(compare(old,new));result['status']='passed_images_only' if result['intended_diff_only_images'] and result['object_identity_set_unchanged'] else 'review_nonimage_delta_required' + except (Refusal,subprocess.TimeoutExpired,ValueError,yaml.YAMLError) as error: + result['error_class']=type(error).__name__ + result['error_label']=str(error) if isinstance(error,Refusal) else 'bounded_parse_or_command_failure' + print(json.dumps(result,indent=2)) + return int(result['status']!='passed_images_only') +if __name__=='__main__':raise SystemExit(main()) diff --git a/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/review-freeze.json b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/review-freeze.json new file mode 100644 index 00000000..22a62ec9 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/review-freeze.json @@ -0,0 +1,60 @@ +{ + "schema": "statehub-final-rollout-review-freeze.v1", + "stable_proposal_id": "STATE-WP-0095-T06-cluster-frozen-receiving-r1", + "revision": 4, + "proposal_metadata_sha256": "63a02e8296d126c0158b7eb2c4ce79c7eeb6f8d6f61298d473c1065c7557ba32", + "files": [ + { + "path": "FINAL-PROPOSAL.md", + "sha256": "sha256:2b2909528d37831bdff783b2ff0d764896ddb624caf743812353f993b401874f" + }, + { + "path": "proposal-metadata.json", + "sha256": "sha256:63a02e8296d126c0158b7eb2c4ce79c7eeb6f8d6f61298d473c1065c7557ba32" + }, + { + "path": "pending-supervision-entry.json", + "sha256": "sha256:8231ccf6534f9521e7477d9b0d013a0087b7f7173b94a31a396f04e159fbf1d1" + }, + { + "path": "pending-supervision-record-addition.json", + "sha256": "sha256:f7764c916cef5fff39c406909fe195ca3478a8ffafdad22aabe8776458209c41" + }, + { + "path": "MIGRATION-JOB-RECOVERY.md", + "sha256": "sha256:bfbd229bcb534c4f104b40090dba6c2dd0e2e040dce627e923143f81035880bc" + }, + { + "path": "chart-package-manifest.json", + "sha256": "sha256:5ed8dc93e5e304edfbe159b1da74a19c7ae3709e3cd6418055360efe50b5d730" + }, + { + "path": "state-hub-0.1.0.tgz", + "sha256": "sha256:b5c0663d830fc8d3b65080f237a0be8d01f8b2f7fec9dc33aeba91b1b6b281d4" + }, + { + "path": "reuse_values_dryrun.py", + "sha256": "sha256:17ae578ded53ce1cbf69c15dfd0a6629906548666712351ae0fb9bd5c4e05690" + }, + { + "path": "test_reuse_values_dryrun.py", + "sha256": "sha256:65c2d1306b5c03fcb53351839c5960ae7382b280794642f484a06579076d81f0" + }, + { + "path": "exact-reuse-values-dryrun-result-3-digest-pinned.json", + "sha256": "sha256:3bc7aab8b98a8a8fefcacab49757e072937f1a2976a23449c20bb93203085d77" + }, + { + "path": "exact-reuse-values-dryrun-result-4-pinned-package.json", + "sha256": "sha256:73f8ff4094a929c2ec87e28487aa0bc73faa6a02d9377a9ccaad40295d1a084d" + }, + { + "path": "fresh-public-baseline.json", + "sha256": "sha256:594cc1ef68599b58b59ed02ddac030ff4ed0d866353140a3a663aaa47c554369" + }, + { + "path": "chart-package-render-parity.json", + "sha256": "sha256:69dd2c671d933bec502dc05205797cfa637a2cfa17e6d5701118f3bf30f5c488" + } + ] +} diff --git a/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/state-hub-0.1.0.tgz b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/state-hub-0.1.0.tgz new file mode 100644 index 00000000..5dacdea4 Binary files /dev/null and b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/state-hub-0.1.0.tgz differ diff --git a/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/test_reuse_values_dryrun.py b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/test_reuse_values_dryrun.py new file mode 100644 index 00000000..f454221f --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/test_reuse_values_dryrun.py @@ -0,0 +1,30 @@ +import importlib.util +from pathlib import Path +import copy +import pytest +spec=importlib.util.spec_from_file_location('reuse_values',Path(__file__).parent/'reuse_values_dryrun.py') +mod=importlib.util.module_from_spec(spec);spec.loader.exec_module(mod) +def deployment(tag):return {'apiVersion':'apps/v1','kind':'Deployment','metadata':{'name':'state-hub'},'spec':{'template':{'spec':{'containers':[{'name':'api','image':'forgejo.coulomb.social/coulomb/state-hub:'+tag}]}}}} +def test_only_images_diff_and_fixed_readonly_command(): + result=mod.compare([deployment('main-7d99282')],[deployment('main-51bc70d')]) + assert result['intended_diff_only_images'] and result['object_identity_set_unchanged'] + assert result['objects'][0]['changed_paths']==['/spec/template/spec/containers/0/image'] + assert '--dry-run=server' in mod.DRYRUN and '--hide-secret' in mod.DRYRUN and '--no-hooks' in mod.DRYRUN + assert '--force' not in mod.DRYRUN and '--install' not in mod.DRYRUN + assert '--reuse-values' in mod.DRYRUN + +def test_nonimage_delta_refuses_images_only_claim(): + new=deployment('main-51bc70d');new['spec']['replicas']=2 + assert not mod.compare([deployment('main-7d99282')],[new])['intended_diff_only_images'] + +def test_secret_and_sensitive_literal_refused(): + with pytest.raises(mod.Refusal,match='unexpected_or_secret_resource_refused'):mod.parse(b'apiVersion: v1\nkind: Secret\nmetadata: {name: fixture}\n') + new=deployment('main-51bc70d');new['spec']['template']['spec']['containers'][0]['env']=[{'name':'DATABASE_URL','value':'synthetic-not-a-credential'}] + with pytest.raises(mod.Refusal,match='literal_sensitive_env_refused'):mod.compare([], [new]) + +def test_exact_public_credential_coordinates_allowed_without_allowing_values(): + new=deployment('main-51bc70d');container=new['spec']['template']['spec']['containers'][0] + container['env']=[{'name':k,'value':v} for k,v in mod.PUBLIC_COORDINATES.items()] + assert mod.compare([new],[new])['intended_diff_only_images'] + container['env'][0]['value']='synthetic-unbound-value' + with pytest.raises(mod.Refusal,match='literal_sensitive_env_refused'):mod.compare([], [new]) diff --git a/docs/changes/netkingdom-target-2026-10-17/checkpoint-progress.json b/docs/changes/netkingdom-target-2026-10-17/checkpoint-progress.json new file mode 100644 index 00000000..3a17da85 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/checkpoint-progress.json @@ -0,0 +1,14 @@ +{ + "workplan_id": "dfadb19b-445e-59c6-bcd6-48e87b912c52", + "id": "0bf10ce1-2e07-4672-8329-5bf7def089e5", + "topic_id": null, + "task_id": null, + "decision_id": null, + "event_type": "note", + "summary": "CUST-WP-0080 implementation checkpoint: actual unavailable-scanner shared/Custodian hooks and exact hard-loss cleanup passed; RMGR-WP-0021-T05 published 9ebde0a9 and authoritative retry applied. Generated-fixture SOPS v3.13.3 real crypto compatibility passed65 checks, including4 sealed-FD cases; exact2 test files integrated, publication pending. SECRETS-WP-0015 published c59bbf56 with offline selector preflight; original outage-compatible consumption/native acceptance remains open. RCLUSTER-WP-0018 source prepared, publication correctly refused before mutation by immutable historical UUID guard; receiver-first STATE-WP-0095 successor prepared/tested26 and registrar47, not deployed or activated. PostgreSQL journal80 source tests pass, actual disposable R2 failed safely with cleanup; diagnostic successor pending. All16 TSA gates remain open; no authority promotion, live rollout or credential recovery.", + "detail": null, + "author": "codex", + "session_id": null, + "created_at": "2026-10-16T23:18:29.623353Z", + "workstream_id": "dfadb19b-445e-59c6-bcd6-48e87b912c52" +} diff --git a/docs/changes/netkingdom-target-2026-10-17/cluster-integration.json b/docs/changes/netkingdom-target-2026-10-17/cluster-integration.json new file mode 100644 index 00000000..892d123c --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/cluster-integration.json @@ -0,0 +1,13 @@ +{ + "owner": "railiance-cluster", + "base_revision": "cac8eabef5a0d0990a7b0de8f5e2c762666ac7f0", + "applied": true, + "files": { + "tools/public-tls-metadata.py": "sha256:87c167e44f0fcf154c9f2afae2187bebd33e5f220c05f579c1233b58bfe4f30b", + "tests/test_public_tls_metadata.py": "sha256:200a5be79dc6a715e22798b63e481431c3afeb2c4d7b71b26375d016a0c45866", + "docs/keycape-tls-recovery-boundary.md": "sha256:f4bcb1d1832c566f9c87793ed2a461c8cd8a00859dc4ae66cd3c160d7ceefa70", + "workplans/RCLUSTER-WP-0018-keycape-original-tls-recovery.md": "sha256:4a0d616ccbea199053531e82276441be21d0f168a63056a456375e27f58fc9af" + }, + "preexisting_brief_preserved": true, + "native_acceptance": false +} diff --git a/docs/changes/netkingdom-target-2026-10-17/completed-deliverable-publication.json b/docs/changes/netkingdom-target-2026-10-17/completed-deliverable-publication.json new file mode 100644 index 00000000..43348846 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/completed-deliverable-publication.json @@ -0,0 +1,81 @@ +{ + "schema": "custodian.completed-deliverable-publication.v1", + "native_acceptance": false, + "owners": [ + { + "repo": "net-kingdom", + "published_head": "70f408ca2389bf3722a91a03832fc6e8587355e5", + "remote_exact": true, + "workplans": [ + { + "id": "NK-WP-0048", + "uuid": "e31f3f9d-0748-5137-b0a3-7b3ca46a66eb", + "task_count": 21, + "counts": { + "done": 15, + "wait": 2, + "todo": 3, + "progress": 1 + }, + "all_ids_uuids_statuses_match": true, + "source_sha256": "sha256:b737bfae4802c122b21619695a169d7d082672af96314b1709860dd5aff2a60f" + }, + { + "id": "NK-WP-0049", + "uuid": "17d315f0-829e-57c7-85cc-3a7914152804", + "task_count": 37, + "counts": { + "done": 25, + "progress": 4, + "wait": 7, + "todo": 1 + }, + "all_ids_uuids_statuses_match": true, + "source_sha256": "sha256:678ec04b73b57c026001791706c05c5d4d5a508a32f17210ae8ad03ab15d53b8" + } + ] + }, + { + "repo": "state-hub", + "published_head": "086d79a2736e34b916bd7de3c8a65e2ea38a3d64", + "remote_exact": true, + "workplans": [ + { + "id": "STATE-WP-0095", + "uuid": "79579572-8120-5d3b-aca5-dd4aff60d058", + "task_count": 8, + "counts": { + "done": 6, + "wait": 2 + }, + "all_ids_uuids_statuses_match": true, + "source_sha256": "sha256:ef10359cc5974283b5bdbfc602adf14e3c24362adf00640698d2937c6538483a" + } + ] + } + ], + "netkingdom_legacy_consistency": { + "fail": 0, + "automation_error": 0, + "warn": 32, + "info": 5 + }, + "netkingdom_authoritative_projection": { + "status": "applied", + "commit": "70f408ca2389bf3722a91a03832fc6e8587355e5", + "counts": { + "created": 0, + "updated": 64, + "retired": 0, + "refused": 0, + "released": 0, + "created_tasks": 0, + "updated_tasks": 2, + "cancelled_tasks": 0, + "created_edges": 1, + "removed_edges": 0, + "unresolved_edges": 1, + "external_edges": 77 + } + } +} diff --git a/docs/changes/netkingdom-target-2026-10-17/coordination-receipts.json b/docs/changes/netkingdom-target-2026-10-17/coordination-receipts.json new file mode 100644 index 00000000..8befae99 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/coordination-receipts.json @@ -0,0 +1,104 @@ +{ + "schema": "custodian.owner-wait-receipts.v1", + "new_drivers_or_worker_injection": false, + "receipts": [ + { + "case_id": "nk49-t35-rcluster18", + "receipt_id": "6c51a699-db1c-414d-9e32-15b9a2714a34", + "workplan_id": "17d315f0-829e-57c7-85cc-3a7914152804", + "state": "waiting", + "detail": { + "scenario_type": "cross_owner_wait", + "case_id": "nk49-t35-rcluster18", + "obligor_workplan_id": "RCLUSTER-WP-0018", + "obligor_task_id": "RCLUSTER-WP-0018-T02", + "beneficiary_workplan_id": "NK-WP-0049", + "beneficiary_task_id": "NK-WP-0049-T35", + "flavor": "implementation", + "state": "waiting", + "reason": "Cluster owner source prepared but unpublished; immutable historical guard requires reviewed receiving rollout first. No central Cluster task binding claimed.", + "coordination_context": "CUST-WP-0080", + "runtime_worker_injection_enabled": false, + "human_gate_never_woken": true, + "observer": "codex", + "native_acceptance": false + }, + "central_publication": true + }, + { + "case_id": "nk49-t36-secrets15", + "receipt_id": "8a73a503-7479-426b-b2ad-e88f32e4c7e8", + "workplan_id": "17d315f0-829e-57c7-85cc-3a7914152804", + "state": "waiting", + "detail": { + "scenario_type": "cross_owner_wait", + "case_id": "nk49-t36-secrets15", + "obligor_workplan_id": "SECRETS-WP-0015", + "obligor_task_id": "SECRETS-WP-0015-T03", + "beneficiary_workplan_id": "NK-WP-0049", + "beneficiary_task_id": "NK-WP-0049-T36", + "flavor": "implementation", + "state": "waiting", + "reason": "SECRETS-WP-0015 published c59bbf56 and exact4task/2edge bindings observed; T03 remains todo for outage-compatible consumer preparation, no native assent.", + "coordination_context": "CUST-WP-0080", + "runtime_worker_injection_enabled": false, + "human_gate_never_woken": true, + "observer": "codex", + "native_acceptance": false + }, + "central_publication": true + }, + { + "case_id": "secrets15-nk49-readiness", + "receipt_id": "3f905339-a4c9-428e-9cbd-fa490c144c7a", + "workplan_id": "68a0642e-4908-5260-89c9-3adce60e6a4d", + "state": "waiting", + "detail": { + "scenario_type": "cross_owner_wait", + "case_id": "secrets15-nk49-readiness", + "obligor_workplan_id": "NK-WP-0049", + "obligor_task_id": "NK-WP-0049-T33", + "beneficiary_workplan_id": "SECRETS-WP-0015", + "beneficiary_task_id": "SECRETS-WP-0015-T04", + "flavor": "implementation", + "state": "waiting", + "reason": "Foreign source readiness remains incomplete; beneficiary also has a separate attended human gate", + "coordination_context": "CUST-WP-0080", + "human_gate_never_woken": true, + "runtime_worker_injection_enabled": false, + "observer": "codex", + "native_acceptance": false + }, + "central_publication": true + }, + { + "case_id": "cluster-frozen-receiver-before-registrar-r1", + "receipt_id": "6f33542c-8318-4a9d-9cbd-9b9d8b2dd664", + "workplan_id": "efe0ecb2-2f3f-5f49-baee-b90ad1d353ab", + "state": "waiting", + "detail": { + "scenario_type": "project_driver", + "case_id": "cluster-frozen-receiver-before-registrar-r1", + "driver_repo": "prj-state-hub-retirement", + "driver_workplan_id": "SHR-WP-0001", + "beneficiary_workplan_id": "RMGR-WP-0019", + "beneficiary_task_id": "RMGR-WP-0019-T05", + "obligor_workplan_id": "STATE-WP-0095", + "obligor_task_id": "STATE-WP-0095-T06", + "flavor": "implementation", + "state": "waiting", + "reason": "receiver-first reviewed rollout is a human gate; no worker wake", + "indirect_beneficiaries": [ + "RCLUSTER-WP-0018", + "NK-WP-0049-T35" + ], + "next_action": "Founder review of pinned51bc70d@c802 image/migration/recovery proposal; no wake, deployment or registrar admission before approved and verified return.", + "runtime_worker_injection_enabled": false, + "human_gate_never_woken": true, + "observer": "codex", + "native_acceptance": false + }, + "central_publication": true + } + ] +} diff --git a/docs/changes/netkingdom-target-2026-10-17/coordinator-checkpoint.json b/docs/changes/netkingdom-target-2026-10-17/coordinator-checkpoint.json new file mode 100644 index 00000000..fc25120a --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/coordinator-checkpoint.json @@ -0,0 +1,60 @@ +{ + "schema": "custodian.netkingdom-checkpoint.v1", + "date": "2026-10-17", + "native_target_gates_closed": 0, + "historical_candidate_independent_tests": { + "state_hub": { + "passed": 26, + "seconds": 1.66 + }, + "repo_manager": { + "passed": 47, + "seconds": 5.69 + }, + "scope": "isolated candidate sources; registrar not activated; no production rollout" + }, + "scanner_publication": { + "commit": "9ebde0a9bd60d5c82910494fbe6bd1b891455cee", + "initial_sync": "pending_push despite exit 0; retained original receipt", + "git_push_followup": "Everything up-to-date", + "retry_sync": "applied", + "instance_role": "primary", + "instance_label": "railiance01", + "expected_commit_equals_derived_commit": true, + "updated_tasks": [ + "RMGR-WP-0021-T05" + ], + "refused": 0, + "retired": 0, + "binding_readback": "verified exact5task IDs/UUIDs/statuses and remoteHEAD" + }, + "secrets_publication": { + "commit": "c59bbf568c0be8a72ac593508f48c9b1f61ec4c1", + "sync": "applied", + "instance_role": "primary", + "instance_label": "railiance01", + "expected_commit_equals_derived_commit": true, + "binding_readback": "verified exact4tasks and2dependencyedges and remoteHEAD" + }, + "cluster_publication": "refused before mutation by historical identity guard; source files prepared, not published", + "state_hub_rollout": "not authorized; full deployed-to-candidate closure includes unrelated inbox migration requiring review", + "postgres": { + "source_tests": 82, + "actual_fixture": "passed21oracles", + "result": "postgres-r5-result.json", + "cleanup": "postgres-r5-cleanup.json", + "source_integration": "postgres-followthrough-integration.json", + "native_admission": false + }, + "state_hub_source": { + "published_commit": "51bc70d1ff8f25450a8650d8e50caf053093a02e", + "projection": "applied", + "new_tasks": 3, + "unresolved_edges": 1, + "unresolved_reason": "RMGR-WP-0019-T06 deferred until receiving rollout verified", + "production_deployed": false, + "image_digest": "sha256:c802690ee1811b3d77df4077936f9cdced1385514e8673fcbc9232b84d645015", + "image_inspection": "verified233selectedfiles86packageMETADATA22layers; noimageexecution", + "migration_compatibility": "passed10syntheticold-writeshapeoracles; productiontiming/fullappunverified" + } +} diff --git a/docs/changes/netkingdom-target-2026-10-17/custodian-publication-inputs.json b/docs/changes/netkingdom-target-2026-10-17/custodian-publication-inputs.json new file mode 100644 index 00000000..43b11401 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/custodian-publication-inputs.json @@ -0,0 +1,66 @@ +{ + "files": { + "docs/netkingdom-target-implementation.md": "sha256:bae7ffb6e5a6e03cd2b2801fbd9c5fc24e782a969f1e7a35eca45635e31682dc", + "workplans/CUST-WP-0080-netkingdom-security-blueprint-and-gap-closure.md": "sha256:896d9b99d3d2bc2c8e8ffb501b68ee9a29f3768a9c859113df558e334148a2ab", + ".kaizen/agents/custodian-codex/supervision.json": "sha256:788613168f7d2b1dec4709b7f0533d6bc013405bb259feb7267d77add086e7b2", + "docs/changes/netkingdom-target-2026-10-17/coordinator-checkpoint.json": "sha256:54456be86db2b985c98a02e4de930f49ed2c77199ecaa073296a37eb7ba4c091", + "docs/changes/netkingdom-target-2026-10-17/verified-results.json": "sha256:23390f010e08b60e9b1e82b7b17b231113bd18632a4eb51d064b8f06c5860c96", + "docs/changes/netkingdom-target-2026-10-17/completed-deliverable-publication.json": "sha256:a0e6d2d24ebd4f930fa3310166fa87b96ba025f32cb9e7b2fdb98255c0569677", + "docs/changes/netkingdom-target-2026-10-17/coordination-receipts.json": "sha256:e2dfb152f91ac6281839fb9423fdd0e00f30729d04c6d41946b06164e9ff73dc", + "docs/changes/netkingdom-target-2026-10-17/pending-proposal-recorded.json": "sha256:ef5ad11c66b24c3848ed406b257848a9c9c149a18c4c3ed77617c6f8cf7373a4", + "docs/changes/netkingdom-target-2026-10-17/checkpoint-progress.json": "sha256:6fb29fcf9ad49a5d67ed17e19870ad38cb73f11ba5add8794f2a27ec76869196", + "docs/changes/netkingdom-target-2026-10-17/sops-real-regressions.json": "sha256:844d45d10eadadbbb3d5f83f88d75a84d6d9d77f49f7cf895f00482a3124a29b", + "docs/changes/netkingdom-target-2026-10-17/sops-source-tool.json": "sha256:7bff389a10fd411381f5f556b42d33a9ac3cf9cdd39478ba00b3fe0703ffb7a7", + "docs/changes/netkingdom-target-2026-10-17/r0-sops-real-regressions.json": "sha256:1e61072b4d1380a746c59497fce5fc742cdb17a4e63e86f6786c0d19a5b6249f", + "docs/changes/netkingdom-target-2026-10-17/r1-sops-real-regressions.json": "sha256:efc20b602041e9c54820a8d5f0746ece274fc4869ec77ab522bec621e22cc14b", + "docs/changes/netkingdom-target-2026-10-17/postgres-r3-cleanup.json": "sha256:0da4fc52decb8de3795a3af2d75af66c3435bae917e54a6ff6cb9107eb7c2850", + "docs/changes/netkingdom-target-2026-10-17/postgres-r4-result.json": "sha256:540a4080f57514fde4e07c2fab888456e4d6fbe7b22d016fe4bcce7bbc35e715", + "docs/changes/netkingdom-target-2026-10-17/postgres-r4-cleanup.json": "sha256:cfe505a2d58a079edbb5daa08cc43aa1b0af38f0cf2c1f7adc87522693452ab9", + "docs/changes/netkingdom-target-2026-10-17/postgres-r5-result.json": "sha256:d72cc5e0788b7be69fc40c641e20680d29a175181334396b5f7fcecc0c0763d9", + "docs/changes/netkingdom-target-2026-10-17/postgres-r5-cleanup.json": "sha256:b5b10daaf299df9d2c5bee3370d0123d2360ede1901ff456d8bcd1072f810775", + "docs/changes/netkingdom-target-2026-10-17/migration-compat-r1-result.json": "sha256:c290afa92777c4635a5ee06c1bf6c3f28b1a265b6bff6a91f5aee45f799c2923", + "docs/changes/netkingdom-target-2026-10-17/migration-compat-r1-cleanup.json": "sha256:1d7e0830460c0e2c537027f94242b01661702aec1b2f93aa9041af6eb14cde21", + "docs/changes/netkingdom-target-2026-10-17/statehub-public-image-inspection.json": "sha256:5d182e5b0a3e9462024c0b9a123d631215f1b2d0568f18060b10a310a8251741", + "docs/changes/netkingdom-target-2026-10-17/statehub-anonymous-registry-metadata.json": "sha256:30f80aeb153bfe33076e2e5b94ae127e97ed38c0e1d033dabfd94934cef8be9a", + "docs/changes/netkingdom-target-2026-10-17/state-hub-source-projection.json": "sha256:84893cbbac99fc0bc23e883b51b8f22ca0116b90d7707a776c39da5f5002702e", + "docs/changes/netkingdom-target-2026-10-17/state-hub-readiness-projection.json": "sha256:4d75f0496cbd2c2d186a0b1659deff830f2a1801d16bde62702105dacf47109e", + "docs/changes/netkingdom-target-2026-10-17/secrets-engine-projection.json": "sha256:c36888ce738a3dae5e269b1c1742e49cd47355355ae2d3ddd40ada5f3cfed1de", + "docs/changes/netkingdom-target-2026-10-17/cluster-integration.json": "sha256:70402112bfe904b6214326847cfc1fe1ce6d7bfb7cd3f997b1a321889f6bf1d8", + "docs/changes/netkingdom-target-2026-10-17/netkingdom-projection.json": "sha256:b8bea45567bf8b72d5d8d3952479b3b7877135ce68ff026b440e90bf5eacbe2b", + "docs/changes/netkingdom-target-2026-10-17/netkingdom-consistency.json": "sha256:79e78055e1ee1725cf88ca041df09bee551a1aa2404cdc9125fe12de375d772d", + "docs/changes/netkingdom-target-2026-10-17/wp49-sops-successor-r1/owner-publication-readback.json": "sha256:fbc223bf65f513d23c48a979cb7c293a86cffd5a292ee1bb23c84885b0edaebd", + "docs/changes/netkingdom-target-2026-10-17/scanner-unavailable-r1/namespace-hook-results.json": "sha256:5aaef79c0be4ae3cf721482784b255dde795559363bfb671e64ba6252fec59bc", + "docs/changes/netkingdom-target-2026-10-17/scanner-unavailable-r1/namespace-lifecycle-results.json": "sha256:7250def507f30c164499738bb3aa65668c27853319370b34eef6a41685523dc4", + "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/REVIEW.md": "sha256:5bef9e7818ce1ebc64b81e300b6b40dcfc710a8625d6e0595534f8284dc2052d", + "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/exact-frozen-source-manifest.json": "sha256:5fa43c1f3511a7d7d22f84e030eaebfcd03af36c976159f28396d9c2422e6f33", + "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/existing-row-metadata-readback.json": "sha256:a743eb4693043d29eabbf62536b335e2ba9fe521f1362377c8b572c63634b5af", + "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r2/REVIEW.md": "sha256:c8f13ed5d67d4743ea8e81bf720367022c820a060d7b225e84338eab2907493f", + "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r2/full-image-review-notes.json": "sha256:6491487afe55b1a2a8fe773a7b700e596489bcc459d755a4071b14ac272edf3b", + "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r2/deployed-to-current-source-closure.json": "sha256:a8dd674b9740b2d72425acfadb10b00abd7692ccf6b11cf81dbdda4d246c6d21", + "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r2/canonical-source-readback.json": "sha256:7b32658c4f9815552bafe9bdf3f3842935200bd120e46208a4accf490f6b4111", + "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r3-readiness/ROLLOUT-SUPPLEMENT.md": "sha256:df2962fd1588784a987e37932bd67f03f6248ea6384cf4bbb74ad1fe2e26be2b", + "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r3-readiness/IMAGE-RECEIPT-SUPPLEMENT.md": "sha256:dbd5d08cfe9e19499634a7f3de756704697712caa041b05814fc211b90820fe6", + "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r3-readiness/source-patch-manifest.json": "sha256:98211e65bebeee2c25ca75c6b9f0bc45128093baaba02069b6c41a15be32fe74", + "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/FINAL-PROPOSAL.md": "sha256:2b2909528d37831bdff783b2ff0d764896ddb624caf743812353f993b401874f", + "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/proposal-metadata.json": "sha256:63a02e8296d126c0158b7eb2c4ce79c7eeb6f8d6f61298d473c1065c7557ba32", + "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/pending-supervision-entry.json": "sha256:8231ccf6534f9521e7477d9b0d013a0087b7f7173b94a31a396f04e159fbf1d1", + "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/pending-supervision-record-addition.json": "sha256:f7764c916cef5fff39c406909fe195ca3478a8ffafdad22aabe8776458209c41", + "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/MIGRATION-JOB-RECOVERY.md": "sha256:bfbd229bcb534c4f104b40090dba6c2dd0e2e040dce627e923143f81035880bc", + "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/chart-package-manifest.json": "sha256:5ed8dc93e5e304edfbe159b1da74a19c7ae3709e3cd6418055360efe50b5d730", + "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/state-hub-0.1.0.tgz": "sha256:b5c0663d830fc8d3b65080f237a0be8d01f8b2f7fec9dc33aeba91b1b6b281d4", + "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/reuse_values_dryrun.py": "sha256:17ae578ded53ce1cbf69c15dfd0a6629906548666712351ae0fb9bd5c4e05690", + "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/test_reuse_values_dryrun.py": "sha256:65c2d1306b5c03fcb53351839c5960ae7382b280794642f484a06579076d81f0", + "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/exact-reuse-values-dryrun-result-3-digest-pinned.json": "sha256:3bc7aab8b98a8a8fefcacab49757e072937f1a2976a23449c20bb93203085d77", + "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/exact-reuse-values-dryrun-result-4-pinned-package.json": "sha256:73f8ff4094a929c2ec87e28487aa0bc73faa6a02d9377a9ccaad40295d1a084d", + "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/fresh-public-baseline.json": "sha256:594cc1ef68599b58b59ed02ddac030ff4ed0d866353140a3a663aaa47c554369", + "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/chart-package-render-parity.json": "sha256:69dd2c671d933bec502dc05205797cfa637a2cfa17e6d5701118f3bf30f5c488", + "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/review-freeze.json": "sha256:2c929cd3661b7c3f812c2443037199d53b3ff10e9403fde68578737b5711ce8d", + "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/exact-reuse-values-dryrun-result.json": "sha256:0fa4cf5f7dce1cb7ef738b7ed16c7af8530197a36e830c741bfaeb8ea4460c81", + "docs/changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/exact-reuse-values-dryrun-result-2.json": "sha256:b2e97bd92ec10ac0b6bb6c00a50643665ecd7d960125cdfb497f4ffcfdc1e78c", + "docs/changes/netkingdom-target-2026-10-17/custodian-scanner-refusal.json": "sha256:ecf15f68c91ebaf6c68e7d1266132b0282cb989d28c92007cda7c65e7b4db838", + "docs/changes/netkingdom-target-2026-10-17/custodian-scanner-redacted-finding.json": "sha256:4ea90a9b4d8ef6a01906ef9f883ef11a02a3b82574daf022b1c17db6ba9ec145" + }, + "scope": "reviewed implementation/evidence/pending proposal only", + "preexisting_staged_brief_and_unrelated_work_excluded": true, + "publication_refinement": "Normal scanner blocked one concatenated public workplan/commit field; explicit repo/workplan/source_commit fields preserve exact public IDs and revision bytes. Initial EOF blank line corrected." +} diff --git a/docs/changes/netkingdom-target-2026-10-17/custodian-scanner-redacted-finding.json b/docs/changes/netkingdom-target-2026-10-17/custodian-scanner-redacted-finding.json new file mode 100644 index 00000000..2e05163d --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/custodian-scanner-redacted-finding.json @@ -0,0 +1,13 @@ +{ + "exit_code": 1, + "findings": [ + { + "RuleID": "generic-api-key", + "Description": "Detected a Generic API Key, potentially exposing access to various services and sensitive operations.", + "StartLine": 37, + "EndLine": 37, + "File": "docs/changes/netkingdom-target-2026-10-17/verified-results.json" + } + ], + "redacted": true +} diff --git a/docs/changes/netkingdom-target-2026-10-17/custodian-scanner-refusal.json b/docs/changes/netkingdom-target-2026-10-17/custodian-scanner-refusal.json new file mode 100644 index 00000000..37514512 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/custodian-scanner-refusal.json @@ -0,0 +1,9 @@ +{ + "status": "normal_commit_refused", + "blocked_blob_id": "d95cd53a92aeb55dc8bbeb9858f5aac320746011", + "paths": [ + "docs/changes/netkingdom-target-2026-10-17/verified-results.json" + ], + "scanner_version": "8.30.1", + "bypass": false +} diff --git a/docs/changes/netkingdom-target-2026-10-17/migration-compat-r1-cleanup.json b/docs/changes/netkingdom-target-2026-10-17/migration-compat-r1-cleanup.json new file mode 100644 index 00000000..ec952989 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/migration-compat-r1-cleanup.json @@ -0,0 +1,17 @@ +{ + "schema": "custodian.fixture-independent-cleanup.v1", + "manifest_sha256": "f4ee1144010f2a2207785bc20638bab2e21eeed40edf563d39bb6198257a97ff", + "engine_id": "74f93783-6cef-43a8-a3c4-f62586cd3bc1", + "session": { + "run_id": "e0e48d1986a949a585be1fe5705b1a7e", + "containers": [ + "nk49-kc-e0e48d1986a949a585be1fe5705b1a7e-journal-postgres", + "nk49-kc-e0e48d1986a949a585be1fe5705b1a7e-journal-probe" + ], + "label": "net-kingdom.recovery-run=e0e48d1986a949a585be1fe5705b1a7e" + }, + "result_sha256": "sha256:c290afa92777c4635a5ee06c1bf6c3f28b1a265b6bff6a91f5aee45f799c2923", + "label_resources_absent": true, + "exact_names_absent": true, + "production_contacted": false +} diff --git a/docs/changes/netkingdom-target-2026-10-17/migration-compat-r1-result.json b/docs/changes/netkingdom-target-2026-10-17/migration-compat-r1-result.json new file mode 100644 index 00000000..3f0279e3 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/migration-compat-r1-result.json @@ -0,0 +1,42 @@ +{ + "schema": "statehub.synthetic-migration-compat.v1", + "status": "synthetic_migration_old_write_shapes_passed", + "production_contacted": false, + "actual_credentials_used": false, + "native_acceptance_claimed": false, + "manifest_sha256": "f4ee1144010f2a2207785bc20638bab2e21eeed40edf563d39bb6198257a97ff", + "session": { + "run_id": "e0e48d1986a949a585be1fe5705b1a7e", + "containers": [ + "nk49-kc-e0e48d1986a949a585be1fe5705b1a7e-journal-postgres", + "nk49-kc-e0e48d1986a949a585be1fe5705b1a7e-journal-probe" + ], + "label": "net-kingdom.recovery-run=e0e48d1986a949a585be1fe5705b1a7e" + }, + "stage": "cleanup", + "containment_verified_before_private_import": true, + "checks": { + "only_loopback_no_external_routes": true, + "actual_old_model_schema_created": true, + "actual_new_migration_sql_applied": true, + "legacy_rows_backfilled_one_revision": true, + "old_compiled_insert_accepted_on_new_schema": true, + "old_compiled_receipt_same_transaction_revision": true, + "old_compiled_update_stamped_revision": true, + "old_noop_update_revision_unchanged": true, + "old_compiled_delete_writes_tombstone": true, + "no_application_schema_downgrade": true + }, + "migration_seconds_synthetic_only": 0.0055, + "container_cleanup_obligations": [ + { + "container": "nk49-kc-e0e48d1986a949a585be1fe5705b1a7e-journal-probe", + "status": "absence_verified" + }, + { + "container": "nk49-kc-e0e48d1986a949a585be1fe5705b1a7e-journal-postgres", + "status": "absence_verified" + } + ], + "container_cleanup_verified": true +} diff --git a/docs/changes/netkingdom-target-2026-10-17/netkingdom-consistency.json b/docs/changes/netkingdom-target-2026-10-17/netkingdom-consistency.json new file mode 100644 index 00000000..c67b0c89 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/netkingdom-consistency.json @@ -0,0 +1,398 @@ +{ + "repo_slug": "net-kingdom", + "repo_path": "/home/worsch/net-kingdom", + "source_revision": "70f408ca2389bf3722a91a03832fc6e8587355e5", + "source_revision_reason": null, + "issues": [ + { + "severity": "WARN", + "check_id": "C-24", + "message": "Repo classification advisory: capability_tag 'security' is not a recommended family tag (allowed, check for synonym)", + "file_path": "", + "db_id": "", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-35", + "message": "Repo Manager warning: workplans/: repository uses more than one workplan prefix: ['NET-WP', 'NK-WP']", + "file_path": "workplans/", + "db_id": "", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-33", + "message": "WORK-RECORDS.md is missing or stale \u2014 regenerate via fix-consistency (CUST-WP-0061-T04 generated work-record index)", + "file_path": "WORK-RECORDS.md", + "db_id": "", + "file_value": "", + "db_value": "", + "fixable": true + }, + { + "severity": "WARN", + "check_id": "C-37", + "message": "Residual workplan 'nk-wp-0011' has no origin/origin_ref provenance (not invented)", + "file_path": "workplans/NK-WP-0011-enterprise-federation-saml.md", + "db_id": "1075448f-d533-5f9e-94b7-c3adfe151a07", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-20", + "message": "Workplan dependency target 'USER-WP-0020' is not linked to State Hub", + "file_path": "workplans/NK-WP-0022-railiance01-identity-cutover-and-coulombcore-retirement.md", + "db_id": "", + "file_value": "USER-WP-0020", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-20", + "message": "Workplan dependency target 'KEY-WP-0004' is not linked to State Hub", + "file_path": "workplans/NK-WP-0022-railiance01-identity-cutover-and-coulombcore-retirement.md", + "db_id": "", + "file_value": "KEY-WP-0004", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-20", + "message": "Workplan dependency target 'USER-WP-0020' is not linked to State Hub", + "file_path": "workplans/NK-WP-0023-user-engine-portal-platform-integration.md", + "db_id": "", + "file_value": "USER-WP-0020", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-20", + "message": "Workplan dependency target 'KEY-WP-0004' is not linked to State Hub", + "file_path": "workplans/NK-WP-0023-user-engine-portal-platform-integration.md", + "db_id": "", + "file_value": "KEY-WP-0004", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-20", + "message": "Workplan dependency target 'USER-WP-0021' is not linked to State Hub", + "file_path": "workplans/NK-WP-0024-user-engine-portal-integration-expansion.md", + "db_id": "", + "file_value": "USER-WP-0021", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-20", + "message": "Workplan dependency target 'FLEX-WP-0009' is not linked to State Hub", + "file_path": "workplans/NK-WP-0024-user-engine-portal-integration-expansion.md", + "db_id": "", + "file_value": "FLEX-WP-0009", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-20", + "message": "Workplan dependency target 'AUDIT-WP-0003' is not linked to State Hub", + "file_path": "workplans/NK-WP-0024-user-engine-portal-integration-expansion.md", + "db_id": "", + "file_value": "AUDIT-WP-0003", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-20", + "message": "Workplan dependency target 'EMAIL-WP-0004' is not linked to State Hub", + "file_path": "workplans/NK-WP-0024-user-engine-portal-integration-expansion.md", + "db_id": "", + "file_value": "EMAIL-WP-0004", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-20", + "message": "Workplan dependency target 'USER-WP-0022' is not linked to State Hub", + "file_path": "workplans/NK-WP-0025-public-self-registration-and-application-jit.md", + "db_id": "", + "file_value": "USER-WP-0022", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-20", + "message": "Workplan dependency target 'KEY-WP-0008' is not linked to State Hub", + "file_path": "workplans/NK-WP-0025-public-self-registration-and-application-jit.md", + "db_id": "", + "file_value": "KEY-WP-0008", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-20", + "message": "Workplan dependency target 'CSOC-WP-0003' is not linked to State Hub", + "file_path": "workplans/NK-WP-0025-public-self-registration-and-application-jit.md", + "db_id": "", + "file_value": "CSOC-WP-0003", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-37", + "message": "Residual workplan 'nk-wp-0027' has no origin/origin_ref provenance (not invented)", + "file_path": "workplans/NK-WP-0027-reef-placement-reconciliation.md", + "db_id": "965ad365-6b81-50a1-a2a3-2d0c1fcce0b4", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-37", + "message": "Residual workplan 'nk-wp-0031' has no origin/origin_ref provenance (not invented)", + "file_path": "workplans/NK-WP-0031-deterministic-posture-feedback.md", + "db_id": "9d7b04f9-3803-5613-b7a5-8bd606c77f5a", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-37", + "message": "Residual workplan 'nk-wp-0040' has no origin/origin_ref provenance (not invented)", + "file_path": "workplans/NK-WP-0040-execution-attribution-receipt.md", + "db_id": "e2533f3a-aa43-59b3-bff3-8e64b6149487", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-20", + "message": "Task dependency target 'NK-WP-0048-T21' of task 'NK-WP-0048-T14' is not linked to State Hub", + "file_path": "workplans/NK-WP-0048-security-case-types.md#NK-WP-0048-T14", + "db_id": "", + "file_value": "NK-WP-0048-T21", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-22", + "message": "Task description drift 'NK-WP-0048-T14': file content differs from DB (file wins)", + "file_path": "workplans/NK-WP-0048-security-case-types.md#NK-WP-0048-T14", + "db_id": "fce95440-a25b-5f27-8ef3-a3d182099113", + "file_value": "Owner: NetKingdom. Next action: bind the completed T21 PostgreSQL journal to\nan admitted dedicated CNPG consumer through", + "db_value": "Owner: NetKingdom. Next action: specify a CNPG-backed journal through the\nexisting `rapp-postgres` database-per-consumer", + "fixable": true + }, + { + "severity": "WARN", + "check_id": "C-11", + "message": "Derived task 'NK-WP-0048-T21' is absent from this projection", + "file_path": "workplans/NK-WP-0048-security-case-types.md#NK-WP-0048-T21", + "db_id": "afe78e4d-408a-516a-ab92-e212e8a2d11d", + "file_value": "", + "db_value": "", + "fixable": true + }, + { + "severity": "WARN", + "check_id": "C-22", + "message": "Task description drift 'NK-WP-0049-T35': file content differs from DB (file wins)", + "file_path": "workplans/NK-WP-0049-bootstrap-secret-free-recovery-handoff.md#NK-WP-0049-T35", + "db_id": "1bfd1703-589f-5511-bad5-812d860e4a71", + "file_value": "**Accountable worker:** NetKingdom codex, coordinating with the source owner of\nIngress/cert-manager/Traefik and the ori", + "db_value": "**Accountable worker:** NetKingdom codex, coordinating with the source owner of\nIngress/cert-manager/Traefik and the ori", + "fixable": true + }, + { + "severity": "WARN", + "check_id": "C-22", + "message": "Task description drift 'NK-WP-0049-T36': file content differs from DB (file wins)", + "file_path": "workplans/NK-WP-0049-bootstrap-secret-free-recovery-handoff.md#NK-WP-0049-T36", + "db_id": "8b72334b-fc27-5707-a189-bad345eaf3bc", + "file_value": "**Accountable worker:** NetKingdom codex with KeyCape and the selected existing\nservice consumer's owner. **Next action:", + "db_value": "**Accountable worker:** NetKingdom codex with KeyCape and the selected existing\nservice consumer's owner. **Next action:", + "fixable": true + }, + { + "severity": "WARN", + "check_id": "C-11", + "message": "Derived task 'NK-WP-0049-T37' is absent from this projection", + "file_path": "workplans/NK-WP-0049-bootstrap-secret-free-recovery-handoff.md#NK-WP-0049-T37", + "db_id": "3403e266-d63b-5ce1-b891-3bfeac93d28c", + "file_value": "", + "db_value": "", + "fixable": true + }, + { + "severity": "WARN", + "check_id": "C-22", + "message": "Task description drift 'NK-WP-0049-T03': file content differs from DB (file wins)", + "file_path": "workplans/NK-WP-0049-bootstrap-secret-free-recovery-handoff.md#NK-WP-0049-T03", + "db_id": "d68cd4d3-1ba3-530e-88f9-26ebb8dd6eac", + "file_value": "**Accountable worker:** codex. Service/credential-owner acceptance remains with\nthe named owner boundary.\n\nOwner boundar", + "db_value": "**Accountable worker:** codex. Service/credential-owner acceptance remains with\nthe named owner boundary.\n\nOwner boundar", + "fixable": true + }, + { + "severity": "WARN", + "check_id": "C-20", + "message": "Workplan dependency target 'RAIL-PL-WP-0002' is not linked to State Hub", + "file_path": "workplans/archived/260702-NET-WP-0017-it-security-readiness-for-user-onboarding.md", + "db_id": "", + "file_value": "RAIL-PL-WP-0002", + "db_value": "", + "fixable": false + }, + { + "severity": "INFO", + "check_id": "C-08", + "message": "Retired DB workstream 'nk-wp-0035@retired-20260908' (id=064c5e8b\u2026, status=archived) has no backing workplan file \u2014 projection tombstone, not live work", + "file_path": "", + "db_id": "064c5e8b-7852-4d7f-a5fa-e26e406ab8e0", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "INFO", + "check_id": "C-08", + "message": "Retired DB workstream 'adhoc-2026-08-14@retired-20260827' (id=a5097121\u2026, status=finished) has no backing workplan file \u2014 projection tombstone, not live work", + "file_path": "", + "db_id": "a5097121-1461-59f8-81fa-e6ecef527337", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "INFO", + "check_id": "C-08", + "message": "Retired DB workstream 'adhoc-2026-08-23@retired-20260827' (id=e25ba5fa\u2026, status=finished) has no backing workplan file \u2014 projection tombstone, not live work", + "file_path": "", + "db_id": "e25ba5fa-eaae-5039-8d93-a69c6d837fc4", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "INFO", + "check_id": "C-08", + "message": "Retired DB workstream 'net-kingdom-adhoc-2026-06-14@retired-20260827' (id=c6f3d6bf\u2026, status=finished) has no backing workplan file \u2014 projection tombstone, not live work", + "file_path": "", + "db_id": "c6f3d6bf-4916-490d-96ce-092d2776d7e7", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "INFO", + "check_id": "C-08", + "message": "Retired DB workstream 'net-kingdom-adhoc-2026-07-02@retired-20260827' (id=67c1c7ac\u2026, status=finished) has no backing workplan file \u2014 projection tombstone, not live work", + "file_path": "", + "db_id": "67c1c7ac-d8b1-41dc-a81a-4e43f1afd068", + "file_value": "", + "db_value": "", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-26", + "message": "Workplan id 'NET-WP-0020' uses prefix 'NET-WP' but repo canonical prefix is 'NK-WP' \u2014 new plans must conform", + "file_path": "workplans/NET-WP-0020-openbao-unseal-custody-and-ssh-automation.md", + "db_id": "", + "file_value": "NET-WP-0020", + "db_value": "NK-WP", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-26", + "message": "Workplan id 'NET-WP-0015' uses prefix 'NET-WP' but repo canonical prefix is 'NK-WP' \u2014 new plans must conform", + "file_path": "workplans/archived/260603-NET-WP-0015-platform-root-custody-and-openbao-identity-bootstrap.md", + "db_id": "", + "file_value": "NET-WP-0015", + "db_value": "NK-WP", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-26", + "message": "Workplan id 'NET-WP-0016' uses prefix 'NET-WP' but repo canonical prefix is 'NK-WP' \u2014 new plans must conform", + "file_path": "workplans/archived/260603-NET-WP-0016-guided-security-bootstrap-experience.md", + "db_id": "", + "file_value": "NET-WP-0016", + "db_value": "NK-WP", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-26", + "message": "Workplan id 'NET-WP-0018' uses prefix 'NET-WP' but repo canonical prefix is 'NK-WP' \u2014 new plans must conform", + "file_path": "workplans/archived/260604-NET-WP-0018-bootstrap-automation-and-rebuild-readiness.md", + "db_id": "", + "file_value": "NET-WP-0018", + "db_value": "NK-WP", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-26", + "message": "Workplan id 'NET-WP-0017' uses prefix 'NET-WP' but repo canonical prefix is 'NK-WP' \u2014 new plans must conform", + "file_path": "workplans/archived/260702-NET-WP-0017-it-security-readiness-for-user-onboarding.md", + "db_id": "", + "file_value": "NET-WP-0017", + "db_value": "NK-WP", + "fixable": false + }, + { + "severity": "WARN", + "check_id": "C-26", + "message": "Workplan id 'NET-WP-0019' uses prefix 'NET-WP' but repo canonical prefix is 'NK-WP' \u2014 new plans must conform", + "file_path": "workplans/archived/260702-NET-WP-0019-t06-adjacent-user-lifecycle-dry-run-polish.md", + "db_id": "", + "file_value": "NET-WP-0019", + "db_value": "NK-WP", + "fixable": false + } + ], + "fixes_applied": [ + "bindings: synced 64/64", + "C-17 cleared: pushed 1 backlogged commit(s)", + "C-33 fixed: regenerated WORK-RECORDS.md", + "C-22 fixed: task fce95440\u2026 description updated", + "C-11 fixed: task 'NK-WP-0048-T21' \u2192 afe78e4d\u2026", + "C-22 fixed: task 1bfd1703\u2026 description updated", + "C-22 fixed: task 8b72334b\u2026 description updated", + "C-11 fixed: task 'NK-WP-0049-T37' \u2192 3403e266\u2026", + "C-22 fixed: task d68cd4d3\u2026 description updated", + "brief: .custodian-brief.md updated", + "push: pushed" + ], + "summary": { + "fail": 0, + "automation_error": 0, + "warn": 32, + "info": 5 + }, + "result": "warn" +} diff --git a/docs/changes/netkingdom-target-2026-10-17/netkingdom-projection.json b/docs/changes/netkingdom-target-2026-10-17/netkingdom-projection.json new file mode 100644 index 00000000..de39dc15 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/netkingdom-projection.json @@ -0,0 +1,920 @@ +{ + "ok": true, + "status": "applied", + "repo_slug": "net-kingdom", + "commit": "70f408ca2389bf3722a91a03832fc6e8587355e5", + "requests": 2, + "elapsed_ms": 7516.8, + "git": { + "upstream": "origin/main", + "behind": 0, + "ahead": 0 + }, + "identifiers": { + "schema": "repo-manager.identifier-assignment.v1", + "ok": true, + "executed": true, + "repo": "net-kingdom", + "namespace": "helixforge", + "assignments": [], + "historical_invalid_identifiers": [], + "files_changed": [] + }, + "receipt": { + "schema": "state-hub.repository-projection-reconcile.v1", + "instance_role": "primary", + "instance_label": "railiance01", + "expected_commit": "70f408ca2389bf3722a91a03832fc6e8587355e5", + "derived_commit": "70f408ca2389bf3722a91a03832fc6e8587355e5", + "outcome": { + "schema": "state-hub.projection-reset.v1", + "repo_slug": "net-kingdom", + "commit": "70f408ca2389bf3722a91a03832fc6e8587355e5", + "status": "applied", + "counts": { + "created": 0, + "updated": 64, + "retired": 0, + "refused": 0, + "released": 0, + "created_tasks": 0, + "updated_tasks": 2, + "cancelled_tasks": 0, + "created_edges": 1, + "removed_edges": 0, + "unresolved_edges": 1, + "external_edges": 77 + }, + "created": [], + "updated": [ + "NET-WP-0015", + "NET-WP-0016", + "NET-WP-0017", + "NET-WP-0018", + "NET-WP-0019", + "NET-WP-0020", + "NK-WP-0001", + "NK-WP-0002", + "NK-WP-0003", + "NK-WP-0004", + "NK-WP-0005", + "NK-WP-0006", + "NK-WP-0007", + "NK-WP-0008", + "NK-WP-0009", + "NK-WP-0010", + "NK-WP-0011", + "NK-WP-0012", + "NK-WP-0013", + "NK-WP-0014", + "NK-WP-0015", + "NK-WP-0016", + "NK-WP-0017", + "NK-WP-0018", + "NK-WP-0019", + "NK-WP-0021", + "NK-WP-0022", + "NK-WP-0023", + "NK-WP-0024", + "NK-WP-0025", + "NK-WP-0026", + "NK-WP-0027", + "NK-WP-0028", + "NK-WP-0029", + "NK-WP-0030", + "NK-WP-0031", + "NK-WP-0032", + "NK-WP-0033", + "NK-WP-0034", + "NK-WP-0035", + "NK-WP-0036", + "NK-WP-0037", + "NK-WP-0038", + "NK-WP-0039", + "NK-WP-0040", + "NK-WP-0041", + "NK-WP-0042", + "NK-WP-0043", + "NK-WP-0044", + "NK-WP-0045", + "NK-WP-0046", + "NK-WP-0047", + "NK-WP-0048", + "NK-WP-0049", + "NK-WP-0050", + "NK-WP-0051", + "NK-WP-ADHOC-2026-06-14", + "NK-WP-ADHOC-2026-07-02", + "NK-WP-ADHOC-2026-08-14", + "NK-WP-ADHOC-2026-08-23", + "NK-WP-ADHOC-2026-10-03", + "NK-WP-ADHOC-2026-10-10", + "NK-WP-ADHOC-2026-10-11", + "NK-WP-ADHOC-2026-10-16" + ], + "retired": [], + "released": [], + "created_tasks": [], + "updated_tasks": [ + "NK-WP-0048-T21", + "NK-WP-0049-T37" + ], + "cancelled_tasks": [], + "created_edges": [ + { + "workplan": "NK-WP-0048", + "from": "NK-WP-0048-T14", + "target": "NK-WP-0048-T21", + "relationship_type": "starts_after", + "from_workplan_id": "e31f3f9d-0748-5137-b0a3-7b3ca46a66eb", + "from_task_id": "fce95440-a25b-5f27-8ef3-a3d182099113", + "to_workplan_id": null, + "to_task_id": "afe78e4d-408a-516a-ab92-e212e8a2d11d" + } + ], + "removed_edges": [], + "unresolved_edges": [ + { + "workplan": "NK-WP-0006", + "from": "NK-WP-0006", + "target": "NK-WP-0001", + "reason": "missing" + } + ], + "external_edges": [ + { + "workplan": "NK-WP-0008", + "from": "NK-WP-0008", + "target": "NK-WP-0006", + "relationship_type": "blocks", + "from_workplan_id": "053c6d96-9396-40c9-a2e5-c36531e7810d", + "from_task_id": null, + "to_workplan_id": "2eb8a5e0-4e33-4ed3-8996-a2eec3aad862", + "to_task_id": null + }, + { + "workplan": "NK-WP-0050", + "from": "NK-WP-0050-T03", + "target": "RPF-WP-0056-T03", + "relationship_type": "starts_after", + "from_workplan_id": "06ba98d5-609e-5aaa-9bf7-4c4f4460e377", + "from_task_id": "5a3aaf57-de5c-5a03-bc99-9bcf2fc5d95e", + "to_workplan_id": null, + "to_task_id": "a82762eb-bb6d-5600-89ca-a81ada2eba9f" + }, + { + "workplan": "NK-WP-0050", + "from": "NK-WP-0050-T03", + "target": "NK-WP-0050-T02", + "relationship_type": "starts_after", + "from_workplan_id": "06ba98d5-609e-5aaa-9bf7-4c4f4460e377", + "from_task_id": "5a3aaf57-de5c-5a03-bc99-9bcf2fc5d95e", + "to_workplan_id": null, + "to_task_id": "a9dadd07-f136-5dc7-9229-7a9dbb941f0d" + }, + { + "workplan": "NK-WP-0050", + "from": "NK-WP-0050-T02", + "target": "NK-WP-0050-T01", + "relationship_type": "starts_after", + "from_workplan_id": "06ba98d5-609e-5aaa-9bf7-4c4f4460e377", + "from_task_id": "a9dadd07-f136-5dc7-9229-7a9dbb941f0d", + "to_workplan_id": null, + "to_task_id": "64893d94-9717-5812-b8e3-7cabe095fcdc" + }, + { + "workplan": "NK-WP-0017", + "from": "NK-WP-0017", + "target": "NK-WP-0015", + "relationship_type": "blocks", + "from_workplan_id": "08398d26-cadf-44bc-97ee-67da790040e6", + "from_task_id": null, + "to_workplan_id": "343e035d-41e1-4fc4-b209-6872e4a5fdc8", + "to_task_id": null + }, + { + "workplan": "NK-WP-0011", + "from": "NK-WP-0011", + "target": "NK-WP-0006", + "relationship_type": "blocks", + "from_workplan_id": "1075448f-d533-5f9e-94b7-c3adfe151a07", + "from_task_id": null, + "to_workplan_id": "2eb8a5e0-4e33-4ed3-8996-a2eec3aad862", + "to_task_id": null + }, + { + "workplan": "NK-WP-0011", + "from": "NK-WP-0011", + "target": "NK-WP-0004", + "relationship_type": "blocks", + "from_workplan_id": "1075448f-d533-5f9e-94b7-c3adfe151a07", + "from_task_id": null, + "to_workplan_id": "d9cf7c4b-886b-4cd1-ad7b-99c4e1929c9e", + "to_task_id": null + }, + { + "workplan": "NK-WP-0011", + "from": "NK-WP-0011", + "target": "NK-WP-0003", + "relationship_type": "blocks", + "from_workplan_id": "1075448f-d533-5f9e-94b7-c3adfe151a07", + "from_task_id": null, + "to_workplan_id": "f24cefd4-a09b-4fa1-9b25-94bf783b425e", + "to_task_id": null + }, + { + "workplan": "NK-WP-0011", + "from": "NK-WP-0011-T03", + "target": "NK-WP-0011-T02", + "relationship_type": "starts_after", + "from_workplan_id": "1075448f-d533-5f9e-94b7-c3adfe151a07", + "from_task_id": "32d1411b-10a4-5a8b-8f43-99ac46d83908", + "to_workplan_id": null, + "to_task_id": "2fe6f100-3a5d-563e-b033-7d7b846ae487" + }, + { + "workplan": "NK-WP-0011", + "from": "NK-WP-0011-T07", + "target": "NK-WP-0011-T03", + "relationship_type": "starts_after", + "from_workplan_id": "1075448f-d533-5f9e-94b7-c3adfe151a07", + "from_task_id": "38998c68-29bf-50d2-8c8d-0c75184d5833", + "to_workplan_id": null, + "to_task_id": "32d1411b-10a4-5a8b-8f43-99ac46d83908" + }, + { + "workplan": "NK-WP-0011", + "from": "NK-WP-0011-T07", + "target": "NK-WP-0011-T04", + "relationship_type": "starts_after", + "from_workplan_id": "1075448f-d533-5f9e-94b7-c3adfe151a07", + "from_task_id": "38998c68-29bf-50d2-8c8d-0c75184d5833", + "to_workplan_id": null, + "to_task_id": "6697a994-7343-5ea8-8b37-bc3b921e5a9b" + }, + { + "workplan": "NK-WP-0011", + "from": "NK-WP-0011-T07", + "target": "NK-WP-0011-T05", + "relationship_type": "starts_after", + "from_workplan_id": "1075448f-d533-5f9e-94b7-c3adfe151a07", + "from_task_id": "38998c68-29bf-50d2-8c8d-0c75184d5833", + "to_workplan_id": null, + "to_task_id": "d845380d-3dbc-5e59-8f2b-5a4d1b32d89d" + }, + { + "workplan": "NK-WP-0011", + "from": "NK-WP-0011-T04", + "target": "NK-WP-0011-T03", + "relationship_type": "starts_after", + "from_workplan_id": "1075448f-d533-5f9e-94b7-c3adfe151a07", + "from_task_id": "6697a994-7343-5ea8-8b37-bc3b921e5a9b", + "to_workplan_id": null, + "to_task_id": "32d1411b-10a4-5a8b-8f43-99ac46d83908" + }, + { + "workplan": "NK-WP-0011", + "from": "NK-WP-0011-T06", + "target": "NK-WP-0011-T03", + "relationship_type": "starts_after", + "from_workplan_id": "1075448f-d533-5f9e-94b7-c3adfe151a07", + "from_task_id": "9cb7fd93-c16e-5102-83ce-195b3aa87446", + "to_workplan_id": null, + "to_task_id": "32d1411b-10a4-5a8b-8f43-99ac46d83908" + }, + { + "workplan": "NK-WP-0011", + "from": "NK-WP-0011-T06", + "target": "NK-WP-0011-T04", + "relationship_type": "starts_after", + "from_workplan_id": "1075448f-d533-5f9e-94b7-c3adfe151a07", + "from_task_id": "9cb7fd93-c16e-5102-83ce-195b3aa87446", + "to_workplan_id": null, + "to_task_id": "6697a994-7343-5ea8-8b37-bc3b921e5a9b" + }, + { + "workplan": "NK-WP-0011", + "from": "NK-WP-0011-T06", + "target": "NK-WP-0011-T05", + "relationship_type": "starts_after", + "from_workplan_id": "1075448f-d533-5f9e-94b7-c3adfe151a07", + "from_task_id": "9cb7fd93-c16e-5102-83ce-195b3aa87446", + "to_workplan_id": null, + "to_task_id": "d845380d-3dbc-5e59-8f2b-5a4d1b32d89d" + }, + { + "workplan": "NK-WP-0011", + "from": "NK-WP-0011-T05", + "target": "NK-WP-0011-T04", + "relationship_type": "starts_after", + "from_workplan_id": "1075448f-d533-5f9e-94b7-c3adfe151a07", + "from_task_id": "d845380d-3dbc-5e59-8f2b-5a4d1b32d89d", + "to_workplan_id": null, + "to_task_id": "6697a994-7343-5ea8-8b37-bc3b921e5a9b" + }, + { + "workplan": "NK-WP-0011", + "from": "NK-WP-0011-T09", + "target": "NK-WP-0011-T03", + "relationship_type": "starts_after", + "from_workplan_id": "1075448f-d533-5f9e-94b7-c3adfe151a07", + "from_task_id": "d9dc4292-6b66-5797-9ff9-a1a4a556278e", + "to_workplan_id": null, + "to_task_id": "32d1411b-10a4-5a8b-8f43-99ac46d83908" + }, + { + "workplan": "NK-WP-0011", + "from": "NK-WP-0011-T09", + "target": "NK-WP-0011-T07", + "relationship_type": "starts_after", + "from_workplan_id": "1075448f-d533-5f9e-94b7-c3adfe151a07", + "from_task_id": "d9dc4292-6b66-5797-9ff9-a1a4a556278e", + "to_workplan_id": null, + "to_task_id": "38998c68-29bf-50d2-8c8d-0c75184d5833" + }, + { + "workplan": "NK-WP-0011", + "from": "NK-WP-0011-T09", + "target": "NK-WP-0011-T08", + "relationship_type": "starts_after", + "from_workplan_id": "1075448f-d533-5f9e-94b7-c3adfe151a07", + "from_task_id": "d9dc4292-6b66-5797-9ff9-a1a4a556278e", + "to_workplan_id": null, + "to_task_id": "e5f44ddc-9645-5f61-b84c-da5ab9cccb6d" + }, + { + "workplan": "NK-WP-0011", + "from": "NK-WP-0011-T08", + "target": "NK-WP-0011-T02", + "relationship_type": "starts_after", + "from_workplan_id": "1075448f-d533-5f9e-94b7-c3adfe151a07", + "from_task_id": "e5f44ddc-9645-5f61-b84c-da5ab9cccb6d", + "to_workplan_id": null, + "to_task_id": "2fe6f100-3a5d-563e-b033-7d7b846ae487" + }, + { + "workplan": "NK-WP-0011", + "from": "NK-WP-0011-T08", + "target": "NK-WP-0011-T03", + "relationship_type": "starts_after", + "from_workplan_id": "1075448f-d533-5f9e-94b7-c3adfe151a07", + "from_task_id": "e5f44ddc-9645-5f61-b84c-da5ab9cccb6d", + "to_workplan_id": null, + "to_task_id": "32d1411b-10a4-5a8b-8f43-99ac46d83908" + }, + { + "workplan": "NET-WP-0016", + "from": "NET-WP-0016", + "target": "NET-WP-0015", + "relationship_type": "blocks", + "from_workplan_id": "16069174-6698-4855-ad9e-5092c8571f38", + "from_task_id": null, + "to_workplan_id": "6b9c25e4-1008-429a-8de6-54361872c0dd", + "to_task_id": null + }, + { + "workplan": "NET-WP-0016", + "from": "NET-WP-0016", + "target": "NK-WP-0012", + "relationship_type": "blocks", + "from_workplan_id": "16069174-6698-4855-ad9e-5092c8571f38", + "from_task_id": null, + "to_workplan_id": "9b8e4afc-eb71-47d9-8750-799a082b320a", + "to_task_id": null + }, + { + "workplan": "NK-WP-0049", + "from": "NK-WP-0049-T18", + "target": "NK-WP-0049-T33", + "relationship_type": "starts_after", + "from_workplan_id": "17d315f0-829e-57c7-85cc-3a7914152804", + "from_task_id": "141dd773-c1fa-56c1-a852-bbe2372e5125", + "to_workplan_id": null, + "to_task_id": "56c8d469-7a10-5d50-a30e-95cbf3cd4756" + }, + { + "workplan": "NK-WP-0049", + "from": "NK-WP-0049-T18", + "target": "NK-WP-0049-T32", + "relationship_type": "starts_after", + "from_workplan_id": "17d315f0-829e-57c7-85cc-3a7914152804", + "from_task_id": "141dd773-c1fa-56c1-a852-bbe2372e5125", + "to_workplan_id": null, + "to_task_id": "cd78dbb7-a8f2-5754-8788-6eb1b7d97741" + }, + { + "workplan": "NK-WP-0049", + "from": "NK-WP-0049-T35", + "target": "NK-WP-0049-T34", + "relationship_type": "starts_after", + "from_workplan_id": "17d315f0-829e-57c7-85cc-3a7914152804", + "from_task_id": "1bfd1703-589f-5511-bad5-812d860e4a71", + "to_workplan_id": null, + "to_task_id": "821b3a56-6f36-5812-abc9-5a00e37cb2e7" + }, + { + "workplan": "NK-WP-0049", + "from": "NK-WP-0049-T33", + "target": "NK-WP-0049-T35", + "relationship_type": "starts_after", + "from_workplan_id": "17d315f0-829e-57c7-85cc-3a7914152804", + "from_task_id": "56c8d469-7a10-5d50-a30e-95cbf3cd4756", + "to_workplan_id": null, + "to_task_id": "1bfd1703-589f-5511-bad5-812d860e4a71" + }, + { + "workplan": "NK-WP-0049", + "from": "NK-WP-0049-T33", + "target": "NK-WP-0049-T34", + "relationship_type": "starts_after", + "from_workplan_id": "17d315f0-829e-57c7-85cc-3a7914152804", + "from_task_id": "56c8d469-7a10-5d50-a30e-95cbf3cd4756", + "to_workplan_id": null, + "to_task_id": "821b3a56-6f36-5812-abc9-5a00e37cb2e7" + }, + { + "workplan": "NK-WP-0049", + "from": "NK-WP-0049-T33", + "target": "NK-WP-0049-T36", + "relationship_type": "starts_after", + "from_workplan_id": "17d315f0-829e-57c7-85cc-3a7914152804", + "from_task_id": "56c8d469-7a10-5d50-a30e-95cbf3cd4756", + "to_workplan_id": null, + "to_task_id": "8b72334b-fc27-5707-a189-bad345eaf3bc" + }, + { + "workplan": "NK-WP-0049", + "from": "NK-WP-0049-T33", + "target": "NK-WP-0049-T32", + "relationship_type": "starts_after", + "from_workplan_id": "17d315f0-829e-57c7-85cc-3a7914152804", + "from_task_id": "56c8d469-7a10-5d50-a30e-95cbf3cd4756", + "to_workplan_id": null, + "to_task_id": "cd78dbb7-a8f2-5754-8788-6eb1b7d97741" + }, + { + "workplan": "NK-WP-0049", + "from": "NK-WP-0049-T36", + "target": "NK-WP-0049-T34", + "relationship_type": "starts_after", + "from_workplan_id": "17d315f0-829e-57c7-85cc-3a7914152804", + "from_task_id": "8b72334b-fc27-5707-a189-bad345eaf3bc", + "to_workplan_id": null, + "to_task_id": "821b3a56-6f36-5812-abc9-5a00e37cb2e7" + }, + { + "workplan": "NK-WP-0049", + "from": "NK-WP-0049-T03", + "target": "NK-WP-0049-T02", + "relationship_type": "starts_after", + "from_workplan_id": "17d315f0-829e-57c7-85cc-3a7914152804", + "from_task_id": "d68cd4d3-1ba3-530e-88f9-26ebb8dd6eac", + "to_workplan_id": null, + "to_task_id": "479d6970-6516-50f5-9436-bb5b56d58aad" + }, + { + "workplan": "NK-WP-0025", + "from": "NK-WP-0025", + "target": "NK-WP-0024", + "relationship_type": "blocks", + "from_workplan_id": "2412a251-d6b5-5f05-8082-3eb7697c51dc", + "from_task_id": null, + "to_workplan_id": "635a73d4-b3cb-5c38-af22-56a6a66beb0e", + "to_task_id": null + }, + { + "workplan": "NK-WP-0016", + "from": "NK-WP-0016", + "target": "NK-WP-0015", + "relationship_type": "blocks", + "from_workplan_id": "2d592e18-e63d-4856-97a1-f8c3e019e150", + "from_task_id": null, + "to_workplan_id": "343e035d-41e1-4fc4-b209-6872e4a5fdc8", + "to_task_id": null + }, + { + "workplan": "NK-WP-0006", + "from": "NK-WP-0006", + "target": "NK-WP-0005", + "relationship_type": "blocks", + "from_workplan_id": "2eb8a5e0-4e33-4ed3-8996-a2eec3aad862", + "from_task_id": null, + "to_workplan_id": "75bc472b-cc0a-48f2-afb6-62b896f7cc19", + "to_task_id": null + }, + { + "workplan": "NK-WP-0006", + "from": "NK-WP-0006", + "target": "NK-WP-0004", + "relationship_type": "blocks", + "from_workplan_id": "2eb8a5e0-4e33-4ed3-8996-a2eec3aad862", + "from_task_id": null, + "to_workplan_id": "d9cf7c4b-886b-4cd1-ad7b-99c4e1929c9e", + "to_task_id": null + }, + { + "workplan": "NK-WP-0013", + "from": "NK-WP-0013", + "target": "NK-WP-0006", + "relationship_type": "blocks", + "from_workplan_id": "32a54d8e-8633-42a6-8ec1-104842c581c1", + "from_task_id": null, + "to_workplan_id": "2eb8a5e0-4e33-4ed3-8996-a2eec3aad862", + "to_task_id": null + }, + { + "workplan": "NK-WP-0015", + "from": "NK-WP-0015", + "target": "NK-WP-0014", + "relationship_type": "blocks", + "from_workplan_id": "343e035d-41e1-4fc4-b209-6872e4a5fdc8", + "from_task_id": null, + "to_workplan_id": "b9bf56bc-7ef6-43eb-badc-fa0f4896c63c", + "to_task_id": null + }, + { + "workplan": "NET-WP-0017", + "from": "NET-WP-0017", + "target": "NET-WP-0016", + "relationship_type": "blocks", + "from_workplan_id": "385de708-fd59-4bab-a4f4-28c1c476b3ea", + "from_task_id": null, + "to_workplan_id": "16069174-6698-4855-ad9e-5092c8571f38", + "to_task_id": null + }, + { + "workplan": "NET-WP-0017", + "from": "NET-WP-0017", + "target": "NET-WP-0015", + "relationship_type": "blocks", + "from_workplan_id": "385de708-fd59-4bab-a4f4-28c1c476b3ea", + "from_task_id": null, + "to_workplan_id": "6b9c25e4-1008-429a-8de6-54361872c0dd", + "to_task_id": null + }, + { + "workplan": "NK-WP-0007", + "from": "NK-WP-0007", + "target": "NK-WP-0006", + "relationship_type": "blocks", + "from_workplan_id": "3cbc81ec-7ad5-46cf-a4a0-fc5fe9873695", + "from_task_id": null, + "to_workplan_id": "2eb8a5e0-4e33-4ed3-8996-a2eec3aad862", + "to_task_id": null + }, + { + "workplan": "NK-WP-0007", + "from": "NK-WP-0007", + "target": "NK-WP-0005", + "relationship_type": "blocks", + "from_workplan_id": "3cbc81ec-7ad5-46cf-a4a0-fc5fe9873695", + "from_task_id": null, + "to_workplan_id": "75bc472b-cc0a-48f2-afb6-62b896f7cc19", + "to_task_id": null + }, + { + "workplan": "NK-WP-0007", + "from": "NK-WP-0007", + "target": "NK-WP-0004", + "relationship_type": "blocks", + "from_workplan_id": "3cbc81ec-7ad5-46cf-a4a0-fc5fe9873695", + "from_task_id": null, + "to_workplan_id": "d9cf7c4b-886b-4cd1-ad7b-99c4e1929c9e", + "to_task_id": null + }, + { + "workplan": "NK-WP-0024", + "from": "NK-WP-0024", + "target": "NK-WP-0023", + "relationship_type": "blocks", + "from_workplan_id": "635a73d4-b3cb-5c38-af22-56a6a66beb0e", + "from_task_id": null, + "to_workplan_id": "fdb3deee-06c3-5d12-91ce-9c50b2ac0618", + "to_task_id": null + }, + { + "workplan": "NET-WP-0015", + "from": "NET-WP-0015", + "target": "NK-WP-0006", + "relationship_type": "blocks", + "from_workplan_id": "6b9c25e4-1008-429a-8de6-54361872c0dd", + "from_task_id": null, + "to_workplan_id": "2eb8a5e0-4e33-4ed3-8996-a2eec3aad862", + "to_task_id": null + }, + { + "workplan": "NET-WP-0015", + "from": "NET-WP-0015", + "target": "NK-WP-0012", + "relationship_type": "blocks", + "from_workplan_id": "6b9c25e4-1008-429a-8de6-54361872c0dd", + "from_task_id": null, + "to_workplan_id": "9b8e4afc-eb71-47d9-8750-799a082b320a", + "to_task_id": null + }, + { + "workplan": "NK-WP-0018", + "from": "NK-WP-0018", + "target": "NK-WP-0017", + "relationship_type": "blocks", + "from_workplan_id": "6f75035a-e056-4eab-8fdb-00a18bacdf87", + "from_task_id": null, + "to_workplan_id": "08398d26-cadf-44bc-97ee-67da790040e6", + "to_task_id": null + }, + { + "workplan": "NK-WP-0018", + "from": "NK-WP-0018", + "target": "NK-WP-0016", + "relationship_type": "blocks", + "from_workplan_id": "6f75035a-e056-4eab-8fdb-00a18bacdf87", + "from_task_id": null, + "to_workplan_id": "2d592e18-e63d-4856-97a1-f8c3e019e150", + "to_task_id": null + }, + { + "workplan": "NK-WP-0005", + "from": "NK-WP-0005", + "target": "NK-WP-0004", + "relationship_type": "blocks", + "from_workplan_id": "75bc472b-cc0a-48f2-afb6-62b896f7cc19", + "from_task_id": null, + "to_workplan_id": "d9cf7c4b-886b-4cd1-ad7b-99c4e1929c9e", + "to_task_id": null + }, + { + "workplan": "NET-WP-0019", + "from": "NET-WP-0019", + "target": "NET-WP-0017", + "relationship_type": "blocks", + "from_workplan_id": "75d388b6-7ec1-4e1b-8c87-6ff44f953210", + "from_task_id": null, + "to_workplan_id": "385de708-fd59-4bab-a4f4-28c1c476b3ea", + "to_task_id": null + }, + { + "workplan": "NET-WP-0019", + "from": "NET-WP-0019", + "target": "NET-WP-0018", + "relationship_type": "blocks", + "from_workplan_id": "75d388b6-7ec1-4e1b-8c87-6ff44f953210", + "from_task_id": null, + "to_workplan_id": "800f9f16-bc44-4bbf-a771-58a630a3b698", + "to_task_id": null + }, + { + "workplan": "NET-WP-0018", + "from": "NET-WP-0018", + "target": "NET-WP-0017", + "relationship_type": "blocks", + "from_workplan_id": "800f9f16-bc44-4bbf-a771-58a630a3b698", + "from_task_id": null, + "to_workplan_id": "385de708-fd59-4bab-a4f4-28c1c476b3ea", + "to_task_id": null + }, + { + "workplan": "NET-WP-0018", + "from": "NET-WP-0018", + "target": "NET-WP-0015", + "relationship_type": "blocks", + "from_workplan_id": "800f9f16-bc44-4bbf-a771-58a630a3b698", + "from_task_id": null, + "to_workplan_id": "6b9c25e4-1008-429a-8de6-54361872c0dd", + "to_task_id": null + }, + { + "workplan": "NK-WP-0027", + "from": "NK-WP-0027-T03", + "target": "NK-WP-0027-T02", + "relationship_type": "starts_after", + "from_workplan_id": "965ad365-6b81-50a1-a2a3-2d0c1fcce0b4", + "from_task_id": "e3f0bb0f-0c85-5cb9-a5ab-75f668cd3447", + "to_workplan_id": null, + "to_task_id": "5b35b646-a525-55da-852a-6005613d42ea" + }, + { + "workplan": "NK-WP-0012", + "from": "NK-WP-0012", + "target": "NK-WP-0006", + "relationship_type": "blocks", + "from_workplan_id": "9b8e4afc-eb71-47d9-8750-799a082b320a", + "from_task_id": null, + "to_workplan_id": "2eb8a5e0-4e33-4ed3-8996-a2eec3aad862", + "to_task_id": null + }, + { + "workplan": "NK-WP-0014", + "from": "NK-WP-0014", + "target": "NK-WP-0013", + "relationship_type": "blocks", + "from_workplan_id": "b9bf56bc-7ef6-43eb-badc-fa0f4896c63c", + "from_task_id": null, + "to_workplan_id": "32a54d8e-8633-42a6-8ec1-104842c581c1", + "to_task_id": null + }, + { + "workplan": "NK-WP-0014", + "from": "NK-WP-0014", + "target": "NK-WP-0012", + "relationship_type": "blocks", + "from_workplan_id": "b9bf56bc-7ef6-43eb-badc-fa0f4896c63c", + "from_task_id": null, + "to_workplan_id": "9b8e4afc-eb71-47d9-8750-799a082b320a", + "to_task_id": null + }, + { + "workplan": "NK-WP-0019", + "from": "NK-WP-0019", + "target": "NK-WP-0018", + "relationship_type": "blocks", + "from_workplan_id": "d2daa8b4-8ecf-4377-b382-492e653735f7", + "from_task_id": null, + "to_workplan_id": "6f75035a-e056-4eab-8fdb-00a18bacdf87", + "to_task_id": null + }, + { + "workplan": "NK-WP-0009", + "from": "NK-WP-0009", + "target": "NK-WP-0008", + "relationship_type": "blocks", + "from_workplan_id": "d4d02dbf-3974-502d-8b87-b776fc63e17e", + "from_task_id": null, + "to_workplan_id": "053c6d96-9396-40c9-a2e5-c36531e7810d", + "to_task_id": null + }, + { + "workplan": "NK-WP-0022", + "from": "NK-WP-0022", + "target": "NK-WP-0023", + "relationship_type": "blocks", + "from_workplan_id": "d76ddccc-00c8-548a-b141-2cd660fa38da", + "from_task_id": null, + "to_workplan_id": "fdb3deee-06c3-5d12-91ce-9c50b2ac0618", + "to_task_id": null + }, + { + "workplan": "NK-WP-0048", + "from": "NK-WP-0048-T07", + "target": "NK-WP-0048-T06", + "relationship_type": "starts_after", + "from_workplan_id": "e31f3f9d-0748-5137-b0a3-7b3ca46a66eb", + "from_task_id": "c3c9c3ae-4f23-5ba7-9e6f-e63bcf29b9f7", + "to_workplan_id": null, + "to_task_id": "d9b26bcf-a7c6-59a2-92a0-f913d76a203c" + }, + { + "workplan": "NK-WP-0048", + "from": "NK-WP-0048-T06", + "target": "NK-WP-0048-T09", + "relationship_type": "starts_after", + "from_workplan_id": "e31f3f9d-0748-5137-b0a3-7b3ca46a66eb", + "from_task_id": "d9b26bcf-a7c6-59a2-92a0-f913d76a203c", + "to_workplan_id": null, + "to_task_id": "0ee12dfc-8260-5038-bd39-cc7fb4113be0" + }, + { + "workplan": "NK-WP-0048", + "from": "NK-WP-0048-T06", + "target": "NK-WP-0048-T15", + "relationship_type": "starts_after", + "from_workplan_id": "e31f3f9d-0748-5137-b0a3-7b3ca46a66eb", + "from_task_id": "d9b26bcf-a7c6-59a2-92a0-f913d76a203c", + "to_workplan_id": null, + "to_task_id": "1b825705-4848-5edc-832f-b1622cd9bdb7" + }, + { + "workplan": "NK-WP-0048", + "from": "NK-WP-0048-T06", + "target": "NK-WP-0048-T16", + "relationship_type": "starts_after", + "from_workplan_id": "e31f3f9d-0748-5137-b0a3-7b3ca46a66eb", + "from_task_id": "d9b26bcf-a7c6-59a2-92a0-f913d76a203c", + "to_workplan_id": null, + "to_task_id": "200bf500-5084-5ae7-be26-3033fe1f296e" + }, + { + "workplan": "NK-WP-0048", + "from": "NK-WP-0048-T06", + "target": "NK-WP-0048-T05", + "relationship_type": "starts_after", + "from_workplan_id": "e31f3f9d-0748-5137-b0a3-7b3ca46a66eb", + "from_task_id": "d9b26bcf-a7c6-59a2-92a0-f913d76a203c", + "to_workplan_id": null, + "to_task_id": "3d987d3d-0797-538b-86e4-51185a327ae2" + }, + { + "workplan": "NK-WP-0048", + "from": "NK-WP-0048-T06", + "target": "MASON-WP-0010-T03", + "relationship_type": "starts_after", + "from_workplan_id": "e31f3f9d-0748-5137-b0a3-7b3ca46a66eb", + "from_task_id": "d9b26bcf-a7c6-59a2-92a0-f913d76a203c", + "to_workplan_id": null, + "to_task_id": "56cea6be-c613-586c-80cd-125340b374da" + }, + { + "workplan": "NK-WP-0048", + "from": "NK-WP-0048-T06", + "target": "NK-WP-0048-T12", + "relationship_type": "starts_after", + "from_workplan_id": "e31f3f9d-0748-5137-b0a3-7b3ca46a66eb", + "from_task_id": "d9b26bcf-a7c6-59a2-92a0-f913d76a203c", + "to_workplan_id": null, + "to_task_id": "7ce4eee3-cd47-55a9-bfa5-4f1835d4d6fd" + }, + { + "workplan": "NK-WP-0048", + "from": "NK-WP-0048-T06", + "target": "NK-WP-0048-T20", + "relationship_type": "starts_after", + "from_workplan_id": "e31f3f9d-0748-5137-b0a3-7b3ca46a66eb", + "from_task_id": "d9b26bcf-a7c6-59a2-92a0-f913d76a203c", + "to_workplan_id": null, + "to_task_id": "863fcbdb-e246-51ba-87ca-a2f44d01d6f8" + }, + { + "workplan": "NK-WP-0048", + "from": "NK-WP-0048-T06", + "target": "NK-WP-0048-T17", + "relationship_type": "starts_after", + "from_workplan_id": "e31f3f9d-0748-5137-b0a3-7b3ca46a66eb", + "from_task_id": "d9b26bcf-a7c6-59a2-92a0-f913d76a203c", + "to_workplan_id": null, + "to_task_id": "8c3e4baa-a218-5996-af9e-fe1153a46dac" + }, + { + "workplan": "NK-WP-0048", + "from": "NK-WP-0048-T06", + "target": "NK-WP-0048-T08", + "relationship_type": "starts_after", + "from_workplan_id": "e31f3f9d-0748-5137-b0a3-7b3ca46a66eb", + "from_task_id": "d9b26bcf-a7c6-59a2-92a0-f913d76a203c", + "to_workplan_id": null, + "to_task_id": "8e519082-dc8b-5e46-b660-03d03e55dcf6" + }, + { + "workplan": "NK-WP-0048", + "from": "NK-WP-0048-T06", + "target": "NK-WP-0048-T18", + "relationship_type": "starts_after", + "from_workplan_id": "e31f3f9d-0748-5137-b0a3-7b3ca46a66eb", + "from_task_id": "d9b26bcf-a7c6-59a2-92a0-f913d76a203c", + "to_workplan_id": null, + "to_task_id": "9c45da71-fb4c-5f20-9065-90f448f37c64" + }, + { + "workplan": "NK-WP-0048", + "from": "NK-WP-0048-T06", + "target": "NK-WP-0048-T13", + "relationship_type": "starts_after", + "from_workplan_id": "e31f3f9d-0748-5137-b0a3-7b3ca46a66eb", + "from_task_id": "d9b26bcf-a7c6-59a2-92a0-f913d76a203c", + "to_workplan_id": null, + "to_task_id": "b264c10b-565c-5d29-b788-03cf5fbd2883" + }, + { + "workplan": "NK-WP-0048", + "from": "NK-WP-0048-T06", + "target": "WARDEN-WP-0044-T03", + "relationship_type": "starts_after", + "from_workplan_id": "e31f3f9d-0748-5137-b0a3-7b3ca46a66eb", + "from_task_id": "d9b26bcf-a7c6-59a2-92a0-f913d76a203c", + "to_workplan_id": null, + "to_task_id": "bcbf6c91-2c04-5c16-ae8c-5d6c06fd6b89" + }, + { + "workplan": "NK-WP-0048", + "from": "NK-WP-0048-T06", + "target": "NK-WP-0048-T14", + "relationship_type": "starts_after", + "from_workplan_id": "e31f3f9d-0748-5137-b0a3-7b3ca46a66eb", + "from_task_id": "d9b26bcf-a7c6-59a2-92a0-f913d76a203c", + "to_workplan_id": null, + "to_task_id": "fce95440-a25b-5f27-8ef3-a3d182099113" + }, + { + "workplan": "NK-WP-0048", + "from": "NK-WP-0048-T14", + "target": "NK-WP-0048-T20", + "relationship_type": "starts_after", + "from_workplan_id": "e31f3f9d-0748-5137-b0a3-7b3ca46a66eb", + "from_task_id": "fce95440-a25b-5f27-8ef3-a3d182099113", + "to_workplan_id": null, + "to_task_id": "863fcbdb-e246-51ba-87ca-a2f44d01d6f8" + }, + { + "workplan": "NK-WP-0010", + "from": "NK-WP-0010", + "target": "NK-WP-0008", + "relationship_type": "blocks", + "from_workplan_id": "f4faf8b4-ae57-40cf-a881-6fe66ca6ad74", + "from_task_id": null, + "to_workplan_id": "053c6d96-9396-40c9-a2e5-c36531e7810d", + "to_task_id": null + } + ], + "refused": [], + "notes": [] + } + } +} diff --git a/docs/changes/netkingdom-target-2026-10-17/pending-proposal-recorded.json b/docs/changes/netkingdom-target-2026-10-17/pending-proposal-recorded.json new file mode 100644 index 00000000..ef32962a --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/pending-proposal-recorded.json @@ -0,0 +1,9 @@ +{ + "stable_proposal_id": "STATE-WP-0095-T06-cluster-frozen-receiving-r1", + "revision": 4, + "digest_sha256": "63a02e8296d126c0158b7eb2c4ce79c7eeb6f8d6f61298d473c1065c7557ba32", + "disposition": "pending", + "executed": false, + "authority_unchanged": true, + "record_postimage_sha256": "788613168f7d2b1dec4709b7f0533d6bc013405bb259feb7267d77add086e7b2" +} diff --git a/docs/changes/netkingdom-target-2026-10-17/postgres-r3-cleanup.json b/docs/changes/netkingdom-target-2026-10-17/postgres-r3-cleanup.json new file mode 100644 index 00000000..2b8e1621 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/postgres-r3-cleanup.json @@ -0,0 +1,16 @@ +{ + "schema": "custodian.pg-fixture-independent-cleanup.v1", + "manifest_sha256": "78f2b0bbd7639780ca3a3a689310527f31e7e14c1fdb497a48bac4f69bce4093", + "engine_id": "74f93783-6cef-43a8-a3c4-f62586cd3bc1", + "session": { + "run_id": "a20a5eed1ee54968b61e8a1cb2043b30", + "containers": [ + "nk49-kc-a20a5eed1ee54968b61e8a1cb2043b30-journal-postgres", + "nk49-kc-a20a5eed1ee54968b61e8a1cb2043b30-journal-probe" + ], + "label": "net-kingdom.recovery-run=a20a5eed1ee54968b61e8a1cb2043b30" + }, + "label_resources_absent": true, + "exact_names_absent": true, + "production_contacted": false +} diff --git a/docs/changes/netkingdom-target-2026-10-17/postgres-r4-cleanup.json b/docs/changes/netkingdom-target-2026-10-17/postgres-r4-cleanup.json new file mode 100644 index 00000000..9355b516 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/postgres-r4-cleanup.json @@ -0,0 +1,17 @@ +{ + "schema": "custodian.fixture-independent-cleanup.v1", + "manifest_sha256": "d862780e2954d7103a32294ff67e1bfe5e70b5f33bf66ffe73b8521a76bb362d", + "engine_id": "74f93783-6cef-43a8-a3c4-f62586cd3bc1", + "session": { + "run_id": "ad8c853f4cee4c8586fbadc5571c27a7", + "containers": [ + "nk49-kc-ad8c853f4cee4c8586fbadc5571c27a7-journal-postgres", + "nk49-kc-ad8c853f4cee4c8586fbadc5571c27a7-journal-probe" + ], + "label": "net-kingdom.recovery-run=ad8c853f4cee4c8586fbadc5571c27a7" + }, + "result_sha256": "sha256:540a4080f57514fde4e07c2fab888456e4d6fbe7b22d016fe4bcce7bbc35e715", + "label_resources_absent": true, + "exact_names_absent": true, + "production_contacted": false +} diff --git a/docs/changes/netkingdom-target-2026-10-17/postgres-r4-result.json b/docs/changes/netkingdom-target-2026-10-17/postgres-r4-result.json new file mode 100644 index 00000000..36c716a6 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/postgres-r4-result.json @@ -0,0 +1,224 @@ +{ + "schema": "nk48.synthetic-postgres-journal-result.v1", + "status": "failed", + "manifest_sha256": "d862780e2954d7103a32294ff67e1bfe5e70b5f33bf66ffe73b8521a76bb362d", + "production_contacted": false, + "actual_credentials_used": false, + "native_acceptance_claimed": false, + "session": { + "run_id": "ad8c853f4cee4c8586fbadc5571c27a7", + "containers": [ + "nk49-kc-ad8c853f4cee4c8586fbadc5571c27a7-journal-postgres", + "nk49-kc-ad8c853f4cee4c8586fbadc5571c27a7-journal-probe" + ], + "label": "net-kingdom.recovery-run=ad8c853f4cee4c8586fbadc5571c27a7" + }, + "driver_stage": "cleanup", + "rpc_trace": [ + { + "stage": "anchor_launch", + "operation": "run", + "status": "completed" + }, + { + "stage": "anchor_containment", + "operation": "context", + "status": "completed" + }, + { + "stage": "anchor_containment", + "operation": "info", + "status": "completed" + }, + { + "stage": "anchor_containment", + "operation": "container", + "status": "completed" + }, + { + "stage": "anchor_containment", + "operation": "container", + "status": "completed" + }, + { + "stage": "postgres_private_import", + "operation": "exec", + "status": "completed" + }, + { + "stage": "postgres_initdb", + "operation": "exec", + "status": "completed" + }, + { + "stage": "postgres_launch", + "operation": "exec", + "status": "completed" + }, + { + "stage": "anchor_identity", + "operation": "container", + "status": "completed" + }, + { + "stage": "helper_launch", + "operation": "run", + "status": "completed" + }, + { + "stage": "full_containment", + "operation": "context", + "status": "completed" + }, + { + "stage": "full_containment", + "operation": "info", + "status": "completed" + }, + { + "stage": "full_containment", + "operation": "container", + "status": "completed" + }, + { + "stage": "full_containment", + "operation": "container", + "status": "completed" + }, + { + "stage": "full_containment", + "operation": "container", + "status": "completed" + }, + { + "stage": "helper_interpreter", + "operation": "exec", + "status": "completed" + }, + { + "stage": "candidate_import", + "operation": "exec", + "status": "completed" + }, + { + "stage": "bootstrap", + "operation": "exec", + "status": "completed" + }, + { + "stage": "database_dump", + "operation": "exec", + "status": "completed" + }, + { + "stage": "restart", + "operation": "exec", + "status": "completed" + }, + { + "stage": "cleanup", + "operation": "container", + "status": "completed" + }, + { + "stage": "cleanup", + "operation": "container", + "status": "completed" + }, + { + "stage": "cleanup", + "operation": "rm", + "status": "completed" + }, + { + "stage": "cleanup", + "operation": "container", + "status": "completed" + }, + { + "stage": "cleanup", + "operation": "container", + "status": "completed" + }, + { + "stage": "cleanup", + "operation": "container", + "status": "completed" + }, + { + "stage": "cleanup", + "operation": "rm", + "status": "completed" + }, + { + "stage": "cleanup", + "operation": "container", + "status": "completed" + } + ], + "postgres_initdb_complete": true, + "containment_verified_before_generated_private_import": true, + "helper_interpreter_verified_before_candidate_import": true, + "helper_psycopg_version": "3.3.6", + "checks": { + "only_loopback_no_external_routes": true, + "actual_postgresql_journal_ensure": true, + "explicit_scope_context_retained": true, + "confirmed_inventory_excludes_preexisting": true, + "runtime_ddl_denied": true + }, + "helper_diagnostics": { + "bootstrap": { + "status": "passed", + "stages": [ + "probe_entry", + "loopback_check", + "phase_dispatch", + "bootstrap_connect_wait", + "bootstrap_connected", + "bootstrap_schema", + "bootstrap_migration", + "bootstrap_epoch_insert", + "bootstrap_role_create", + "bootstrap_runtime_grants", + "bootstrap_checkpoint_init", + "bootstrap_directory_init", + "bootstrap_ensure", + "bootstrap_ensure_readback", + "bootstrap_runtime_ddl_refusal", + "bootstrap_complete", + "phase_complete" + ] + }, + "restart": { + "status": "failed", + "stages": [ + "probe_entry", + "loopback_check", + "phase_dispatch" + ], + "diagnostic": { + "stage": "phase_dispatch", + "exception_class": "RuntimeError", + "sqlstate": null + } + } + }, + "psycopg_version": "3.3.6", + "driver_failure": { + "stage": "restart", + "exception_class": "RuntimeError", + "sqlstate": null + }, + "container_cleanup_obligations": [ + { + "container": "nk49-kc-ad8c853f4cee4c8586fbadc5571c27a7-journal-probe", + "status": "absence_verified" + }, + { + "container": "nk49-kc-ad8c853f4cee4c8586fbadc5571c27a7-journal-postgres", + "status": "absence_verified" + } + ], + "container_cleanup_verified": true +} diff --git a/docs/changes/netkingdom-target-2026-10-17/postgres-r5-cleanup.json b/docs/changes/netkingdom-target-2026-10-17/postgres-r5-cleanup.json new file mode 100644 index 00000000..ad581ec7 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/postgres-r5-cleanup.json @@ -0,0 +1,17 @@ +{ + "schema": "custodian.fixture-independent-cleanup.v1", + "manifest_sha256": "d51f90816616848b93bcdc482e10a98d07061deb01eeed9e50700fc6e68b6051", + "engine_id": "74f93783-6cef-43a8-a3c4-f62586cd3bc1", + "session": { + "run_id": "492a7afaec6b43ef92b98eb76025362f", + "containers": [ + "nk49-kc-492a7afaec6b43ef92b98eb76025362f-journal-postgres", + "nk49-kc-492a7afaec6b43ef92b98eb76025362f-journal-probe" + ], + "label": "net-kingdom.recovery-run=492a7afaec6b43ef92b98eb76025362f" + }, + "result_sha256": "sha256:d72cc5e0788b7be69fc40c641e20680d29a175181334396b5f7fcecc0c0763d9", + "label_resources_absent": true, + "exact_names_absent": true, + "production_contacted": false +} diff --git a/docs/changes/netkingdom-target-2026-10-17/postgres-r5-result.json b/docs/changes/netkingdom-target-2026-10-17/postgres-r5-result.json new file mode 100644 index 00000000..1068a7e3 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/postgres-r5-result.json @@ -0,0 +1,300 @@ +{ + "schema": "nk48.synthetic-postgres-journal-result.v1", + "status": "synthetic_postgres_journal_compatibility_passed", + "manifest_sha256": "d51f90816616848b93bcdc482e10a98d07061deb01eeed9e50700fc6e68b6051", + "production_contacted": false, + "actual_credentials_used": false, + "native_acceptance_claimed": false, + "session": { + "run_id": "492a7afaec6b43ef92b98eb76025362f", + "containers": [ + "nk49-kc-492a7afaec6b43ef92b98eb76025362f-journal-postgres", + "nk49-kc-492a7afaec6b43ef92b98eb76025362f-journal-probe" + ], + "label": "net-kingdom.recovery-run=492a7afaec6b43ef92b98eb76025362f" + }, + "driver_stage": "cleanup", + "rpc_trace": [ + { + "stage": "anchor_launch", + "operation": "run", + "status": "completed" + }, + { + "stage": "anchor_containment", + "operation": "context", + "status": "completed" + }, + { + "stage": "anchor_containment", + "operation": "info", + "status": "completed" + }, + { + "stage": "anchor_containment", + "operation": "container", + "status": "completed" + }, + { + "stage": "anchor_containment", + "operation": "container", + "status": "completed" + }, + { + "stage": "postgres_private_import", + "operation": "exec", + "status": "completed" + }, + { + "stage": "postgres_initdb", + "operation": "exec", + "status": "completed" + }, + { + "stage": "postgres_launch", + "operation": "exec", + "status": "completed" + }, + { + "stage": "anchor_identity", + "operation": "container", + "status": "completed" + }, + { + "stage": "helper_launch", + "operation": "run", + "status": "completed" + }, + { + "stage": "full_containment", + "operation": "context", + "status": "completed" + }, + { + "stage": "full_containment", + "operation": "info", + "status": "completed" + }, + { + "stage": "full_containment", + "operation": "container", + "status": "completed" + }, + { + "stage": "full_containment", + "operation": "container", + "status": "completed" + }, + { + "stage": "full_containment", + "operation": "container", + "status": "completed" + }, + { + "stage": "helper_interpreter", + "operation": "exec", + "status": "completed" + }, + { + "stage": "candidate_import", + "operation": "exec", + "status": "completed" + }, + { + "stage": "bootstrap", + "operation": "exec", + "status": "completed" + }, + { + "stage": "database_dump", + "operation": "exec", + "status": "completed" + }, + { + "stage": "restart", + "operation": "exec", + "status": "completed" + }, + { + "stage": "concurrency", + "operation": "exec", + "status": "completed" + }, + { + "stage": "fork", + "operation": "exec", + "status": "completed" + }, + { + "stage": "lost-ack", + "operation": "exec", + "status": "completed" + }, + { + "stage": "database_restore", + "operation": "exec", + "status": "completed" + }, + { + "stage": "restored", + "operation": "exec", + "status": "completed" + }, + { + "stage": "cleanup", + "operation": "container", + "status": "completed" + }, + { + "stage": "cleanup", + "operation": "container", + "status": "completed" + }, + { + "stage": "cleanup", + "operation": "rm", + "status": "completed" + }, + { + "stage": "cleanup", + "operation": "container", + "status": "completed" + }, + { + "stage": "cleanup", + "operation": "container", + "status": "completed" + }, + { + "stage": "cleanup", + "operation": "container", + "status": "completed" + }, + { + "stage": "cleanup", + "operation": "rm", + "status": "completed" + }, + { + "stage": "cleanup", + "operation": "container", + "status": "completed" + } + ], + "postgres_initdb_complete": true, + "containment_verified_before_generated_private_import": true, + "helper_interpreter_verified_before_candidate_import": true, + "helper_psycopg_version": "3.3.6", + "checks": { + "only_loopback_no_external_routes": true, + "actual_postgresql_journal_ensure": true, + "explicit_scope_context_retained": true, + "confirmed_inventory_excludes_preexisting": true, + "runtime_ddl_denied": true, + "separate_process_postgres_restart_and_revoke": true, + "preexisting_shared_state_preserved": true, + "foreign_context_receipt_refused": true, + "concurrent_original_reservation_exactly_once": true, + "stale_version_update_refused_without_head_advance": true, + "concurrent_divergent_clones_same_counter_verified": true, + "independent_exact_transition_cas_selects_one_winner": true, + "reopened_loser_clone_refused_at_same_counter": true, + "lost_checkpoint_ack_retains_pending_reservation": true, + "reopened_uncertainty_refuses_ldap_effects": true, + "active_fence_survives_process_reopen": true, + "lost_synthetic_directory_response_retains_postgres_intent": true, + "lost_sql_commit_reply_retains_committed_head": true, + "reopened_stale_checkpoint_refuses_continuation": true, + "actual_pg_restore_behind_checkpoint_detected": true, + "restored_store_cannot_gain_replay_authority": true + }, + "helper_diagnostics": { + "bootstrap": { + "status": "passed", + "stages": [ + "probe_entry", + "loopback_check", + "phase_dispatch", + "bootstrap_connect_wait", + "bootstrap_connected", + "bootstrap_schema", + "bootstrap_migration", + "bootstrap_epoch_insert", + "bootstrap_role_create", + "bootstrap_runtime_grants", + "bootstrap_checkpoint_init", + "bootstrap_directory_init", + "bootstrap_ensure", + "bootstrap_ensure_readback", + "bootstrap_runtime_ddl_refusal", + "bootstrap_complete", + "phase_complete" + ] + }, + "restart": { + "status": "passed", + "stages": [ + "probe_entry", + "loopback_check", + "phase_dispatch", + "restart_load_snapshot", + "restart_reopen_store", + "restart_replay_ensure", + "restart_revoke", + "restart_revoke_readback", + "restart_prestate_equality", + "restart_foreign_context", + "restart_complete", + "phase_complete" + ] + }, + "concurrency": { + "status": "passed", + "stages": [ + "probe_entry", + "loopback_check", + "phase_dispatch", + "phase_complete" + ] + }, + "fork": { + "status": "passed", + "stages": [ + "probe_entry", + "loopback_check", + "phase_dispatch", + "phase_complete" + ] + }, + "lost-ack": { + "status": "passed", + "stages": [ + "probe_entry", + "loopback_check", + "phase_dispatch", + "phase_complete" + ] + }, + "restored": { + "status": "passed", + "stages": [ + "probe_entry", + "loopback_check", + "phase_dispatch", + "phase_complete" + ] + } + }, + "psycopg_version": "3.3.6", + "container_cleanup_obligations": [ + { + "container": "nk49-kc-492a7afaec6b43ef92b98eb76025362f-journal-probe", + "status": "absence_verified" + }, + { + "container": "nk49-kc-492a7afaec6b43ef92b98eb76025362f-journal-postgres", + "status": "absence_verified" + } + ], + "container_cleanup_verified": true +} diff --git a/docs/changes/netkingdom-target-2026-10-17/r0-sops-real-regressions.json b/docs/changes/netkingdom-target-2026-10-17/r0-sops-real-regressions.json new file mode 100644 index 00000000..9adfe39b --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/r0-sops-real-regressions.json @@ -0,0 +1,10 @@ +{ + "status": "unverified", + "exit_code": 1, + "fixed_reason": "namespace_preflight_or_runtime_failed", + "private_diagnostics_suppressed": true, + "binary_sha256": "sha256:e5bec3346a873ae91d871550f3e698c1aad962aff462a080e40f25fde17fef6b", + "driver_sha256": "sha256:384c508e0dc3c1912a0c6218cf5905cf963b7843fbd0f5fae72cfc5cfe462a2a", + "namespace_teardown_complete": true, + "system_installation": false +} diff --git a/docs/changes/netkingdom-target-2026-10-17/r1-sops-real-regressions.json b/docs/changes/netkingdom-target-2026-10-17/r1-sops-real-regressions.json new file mode 100644 index 00000000..809d13e0 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/r1-sops-real-regressions.json @@ -0,0 +1,15 @@ +{ + "status": "passed", + "exit_code": 0, + "count_summary": [ + "61 passed in 10.95s" + ], + "private_diagnostics_suppressed": true, + "generated_material_only": true, + "host_custody_mounted": false, + "network_routes_absent": true, + "binary_sha256": "sha256:e5bec3346a873ae91d871550f3e698c1aad962aff462a080e40f25fde17fef6b", + "driver_sha256": "sha256:68d107e81dd619289f66b0f4f4df1e3fec09f7cd039e92457fb92a08ef1fb360", + "namespace_teardown_complete": true, + "system_installation": false +} diff --git a/docs/changes/netkingdom-target-2026-10-17/scanner-unavailable-r1/namespace-hook-results.json b/docs/changes/netkingdom-target-2026-10-17/scanner-unavailable-r1/namespace-hook-results.json new file mode 100644 index 00000000..6f884fa9 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/scanner-unavailable-r1/namespace-hook-results.json @@ -0,0 +1,183 @@ +{ + "status": "verified", + "scope": "two actual configured hooks; generated alternate-index/object fixtures in mount/user/network namespaces", + "provider_calls": 0, + "real_credentials_read": false, + "real_index_opened": false, + "source_sha256": "e709c658f779534fcab093207b0a78e49d54fc584c515fdf7ac535ce75f6c400", + "scanner_sha256": "88f91962aa2f93ac6ab281d553b9e125f5197bbbce38f9f2437f7299c32e5509", + "hook_sha256": "d50cf763dc9814383c6886e30b6650bbbdcb49ddd78889082e3fda3626a2cbfd", + "bwrap_sha256": "e318903862396f96de3df57264e0158682b952fd3fb53ac23d876413e7b30f71", + "host_scanner_modified": false, + "rows": [ + { + "repo": "repo-manager", + "case": "clean-control", + "status": "clean", + "exit_code": 0, + "scanned_blobs": 1, + "reason": null, + "namespace_readback": { + "verified": true, + "root_identity_preserved": true, + "shm_identity_preserved": true, + "root_readonly": true, + "shm_writable": true, + "user_mount_network_namespaces_changed": true, + "pid_namespace_preserved": true, + "uid_gid_preserved": true, + "null_device_readback": { + "character_device": true, + "host_identity_and_rdev_preserved": true, + "read_write_open_verified": true + }, + "source_sha256": "e709c658f779534fcab093207b0a78e49d54fc584c515fdf7ac535ce75f6c400", + "hook_sha256": "d50cf763dc9814383c6886e30b6650bbbdcb49ddd78889082e3fda3626a2cbfd", + "interpreter_sha256": "e50d468e8b0adfb05733f5b87b3cff34829c4a8c1aea50c865aa8bdfe4bb150f", + "scanner_view": "pinned-real-scanner" + } + }, + { + "repo": "repo-manager", + "case": "generated-key-control", + "status": "blocked", + "exit_code": 1, + "scanned_blobs": 1, + "reason": null, + "namespace_readback": { + "verified": true, + "root_identity_preserved": true, + "shm_identity_preserved": true, + "root_readonly": true, + "shm_writable": true, + "user_mount_network_namespaces_changed": true, + "pid_namespace_preserved": true, + "uid_gid_preserved": true, + "null_device_readback": { + "character_device": true, + "host_identity_and_rdev_preserved": true, + "read_write_open_verified": true + }, + "source_sha256": "e709c658f779534fcab093207b0a78e49d54fc584c515fdf7ac535ce75f6c400", + "hook_sha256": "d50cf763dc9814383c6886e30b6650bbbdcb49ddd78889082e3fda3626a2cbfd", + "interpreter_sha256": "e50d468e8b0adfb05733f5b87b3cff34829c4a8c1aea50c865aa8bdfe4bb150f", + "scanner_view": "pinned-real-scanner" + } + }, + { + "repo": "repo-manager", + "case": "scanner-unavailable", + "status": "unverified", + "exit_code": 2, + "scanned_blobs": 0, + "reason": "scanner-file-refused", + "namespace_readback": { + "verified": true, + "root_identity_preserved": true, + "shm_identity_preserved": true, + "root_readonly": true, + "shm_writable": true, + "user_mount_network_namespaces_changed": true, + "pid_namespace_preserved": true, + "uid_gid_preserved": true, + "null_device_readback": { + "character_device": true, + "host_identity_and_rdev_preserved": true, + "read_write_open_verified": true + }, + "source_sha256": "e709c658f779534fcab093207b0a78e49d54fc584c515fdf7ac535ce75f6c400", + "hook_sha256": "d50cf763dc9814383c6886e30b6650bbbdcb49ddd78889082e3fda3626a2cbfd", + "interpreter_sha256": "e50d468e8b0adfb05733f5b87b3cff34829c4a8c1aea50c865aa8bdfe4bb150f", + "scanner_view": "empty-0400-shadow" + } + }, + { + "repo": "the-custodian", + "case": "clean-control", + "status": "clean", + "exit_code": 0, + "scanned_blobs": 1, + "reason": null, + "namespace_readback": { + "verified": true, + "root_identity_preserved": true, + "shm_identity_preserved": true, + "root_readonly": true, + "shm_writable": true, + "user_mount_network_namespaces_changed": true, + "pid_namespace_preserved": true, + "uid_gid_preserved": true, + "null_device_readback": { + "character_device": true, + "host_identity_and_rdev_preserved": true, + "read_write_open_verified": true + }, + "source_sha256": "e709c658f779534fcab093207b0a78e49d54fc584c515fdf7ac535ce75f6c400", + "hook_sha256": "d50cf763dc9814383c6886e30b6650bbbdcb49ddd78889082e3fda3626a2cbfd", + "interpreter_sha256": "e50d468e8b0adfb05733f5b87b3cff34829c4a8c1aea50c865aa8bdfe4bb150f", + "scanner_view": "pinned-real-scanner" + } + }, + { + "repo": "the-custodian", + "case": "generated-key-control", + "status": "blocked", + "exit_code": 1, + "scanned_blobs": 1, + "reason": null, + "namespace_readback": { + "verified": true, + "root_identity_preserved": true, + "shm_identity_preserved": true, + "root_readonly": true, + "shm_writable": true, + "user_mount_network_namespaces_changed": true, + "pid_namespace_preserved": true, + "uid_gid_preserved": true, + "null_device_readback": { + "character_device": true, + "host_identity_and_rdev_preserved": true, + "read_write_open_verified": true + }, + "source_sha256": "e709c658f779534fcab093207b0a78e49d54fc584c515fdf7ac535ce75f6c400", + "hook_sha256": "d50cf763dc9814383c6886e30b6650bbbdcb49ddd78889082e3fda3626a2cbfd", + "interpreter_sha256": "e50d468e8b0adfb05733f5b87b3cff34829c4a8c1aea50c865aa8bdfe4bb150f", + "scanner_view": "pinned-real-scanner" + } + }, + { + "repo": "the-custodian", + "case": "scanner-unavailable", + "status": "unverified", + "exit_code": 2, + "scanned_blobs": 0, + "reason": "scanner-file-refused", + "namespace_readback": { + "verified": true, + "root_identity_preserved": true, + "shm_identity_preserved": true, + "root_readonly": true, + "shm_writable": true, + "user_mount_network_namespaces_changed": true, + "pid_namespace_preserved": true, + "uid_gid_preserved": true, + "null_device_readback": { + "character_device": true, + "host_identity_and_rdev_preserved": true, + "read_write_open_verified": true + }, + "source_sha256": "e709c658f779534fcab093207b0a78e49d54fc584c515fdf7ac535ce75f6c400", + "hook_sha256": "d50cf763dc9814383c6886e30b6650bbbdcb49ddd78889082e3fda3626a2cbfd", + "interpreter_sha256": "e50d468e8b0adfb05733f5b87b3cff34829c4a8c1aea50c865aa8bdfe4bb150f", + "scanner_view": "empty-0400-shadow" + } + } + ], + "fixture_removed": true, + "new_scan_storage_absent": true, + "real_index_stat_unchanged": true, + "real_heads_unchanged": true, + "host_scanner_stat_hash_mode_unchanged": true, + "hook_source_routing_unchanged": true, + "driver_sha256": "ff276bae336a560d365ed1255f9af97b4207294574df9bcf74543dc5c0678e35" +} diff --git a/docs/changes/netkingdom-target-2026-10-17/scanner-unavailable-r1/namespace-lifecycle-results.json b/docs/changes/netkingdom-target-2026-10-17/scanner-unavailable-r1/namespace-lifecycle-results.json new file mode 100644 index 00000000..a4989dfc --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/scanner-unavailable-r1/namespace-lifecycle-results.json @@ -0,0 +1,29 @@ +{ + "status": "verified", + "scope": "generated namespace hard-parent-loss process tree only", + "real_index_opened": false, + "real_credentials_read": false, + "provider_calls": 0, + "host_scanner_modified": false, + "namespace_identity_verified": true, + "pre_effect_pidfd_registration_verified": true, + "exact_disposable_parent_killed": true, + "null_device_readback": { + "character_device": true, + "host_identity_and_rdev_preserved": true, + "read_write_open_verified": true + }, + "bwrap_inner_and_cleanup_observer_death_verified": true, + "inner_storage_removed": true, + "last_inner_phase": { + "phase": "full-readback-published" + }, + "disposable_spawner_returncode": -9, + "bwrap_stderr_public": "", + "bwrap_stderr_truncated": false, + "spawner_stderr_public": "", + "spawner_stderr_truncated": false, + "fixture_removed": true, + "new_scan_storage_absent": true, + "driver_sha256": "9c1db89b4379a7e55a72eba58efb3dfdae38d3ce69349d1bc1429465bc8cb5c5" +} diff --git a/docs/changes/netkingdom-target-2026-10-17/secrets-engine-projection.json b/docs/changes/netkingdom-target-2026-10-17/secrets-engine-projection.json new file mode 100644 index 00000000..cd69814d --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/secrets-engine-projection.json @@ -0,0 +1,189 @@ +{ + "ok": true, + "status": "applied", + "repo_slug": "secrets-engine", + "commit": "c59bbf568c0be8a72ac593508f48c9b1f61ec4c1", + "requests": 2, + "elapsed_ms": 2970.5, + "git": { + "upstream": "origin/main", + "behind": 0, + "ahead": 0 + }, + "identifiers": { + "schema": "repo-manager.identifier-assignment.v1", + "ok": true, + "executed": true, + "repo": "secrets-engine", + "namespace": "helixforge", + "assignments": [], + "historical_invalid_identifiers": [], + "files_changed": [] + }, + "receipt": { + "schema": "state-hub.repository-projection-reconcile.v1", + "instance_role": "primary", + "instance_label": "railiance01", + "expected_commit": "c59bbf568c0be8a72ac593508f48c9b1f61ec4c1", + "derived_commit": "c59bbf568c0be8a72ac593508f48c9b1f61ec4c1", + "outcome": { + "schema": "state-hub.projection-reset.v1", + "repo_slug": "secrets-engine", + "commit": "c59bbf568c0be8a72ac593508f48c9b1f61ec4c1", + "status": "applied", + "counts": { + "created": 0, + "updated": 17, + "retired": 0, + "refused": 0, + "released": 0, + "created_tasks": 0, + "updated_tasks": 15, + "cancelled_tasks": 0, + "created_edges": 2, + "removed_edges": 0, + "unresolved_edges": 0, + "external_edges": 7 + }, + "created": [], + "updated": [ + "SECRETS-WP-0001", + "SECRETS-WP-0002", + "SECRETS-WP-0003", + "SECRETS-WP-0004", + "SECRETS-WP-0005", + "SECRETS-WP-0006", + "SECRETS-WP-0007", + "SECRETS-WP-0008", + "SECRETS-WP-0009", + "SECRETS-WP-0010", + "SECRETS-WP-0011", + "SECRETS-WP-0012", + "SECRETS-WP-0013", + "SECRETS-WP-0014", + "SECRETS-WP-0015", + "SECRETS-WP-ADHOC-2026-08-21", + "SECRETS-WP-ADHOC-2026-08-23" + ], + "retired": [], + "released": [], + "created_tasks": [], + "updated_tasks": [ + "SECRETS-WP-0006-T05", + "SECRETS-WP-0012-T01", + "SECRETS-WP-0012-T02", + "SECRETS-WP-0012-T04", + "SECRETS-WP-0012-T03", + "SECRETS-WP-0013-T01", + "SECRETS-WP-0013-T02", + "SECRETS-WP-0013-T03", + "SECRETS-WP-0014-T01", + "SECRETS-WP-0014-T02", + "SECRETS-WP-0014-T03", + "SECRETS-WP-0015-T01", + "SECRETS-WP-0015-T02", + "SECRETS-WP-0015-T03", + "SECRETS-WP-0015-T04" + ], + "cancelled_tasks": [], + "created_edges": [ + { + "workplan": "SECRETS-WP-0015", + "from": "SECRETS-WP-0015-T04", + "target": "NK-WP-0049-T33", + "relationship_type": "starts_after", + "from_workplan_id": "68a0642e-4908-5260-89c9-3adce60e6a4d", + "from_task_id": "aeec6eb0-39e2-5f7c-8f5d-778133edfc73", + "to_workplan_id": null, + "to_task_id": "56c8d469-7a10-5d50-a30e-95cbf3cd4756" + }, + { + "workplan": "SECRETS-WP-0015", + "from": "SECRETS-WP-0015-T04", + "target": "SECRETS-WP-0015-T03", + "relationship_type": "starts_after", + "from_workplan_id": "68a0642e-4908-5260-89c9-3adce60e6a4d", + "from_task_id": "aeec6eb0-39e2-5f7c-8f5d-778133edfc73", + "to_workplan_id": null, + "to_task_id": "6262a915-7655-50be-b9f7-481f816d7335" + } + ], + "removed_edges": [], + "unresolved_edges": [], + "external_edges": [ + { + "workplan": "SECRETS-WP-0006", + "from": "SECRETS-WP-0006-T06", + "target": "SECRETS-WP-0006-T05", + "relationship_type": "starts_after", + "from_workplan_id": "31f7f8ea-7f73-516c-8877-f03a13f1db82", + "from_task_id": "1431edae-5791-5892-8c4b-829419b537d2", + "to_workplan_id": null, + "to_task_id": "fb103f1e-2ff7-5de5-9a2c-191a19c43542" + }, + { + "workplan": "SECRETS-WP-0013", + "from": "SECRETS-WP-0013-T03", + "target": "RPF-WP-0035-T12", + "relationship_type": "starts_after", + "from_workplan_id": "5e38aecc-85ca-5f55-94c6-9fbb08604819", + "from_task_id": "5f8f7c41-5921-543f-a7c6-0b1350ea6d82", + "to_workplan_id": null, + "to_task_id": "914bf383-c13f-5247-9af0-91d7e3a4784a" + }, + { + "workplan": "SECRETS-WP-0013", + "from": "SECRETS-WP-0013-T03", + "target": "SECRETS-WP-0013-T01", + "relationship_type": "starts_after", + "from_workplan_id": "5e38aecc-85ca-5f55-94c6-9fbb08604819", + "from_task_id": "5f8f7c41-5921-543f-a7c6-0b1350ea6d82", + "to_workplan_id": null, + "to_task_id": "b2f0d462-a542-518b-a26b-b7ec07b3c7c1" + }, + { + "workplan": "SECRETS-WP-0007", + "from": "SECRETS-WP-0007-T07", + "target": "SECRETS-WP-0006-T06", + "relationship_type": "starts_after", + "from_workplan_id": "68a39be1-bd9c-5133-ad64-e7bca892aaf3", + "from_task_id": "a0a1dd92-d703-5a95-b488-d895f34d5cf7", + "to_workplan_id": null, + "to_task_id": "1431edae-5791-5892-8c4b-829419b537d2" + }, + { + "workplan": "SECRETS-WP-0007", + "from": "SECRETS-WP-0007-T07", + "target": "SECRETS-WP-0006-T05", + "relationship_type": "starts_after", + "from_workplan_id": "68a39be1-bd9c-5133-ad64-e7bca892aaf3", + "from_task_id": "a0a1dd92-d703-5a95-b488-d895f34d5cf7", + "to_workplan_id": null, + "to_task_id": "fb103f1e-2ff7-5de5-9a2c-191a19c43542" + }, + { + "workplan": "SECRETS-WP-0014", + "from": "SECRETS-WP-0014-T03", + "target": "SECRETS-WP-0014-T02", + "relationship_type": "starts_after", + "from_workplan_id": "7252469d-d7a5-5c18-8911-b511b8c6a736", + "from_task_id": "85aa4c78-b66d-5201-8e31-0ed50e7eaeec", + "to_workplan_id": null, + "to_task_id": "877782e5-045b-5186-8b95-82e25db21a5a" + }, + { + "workplan": "SECRETS-WP-0008", + "from": "SECRETS-WP-0008-T06", + "target": "RPF-WP-0035-T02", + "relationship_type": "starts_after", + "from_workplan_id": "9c9e5164-b2f5-5ea2-a557-5368d65e9fe0", + "from_task_id": "d7bc8bdc-a0f8-5058-a640-374ef9859148", + "to_workplan_id": null, + "to_task_id": "e0c82ea9-05a5-537e-8fbf-67534263572e" + } + ], + "refused": [], + "notes": [] + } + } +} diff --git a/docs/changes/netkingdom-target-2026-10-17/sops-real-regressions.json b/docs/changes/netkingdom-target-2026-10-17/sops-real-regressions.json new file mode 100644 index 00000000..8f01d6e0 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/sops-real-regressions.json @@ -0,0 +1,15 @@ +{ + "status": "passed", + "exit_code": 0, + "count_summary": [ + "65 passed in 14.85s" + ], + "private_diagnostics_suppressed": true, + "generated_material_only": true, + "host_custody_mounted": false, + "network_routes_absent": true, + "binary_sha256": "sha256:e5bec3346a873ae91d871550f3e698c1aad962aff462a080e40f25fde17fef6b", + "driver_sha256": "sha256:3082ebce5493f19313dfc276bb068329c4f26f53414d6aa0c10a628bc5ac07f9", + "namespace_teardown_complete": true, + "system_installation": false +} diff --git a/docs/changes/netkingdom-target-2026-10-17/sops-source-tool.json b/docs/changes/netkingdom-target-2026-10-17/sops-source-tool.json new file mode 100644 index 00000000..23901a0a --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/sops-source-tool.json @@ -0,0 +1,19 @@ +{ + "version": "3.13.3", + "official_release": "https://github.com/getsops/sops/releases/tag/v3.13.3", + "binary_sha256": "sha256:e5bec3346a873ae91d871550f3e698c1aad962aff462a080e40f25fde17fef6b", + "release_api_asset_digest_matches": true, + "release_checksum_matches": true, + "sigstore_signature_verified": false, + "installed_systemwide": false, + "execution": "Only reviewed generated fixtures inside network/host-custody-isolated namespace", + "public_source_files": { + "Makefile": "sha256:5d2114f6141bb8504c5c780044302126c07958a5732afdb0d0c0218a4f84210e", + "sso-mfa/bootstrap/sops-private.py": "sha256:acac68e2936ed38b7d7c9e35eb4619647c99c117a3928a1c5ce704b570906780", + "sso-mfa/bootstrap/sops-write.py": "sha256:5a785e9c8e6a40ca9120a668d93992ea5c3115566ada21933536cc2d931f1ddf", + "sso-mfa/bootstrap/sops-custody-fd.py": "sha256:df29eaba83ec6b5fc311664dcf4b22d8f3c8ed7274ed8e6c419ada0dcd169c0f", + "sso-mfa/bootstrap/sops-custody-unlock.sh": "sha256:86c527a8ae0d0cca66a2345c566b25fbff5bc52c1e22c725548c0fbb2f86a58e", + "tests/test_sops_private.py": "sha256:a5ff8d7847cdce151be44cdf4a89385d5e2585cdd59143dee4be3cc6106eb7f5", + "tests/test_sops_write.py": "sha256:f832925283e79589b3ce0bded7e50f49bfd4e78620c224549bb7d31a7868fca6" + } +} diff --git a/docs/changes/netkingdom-target-2026-10-17/state-hub-readiness-projection.json b/docs/changes/netkingdom-target-2026-10-17/state-hub-readiness-projection.json new file mode 100644 index 00000000..be2ea1da --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/state-hub-readiness-projection.json @@ -0,0 +1,204 @@ +{ + "ok": true, + "status": "applied", + "repo_slug": "state-hub", + "commit": "086d79a2736e34b916bd7de3c8a65e2ea38a3d64", + "requests": 2, + "elapsed_ms": 7629.7, + "git": { + "upstream": "origin/main", + "behind": 0, + "ahead": 0 + }, + "identifiers": { + "schema": "repo-manager.identifier-assignment.v1", + "ok": true, + "executed": true, + "repo": "state-hub", + "namespace": "helixforge", + "assignments": [], + "historical_invalid_identifiers": [], + "files_changed": [] + }, + "receipt": { + "schema": "state-hub.repository-projection-reconcile.v1", + "instance_role": "primary", + "instance_label": "railiance01", + "expected_commit": "086d79a2736e34b916bd7de3c8a65e2ea38a3d64", + "derived_commit": "086d79a2736e34b916bd7de3c8a65e2ea38a3d64", + "outcome": { + "schema": "state-hub.projection-reset.v1", + "repo_slug": "state-hub", + "commit": "086d79a2736e34b916bd7de3c8a65e2ea38a3d64", + "status": "applied", + "counts": { + "created": 0, + "updated": 70, + "retired": 0, + "refused": 0, + "released": 0, + "created_tasks": 1, + "updated_tasks": 0, + "cancelled_tasks": 0, + "created_edges": 0, + "removed_edges": 0, + "unresolved_edges": 1, + "external_edges": 6 + }, + "created": [], + "updated": [ + "CUST-WP-0003", + "CUST-WP-0011", + "CUST-WP-0012", + "CUST-WP-0038", + "CUST-WP-0042", + "STATE-WP-0043", + "STATE-WP-0044", + "STATE-WP-0045", + "STATE-WP-0046", + "STATE-WP-0047", + "STATE-WP-0048", + "STATE-WP-0049", + "STATE-WP-0050", + "STATE-WP-0051", + "STATE-WP-0052", + "STATE-WP-0053", + "STATE-WP-0054", + "STATE-WP-0055", + "STATE-WP-0056", + "STATE-WP-0057", + "STATE-WP-0058", + "STATE-WP-0059", + "STATE-WP-0060", + "STATE-WP-0061", + "STATE-WP-0062", + "STATE-WP-0063", + "STATE-WP-0064", + "STATE-WP-0065", + "STATE-WP-0066", + "STATE-WP-0067", + "STATE-WP-0068", + "STATE-WP-0069", + "STATE-WP-0070", + "STATE-WP-0071", + "STATE-WP-0072", + "STATE-WP-0073", + "STATE-WP-0074", + "STATE-WP-0075", + "STATE-WP-0076", + "STATE-WP-0077", + "STATE-WP-0078", + "STATE-WP-0079", + "STATE-WP-0080", + "STATE-WP-0081", + "STATE-WP-0082", + "STATE-WP-0083", + "STATE-WP-0084", + "STATE-WP-0085", + "STATE-WP-0086", + "STATE-WP-0087", + "STATE-WP-0088", + "STATE-WP-0089", + "STATE-WP-0090", + "STATE-WP-0091", + "STATE-WP-0092", + "STATE-WP-0093", + "STATE-WP-0094", + "STATE-WP-0095", + "STATE-WP-0096", + "STATE-WP-0097", + "STATE-WP-0098", + "STATE-WP-ADHOC-2026-06-04", + "STATE-WP-ADHOC-2026-07-01", + "STATE-WP-ADHOC-2026-08-08", + "STATE-WP-ADHOC-2026-08-23", + "STATE-WP-ADHOC-2026-08-30", + "STATE-WP-ADHOC-2026-09-04", + "STATE-WP-ADHOC-2026-09-22", + "STATE-WP-ADHOC-2026-10-06", + "STATE-WP-ADHOC-2026-10-13" + ], + "retired": [], + "released": [], + "created_tasks": [ + "STATE-WP-0095-T08" + ], + "updated_tasks": [], + "cancelled_tasks": [], + "created_edges": [], + "removed_edges": [], + "unresolved_edges": [ + { + "workplan": "STATE-WP-0095", + "from": "STATE-WP-0095-T07", + "target": "RMGR-WP-0019-T06", + "reason": "missing" + } + ], + "external_edges": [ + { + "workplan": "STATE-WP-0098", + "from": "STATE-WP-0098-T04", + "target": "HUB-WP-0011-T01", + "relationship_type": "starts_after", + "from_workplan_id": "0c68970e-295b-57fc-ac70-e472ee3a7bc4", + "from_task_id": "077797c8-289b-55ec-9597-28f223891b02", + "to_workplan_id": null, + "to_task_id": "588e4b58-4694-513c-8e7a-1fab38fb6ce3" + }, + { + "workplan": "CUST-WP-0038", + "from": "CUST-WP-0038", + "target": "CUST-WP-0011", + "relationship_type": "blocks", + "from_workplan_id": "ccb87fa4-6381-5f22-b097-6e026f56a9c1", + "from_task_id": null, + "to_workplan_id": "967baafb-d92d-405a-ba0b-0d00d37c4940", + "to_task_id": null + }, + { + "workplan": "STATE-WP-0079", + "from": "STATE-WP-0079-T04", + "target": "HUB-WP-0011-T03", + "relationship_type": "starts_after", + "from_workplan_id": "ed077b62-7048-5752-bf65-f90471f45854", + "from_task_id": "3a454438-1955-547f-a491-8eab7cd25710", + "to_workplan_id": null, + "to_task_id": "61c727a5-f4b1-54c0-b634-7d71a5416496" + }, + { + "workplan": "STATE-WP-0079", + "from": "STATE-WP-0079-T04", + "target": "HUB-WP-0006-T06", + "relationship_type": "starts_after", + "from_workplan_id": "ed077b62-7048-5752-bf65-f90471f45854", + "from_task_id": "3a454438-1955-547f-a491-8eab7cd25710", + "to_workplan_id": null, + "to_task_id": "7c8225f7-03dc-57b0-a668-c3d781bd828a" + }, + { + "workplan": "STATE-WP-0079", + "from": "STATE-WP-0079-T06", + "target": "STATE-WP-0079-T04", + "relationship_type": "starts_after", + "from_workplan_id": "ed077b62-7048-5752-bf65-f90471f45854", + "from_task_id": "9230c99b-af58-5794-9291-452e619a30fa", + "to_workplan_id": null, + "to_task_id": "3a454438-1955-547f-a491-8eab7cd25710" + }, + { + "workplan": "STATE-WP-0079", + "from": "STATE-WP-0079-T06", + "target": "STATE-WP-0079-T05", + "relationship_type": "starts_after", + "from_workplan_id": "ed077b62-7048-5752-bf65-f90471f45854", + "from_task_id": "9230c99b-af58-5794-9291-452e619a30fa", + "to_workplan_id": null, + "to_task_id": "f6cf8c01-eb59-5ca8-a541-23928d4a000c" + } + ], + "refused": [], + "notes": [] + } + } +} diff --git a/docs/changes/netkingdom-target-2026-10-17/state-hub-source-projection.json b/docs/changes/netkingdom-target-2026-10-17/state-hub-source-projection.json new file mode 100644 index 00000000..6461b86b --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/state-hub-source-projection.json @@ -0,0 +1,236 @@ +{ + "ok": true, + "status": "applied", + "repo_slug": "state-hub", + "commit": "51bc70d1ff8f25450a8650d8e50caf053093a02e", + "requests": 2, + "elapsed_ms": 4559.8, + "git": { + "upstream": "origin/main", + "behind": 0, + "ahead": 0 + }, + "identifiers": { + "schema": "repo-manager.identifier-assignment.v1", + "ok": true, + "executed": true, + "repo": "state-hub", + "namespace": "helixforge", + "assignments": [], + "historical_invalid_identifiers": [], + "files_changed": [] + }, + "receipt": { + "schema": "state-hub.repository-projection-reconcile.v1", + "outcome": { + "notes": [], + "commit": "51bc70d1ff8f25450a8650d8e50caf053093a02e", + "counts": { + "created": 0, + "refused": 0, + "retired": 0, + "updated": 70, + "released": 0, + "created_edges": 2, + "created_tasks": 3, + "removed_edges": 0, + "updated_tasks": 8, + "external_edges": 6, + "cancelled_tasks": 0, + "unresolved_edges": 1 + }, + "schema": "state-hub.projection-reset.v1", + "status": "applied", + "created": [], + "refused": [], + "retired": [], + "updated": [ + "CUST-WP-0003", + "CUST-WP-0011", + "CUST-WP-0012", + "CUST-WP-0038", + "CUST-WP-0042", + "STATE-WP-0043", + "STATE-WP-0044", + "STATE-WP-0045", + "STATE-WP-0046", + "STATE-WP-0047", + "STATE-WP-0048", + "STATE-WP-0049", + "STATE-WP-0050", + "STATE-WP-0051", + "STATE-WP-0052", + "STATE-WP-0053", + "STATE-WP-0054", + "STATE-WP-0055", + "STATE-WP-0056", + "STATE-WP-0057", + "STATE-WP-0058", + "STATE-WP-0059", + "STATE-WP-0060", + "STATE-WP-0061", + "STATE-WP-0062", + "STATE-WP-0063", + "STATE-WP-0064", + "STATE-WP-0065", + "STATE-WP-0066", + "STATE-WP-0067", + "STATE-WP-0068", + "STATE-WP-0069", + "STATE-WP-0070", + "STATE-WP-0071", + "STATE-WP-0072", + "STATE-WP-0073", + "STATE-WP-0074", + "STATE-WP-0075", + "STATE-WP-0076", + "STATE-WP-0077", + "STATE-WP-0078", + "STATE-WP-0079", + "STATE-WP-0080", + "STATE-WP-0081", + "STATE-WP-0082", + "STATE-WP-0083", + "STATE-WP-0084", + "STATE-WP-0085", + "STATE-WP-0086", + "STATE-WP-0087", + "STATE-WP-0088", + "STATE-WP-0089", + "STATE-WP-0090", + "STATE-WP-0091", + "STATE-WP-0092", + "STATE-WP-0093", + "STATE-WP-0094", + "STATE-WP-0095", + "STATE-WP-0096", + "STATE-WP-0097", + "STATE-WP-0098", + "STATE-WP-ADHOC-2026-06-04", + "STATE-WP-ADHOC-2026-07-01", + "STATE-WP-ADHOC-2026-08-08", + "STATE-WP-ADHOC-2026-08-23", + "STATE-WP-ADHOC-2026-08-30", + "STATE-WP-ADHOC-2026-09-04", + "STATE-WP-ADHOC-2026-09-22", + "STATE-WP-ADHOC-2026-10-06", + "STATE-WP-ADHOC-2026-10-13" + ], + "released": [], + "repo_slug": "state-hub", + "created_edges": [ + { + "from": "STATE-WP-0095-T06", + "target": "STATE-WP-0095-T05", + "workplan": "STATE-WP-0095", + "to_task_id": "339b9a37-181c-5599-9a89-0393e199bd4b", + "from_task_id": "6af973b4-1964-5d4d-a2f8-8dbd4c01fda4", + "to_workplan_id": null, + "from_workplan_id": "79579572-8120-5d3b-aca5-dd4aff60d058", + "relationship_type": "starts_after" + }, + { + "from": "STATE-WP-0095-T07", + "target": "STATE-WP-0095-T06", + "workplan": "STATE-WP-0095", + "to_task_id": "6af973b4-1964-5d4d-a2f8-8dbd4c01fda4", + "from_task_id": "cfd1ea99-e75b-542e-a434-acefb62f3c7d", + "to_workplan_id": null, + "from_workplan_id": "79579572-8120-5d3b-aca5-dd4aff60d058", + "relationship_type": "starts_after" + } + ], + "created_tasks": [ + "STATE-WP-0095-T05", + "STATE-WP-0095-T06", + "STATE-WP-0095-T07" + ], + "removed_edges": [], + "updated_tasks": [ + "STATE-WP-0079-T06", + "STATE-WP-0097-T01", + "STATE-WP-0097-T02", + "STATE-WP-0098-T01", + "STATE-WP-0098-T02", + "STATE-WP-0098-T03", + "STATE-WP-0098-T05", + "STATE-WP-0098-T04" + ], + "external_edges": [ + { + "from": "STATE-WP-0098-T04", + "target": "HUB-WP-0011-T01", + "workplan": "STATE-WP-0098", + "to_task_id": "588e4b58-4694-513c-8e7a-1fab38fb6ce3", + "from_task_id": "077797c8-289b-55ec-9597-28f223891b02", + "to_workplan_id": null, + "from_workplan_id": "0c68970e-295b-57fc-ac70-e472ee3a7bc4", + "relationship_type": "starts_after" + }, + { + "from": "CUST-WP-0038", + "target": "CUST-WP-0011", + "workplan": "CUST-WP-0038", + "to_task_id": null, + "from_task_id": null, + "to_workplan_id": "967baafb-d92d-405a-ba0b-0d00d37c4940", + "from_workplan_id": "ccb87fa4-6381-5f22-b097-6e026f56a9c1", + "relationship_type": "blocks" + }, + { + "from": "STATE-WP-0079-T04", + "target": "HUB-WP-0011-T03", + "workplan": "STATE-WP-0079", + "to_task_id": "61c727a5-f4b1-54c0-b634-7d71a5416496", + "from_task_id": "3a454438-1955-547f-a491-8eab7cd25710", + "to_workplan_id": null, + "from_workplan_id": "ed077b62-7048-5752-bf65-f90471f45854", + "relationship_type": "starts_after" + }, + { + "from": "STATE-WP-0079-T04", + "target": "HUB-WP-0006-T06", + "workplan": "STATE-WP-0079", + "to_task_id": "7c8225f7-03dc-57b0-a668-c3d781bd828a", + "from_task_id": "3a454438-1955-547f-a491-8eab7cd25710", + "to_workplan_id": null, + "from_workplan_id": "ed077b62-7048-5752-bf65-f90471f45854", + "relationship_type": "starts_after" + }, + { + "from": "STATE-WP-0079-T06", + "target": "STATE-WP-0079-T04", + "workplan": "STATE-WP-0079", + "to_task_id": "3a454438-1955-547f-a491-8eab7cd25710", + "from_task_id": "9230c99b-af58-5794-9291-452e619a30fa", + "to_workplan_id": null, + "from_workplan_id": "ed077b62-7048-5752-bf65-f90471f45854", + "relationship_type": "starts_after" + }, + { + "from": "STATE-WP-0079-T06", + "target": "STATE-WP-0079-T05", + "workplan": "STATE-WP-0079", + "to_task_id": "f6cf8c01-eb59-5ca8-a541-23928d4a000c", + "from_task_id": "9230c99b-af58-5794-9291-452e619a30fa", + "to_workplan_id": null, + "from_workplan_id": "ed077b62-7048-5752-bf65-f90471f45854", + "relationship_type": "starts_after" + } + ], + "cancelled_tasks": [], + "unresolved_edges": [ + { + "from": "STATE-WP-0095-T07", + "reason": "missing", + "target": "RMGR-WP-0019-T06", + "workplan": "STATE-WP-0095" + } + ] + }, + "instance_role": "primary", + "derived_commit": "51bc70d1ff8f25450a8650d8e50caf053093a02e", + "instance_label": "railiance01", + "expected_commit": "51bc70d1ff8f25450a8650d8e50caf053093a02e" + } +} diff --git a/docs/changes/netkingdom-target-2026-10-17/statehub-anonymous-registry-metadata.json b/docs/changes/netkingdom-target-2026-10-17/statehub-anonymous-registry-metadata.json new file mode 100644 index 00000000..a618b840 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/statehub-anonymous-registry-metadata.json @@ -0,0 +1,10 @@ +{ + "schema": "statehub.anonymous-registry-metadata.v1", + "tag": "main-51bc70d", + "anonymous_protocol_only": true, + "credential_files_read": false, + "token_retained": false, + "status": "verified", + "digest": "sha256:c802690ee1811b3d77df4077936f9cdced1385514e8673fcbc9232b84d645015", + "content_type": "application/vnd.docker.distribution.manifest.v2+json" +} diff --git a/docs/changes/netkingdom-target-2026-10-17/statehub-public-image-inspection.json b/docs/changes/netkingdom-target-2026-10-17/statehub-public-image-inspection.json new file mode 100644 index 00000000..6280bdab --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/statehub-public-image-inspection.json @@ -0,0 +1,793 @@ +{ + "schema": "statehub.public-image-inspection.v1", + "status": "verified_selected_image_files", + "source_revision": "51bc70d1ff8f25450a8650d8e50caf053093a02e", + "image_digest": "sha256:c802690ee1811b3d77df4077936f9cdced1385514e8673fcbc9232b84d645015", + "anonymous_protocol_only": true, + "token_retained": false, + "image_executed": false, + "image_installed_or_daemon_pulled": false, + "layers": [ + { + "digest": "sha256:304074f06047f3dee0c586de265e0e27b577930bc80dc7f97f3829b188bc4fb0", + "compressed_bytes": 30855435, + "archive_entries": 3271 + }, + { + "digest": "sha256:75b6a36c64a1cf3520fc4b4aae4739d5caa8a6a05c27835a920a61784c9c32f8", + "compressed_bytes": 1294052, + "archive_entries": 553 + }, + { + "digest": "sha256:6912e23eb44595b44dc6d9882b34f305ad6f6e9667cec70b13e5dbc4f8cd97f4", + "compressed_bytes": 12121637, + "archive_entries": 1828 + }, + { + "digest": "sha256:bbc5a12237474ec0b23b5051260d56d6436a24d70d9cad961adebe7a037ed813", + "compressed_bytes": 249, + "archive_entries": 8 + }, + { + "digest": "sha256:e16e3995c15e64ae03e700d74eab2389f1151e6bd5d40f55faa047e9124aeb20", + "compressed_bytes": 93, + "archive_entries": 1 + }, + { + "digest": "sha256:14568be832d0c877348328755de4e94cf4d0397d03f2161f6995e3b3e756e802", + "compressed_bytes": 55305356, + "archive_entries": 2898 + }, + { + "digest": "sha256:9ee1c6feff85c3b9712c7d8343e6c327a8ee1b082f37cefdfa2244b9fdd28406", + "compressed_bytes": 147, + "archive_entries": 2 + }, + { + "digest": "sha256:ebd558f7ac93e21ad9d1b273b34da19f4362aba6e0739652fb2b352b71e93ddd", + "compressed_bytes": 940, + "archive_entries": 2 + }, + { + "digest": "sha256:4cf8962d334554653d4dbac8b69ee3629718d25536770e3f4e1da9aad1472576", + "compressed_bytes": 35703653, + "archive_entries": 5471 + }, + { + "digest": "sha256:adf49866962dd84146dfdd5c8e1ebe60965ad9e1d374b206659fb3f551aa4db1", + "compressed_bytes": 597, + "archive_entries": 3 + }, + { + "digest": "sha256:bb45e8a5551018dd964779b61f9eddf72970f21823fa32639480b10f8d235632", + "compressed_bytes": 102606, + "archive_entries": 143 + }, + { + "digest": "sha256:8aa5d4c27dc487010452acc9f08389a273d766f8386e9bdd406e8f98f3ab5848", + "compressed_bytes": 109560, + "archive_entries": 160 + }, + { + "digest": "sha256:a93f5a86d2946b7252d0371005ddff465dae03333318d521664c7aeca647d07c", + "compressed_bytes": 475, + "archive_entries": 2 + }, + { + "digest": "sha256:e8e5c9610abcef120104391811e7a5939e801ad25d8068cb009998bf9dabbbcd", + "compressed_bytes": 242510, + "archive_entries": 181 + }, + { + "digest": "sha256:b94a90675a9955fbd9a6820330a5d50315968e9cde39f031e1a4ae18f0c76706", + "compressed_bytes": 1678, + "archive_entries": 7 + }, + { + "digest": "sha256:d89910d3cd5c8828cd34b9b71e9c3104fc72bbf7de04edd7df9126e63d0156bc", + "compressed_bytes": 36059, + "archive_entries": 7 + }, + { + "digest": "sha256:a2d71c0b3e090631997b3772f236136ae90b4465ec97666434f7820f40ed53e1", + "compressed_bytes": 33940, + "archive_entries": 63 + }, + { + "digest": "sha256:77dd1e3a6c5a2dd098d0cc4d4d54df78e4047bd1a5c58a8af504e535b61e283d", + "compressed_bytes": 10804, + "archive_entries": 8 + }, + { + "digest": "sha256:b093281106b7c7950be1cf369a34e13dbfee3aecd0ad5373e0ae595dd3785d1c", + "compressed_bytes": 2115, + "archive_entries": 3 + }, + { + "digest": "sha256:5589bbbc12cca5f6e2a21338fd713ae73f6214a95177fe0d230e3a841cf71b63", + "compressed_bytes": 154164, + "archive_entries": 67 + }, + { + "digest": "sha256:f6b994f6ae4af7bd279ee76ba4c1b1bff62d99045fcceb6d975f19ad213ba19e", + "compressed_bytes": 2965, + "archive_entries": 7 + }, + { + "digest": "sha256:a271446fc42551b8cd3409e25e6efd53be7972ee67ce8fbabacc20eb2eb70772", + "compressed_bytes": 538, + "archive_entries": 4 + } + ], + "files": { + "tmp/.ci-build-id": "sha256:cf947c3985e72e7f41cee1332260567220372fccd076cc320a4a22b2a6301ec4", + "tmp/hub-core/hub_core/__init__.py": "sha256:098578bae76f7d97354b8f3dfe8ddc63b15806a46d1691d70ed12d9839d69aec", + "tmp/hub-core/hub_core/conformance/__init__.py": "sha256:f7ce0a651913f157e586afd6e953b483add0dd5257ee9f2406c47e8d46ee9587", + "tmp/hub-core/hub_core/conformance/harness.py": "sha256:ca870fbbec7b7f5db6521d615fd76dfcbb9e97cbdfb037ffa993851a663b3c40", + "tmp/hub-core/hub_core/contracts/__init__.py": "sha256:ffb7a6b79ce15ddd57943bfbc40799e078c6f57c6690018237baa3f3a755ac49", + "tmp/hub-core/hub_core/contracts/helixforge_hub_extension/__init__.py": "sha256:32c095a16f777127ec0d2cd5e8373889866b81e9955d01e5adaf9503f6864da4", + "tmp/hub-core/hub_core/contracts/helixforge_hub_extension/v0_1_0/__init__.py": "sha256:e176b86b24d79c11f78ad714878bc3fca41c7821654fa766278b697360a41201", + "tmp/hub-core/hub_core/contracts/repository_navigation/__init__.py": "sha256:64912fe6673b72c3c0d8a2da28673d58bdf6f4185a1376ffe43d3735350adb60", + "tmp/hub-core/hub_core/contracts/repository_navigation/v1_0_0/__init__.py": "sha256:574cf1fee8433e0b11d9475cfbcc3837730b55f6ea1faa4920cba106d959464f", + "tmp/hub-core/hub_core/contracts/workload_projection/__init__.py": "sha256:c01198d23571442c1c3a596c7cd16be17dc1a3efdcfe3e8f9725b7dba16fc103", + "tmp/hub-core/hub_core/contracts/workload_projection/v1_0_0/__init__.py": "sha256:a9ecfecbf44893d32268288c872cdede0440d2a1373d37a47f69ba8c6431de0d", + "tmp/hub-core/hub_core/database.py": "sha256:a7704e97509433e90655b0ea22d5fa626d75b8b6470015ef8b9e5997e7a7f5ea", + "tmp/hub-core/hub_core/events.py": "sha256:c7125a242ed638a3ede29129e4ad826cd188cf76239b59a8587a40d182bbd0e7", + "tmp/hub-core/hub_core/mcp/__init__.py": "sha256:f97b25193573e56886b66f91cb8c86ef4a39f2100d709869e279e17456959859", + "tmp/hub-core/hub_core/mcp/credentials.py": "sha256:f5433d29848bd5a399a5e31695e0d908748e0a0856d26b2d691b667c50c95c34", + "tmp/hub-core/hub_core/mcp/server.py": "sha256:fc6a6de0a29ad9b6da176302a7d24e4ba987f667b6a7fb001029f00cb0d0c582", + "tmp/hub-core/hub_core/message_identity.py": "sha256:0ab996ba50f236c1342ce72ca8ae6ff28102ef41216972a745f7260e0c93fb24", + "tmp/hub-core/hub_core/migrations/__init__.py": "sha256:ccf4820e270c97fd5d4ac02f0c96362a772b8f4d1bcccc3f5e0077b77f575d36", + "tmp/hub-core/hub_core/migrations/env.py": "sha256:282e6e1a9e4a3cfdc111887f04dc5c1645307b3943a421852abe1709ce712e57", + "tmp/hub-core/hub_core/migrations/roles.py": "sha256:91e85297d296b0c4b9c78b16ae67d3a4707232d8f32b2cac2b2e84f31fa80e89", + "tmp/hub-core/hub_core/migrations/versions/0001_core_schema.py": "sha256:c65f076a7b56fb93ee67869e04d922ea396eab72a4c2d2f0dabd706c918aa081", + "tmp/hub-core/hub_core/migrations/versions/0002_runtime_ports.py": "sha256:d3ce15463841b3c13eaafdd137a65d4cf2839c0b8e8fddcb2cb2f1adbceb9f00", + "tmp/hub-core/hub_core/migrations/versions/0003_repository_navigation.py": "sha256:fb2d2cb5ed10f1760ab789ced8d43c657c1bedc29ba666231a70a18636160902", + "tmp/hub-core/hub_core/migrations/versions/0004_workload_projection.py": "sha256:87ce668bfef5cf4aaf0cfd3b48d498f2370f68e06a6e66375e446af6fbbb9c96", + "tmp/hub-core/hub_core/migrations/versions/0005_message_identity_aliases.py": "sha256:ec05d2c3cb906b78cdec4d220a7ce09264c38904c792cdad3cd1082e7eace7c0", + "tmp/hub-core/hub_core/migrations/versions/0006_outcome_outbox.py": "sha256:05effdf6f258836d1cd223f9d9fc3447d264484021d3a51cfa42517453d613e1", + "tmp/hub-core/hub_core/migrations/versions/__init__.py": "sha256:569f6d7e5cc1c17b7b1eee3eec3b82774b745d01ee1dfdf851a5c6f5c337f0bb", + "tmp/hub-core/hub_core/models/__init__.py": "sha256:c0b6de4986614a163dbb2467d15882eadbd66800478a50de4d6404198d1f773a", + "tmp/hub-core/hub_core/models/agent_message.py": "sha256:23d16eeaffe780f326b08e6c441100e6ae7b4075bbb6421734c06156a87c4375", + "tmp/hub-core/hub_core/models/base.py": "sha256:85bb40bde6f4cf8e6c5700a3a016a711fab4adff77c5eb78f89827fe28b9537b", + "tmp/hub-core/hub_core/models/capability_catalog.py": "sha256:eebbb31f264821a61662d3c9e8c7eba74f46d7f68b946e35f8127343bf2ff9c4", + "tmp/hub-core/hub_core/models/capability_request.py": "sha256:70a867c82aaa061a4e1c671b023d213032464e776226280f99e2ca192e2a6eba", + "tmp/hub-core/hub_core/models/domain.py": "sha256:ddf45c37e3c37014ddd9148be01cf104658e1601abba2a8ba96f7680cdb581b3", + "tmp/hub-core/hub_core/models/managed_repo.py": "sha256:835c5d44581daf7d7dd95325e3f7fdf0add4d529b83779ed83b5e812dcb3aa61", + "tmp/hub-core/hub_core/models/message_identity_alias.py": "sha256:d07d59cd9c9351669e8319727d08bc0e9bb7e0ee36bf8a34c0c258f0b4ea61e4", + "tmp/hub-core/hub_core/models/progress_event.py": "sha256:ee750127db2f49c5b9b94773a408f7f965d834b02e6d962220f4bc762309161f", + "tmp/hub-core/hub_core/models/tpsc.py": "sha256:cb28cbe3512486adb73c0bce633b3c542a41a64e7ec673e86a5a25ab20d94afe", + "tmp/hub-core/hub_core/routers/__init__.py": "sha256:800d1c45f597fcb4970ca7a83acd2b36016006efbdf638e14a3482a954d9046d", + "tmp/hub-core/hub_core/routers/capabilities.py": "sha256:18a403ad6ac961bc490543b698e079336f60ef9902a6cd71ef9899076660d5c0", + "tmp/hub-core/hub_core/routers/domains.py": "sha256:d4c4061d2ab0d2d6390a10f4f815deb0b93b3979345aee965b666110ba32e6e0", + "tmp/hub-core/hub_core/routers/messages.py": "sha256:903bd4f8c8ca599b606cf2229315de21097360816fcda907159dac4f48cee512", + "tmp/hub-core/hub_core/routers/policy.py": "sha256:358271263295fdebb5bcb95c3a27bd3ea456964a77bc01c3f784fb7a8754aacf", + "tmp/hub-core/hub_core/routers/progress.py": "sha256:680cf4dea00a1734d7d70ef7880acc8fd39f045521baa47f415c17934779d18a", + "tmp/hub-core/hub_core/routers/repos.py": "sha256:1bca6c9b2b5bbe172f5b935b763ac1e399b1d403cdc2c463000ae79f843257a2", + "tmp/hub-core/hub_core/routers/tpsc.py": "sha256:706815b01be1c0320bf73cf9cff3e9415c1f27b8449ee9e6fea67b12d3042fd1", + "tmp/hub-core/hub_core/runtime/__init__.py": "sha256:c522e626373407bf9bcd727dac7bb812cbdc8c3ef5bb6509a74949e5b49ab4c2", + "tmp/hub-core/hub_core/runtime/app.py": "sha256:87b077498bbe321c73139e51f7ca689fdc7963a98c4d72a5a3bbcc564f47ee76", + "tmp/hub-core/hub_core/runtime/cli.py": "sha256:98ec00f2a12911245827f515877472ae1c37cea65a42454494450ffbe7380e57", + "tmp/hub-core/hub_core/runtime/compat.py": "sha256:9f1c4575bb406ae1174da1a005ec16f44ace63768617e11164b44b4051162d0d", + "tmp/hub-core/hub_core/runtime/compat_catalogs.py": "sha256:250f61ea39cced32c8cd932c4e770ae8be54ff1cf1e257ee2c82324bde0d7a26", + "tmp/hub-core/hub_core/runtime/config.py": "sha256:009b2fc5d1f8fc390d478b01444f610ada91e5fee30534936382be2529a843fc", + "tmp/hub-core/hub_core/runtime/inbox_projection.py": "sha256:84499238654310b86f7a97f2817163ff4c4da0dfce562c677294fa3dfef7f398", + "tmp/hub-core/hub_core/runtime/migration.py": "sha256:d12731fa581c48bf58deec19405ece977c89d08993b2a2ad047cb1fd17318ea8", + "tmp/hub-core/hub_core/runtime/models.py": "sha256:367ca4aa29f59f8e3f59eab22f12782146cf623fa7ac7c22346c794b85a88185", + "tmp/hub-core/hub_core/runtime/ports.py": "sha256:ab70a401deae73389761a0e88dc8ee843df00a671fae6919b1f7eed344cfb542", + "tmp/hub-core/hub_core/runtime/postgres_store.py": "sha256:9286e7845009b66f00069d67177733dabe372d79986c33ca9b43e00dfa5a2341", + "tmp/hub-core/hub_core/runtime/repo_manager_client.py": "sha256:8fa305277c5f3ddfdbe1daf4023ce6c3cde03b5c18c1292dd6aac3fe995aabe1", + "tmp/hub-core/hub_core/runtime/repository_navigation.py": "sha256:f3503596781f3e7f7d53dd28dd3aaf563905f1398575b40c8080e2b1b9978b1e", + "tmp/hub-core/hub_core/runtime/repository_navigation_routes.py": "sha256:eab78ab418a7b542dcdcab5da023bacc65fb50520853f8d179accb2105e373cf", + "tmp/hub-core/hub_core/runtime/store.py": "sha256:2fb78f14bab8df08807322d6f6416745856d69e6001381246abbac879891858d", + "tmp/hub-core/hub_core/runtime/tables.py": "sha256:a5ff72a9c54eedcc8bb81330e62ee72578a383a1d03a1acb598c72c96cdfbe9e", + "tmp/hub-core/hub_core/runtime/validation.py": "sha256:2add804d95d5d0469d6d8d605fbd1013885da972489a017260c6fddef7b80c79", + "tmp/hub-core/hub_core/runtime/workload_projection.py": "sha256:8500260404b0c566a62e51fef63ee320d4e3dafe5e2467f44db884296b9e3bf4", + "tmp/hub-core/hub_core/runtime/workload_projection_routes.py": "sha256:5c71189b98867f2f1f7612f47ee69c0ec3ddf836b9b1c7e134b98a2be45791de", + "tmp/hub-core/hub_core/schemas/__init__.py": "sha256:dfa2ec2d125f03a532637d2fbef3058ebe1f85c515ff42a930198e164b7812f7", + "tmp/hub-core/hub_core/schemas/agent_message.py": "sha256:d6a7f40dc9a3c61be761f4d2e2c08f726fb0a423ef73e273a7cd97c69ae6c6a3", + "tmp/hub-core/hub_core/schemas/capability.py": "sha256:949c55cb1f2694de4617ad53dc9cb7bc0e72addd7b9d0f104b93d783e4edc647", + "tmp/hub-core/hub_core/schemas/doi.py": "sha256:73d675aecabd5a62ae13184494a4b9db122ad24b3132e1d0e908eef802382f36", + "tmp/hub-core/hub_core/schemas/domain.py": "sha256:872a704fea959d2e4d0ff771770a97160457282218f4748ba4f830c489543aac", + "tmp/hub-core/hub_core/schemas/managed_repo.py": "sha256:a7ab3b1ab399da81324693dcd5d3feeccb211642b10f11cd3f03c7fe6ba751d4", + "tmp/hub-core/hub_core/schemas/policy.py": "sha256:bdaef1640783ac325a050cadf214e731d7c8e5e3a35dbb8f7562d5abbd209a4c", + "tmp/hub-core/hub_core/schemas/progress_event.py": "sha256:9ac7b7fd4881d424bfe59c5001554fd7302243e8489d5e777584d11ead1db328", + "tmp/hub-core/hub_core/schemas/tpsc.py": "sha256:5640d96a7fa862a468eeb0d6da002697b1f58e4cd675a4603b91e448d4db851e", + "tmp/hub-core/hub_core/security/__init__.py": "sha256:2754e25ec0f5725c33cb0b4dff1b7d10b364ebd828e609bb5b44eee3309d2d60", + "tmp/hub-core/hub_core/security/account_reader.py": "sha256:27019616b84cf030969a8e3c0850b5ae52f336008fd9daa4c26360566e74a39b", + "tmp/hub-core/hub_core/security/audit.py": "sha256:94cb85d71f065443c6423871b59d41e929af0441c95928273caf3e38dad8125c", + "tmp/hub-core/hub_core/security/boundary.py": "sha256:a1629ac717672276f61015c83f7af6e375bbd8c1234c712dd3d225da307ae0d6", + "tmp/hub-core/hub_core/security/browser.py": "sha256:fd474ee4b9611fe8dd2c60111402c2fce67d680a7da3519b5d4a495a6b559b7a", + "tmp/hub-core/hub_core/security/config.py": "sha256:7d604f6aeebde393a371ec3e0ab174934e10808c29fb370acba031486e9c02a3", + "tmp/hub-core/hub_core/security/context.py": "sha256:1181bbf12ba86bfd5046dab2f3a22a64ee3686be6dd52ab3e843303349b13a52", + "tmp/hub-core/hub_core/security/facts.py": "sha256:3de4db38ffd3f86f4918d76f811289cd501be3c28dcba16f5088aa2a2b7529ce", + "tmp/hub-core/hub_core/security/identity.py": "sha256:d7a0bab9d59a5f342fdedc9723d818a9d2537a59c6a9415455786af748f912e9", + "tmp/hub-core/hub_core/security/policy.py": "sha256:a2370e9ea5b04b1d5a429644d7f81edb1cbe8e15214c23b16cd6f949613eebd6", + "tmp/hub-core/hub_core/utils/__init__.py": "sha256:ce4ddb30ccc4fd2c4ee59e8a3c088a12165171af02aea957f17f72cd868e1899", + "tmp/hub-core/hub_core/utils/pagination.py": "sha256:366250b85052c7aabc2a2262521d34233124ba3a41026042792f8eda706ecb4f", + "tmp/hub-core/hub_core/utils/paths.py": "sha256:988a889be74f0626ca3c27b1d6677bd4a556e35de389c060d07ab64fa1c22fc8", + "tmp/hub-core/hub_core/utils/routing.py": "sha256:c94b44c5f1ab723e123503e20e0309f28abeeabea6d51beda79247d99852ad1e", + "tmp/hub-core/hub_core/utils/slugs.py": "sha256:eda7a7d18ff21a4d949223b75a2b615a949e615f461152a9cb9a2cf74b491e2d", + "app/.venv/lib/python3.12/site-packages/hub_core/__init__.py": "sha256:098578bae76f7d97354b8f3dfe8ddc63b15806a46d1691d70ed12d9839d69aec", + "app/.venv/lib/python3.12/site-packages/hub_core/conformance/__init__.py": "sha256:f7ce0a651913f157e586afd6e953b483add0dd5257ee9f2406c47e8d46ee9587", + "app/.venv/lib/python3.12/site-packages/hub_core/conformance/harness.py": "sha256:ca870fbbec7b7f5db6521d615fd76dfcbb9e97cbdfb037ffa993851a663b3c40", + "app/.venv/lib/python3.12/site-packages/hub_core/contracts/__init__.py": "sha256:ffb7a6b79ce15ddd57943bfbc40799e078c6f57c6690018237baa3f3a755ac49", + "app/.venv/lib/python3.12/site-packages/hub_core/contracts/helixforge_hub_extension/__init__.py": "sha256:32c095a16f777127ec0d2cd5e8373889866b81e9955d01e5adaf9503f6864da4", + "app/.venv/lib/python3.12/site-packages/hub_core/contracts/helixforge_hub_extension/v0_1_0/__init__.py": "sha256:e176b86b24d79c11f78ad714878bc3fca41c7821654fa766278b697360a41201", + "app/.venv/lib/python3.12/site-packages/hub_core/contracts/repository_navigation/__init__.py": "sha256:64912fe6673b72c3c0d8a2da28673d58bdf6f4185a1376ffe43d3735350adb60", + "app/.venv/lib/python3.12/site-packages/hub_core/contracts/repository_navigation/v1_0_0/__init__.py": "sha256:574cf1fee8433e0b11d9475cfbcc3837730b55f6ea1faa4920cba106d959464f", + "app/.venv/lib/python3.12/site-packages/hub_core/contracts/workload_projection/__init__.py": "sha256:c01198d23571442c1c3a596c7cd16be17dc1a3efdcfe3e8f9725b7dba16fc103", + "app/.venv/lib/python3.12/site-packages/hub_core/contracts/workload_projection/v1_0_0/__init__.py": "sha256:a9ecfecbf44893d32268288c872cdede0440d2a1373d37a47f69ba8c6431de0d", + "app/.venv/lib/python3.12/site-packages/hub_core/database.py": "sha256:a7704e97509433e90655b0ea22d5fa626d75b8b6470015ef8b9e5997e7a7f5ea", + "app/.venv/lib/python3.12/site-packages/hub_core/events.py": "sha256:c7125a242ed638a3ede29129e4ad826cd188cf76239b59a8587a40d182bbd0e7", + "app/.venv/lib/python3.12/site-packages/hub_core/mcp/__init__.py": "sha256:f97b25193573e56886b66f91cb8c86ef4a39f2100d709869e279e17456959859", + "app/.venv/lib/python3.12/site-packages/hub_core/mcp/credentials.py": "sha256:f5433d29848bd5a399a5e31695e0d908748e0a0856d26b2d691b667c50c95c34", + "app/.venv/lib/python3.12/site-packages/hub_core/mcp/server.py": "sha256:fc6a6de0a29ad9b6da176302a7d24e4ba987f667b6a7fb001029f00cb0d0c582", + "app/.venv/lib/python3.12/site-packages/hub_core/message_identity.py": "sha256:0ab996ba50f236c1342ce72ca8ae6ff28102ef41216972a745f7260e0c93fb24", + "app/.venv/lib/python3.12/site-packages/hub_core/migrations/__init__.py": "sha256:ccf4820e270c97fd5d4ac02f0c96362a772b8f4d1bcccc3f5e0077b77f575d36", + "app/.venv/lib/python3.12/site-packages/hub_core/migrations/env.py": "sha256:282e6e1a9e4a3cfdc111887f04dc5c1645307b3943a421852abe1709ce712e57", + "app/.venv/lib/python3.12/site-packages/hub_core/migrations/roles.py": "sha256:91e85297d296b0c4b9c78b16ae67d3a4707232d8f32b2cac2b2e84f31fa80e89", + "app/.venv/lib/python3.12/site-packages/hub_core/migrations/versions/0001_core_schema.py": "sha256:c65f076a7b56fb93ee67869e04d922ea396eab72a4c2d2f0dabd706c918aa081", + "app/.venv/lib/python3.12/site-packages/hub_core/migrations/versions/0002_runtime_ports.py": "sha256:d3ce15463841b3c13eaafdd137a65d4cf2839c0b8e8fddcb2cb2f1adbceb9f00", + "app/.venv/lib/python3.12/site-packages/hub_core/migrations/versions/0003_repository_navigation.py": "sha256:fb2d2cb5ed10f1760ab789ced8d43c657c1bedc29ba666231a70a18636160902", + "app/.venv/lib/python3.12/site-packages/hub_core/migrations/versions/0004_workload_projection.py": "sha256:87ce668bfef5cf4aaf0cfd3b48d498f2370f68e06a6e66375e446af6fbbb9c96", + "app/.venv/lib/python3.12/site-packages/hub_core/migrations/versions/0005_message_identity_aliases.py": "sha256:ec05d2c3cb906b78cdec4d220a7ce09264c38904c792cdad3cd1082e7eace7c0", + "app/.venv/lib/python3.12/site-packages/hub_core/migrations/versions/0006_outcome_outbox.py": "sha256:05effdf6f258836d1cd223f9d9fc3447d264484021d3a51cfa42517453d613e1", + "app/.venv/lib/python3.12/site-packages/hub_core/migrations/versions/__init__.py": "sha256:569f6d7e5cc1c17b7b1eee3eec3b82774b745d01ee1dfdf851a5c6f5c337f0bb", + "app/.venv/lib/python3.12/site-packages/hub_core/models/__init__.py": "sha256:c0b6de4986614a163dbb2467d15882eadbd66800478a50de4d6404198d1f773a", + "app/.venv/lib/python3.12/site-packages/hub_core/models/agent_message.py": "sha256:23d16eeaffe780f326b08e6c441100e6ae7b4075bbb6421734c06156a87c4375", + "app/.venv/lib/python3.12/site-packages/hub_core/models/base.py": "sha256:85bb40bde6f4cf8e6c5700a3a016a711fab4adff77c5eb78f89827fe28b9537b", + "app/.venv/lib/python3.12/site-packages/hub_core/models/capability_catalog.py": "sha256:eebbb31f264821a61662d3c9e8c7eba74f46d7f68b946e35f8127343bf2ff9c4", + "app/.venv/lib/python3.12/site-packages/hub_core/models/capability_request.py": "sha256:70a867c82aaa061a4e1c671b023d213032464e776226280f99e2ca192e2a6eba", + "app/.venv/lib/python3.12/site-packages/hub_core/models/domain.py": "sha256:ddf45c37e3c37014ddd9148be01cf104658e1601abba2a8ba96f7680cdb581b3", + "app/.venv/lib/python3.12/site-packages/hub_core/models/managed_repo.py": "sha256:835c5d44581daf7d7dd95325e3f7fdf0add4d529b83779ed83b5e812dcb3aa61", + "app/.venv/lib/python3.12/site-packages/hub_core/models/message_identity_alias.py": "sha256:d07d59cd9c9351669e8319727d08bc0e9bb7e0ee36bf8a34c0c258f0b4ea61e4", + "app/.venv/lib/python3.12/site-packages/hub_core/models/progress_event.py": "sha256:ee750127db2f49c5b9b94773a408f7f965d834b02e6d962220f4bc762309161f", + "app/.venv/lib/python3.12/site-packages/hub_core/models/tpsc.py": "sha256:cb28cbe3512486adb73c0bce633b3c542a41a64e7ec673e86a5a25ab20d94afe", + "app/.venv/lib/python3.12/site-packages/hub_core/routers/__init__.py": "sha256:800d1c45f597fcb4970ca7a83acd2b36016006efbdf638e14a3482a954d9046d", + "app/.venv/lib/python3.12/site-packages/hub_core/routers/capabilities.py": "sha256:18a403ad6ac961bc490543b698e079336f60ef9902a6cd71ef9899076660d5c0", + "app/.venv/lib/python3.12/site-packages/hub_core/routers/domains.py": "sha256:d4c4061d2ab0d2d6390a10f4f815deb0b93b3979345aee965b666110ba32e6e0", + "app/.venv/lib/python3.12/site-packages/hub_core/routers/messages.py": "sha256:903bd4f8c8ca599b606cf2229315de21097360816fcda907159dac4f48cee512", + "app/.venv/lib/python3.12/site-packages/hub_core/routers/policy.py": "sha256:358271263295fdebb5bcb95c3a27bd3ea456964a77bc01c3f784fb7a8754aacf", + "app/.venv/lib/python3.12/site-packages/hub_core/routers/progress.py": "sha256:680cf4dea00a1734d7d70ef7880acc8fd39f045521baa47f415c17934779d18a", + "app/.venv/lib/python3.12/site-packages/hub_core/routers/repos.py": "sha256:1bca6c9b2b5bbe172f5b935b763ac1e399b1d403cdc2c463000ae79f843257a2", + "app/.venv/lib/python3.12/site-packages/hub_core/routers/tpsc.py": "sha256:706815b01be1c0320bf73cf9cff3e9415c1f27b8449ee9e6fea67b12d3042fd1", + "app/.venv/lib/python3.12/site-packages/hub_core/runtime/__init__.py": "sha256:c522e626373407bf9bcd727dac7bb812cbdc8c3ef5bb6509a74949e5b49ab4c2", + "app/.venv/lib/python3.12/site-packages/hub_core/runtime/app.py": "sha256:87b077498bbe321c73139e51f7ca689fdc7963a98c4d72a5a3bbcc564f47ee76", + "app/.venv/lib/python3.12/site-packages/hub_core/runtime/cli.py": "sha256:98ec00f2a12911245827f515877472ae1c37cea65a42454494450ffbe7380e57", + "app/.venv/lib/python3.12/site-packages/hub_core/runtime/compat.py": "sha256:9f1c4575bb406ae1174da1a005ec16f44ace63768617e11164b44b4051162d0d", + "app/.venv/lib/python3.12/site-packages/hub_core/runtime/compat_catalogs.py": "sha256:250f61ea39cced32c8cd932c4e770ae8be54ff1cf1e257ee2c82324bde0d7a26", + "app/.venv/lib/python3.12/site-packages/hub_core/runtime/config.py": "sha256:009b2fc5d1f8fc390d478b01444f610ada91e5fee30534936382be2529a843fc", + "app/.venv/lib/python3.12/site-packages/hub_core/runtime/inbox_projection.py": "sha256:84499238654310b86f7a97f2817163ff4c4da0dfce562c677294fa3dfef7f398", + "app/.venv/lib/python3.12/site-packages/hub_core/runtime/migration.py": "sha256:d12731fa581c48bf58deec19405ece977c89d08993b2a2ad047cb1fd17318ea8", + "app/.venv/lib/python3.12/site-packages/hub_core/runtime/models.py": "sha256:367ca4aa29f59f8e3f59eab22f12782146cf623fa7ac7c22346c794b85a88185", + "app/.venv/lib/python3.12/site-packages/hub_core/runtime/ports.py": "sha256:ab70a401deae73389761a0e88dc8ee843df00a671fae6919b1f7eed344cfb542", + "app/.venv/lib/python3.12/site-packages/hub_core/runtime/postgres_store.py": "sha256:9286e7845009b66f00069d67177733dabe372d79986c33ca9b43e00dfa5a2341", + "app/.venv/lib/python3.12/site-packages/hub_core/runtime/repo_manager_client.py": "sha256:8fa305277c5f3ddfdbe1daf4023ce6c3cde03b5c18c1292dd6aac3fe995aabe1", + "app/.venv/lib/python3.12/site-packages/hub_core/runtime/repository_navigation.py": "sha256:f3503596781f3e7f7d53dd28dd3aaf563905f1398575b40c8080e2b1b9978b1e", + "app/.venv/lib/python3.12/site-packages/hub_core/runtime/repository_navigation_routes.py": "sha256:eab78ab418a7b542dcdcab5da023bacc65fb50520853f8d179accb2105e373cf", + "app/.venv/lib/python3.12/site-packages/hub_core/runtime/store.py": "sha256:2fb78f14bab8df08807322d6f6416745856d69e6001381246abbac879891858d", + "app/.venv/lib/python3.12/site-packages/hub_core/runtime/tables.py": "sha256:a5ff72a9c54eedcc8bb81330e62ee72578a383a1d03a1acb598c72c96cdfbe9e", + "app/.venv/lib/python3.12/site-packages/hub_core/runtime/validation.py": "sha256:2add804d95d5d0469d6d8d605fbd1013885da972489a017260c6fddef7b80c79", + "app/.venv/lib/python3.12/site-packages/hub_core/runtime/workload_projection.py": "sha256:8500260404b0c566a62e51fef63ee320d4e3dafe5e2467f44db884296b9e3bf4", + "app/.venv/lib/python3.12/site-packages/hub_core/runtime/workload_projection_routes.py": "sha256:5c71189b98867f2f1f7612f47ee69c0ec3ddf836b9b1c7e134b98a2be45791de", + "app/.venv/lib/python3.12/site-packages/hub_core/schemas/__init__.py": "sha256:dfa2ec2d125f03a532637d2fbef3058ebe1f85c515ff42a930198e164b7812f7", + "app/.venv/lib/python3.12/site-packages/hub_core/schemas/agent_message.py": "sha256:d6a7f40dc9a3c61be761f4d2e2c08f726fb0a423ef73e273a7cd97c69ae6c6a3", + "app/.venv/lib/python3.12/site-packages/hub_core/schemas/capability.py": "sha256:949c55cb1f2694de4617ad53dc9cb7bc0e72addd7b9d0f104b93d783e4edc647", + "app/.venv/lib/python3.12/site-packages/hub_core/schemas/doi.py": "sha256:73d675aecabd5a62ae13184494a4b9db122ad24b3132e1d0e908eef802382f36", + "app/.venv/lib/python3.12/site-packages/hub_core/schemas/domain.py": "sha256:872a704fea959d2e4d0ff771770a97160457282218f4748ba4f830c489543aac", + "app/.venv/lib/python3.12/site-packages/hub_core/schemas/managed_repo.py": "sha256:a7ab3b1ab399da81324693dcd5d3feeccb211642b10f11cd3f03c7fe6ba751d4", + "app/.venv/lib/python3.12/site-packages/hub_core/schemas/policy.py": "sha256:bdaef1640783ac325a050cadf214e731d7c8e5e3a35dbb8f7562d5abbd209a4c", + "app/.venv/lib/python3.12/site-packages/hub_core/schemas/progress_event.py": "sha256:9ac7b7fd4881d424bfe59c5001554fd7302243e8489d5e777584d11ead1db328", + "app/.venv/lib/python3.12/site-packages/hub_core/schemas/tpsc.py": "sha256:5640d96a7fa862a468eeb0d6da002697b1f58e4cd675a4603b91e448d4db851e", + "app/.venv/lib/python3.12/site-packages/hub_core/security/__init__.py": "sha256:2754e25ec0f5725c33cb0b4dff1b7d10b364ebd828e609bb5b44eee3309d2d60", + "app/.venv/lib/python3.12/site-packages/hub_core/security/account_reader.py": "sha256:27019616b84cf030969a8e3c0850b5ae52f336008fd9daa4c26360566e74a39b", + "app/.venv/lib/python3.12/site-packages/hub_core/security/audit.py": "sha256:94cb85d71f065443c6423871b59d41e929af0441c95928273caf3e38dad8125c", + "app/.venv/lib/python3.12/site-packages/hub_core/security/boundary.py": "sha256:a1629ac717672276f61015c83f7af6e375bbd8c1234c712dd3d225da307ae0d6", + "app/.venv/lib/python3.12/site-packages/hub_core/security/browser.py": "sha256:fd474ee4b9611fe8dd2c60111402c2fce67d680a7da3519b5d4a495a6b559b7a", + "app/.venv/lib/python3.12/site-packages/hub_core/security/config.py": "sha256:7d604f6aeebde393a371ec3e0ab174934e10808c29fb370acba031486e9c02a3", + "app/.venv/lib/python3.12/site-packages/hub_core/security/context.py": "sha256:1181bbf12ba86bfd5046dab2f3a22a64ee3686be6dd52ab3e843303349b13a52", + "app/.venv/lib/python3.12/site-packages/hub_core/security/facts.py": "sha256:3de4db38ffd3f86f4918d76f811289cd501be3c28dcba16f5088aa2a2b7529ce", + "app/.venv/lib/python3.12/site-packages/hub_core/security/identity.py": "sha256:d7a0bab9d59a5f342fdedc9723d818a9d2537a59c6a9415455786af748f912e9", + "app/.venv/lib/python3.12/site-packages/hub_core/security/policy.py": "sha256:a2370e9ea5b04b1d5a429644d7f81edb1cbe8e15214c23b16cd6f949613eebd6", + "app/.venv/lib/python3.12/site-packages/hub_core/utils/__init__.py": "sha256:ce4ddb30ccc4fd2c4ee59e8a3c088a12165171af02aea957f17f72cd868e1899", + "app/.venv/lib/python3.12/site-packages/hub_core/utils/pagination.py": "sha256:366250b85052c7aabc2a2262521d34233124ba3a41026042792f8eda706ecb4f", + "app/.venv/lib/python3.12/site-packages/hub_core/utils/paths.py": "sha256:988a889be74f0626ca3c27b1d6677bd4a556e35de389c060d07ab64fa1c22fc8", + "app/.venv/lib/python3.12/site-packages/hub_core/utils/routing.py": "sha256:c94b44c5f1ab723e123503e20e0309f28abeeabea6d51beda79247d99852ad1e", + "app/.venv/lib/python3.12/site-packages/hub_core/utils/slugs.py": "sha256:eda7a7d18ff21a4d949223b75a2b615a949e615f461152a9cb9a2cf74b491e2d", + "app/api/services/historical_projection.py": "sha256:e3c4bf965764b32a6df5d61c71272ee22569df9a9ddae2a3fc3df97ec554e0b2", + "app/migrations/versions/0001_initial_schema.py": "sha256:4638ac95fcf60144a01dce209e1ded399a5bd3571c0f8e280c1214a101290fe7", + "app/migrations/versions/0b547c153153_add_workstream_dependencies.py": "sha256:a8c778098ba869b68b7b80fbea68242018daddda4a9ca2bf4e155422e51b3a39", + "app/migrations/versions/5733434addf4_merge_task_status_canon_and_legacy_.py": "sha256:1e53e544051358364a5ef9768a04ad65f1192f51b419de6b6e8159b74c3cb156", + "app/migrations/versions/a0b1c2d3e4f5_memo_notification_receipts.py": "sha256:a8a9323192f727a5884f2af62c5a82828840230ded6eaa870825c7216a396051", + "app/migrations/versions/a3b4c5d6e7f8_gems_pass3_sbom_snapshot.py": "sha256:1fbe283ffcc17680152044030104a244fb333a8ba3d0f0c5cd25aec364614d35", + "app/migrations/versions/a3f1c2d4e5b6_add_extension_points_and_technical_debt.py": "sha256:59c43530ac927dde007e5e76c4c540f96c40df5563b532008e52d6728630e8ea", + "app/migrations/versions/a4d5e6f7b8c9_allow_guarded_slug_rollback.py": "sha256:36de3f5f88328c43dbfd2d153933a2e52216e37e38e75142b1ead0d3870ce59d", + "app/migrations/versions/a4v5w6x7y8z0_legacy_meter.py": "sha256:9e51355b5863117aa0f997ed461900f91c32333c2eb785aaa14832164cb58616", + "app/migrations/versions/a4v5w6x7y8z9_task_status_canon.py": "sha256:2520c8e7880624f382ef3cf33dc64de4af1c2a88749eed5504f24aa5cf650b4c", + "app/migrations/versions/a7c3e9f1b4d2_intake_work_record_entity.py": "sha256:57434af88a59b5050be8ba4a41019cfb1b2b036d37762ff73d14b8ef3af1f28c", + "app/migrations/versions/b1c2d3e4f5a6_v0_5_dynamic_domains_and_managed_repos.py": "sha256:f84fca90c96353d48c33765cd078bf104fc826465647641b04d78ff13a52299b", + "app/migrations/versions/b3c4d5e6f7a8_workplan_dependency_source_owner.py": "sha256:900a7c711ff32e70c04e2864bcc9a9ce94aad0c72e7dc4010cf8dfdaf8a342f0", + "app/migrations/versions/b4c5d6e7f8a9_add_needs_human.py": "sha256:700a35280e37b2c4941e19cb28655bed1a7fe16de607c1935f4e82de57ca1794", + "app/migrations/versions/b5e6f7a8c9d0_fabric_snapshot_set_revision.py": "sha256:19f0ad8b663035605e684762ba5f286e8b5d6c3e6f9361c57331e2e540b83798", + "app/migrations/versions/b8d4f0a2c6e1_work_record_identifier_aliases.py": "sha256:9c785bd0692b464baed52c8c08455cf7f24c69f34341099fbcf65cc11847ab4f", + "app/migrations/versions/c2d3e4f5a6b7_v0_3_contributions.py": "sha256:3101323722e72db70cd7168065136e57447ee515ef9f4d2492e4660735ad6e97", + "app/migrations/versions/c4d5e6f7a8b9_inbox_feed_revision.py": "sha256:48f1730037be99b5623e878d7f20a06bec243ce27317fde81c82e16006d7b3ce", + "app/migrations/versions/c5d6e7f8a9b0_add_goals.py": "sha256:9ce278579929df0bffad6bc4cf47fc58ad675350897519ef198d29104c180613", + "app/migrations/versions/c6f7a8b9d0e1_work_record_flavor.py": "sha256:c7a2eedf6750c8414ab0007388788f52e2b954a47a42ecb5e779b2a31f0e12a1", + "app/migrations/versions/c7d8e9f0a1b2_service_catalog.py": "sha256:70cabce13f37c204b4ec007f6aa727c31f0b5c9cbb717d3c3db5e9ba45912a38", + "app/migrations/versions/c9e5a1b3d7f2_review_contracts_and_receipts.py": "sha256:7cbc0615c2c05c7cea91841188e471b6344652a5af6fa991a151231705af0374", + "app/migrations/versions/d1a2b3c4e5f6_workplan_projection_retirement.py": "sha256:9732342f8324e878352ed4c496d3bf05c9c1d485186ae0c4f29507b995dfd958", + "app/migrations/versions/d3e4f5a6b7c8_v0_3_sbom_entries.py": "sha256:090dd86e15ea4737ec3d7523f787ca6ea0ef3143b5060a6743c6e024e319342c", + "app/migrations/versions/d6e7f8a9b0c1_sbom_ecosystem_expand.py": "sha256:e08de5e1d90becf24ee995cb6a4652cae117b05e77930aa3cd2d9a1f62b7edea", + "app/migrations/versions/d7e8f9a0b1c2_broadcast_receipts_and_notices.py": "sha256:1220d62bcc15a680675fd90d234af3241ad2e1e5b05d173997abb21ce6b95370", + "app/migrations/versions/d8e9f0a1b2c3_repo_anchored_classification_spine.py": "sha256:a5247f4079f8e3fe45700b52d5009db60d364c66aa9259f39ebf659d608d9780", + "app/migrations/versions/e1f2a3b4c5d6_gems_pass1_domain_fk.py": "sha256:e6dab685b0c991053f447bb335bf12f03f981cf0c409f44df80a4d4d79935bea", + "app/migrations/versions/e2b3c4d5f6a7_task_canonical_record_id.py": "sha256:f70c44498b5b13cc05b6bd136381b97e9ea4431597da25f656b6ee43fcfc11a7", + "app/migrations/versions/e2f3a4b5c6d7_add_last_state_synced_at_to_repos.py": "sha256:b1e773ad0d6255abefe260066d09989f210fd9bad07f0da2ec4328635339b702", + "app/migrations/versions/e8f9a0b1c2d3_task_wait_qualifiers.py": "sha256:ae8e8bee00cc19b3e0f79d888a37a82c556e6ec8827b5bc4a8c2a4e71fd8906a", + "app/migrations/versions/e9f0a1b2c3d4_write_idempotency_keys.py": "sha256:428dc61fd07ac2534718c31685dcde68c47f61e2e83ceb28c24b09948436640d", + "app/migrations/versions/f0a1b2c3d4e5_suggestions.py": "sha256:0d63e760ffce0f7f1da7c7214fdf102ab33cc3a5f032bd8e314293eea64a542e", + "app/migrations/versions/f1a2b3c4d5e6_workplan_file_backing.py": "sha256:8c836da6f0232f218197f51c5e17c64fd1f56dca6552609d88b52f294c69e3d6", + "app/migrations/versions/f2a3b4c5d6e7_gems_pass2_workstream_repo_id.py": "sha256:169bc1b77e9e80f7ce5c792278e2c97eadbc0a42368cdb091b60348e1fc9eb3d", + "app/migrations/versions/f3a4b5c6d7e8_add_agent_messages.py": "sha256:63ef4f5a7e02cbc591f672f8cd898487e4491a945ace069f434a566c322c53b4", + "app/migrations/versions/f3c4d5e6a7b8_repository_rename_identity.py": "sha256:ae4a385ede7e77b67a76a16621e88f67aaee8936e6eae926a67e723a2c85964b", + "app/migrations/versions/f9a0b1c2d3e4_task_wait_window.py": "sha256:dc28b7c1d43992c7fd153597ed07231f56896b4e7787f1b95c89b170a1cad5f4", + "app/migrations/versions/g4b5c6d7e8f9_add_host_paths_to_repos.py": "sha256:512b3be4f371639510a761c2cc64b575c27135c6407a2c6778f577574c51984b", + "app/migrations/versions/h5c6d7e8f9a0_suggestion_workflow.py": "sha256:f6a1cbe438d2c98c51bb45867f56d098c5f537348fe6667e339d133837008103", + "app/migrations/versions/i6d7e8f9a0b1_capability_requests.py": "sha256:3b9529237f267b1c2d7a0ab572730577caa930f7293676f6f6d1dbede07ddd53", + "app/migrations/versions/j7e8f9a0b1c2_tpsc.py": "sha256:206af55bb3f4572a34381d88bee49631cf65bb25397f8e3f6ba0aaac882436cc", + "app/migrations/versions/k8f9a0b1c2d3_doi_cache.py": "sha256:2988362775a02973523d579fc8f69cbdc8dda0a0179987a8351f02847cc9c5d1", + "app/migrations/versions/l9g0h1i2j3k4_capability_request_routing_note.py": "sha256:3d6fbc9e824a25d70d31881636f71bd96f3fe91dca6e1abdeccfa43e7746b939", + "app/migrations/versions/m0h1i2j3k4l5_capability_request_dispute.py": "sha256:bc13d20c0277ee9fa13fb7466fafb8f0abf0fd58e67755de22697b0ae40aff8d", + "app/migrations/versions/n1i2j3k4l5m6_add_git_fingerprint_to_repos.py": "sha256:bb47feceea45f7f3530f998479667405e309e351485cb0e01465f9b90affdf9d", + "app/migrations/versions/o2j3k4l5m6n7_add_token_events.py": "sha256:560c0692bcd68d039199d1b15b8524aeb7c63836e87085c4c1976cec00a9797d", + "app/migrations/versions/p3k4l5m6n7o8_add_repo_id_to_capability_catalog.py": "sha256:d8bbc8072c0af2ba1ea67510d29dd7737da2709085ea53cd2bdd076d41fdf8e6", + "app/migrations/versions/q4l5m6n7o8p9_add_interface_changes.py": "sha256:00c8e8a1f78a7235dd955fe46976b4d6ceaff581e6e67e4ba00d861c73094a3e", + "app/migrations/versions/r5m6n7o8p9q0_workstream_status_string.py": "sha256:96fa510bd09e2e0f93bf99effbbbc0747bd490e2441587e755de80631e682cd4", + "app/migrations/versions/s6n7o8p9q0r1_workstream_planning_metadata.py": "sha256:f0e7fef728af3f6b3150ed7d86981948aab9c5d3307a3a0b23ff068c246ed2b1", + "app/migrations/versions/t7o8p9q0r1s2_perf_indexes.py": "sha256:293e24b31ca75c922588e68d9e12d967c38fb45764b1f5e6ff18ec0fe18fe055", + "app/migrations/versions/u8p9q0r1s2t3_workstream_canonical_states.py": "sha256:cff08a8b509e42b3caabd3bf91cea31b87644d54d4451b6c36d06a9d9c1b5011", + "app/migrations/versions/v9q0r1s2t3u4_token_event_provenance.py": "sha256:0e0d3f3c518263542fc572582521e0e9b471dd350af5c6d611c76015cb8fba83", + "app/migrations/versions/w0r1s2t3u4v5_token_event_legacy_source_ids.py": "sha256:63772a289b35362b34804660ff6c387be52d339b06b80f25559f4b2cc26eb91c", + "app/migrations/versions/x1s2t3u4v5w6_workplan_execution_queue.py": "sha256:5ba338e7567ebe1a0b61094f9dea54c6cc9f893d07d449f11d089e262f103344", + "app/migrations/versions/y2t3u4v5w6x7_fabric_graph_read_model.py": "sha256:ab0a2ae750310832b4d57dd5867487d69f025e809da4ee199bf064974bb1712e", + "app/migrations/versions/z3u4v5w6x7y8_financial_fabric_vnext.py": "sha256:f1a25286cdb801a270ed0b5295a98da75d43622756b3f4a0ed84efc4311f7d75" + }, + "python_package_metadata": { + "usr/local/lib/python3.12/site-packages/pip-25.0.1.dist-info/METADATA": { + "name": "pip", + "version": "25.0.1", + "metadata_sha256": "sha256:4fa7318cf30f979db7cec45c12cbbc2b4f88a15f12eefbf59a6291d0a03af926" + }, + "usr/local/lib/python3.12/site-packages/uv-0.13.1.dist-info/METADATA": { + "name": "uv", + "version": "0.13.1", + "metadata_sha256": "sha256:3554d26fcb1db453b54bde82aa3830ddc37179f3ac4394d670361553c02d0cf2" + }, + "app/.venv/lib/python3.12/site-packages/aiofile-3.12.3.dist-info/METADATA": { + "name": "aiofile", + "version": "3.12.3", + "metadata_sha256": "sha256:faaa3115c495ac1989aa6bda262b79a6c97e056c83e04afcfc71584a59e3ceb1" + }, + "app/.venv/lib/python3.12/site-packages/alembic-1.20.0.dist-info/METADATA": { + "name": "alembic", + "version": "1.20.0", + "metadata_sha256": "sha256:bd32c118c43955c106bfa4255b2fb5ac9db410b0f7255a4cafb14b9e221ff41c" + }, + "app/.venv/lib/python3.12/site-packages/annotated_doc-0.0.5.dist-info/METADATA": { + "name": "annotated-doc", + "version": "0.0.5", + "metadata_sha256": "sha256:8c24d70c5d9153d22123353a906042fd7603df2d15c2196290b0f8a962558c46" + }, + "app/.venv/lib/python3.12/site-packages/annotated_types-0.8.0.dist-info/METADATA": { + "name": "annotated-types", + "version": "0.8.0", + "metadata_sha256": "sha256:614985b278f601b8ef863f82783b991cc3ada4b89f592eb71c7c48c5f2ef2298" + }, + "app/.venv/lib/python3.12/site-packages/anyio-4.15.1.dist-info/METADATA": { + "name": "anyio", + "version": "4.15.1", + "metadata_sha256": "sha256:043aecb571af7189e8a6c528f5d8e32545f1b2cdfaaf761d51e6d5b67ea3ca81" + }, + "app/.venv/lib/python3.12/site-packages/asyncpg-0.32.0.dist-info/METADATA": { + "name": "asyncpg", + "version": "0.32.0", + "metadata_sha256": "sha256:10c1e84f762a55c69630704e8a429793dcab1ce5edba7deadb35f40476d502c9" + }, + "app/.venv/lib/python3.12/site-packages/attrs-26.1.0.dist-info/METADATA": { + "name": "attrs", + "version": "26.1.0", + "metadata_sha256": "sha256:4cd40e690f23bf37cbcad34efd6758e062df1df07c86833f7e3ce95bf1fa38cc" + }, + "app/.venv/lib/python3.12/site-packages/authlib-1.9.1.dist-info/METADATA": { + "name": "Authlib", + "version": "1.9.1", + "metadata_sha256": "sha256:7141e57ccac936724fd004b401d0695e0ae48f32f2aee14d90259a9d4bc4fdbd" + }, + "app/.venv/lib/python3.12/site-packages/beartype-0.23.1.dist-info/METADATA": { + "name": "beartype", + "version": "0.23.1", + "metadata_sha256": "sha256:ac75ec7a0bd6407db75c5c1da887798dfd4d5d12099e299602d03baa0ba22986" + }, + "app/.venv/lib/python3.12/site-packages/cachetools-7.2.2.dist-info/METADATA": { + "name": "cachetools", + "version": "7.2.2", + "metadata_sha256": "sha256:76bbee4a06789a8c42253966988a07aff8f2f29cb1ae3ff9d6f16d661f01f2d4" + }, + "app/.venv/lib/python3.12/site-packages/caio-0.12.9.dist-info/METADATA": { + "name": "caio", + "version": "0.12.9", + "metadata_sha256": "sha256:3128051d993cbf71f589f68b0082167fe1c910b17379d27653b6945ec848c3c8" + }, + "app/.venv/lib/python3.12/site-packages/certifi-2026.7.22.dist-info/METADATA": { + "name": "certifi", + "version": "2026.7.22", + "metadata_sha256": "sha256:ef5af1638fbb23676ac3c5777dfcfc2cd9c348fe4172ed5ba3d277655b248090" + }, + "app/.venv/lib/python3.12/site-packages/cffi-2.1.1.dist-info/METADATA": { + "name": "cffi", + "version": "2.1.1", + "metadata_sha256": "sha256:558bafb9093a8e790175d9ecff9688382981d744877dad86fd6770db0f4dc918" + }, + "app/.venv/lib/python3.12/site-packages/click-8.5.0.dist-info/METADATA": { + "name": "click", + "version": "8.5.0", + "metadata_sha256": "sha256:e87bce0bd194de70dfb8e708e0a6b0483009f25611804eaf87bfeb63e6c20501" + }, + "app/.venv/lib/python3.12/site-packages/cryptography-50.0.2.dist-info/METADATA": { + "name": "cryptography", + "version": "50.0.2", + "metadata_sha256": "sha256:047cfc71226409de4318b360aef15c63a2adf609731e3dcf7fe932f14ea042ee" + }, + "app/.venv/lib/python3.12/site-packages/cyclopts-5.2.0.dist-info/METADATA": { + "name": "cyclopts", + "version": "5.2.0", + "metadata_sha256": "sha256:a1bcd1e587744ec6f5c5c64126ac03a03fc2468f7c91cd1c44572a5ac11dcb2a" + }, + "app/.venv/lib/python3.12/site-packages/dnspython-2.9.0.dist-info/METADATA": { + "name": "dnspython", + "version": "2.9.0", + "metadata_sha256": "sha256:d25dbd09b39758cd5cebe518701012a6278731986cd384fc4a7f25e78f7de929" + }, + "app/.venv/lib/python3.12/site-packages/docstring_parser-0.18.0.dist-info/METADATA": { + "name": "docstring_parser", + "version": "0.18.0", + "metadata_sha256": "sha256:cbc42027997fd4b194ae5fd064a4d1e57b92976941d0c26d369561a7c016a333" + }, + "app/.venv/lib/python3.12/site-packages/email_validator-2.3.0.dist-info/METADATA": { + "name": "email-validator", + "version": "2.3.0", + "metadata_sha256": "sha256:2a97b81eefcd856bc80b0346f47fa2d800b9a438bf8f9231ae00fe931d5c9fbc" + }, + "app/.venv/lib/python3.12/site-packages/exceptiongroup-1.3.1.dist-info/METADATA": { + "name": "exceptiongroup", + "version": "1.3.1", + "metadata_sha256": "sha256:81984a523a2f7a522ad12bea784a8bb85edec0805ebbd0fb4e350169a36dd802" + }, + "app/.venv/lib/python3.12/site-packages/fastapi-0.143.3.dist-info/METADATA": { + "name": "fastapi", + "version": "0.143.3", + "metadata_sha256": "sha256:364f68b16f489abe36d621da2fa727f774bec90916cd3325b78e422af3b59a5f" + }, + "app/.venv/lib/python3.12/site-packages/fastmcp-4.1.0.dist-info/METADATA": { + "name": "fastmcp", + "version": "4.1.0", + "metadata_sha256": "sha256:cfdcfd24ad904514087ec1735baa54df174f72f570833a16b6074887cfc51fa6" + }, + "app/.venv/lib/python3.12/site-packages/fastmcp_slim-4.1.0.dist-info/METADATA": { + "name": "fastmcp-slim", + "version": "4.1.0", + "metadata_sha256": "sha256:e8eca5fbae348ee6dcda0a0f1bf0dffa493e8d4d8763647ee48f4f871e35c998" + }, + "app/.venv/lib/python3.12/site-packages/greenlet-3.5.6.dist-info/METADATA": { + "name": "greenlet", + "version": "3.5.6", + "metadata_sha256": "sha256:b9b4cbbc1f3165e50fbc4696c433fe82b8a151fde65eede28fb6ec5efb3e1fab" + }, + "app/.venv/lib/python3.12/site-packages/griffelib-2.3.2.dist-info/METADATA": { + "name": "griffelib", + "version": "2.3.2", + "metadata_sha256": "sha256:fd24a68ed08309718d5759b8de3b90392b5804240d94834e6455be110ead34b3" + }, + "app/.venv/lib/python3.12/site-packages/h11-0.16.0.dist-info/METADATA": { + "name": "h11", + "version": "0.16.0", + "metadata_sha256": "sha256:28f326098ac09fcba79b8f180f96087c841fe2456215cb7b872a9c7d5cd19d64" + }, + "app/.venv/lib/python3.12/site-packages/httpcore-1.0.9.dist-info/METADATA": { + "name": "httpcore", + "version": "1.0.9", + "metadata_sha256": "sha256:fe2d4fda6199128978779e0cf27f3c045c531863fcdd987eacc74f3a18d41c21" + }, + "app/.venv/lib/python3.12/site-packages/httpcore2-2.13.1.dist-info/METADATA": { + "name": "httpcore2", + "version": "2.13.1", + "metadata_sha256": "sha256:37a0ea0674e98b7c3a1f99c17d9bb5457de27a0f93c8b6560c9d17d525139abb" + }, + "app/.venv/lib/python3.12/site-packages/httptools-0.9.0.dist-info/METADATA": { + "name": "httptools", + "version": "0.9.0", + "metadata_sha256": "sha256:8a743396f45465204e2b44b43cb57ec4a343c423f52604bbaf1777fd438698c9" + }, + "app/.venv/lib/python3.12/site-packages/httpx-0.28.1.dist-info/METADATA": { + "name": "httpx", + "version": "0.28.1", + "metadata_sha256": "sha256:febb9b0f8f3e80d57c8199c304f35c4336e8581d1d18d7983c92766b82793b25" + }, + "app/.venv/lib/python3.12/site-packages/httpx2-2.13.1.dist-info/METADATA": { + "name": "httpx2", + "version": "2.13.1", + "metadata_sha256": "sha256:b75b03a003b5593e000907cf7239fcc3f688b8f17db4ecff883d11221ea988fc" + }, + "app/.venv/lib/python3.12/site-packages/idna-3.20.dist-info/METADATA": { + "name": "idna", + "version": "3.20", + "metadata_sha256": "sha256:dbd8c14c1e4ca1e0c9824a6dbc7cbbf78884f38eb52d91148cd3025f671e4b85" + }, + "app/.venv/lib/python3.12/site-packages/jaraco.classes-3.4.0.dist-info/METADATA": { + "name": "jaraco.classes", + "version": "3.4.0", + "metadata_sha256": "sha256:2e6b102232edd45ae1bb8a6b4091fd40cf3201a6bb6fd4bc97c5e8cd765a44b8" + }, + "app/.venv/lib/python3.12/site-packages/jaraco_context-6.1.2.dist-info/METADATA": { + "name": "jaraco.context", + "version": "6.1.2", + "metadata_sha256": "sha256:f1b65b60aea229af54e09b17ae0036cf048fe4a6161fa2e7966a8ea5c2321491" + }, + "app/.venv/lib/python3.12/site-packages/jaraco_functools-4.6.0.dist-info/METADATA": { + "name": "jaraco.functools", + "version": "4.6.0", + "metadata_sha256": "sha256:6ed3cae5b8eef084c3c7b2385a0a8ac4c8155ab7c729212bea099bee69d5bd6c" + }, + "app/.venv/lib/python3.12/site-packages/jeepney-0.9.0.dist-info/METADATA": { + "name": "jeepney", + "version": "0.9.0", + "metadata_sha256": "sha256:b8e6c353e9aaed0ed0144029556417fda23b64f344e718331907054ba05b8c62" + }, + "app/.venv/lib/python3.12/site-packages/joserfc-1.7.5.dist-info/METADATA": { + "name": "joserfc", + "version": "1.7.5", + "metadata_sha256": "sha256:17df62bbdc7212bbcda3144e72720a62fc34bbf76c573062939120738545250f" + }, + "app/.venv/lib/python3.12/site-packages/jsonref-1.1.0.dist-info/METADATA": { + "name": "jsonref", + "version": "1.1.0", + "metadata_sha256": "sha256:f98db3890394fba23912faab86ad8f70ed564fc8c885298b636b270f28453e43" + }, + "app/.venv/lib/python3.12/site-packages/jsonschema-4.26.0.dist-info/METADATA": { + "name": "jsonschema", + "version": "4.26.0", + "metadata_sha256": "sha256:05b189866ca98a96da3934bf6b83687ced3ff85325273b77e16b705f6d8b26d2" + }, + "app/.venv/lib/python3.12/site-packages/jsonschema_path-0.5.0.dist-info/METADATA": { + "name": "jsonschema-path", + "version": "0.5.0", + "metadata_sha256": "sha256:cd7e9a4426436980f099d826dbce8f61afa6603b496385fba9a9eb0ad59cdd48" + }, + "app/.venv/lib/python3.12/site-packages/jsonschema_specifications-2025.9.1.dist-info/METADATA": { + "name": "jsonschema-specifications", + "version": "2025.9.1", + "metadata_sha256": "sha256:35abd41757f32b4ea24756920ded47b70173d77cbc052a5a6d3ab583b2e8d89d" + }, + "app/.venv/lib/python3.12/site-packages/keyring-25.7.0.dist-info/METADATA": { + "name": "keyring", + "version": "25.7.0", + "metadata_sha256": "sha256:bd54de98fede6dc3e1f3cd89b4e37c95d8842a523bdbb9e52ab40edff1837163" + }, + "app/.venv/lib/python3.12/site-packages/mako-1.4.3.dist-info/METADATA": { + "name": "Mako", + "version": "1.4.3", + "metadata_sha256": "sha256:39ea65f21e706265428ea6f2925520f419a10f0113a59318192ed38175d8838b" + }, + "app/.venv/lib/python3.12/site-packages/markdown_it_py-4.2.0.dist-info/METADATA": { + "name": "markdown-it-py", + "version": "4.2.0", + "metadata_sha256": "sha256:72c36ff516755443b1ecb61e17b2567a990230b49a504b0eb0c42d5f82448a9c" + }, + "app/.venv/lib/python3.12/site-packages/markupsafe-3.0.4.dist-info/METADATA": { + "name": "MarkupSafe", + "version": "3.0.4", + "metadata_sha256": "sha256:66767d76388ece15d49d50dafb655891ef5d868715e7128e7f7d737a70b353c4" + }, + "app/.venv/lib/python3.12/site-packages/mcp-2.3.0.dist-info/METADATA": { + "name": "mcp", + "version": "2.3.0", + "metadata_sha256": "sha256:a94577513a4fa0cb639c279c1ad6f4d49650872d45f2f4ab9bb2d9c2a505d457" + }, + "app/.venv/lib/python3.12/site-packages/mcp_types-2.3.0.dist-info/METADATA": { + "name": "mcp-types", + "version": "2.3.0", + "metadata_sha256": "sha256:eb973e8b7f53d52ab1df9d1f18854ffa84f074f6052e310089e2655961c48ca9" + }, + "app/.venv/lib/python3.12/site-packages/mdurl-0.1.2.dist-info/METADATA": { + "name": "mdurl", + "version": "0.1.2", + "metadata_sha256": "sha256:b53b29d48f499367053fda3c81e7ce27d2558380ebbf83e66023b02eb7ddd25d" + }, + "app/.venv/lib/python3.12/site-packages/more_itertools-11.2.1.dist-info/METADATA": { + "name": "more-itertools", + "version": "11.2.1", + "metadata_sha256": "sha256:8c558bfab61818450e78db4018281f8f7b22115e681cd53ae1d9d4931be54f15" + }, + "app/.venv/lib/python3.12/site-packages/nats_py-2.16.0.dist-info/METADATA": { + "name": "nats-py", + "version": "2.16.0", + "metadata_sha256": "sha256:58ddf3dd698f9026d397e5bb56a0baac723ba221d3dddae0831cfacc75c34255" + }, + "app/.venv/lib/python3.12/site-packages/openapi_pydantic-0.6.0.dist-info/METADATA": { + "name": "openapi-pydantic", + "version": "0.6.0", + "metadata_sha256": "sha256:e46a181161c62fa24d7d3d0ff2eaabea3a7b580ad7aa9f70d1f08bd129d46f49" + }, + "app/.venv/lib/python3.12/site-packages/opentelemetry_api-1.45.1.dist-info/METADATA": { + "name": "opentelemetry-api", + "version": "1.45.1", + "metadata_sha256": "sha256:5bc71e90cb421be92a43bf5ad5b0f25dccfa2a24ddceaa2877779879962a4c9e" + }, + "app/.venv/lib/python3.12/site-packages/packaging-26.3.dist-info/METADATA": { + "name": "packaging", + "version": "26.3", + "metadata_sha256": "sha256:70fdb89fc4d4a9a043bf7372b8972bcc883fddff34ab55e9cf80d73875384763" + }, + "app/.venv/lib/python3.12/site-packages/pathable-0.6.0.dist-info/METADATA": { + "name": "pathable", + "version": "0.6.0", + "metadata_sha256": "sha256:c418727931012c2306cb8fa2726d044616c3178c1fc078ce182385dcf2b59922" + }, + "app/.venv/lib/python3.12/site-packages/platformdirs-4.13.3.dist-info/METADATA": { + "name": "platformdirs", + "version": "4.13.3", + "metadata_sha256": "sha256:3814840758f662bb98053d08f99085fb77721812258573732b092fd7f2120c30" + }, + "app/.venv/lib/python3.12/site-packages/psycopg2_binary-2.9.13.dist-info/METADATA": { + "name": "psycopg2-binary", + "version": "2.9.13", + "metadata_sha256": "sha256:a5267b4520191137e34589704162fce02cfd40efcfeb899c45187c7f6bfea7e5" + }, + "app/.venv/lib/python3.12/site-packages/py_key_value_aio-0.4.6.dist-info/METADATA": { + "name": "py-key-value-aio", + "version": "0.4.6", + "metadata_sha256": "sha256:0c1af357b841bc3862e39543faa863346c487be9f2e2ffefba009e957a256bee" + }, + "app/.venv/lib/python3.12/site-packages/pycparser-3.11.dist-info/METADATA": { + "name": "pycparser", + "version": "3.11", + "metadata_sha256": "sha256:e3a74c846648bb55f4f907284b745e2003b87b96d9c9d17a8a50cf37804541c9" + }, + "app/.venv/lib/python3.12/site-packages/pydantic-2.14.1.dist-info/METADATA": { + "name": "pydantic", + "version": "2.14.1", + "metadata_sha256": "sha256:4d4c8e8d5e6a27d5208f0d7949f25628e6747133034969d4d1399b1ad5394036" + }, + "app/.venv/lib/python3.12/site-packages/pydantic_core-2.50.1.dist-info/METADATA": { + "name": "pydantic_core", + "version": "2.50.1", + "metadata_sha256": "sha256:ae6817764b603fa2300cd31b9566ecc33476df46163c4150fffc353121a166f2" + }, + "app/.venv/lib/python3.12/site-packages/pydantic_settings-2.16.0.dist-info/METADATA": { + "name": "pydantic-settings", + "version": "2.16.0", + "metadata_sha256": "sha256:470656112388bca95fd7d27b8954fda1f11dd6579563cfb9c0ea0445d1746b77" + }, + "app/.venv/lib/python3.12/site-packages/pygments-2.21.0.dist-info/METADATA": { + "name": "Pygments", + "version": "2.21.0", + "metadata_sha256": "sha256:1dde075570136774c706bf0009183a793fe0ee262e4a5590cc6eff8453eedd43" + }, + "app/.venv/lib/python3.12/site-packages/pyjwt-2.15.1.dist-info/METADATA": { + "name": "PyJWT", + "version": "2.15.1", + "metadata_sha256": "sha256:1ea0c9f139b8c928276b3628af165955f6f764491448a6ad8f103cdcbb382da3" + }, + "app/.venv/lib/python3.12/site-packages/pyperclip-1.11.0.dist-info/METADATA": { + "name": "pyperclip", + "version": "1.11.0", + "metadata_sha256": "sha256:2493839e0751761f27d39aa6d5c5dfd1df839c45da8f328aba4ae4102868b825" + }, + "app/.venv/lib/python3.12/site-packages/python_dotenv-1.2.4.dist-info/METADATA": { + "name": "python-dotenv", + "version": "1.2.4", + "metadata_sha256": "sha256:87cfee6042412d48df1100ea7822684988c3f2b79de7a250f4717f4df3026d6f" + }, + "app/.venv/lib/python3.12/site-packages/python_multipart-0.0.32.dist-info/METADATA": { + "name": "python-multipart", + "version": "0.0.32", + "metadata_sha256": "sha256:e9d399d7dea5eddf0e4d24b5c24687a82e7e50bf2c2b30f8f8a06a64d887dd86" + }, + "app/.venv/lib/python3.12/site-packages/pyyaml-6.0.3.dist-info/METADATA": { + "name": "PyYAML", + "version": "6.0.3", + "metadata_sha256": "sha256:03c3b415ed38d09faedc49360e930769b40c58f68585e6de00e2e4916a858d34" + }, + "app/.venv/lib/python3.12/site-packages/referencing-0.37.0.dist-info/METADATA": { + "name": "referencing", + "version": "0.37.0", + "metadata_sha256": "sha256:c93b00e6ab1524fd60848376604c189a114374776475c25a31d57be47b29de6a" + }, + "app/.venv/lib/python3.12/site-packages/rich-15.0.0.dist-info/METADATA": { + "name": "rich", + "version": "15.0.0", + "metadata_sha256": "sha256:fad34fc603fac4481bf81f8dd629492fc302c0ec31909c86644751512afb2e3b" + }, + "app/.venv/lib/python3.12/site-packages/rich_rst-2.2.0.dist-info/METADATA": { + "name": "rich-rst", + "version": "2.2.0", + "metadata_sha256": "sha256:2cd1f39149e69bd94c4f1c30cb26c763e45689e6d6527b4c23afa1112c48f165" + }, + "app/.venv/lib/python3.12/site-packages/rpds_py-2026.9.1.dist-info/METADATA": { + "name": "rpds-py", + "version": "2026.9.1", + "metadata_sha256": "sha256:5d72dca2e387c8d2b4180b68ee87c15b64751e059100a6db58891ec9995445c3" + }, + "app/.venv/lib/python3.12/site-packages/secretstorage-3.5.0.dist-info/METADATA": { + "name": "SecretStorage", + "version": "3.5.0", + "metadata_sha256": "sha256:b98e3dc42ff7e9b1bacce60dac2662cd9965fad6e4469fc9483c9eb99998c367" + }, + "app/.venv/lib/python3.12/site-packages/sqlalchemy-2.1.5.dist-info/METADATA": { + "name": "SQLAlchemy", + "version": "2.1.5", + "metadata_sha256": "sha256:7f568ea71aecfb29792ccee2c8b1345825e385d54b7e7bba755e445e53b5696f" + }, + "app/.venv/lib/python3.12/site-packages/sse_starlette-3.5.0.dist-info/METADATA": { + "name": "sse-starlette", + "version": "3.5.0", + "metadata_sha256": "sha256:6dc401682bdae1a3e1f31b1c320b7f926c354643993840393875ebfc171c9014" + }, + "app/.venv/lib/python3.12/site-packages/starlette-1.8.0.dist-info/METADATA": { + "name": "starlette", + "version": "1.8.0", + "metadata_sha256": "sha256:551e8d74d290002521c655b816b27654e49922b88cb474c8d710a893099036f8" + }, + "app/.venv/lib/python3.12/site-packages/truststore-0.10.5.dist-info/METADATA": { + "name": "truststore", + "version": "0.10.5", + "metadata_sha256": "sha256:1fd496f290853214e630d96f7163d2dd916f84ebe634b58aa827d6853e8f8610" + }, + "app/.venv/lib/python3.12/site-packages/typing_extensions-4.16.0.dist-info/METADATA": { + "name": "typing_extensions", + "version": "4.16.0", + "metadata_sha256": "sha256:b05084ca1d50879865178d9fff9fabeab61bdfb1f361bfbde95421ffc8f9be46" + }, + "app/.venv/lib/python3.12/site-packages/typing_inspection-0.4.4.dist-info/METADATA": { + "name": "typing-inspection", + "version": "0.4.4", + "metadata_sha256": "sha256:bad3d9e6342ef6750cf5128ec942327b8bebdce0b6e4d6f67cb15b27ae5118da" + }, + "app/.venv/lib/python3.12/site-packages/uncalled_for-0.4.1.dist-info/METADATA": { + "name": "uncalled-for", + "version": "0.4.1", + "metadata_sha256": "sha256:45a21666ddfa8ca8d4e2423c05edaeaa7827686a3ae4fed82b24427854745c2f" + }, + "app/.venv/lib/python3.12/site-packages/uvicorn-0.54.0.dist-info/METADATA": { + "name": "uvicorn", + "version": "0.54.0", + "metadata_sha256": "sha256:9399e5ddda3d26e842d6fb5420c38b0857aac568d53badbdc224b3a21339efa8" + }, + "app/.venv/lib/python3.12/site-packages/uvloop-0.23.0.dist-info/METADATA": { + "name": "uvloop", + "version": "0.23.0", + "metadata_sha256": "sha256:fe11a50198ffd4d9f1cb20922dc638ad459d5e63e6c615b0c1c69448d3362977" + }, + "app/.venv/lib/python3.12/site-packages/watchfiles-1.3.0.dist-info/METADATA": { + "name": "watchfiles", + "version": "1.3.0", + "metadata_sha256": "sha256:1fba87d08d66f10f7515e4817abd4ac7f27abf3300cb33b7ad3f79762987a502" + }, + "app/.venv/lib/python3.12/site-packages/websockets-17.2.dist-info/METADATA": { + "name": "websockets", + "version": "17.2", + "metadata_sha256": "sha256:0d5f1279d095e7ba84ef21614af0822dc500ccb2e51b7c3a19eda7159b2dade4" + }, + "app/.venv/lib/python3.12/site-packages/hub_core-0.2.0.dist-info/METADATA": { + "name": "hub-core", + "version": "0.2.0", + "metadata_sha256": "sha256:84a59c6ea36d6d8a0b91b76e52f351a5ce6f2fd9ace8a4c887b51bab05973953" + } + }, + "limitations": [ + "Selected code and package metadata inventory; no full application acceptance or hermetic build provenance.", + "Floating dependency origins remain unknown; observed bytes and versions are bound to this immutable image digest." + ] +} diff --git a/docs/changes/netkingdom-target-2026-10-17/verified-results.json b/docs/changes/netkingdom-target-2026-10-17/verified-results.json new file mode 100644 index 00000000..06afb99b --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/verified-results.json @@ -0,0 +1,73 @@ +{ + "schema": "custodian.target-implementation-results.v1", + "date": "2026-10-17", + "all_sixteen_native_gates_remain_open": true, + "source_and_fixture_only": true, + "results": { + "postgresql": { + "owner_commit": "70f408ca2389bf3722a91a03832fc6e8587355e5", + "canonical_tests": 82, + "actual_SQL_oracles": 21, + "LDAP": "synthetic_in_this_fixture", + "exact_cleanup": "independently_verified", + "source_task": "NK-WP-0048-T21_done", + "native_gate": "NK-WP-0048-T14_progress", + "retained_failures": [ + "R2_unknown_helper_subphase", + "R3_backend_nested_reference_bug", + "R4_snapshot_alias_and_deleted_backing_sets" + ] + }, + "sops": { + "actual_generated_cases": 65, + "previously_skipped_cases_now_run": 61, + "new_sealed_descriptor_cases": 4, + "source_task": "NK-WP-0049-T37_done", + "real_owner_recovery": false + }, + "scanner": { + "owner_commit": "9ebde0a9bd60d5c82910494fbe6bd1b891455cee", + "fixture_checks": 10, + "actual_hook_cases": 6, + "hard_loss_cleanup": "passed", + "source_task": "RMGR-WP-0021-T05_done", + "other_tasks": "T03_progress_T04_todo" + }, + "owner_recovery_handoffs": { + "published_owner": { + "repo": "secrets-engine", + "workplan_id": "SECRETS-WP-0015", + "source_commit": "c59bbf568c0be8a72ac593508f48c9b1f61ec4c1" + }, + "prepared_owner": { + "repo": "railiance-cluster", + "workplan_id": "RCLUSTER-WP-0018", + "publication": "unpublished_correct_historical_guard" + }, + "native_recovery": false + }, + "receiving": { + "runtime_source": "51bc70d1ff8f25450a8650d8e50caf053093a02e", + "readiness_source": "086d79a2736e34b916bd7de3c8a65e2ea38a3d64", + "independent_receiver_tests": 26, + "independent_registrar_tests": 47, + "registrar_activated": false, + "fixture_migration_oracles": 10, + "actual_image_selected_files": 233, + "actual_image_package_metadata": 86, + "production_deployed": false + } + }, + "projection": { + "new_publication_task_bindings_verified": 66, + "prior_other_owner_bindings_verified": 9, + "NK_unresolved": "preexisting_NK-WP-0006_to_missing_NK-WP-0001", + "STATE_unresolved": "STATE-WP-0095-T07_to_deferred_RMGR-WP-0019-T06" + }, + "limits": [ + "No new live rollout approval or runtime authority.", + "No original TLS/key recovery, private owner admission, MFA continuity or native CNPG acceptance.", + "Floating image dependency origins and real production migration timing remain unknown.", + "Helm timeout is not a database or migration Job lifetime bound." + ] +} diff --git a/docs/changes/netkingdom-target-2026-10-17/wp49-sops-successor-r1/owner-publication-readback.json b/docs/changes/netkingdom-target-2026-10-17/wp49-sops-successor-r1/owner-publication-readback.json new file mode 100644 index 00000000..29cbe2b8 --- /dev/null +++ b/docs/changes/netkingdom-target-2026-10-17/wp49-sops-successor-r1/owner-publication-readback.json @@ -0,0 +1,111 @@ +{ + "status": "verified", + "scope": "two exact published workplans; read-only Git ls-remote and Hub GET snapshots", + "writes_to_source_index_refs_or_Hub": false, + "rows": [ + { + "repo": "repo-manager", + "published_commit": "9ebde0a9bd60d5c82910494fbe6bd1b891455cee", + "remote": { + "HEAD": "9ebde0a9bd60d5c82910494fbe6bd1b891455cee", + "refs/heads/main": "9ebde0a9bd60d5c82910494fbe6bd1b891455cee", + "symbolic_HEAD": "refs/heads/main" + }, + "workplan": { + "id": "5aa6f84a-c682-5996-ae26-96daef670833", + "slug": "rmgr-wp-0021", + "status": "active" + }, + "source_record_id": "RMGR-WP-0021", + "tasks": [ + { + "id": "d3d20c18-5a5f-5f8a-b5c4-a22b4b662ebe", + "record_id": "RMGR-WP-0021-T01", + "status": "done" + }, + { + "id": "e27817e6-b298-581f-b99a-05ec459be749", + "record_id": "RMGR-WP-0021-T02", + "status": "done" + }, + { + "id": "0ab44bd9-00d8-5470-ad45-7350e7868d0a", + "record_id": "RMGR-WP-0021-T03", + "status": "progress" + }, + { + "id": "44272818-db49-58a2-83b1-d2f9e9d5976c", + "record_id": "RMGR-WP-0021-T04", + "status": "todo" + }, + { + "id": "25fbe694-41d8-5232-bce0-4ed362387d5a", + "record_id": "RMGR-WP-0021-T05", + "status": "done" + } + ], + "dependencies": [], + "source_file_sha256": "966d15ccdabc8edf98bc58f9422ea190566d05fe4208f4749f59a9731f4e108d", + "source_file_unchanged": true, + "index_stat_unchanged": true + }, + { + "repo": "secrets-engine", + "published_commit": "c59bbf568c0be8a72ac593508f48c9b1f61ec4c1", + "remote": { + "HEAD": "c59bbf568c0be8a72ac593508f48c9b1f61ec4c1", + "refs/heads/main": "c59bbf568c0be8a72ac593508f48c9b1f61ec4c1", + "symbolic_HEAD": "refs/heads/main" + }, + "workplan": { + "id": "68a0642e-4908-5260-89c9-3adce60e6a4d", + "slug": "secrets-wp-0015", + "status": "ready" + }, + "source_record_id": "SECRETS-WP-0015", + "tasks": [ + { + "id": "a3e0e243-edac-5ade-a3d5-f58dac41633a", + "record_id": "SECRETS-WP-0015-T01", + "status": "done" + }, + { + "id": "eab3b758-10ce-5464-b5f7-3a152ee1327a", + "record_id": "SECRETS-WP-0015-T02", + "status": "done" + }, + { + "id": "6262a915-7655-50be-b9f7-481f816d7335", + "record_id": "SECRETS-WP-0015-T03", + "status": "todo" + }, + { + "id": "aeec6eb0-39e2-5f7c-8f5d-778133edfc73", + "record_id": "SECRETS-WP-0015-T04", + "status": "wait" + } + ], + "dependencies": [ + { + "from_task_id": "aeec6eb0-39e2-5f7c-8f5d-778133edfc73", + "to_task_id": "56c8d469-7a10-5d50-a30e-95cbf3cd4756", + "relationship_type": "starts_after" + }, + { + "from_task_id": "aeec6eb0-39e2-5f7c-8f5d-778133edfc73", + "to_task_id": "6262a915-7655-50be-b9f7-481f816d7335", + "relationship_type": "starts_after" + } + ], + "source_file_sha256": "b3cab4e8d14b3b03179fc72a6e9ce1c0ee840cfa3247c022c1324d60378bde5b", + "source_file_unchanged": true, + "index_stat_unchanged": true + } + ], + "hub_instance": { + "status": "ok", + "instance_role": "primary", + "instance_label": "railiance01" + }, + "verifier_sha256": "ab18c1e934ca66b78d21fc7268b9b989569e2249e434d6688cb9de0083d2fda2" +} diff --git a/docs/netkingdom-target-implementation.md b/docs/netkingdom-target-implementation.md index c5fe2afc..091aaca9 100644 --- a/docs/netkingdom-target-implementation.md +++ b/docs/netkingdom-target-implementation.md @@ -15,7 +15,7 @@ GPT-6.1-Sol medium subagent request. The full architecture remains the goal. | TSA-06 | Glas / Sand-boxer / rein / Platform / Forge; CUST-WP-0073, GLAS-WP-0012 | Workload-only credential delivery and combined rein runtime published; actual isolated manager proof reproduced; assignment and runner proof open | Bounded real-model acceptance, admitted runtime and actual assignment migration | | TSA-07–08 | Secrets / NetKingdom / Platform; NK-WP-0049 and existing lifecycle plans | Inventory/lifecycle incomplete; independent identity archive recovery, retained token-material decryption and historical audit signature continuity verified 16 October | Existing-token MFA and service authentication; metadata denominator, elimination candidates and lifecycle receipts | | TSA-09 | Audit / emitting owners; Approval T04 and current Audit work | Delivered custody; current source admission/reconciliation incomplete | Source/effect/outbox/receiver readback for first protected operation | -| TSA-10 | Forge / Repo Manager; FORGE-WP-0006, RMGR-WP-0021 | Broad receive coverage delivered; other paths and response incomplete | Coverage/reliability gaps and private response acceptance | +| TSA-10 | Forge / Repo Manager; FORGE-WP-0006, RMGR-WP-0021 | Broad receive coverage delivered; bounded actual-hook scanner refusal and cleanup accepted under T05 | Remaining coverage and private response acceptance | | TSA-11 | Reuse / provider owners | 70/70 discovery freshly verified 16 October; two drifted owner descriptions corrected and native parity validation strengthened | Full source-link/version/package-family disposition and recurring drift acceptance | | TSA-12 | Activity / Coordination / Custodian; CUST-WP-0079 | Schedule accepted but unassisted activation not proven; cadence source adoption underway | Actual activation and first independent observation | | TSA-13–14 | NetKingdom / provider owners | Accepted reusable integration and second installation pending | Shared adapter conformance and minimal locked profiles | @@ -674,3 +674,101 @@ are grounded in 23 group/storage and 17 recovery public-source references. They identify existing owner paths and a historical secrets-engine-openbao registration without inventing current assent, independent TLS custody, production storage admission or consumer continuity. Full frozen fixture packets remain workspace-local. + +## Continued verification, 17 October 2026 + +The actual shared and Custodian hooks now pass all six clean, generated-key and +unavailable-scanner cases. A private mount namespace shadows the scanner only +inside each fixture; the host executable, real index and HEAD remain unchanged. +Ten fixture checks and an actual disposable parent-loss cleanup trial passed. +Failed R1/R2 trials remain retained; the reviewed successor explicitly verifies +the writable `/dev/null` device it needs. Exact host tmpfs identity and resource +absence were checked. [Hook results](changes/netkingdom-target-2026-10-17/scanner-unavailable-r1/namespace-hook-results.json) +and [cleanup results](changes/netkingdom-target-2026-10-17/scanner-unavailable-r1/namespace-lifecycle-results.json) +support RMGR-WP-0021-T05 completion, published at `9ebde0a9`. The first projection +returned `pending_push` despite exit zero; the follow-up authoritative projection +returned `applied` at that exact revision. Other Repo Manager coverage and private +response work remain open. + +The previously skipped real-SOPS coverage now passes with generated material in +an isolated network/mount/PID namespace. All 61 prior cases passed, then four new +end-to-end sealed-descriptor decrypt/edit/rotate and wrong-key refusal cases +brought the successor to [65 passed](changes/netkingdom-target-2026-10-17/sops-real-regressions.json). +The fixture uses SOPS 3.13.3 with matching official release asset and checksum +digests; its Sigstore signature was not verified. The executable is not installed +system-wide and this does not admit native tool custody or actual owner-held +recovery. The earlier skipped result remains historical evidence. + +SECRETS-WP-0015 is published at `c59bbf56`: the source-bound public registration +selector and offline checker are delivered. Outage-compatible consumption and +private/native admission remain separate open tasks. RCLUSTER-WP-0018's reviewed +TLS metadata tool and plan are prepared; publication stopped before mutation on +15 bare historical labels and five collisions across three frozen archives. +The exact receiver-first successor preserves the existing three parents and 15 +task UUIDs. Independent candidate suites pass 26 receiver and 47 registrar tests; +the registrar guard remains active until receiving is deployed and verified. +Original TLS custody/reissue disposition is still unknown. + +The proposed State Hub rollout must cover its full difference from deployed +`main-7d99282`, including an unrelated inbox migration already on `main`. +The receiver patch adds no migration, but that fact does not establish an +unchanged deployed schema. Normal CI artifact identity, full-change review, +fresh headroom/dry-run, verification/rollback and scoped founder approval remain +required. No production rollout or historical identity rewrite has occurred. +All sixteen target acceptance gates remain open. + +PostgreSQL source `70f408ca` is now published with the SOPS test successor in +NetKingdom. The canonical provisioner suite passes 82 cases. All 21 real +disposable PostgreSQL oracles pass: migration/runtime-role refusal, restart and +revoke, full visible prestate preservation, exact reservation/CAS, divergent +same-counter database forks, lost acknowledgments and real dump/restore refusal. +LDAP remains the declared test double in this SQL fixture. The earlier separate +14-oracle actual LLDAP proof retains its own scope. Independent fixed-daemon +checks confirm both exact containers and their run label absent. +[SQL result](changes/netkingdom-target-2026-10-17/postgres-r5-result.json) and +[cleanup](changes/netkingdom-target-2026-10-17/postgres-r5-cleanup.json) retain the +actual return. Failed R2/R3/R4 trials remain recorded; review fixed a real nested +receipt-reference defect, then two snapshot-fixture defects before the pass. +NK-WP-0048-T21 records completed source/SQL proof; T14 retains native CNPG, +checkpoint/custody/scope/callback integration and all LDAP writer fencing. +NK-WP-0049-T37 records the 65 real-SOPS cases; its actual recovery gates stay open. + +State Hub receiver source `51bc70d1` is published, independently hash-checked and +projected. Its normal CI task 12624 succeeded. Anonymous registry protocol +verified manifest `sha256:c802690ee1811b3d77df4077936f9cdced1385514e8673fcbc9232b84d645015`; +[read-only image inspection](changes/netkingdom-target-2026-10-17/statehub-public-image-inspection.json) +verified all 22 compressed layers, selected receiver/migration/hub-core files, +the exact build ID and 86 Python package metadata records without executing or +installing the image. Floating build origins remain unknown. Source readiness +follow-up `086d79a2` changes only Make/test/workplan files and preserves this +runtime artifact. Both command-fixture branches and the actual full server +dry-run pass with the annotation policy unchanged. + +The [disposable migration check](changes/netkingdom-target-2026-10-17/migration-compat-r1-result.json) +passes ten old-model DDL/new-migration/old-write-shape oracles; independent +[cleanup](changes/netkingdom-target-2026-10-17/migration-compat-r1-cleanup.json) +confirms exact resource absence. The tiny synthetic migration timing does not +predict production lock duration or establish full HTTP/ORM acceptance. +Helm rollback retains the additive schema; the existing migration Job has no +active deadline, so Helm's three-minute timeout does not guarantee job termination. +The concrete rollout review must retain that recovery limitation. No live +deployment, registrar activation or native target gate closure is inferred. + +The [exact rollout proposal, revision 4](changes/netkingdom-target-2026-10-16/cluster-historical-publication-r1/revisions/r4-rollout-review/FINAL-PROPOSAL.md) +is prepared and recorded as pending under the existing supervision record. The +packaged chart and image digest are fixed; its values-preserving server dry-run +keeps eight identities and changes only three image paths. Fresh observation +finds Helm 75, the original API/MCP images Ready, schema `b3c4d5e6f7a8`, no +migration Job and passing headroom. Approval must cover the full inbox migration +and exact conditional recovery limits. EUR cost/loss exposure and production +migration timing remain unpriced; unknown recovery mapping stops for attended +owner recovery. This record grants no authority. + +Four [coordination receipts](changes/netkingdom-target-2026-10-17/coordination-receipts.json) +now project the explicit foreign-owner waits, using the existing retirement +driver for receiver/registrar sequencing and derived cases elsewhere. No new +driver, external message or worker wake was created. The +[publication readback](changes/netkingdom-target-2026-10-17/completed-deliverable-publication.json) +verifies all 58 NetKingdom and eight State Hub task IDs/UUIDs/statuses against +source, plus exact remote heads. Earlier Repo Manager/Secrets readback verifies +nine more owner bindings and the two Secrets dependency edges. diff --git a/workplans/CUST-WP-0080-netkingdom-security-blueprint-and-gap-closure.md b/workplans/CUST-WP-0080-netkingdom-security-blueprint-and-gap-closure.md index 6881ae7b..b4301b5a 100644 --- a/workplans/CUST-WP-0080-netkingdom-security-blueprint-and-gap-closure.md +++ b/workplans/CUST-WP-0080-netkingdom-security-blueprint-and-gap-closure.md @@ -909,3 +909,55 @@ because actual-hook unavailable-scanner acceptance remains pending. All sixteen target requirements stay open. Publication/task-projection/preservation checks: `docs/changes/netkingdom-target-2026-10-16/resume-integration-r1/`. No rotation, live deployment, actual key recovery or authority promotion occurred. + +2026-10-17 continued verification and owner refinement: NetKingdom `70f408ca` +publishes the PostgreSQL provenance backend and real-SOPS regression successor. +Canonical provisioner tests pass 82. The actual disposable PostgreSQL trial passes +21 oracles, including restart/revoke, same-counter divergent forks, lost replies +and dump/restore rollback refusal; all exact resources are independently absent. +LDAP remains synthetic in this SQL fixture. Failed R2/R3/R4 returns are retained; +review repaired a real nested receipt-reference bug and two fixture snapshot +defects. NK-WP-0048-T21 records completed source/SQL proof; T14 retains actual +CNPG, owner callbacks/checkpoints/custody, all-writer fencing and native admission. +NK-WP-0049-T37 records all 65 actual SOPS cases (61 previously skipped plus four +sealed-FD cases); historical T34's skipped result stays unchanged. Actual recovery, +TLS/trust, registration/private admission and MFA remain open. + +Repo Manager `9ebde0a9` completes only RMGR-WP-0021-T05 after ten fixture checks, +six actual configured-hook cases and exact hard-loss cleanup pass. Five projected +task bindings and remote HEAD match; T03/T04 and TSA-10/15 remain open. +Secrets Engine `c59bbf56` publishes SECRETS-WP-0015 with four exact projected task +bindings and both dependency edges. RCLUSTER-WP-0018 source is prepared but remains +unpublished behind the correct immutable-history guard. Do not replace the three +historical parent or 15 task UUIDs to force publication. + +State Hub receiver `51bc70d1` and source-only dry-run repair `086d79a2` are published +and authoritatively projected. The CI image digest and selected receiver/migration/ +hub-core files and 86 package metadata entries are independently verified without +executing or installing the image. Ten disposable actual SQL migration/old-write +compatibility oracles pass; production migration timing/full application behavior +remain unproved. The real server dry-run now passes with server-side dry-run for +the two Secret templates and the existing annotation policy intact. The full +rollout includes the inbox migration already on main; Helm rollback retains that +schema, and its timeout does not automatically stop a running migration Job. +Final exact values-preserving review and scoped founder rollout approval remain +separate. Keep the registrar guard until receiving is delivered and verified. +The one unresolved projected STATE95 dependency deliberately points to the +not-yet-admitted RMGR19 successor; it is not permission to activate it early. + +Evidence: `docs/changes/netkingdom-target-2026-10-17/`, the exact published owner +sources, retained fixture revisions and the implementation record. All sixteen +native target gates remain open; no production rollout, private recovery, +credential rotation or autonomy grant occurred. + +Final checkpoint: the exact packaged-chart, digest-pinned reuse-values server +dry-run passes with eight identities and only three image changes. Revision 4 of +`STATE-WP-0095-T06-cluster-frozen-receiving-r1` is recorded as pending in the +existing supervision record, preserving the original revision/digest, adverse +preparation history and all authority fields. The final proposal explicitly +includes the inbox migration and conditional exact-Job recovery, with unpriced +EUR exposure and unknown mapping requiring attended owner recovery. No live +action is approved or executed. Four coordination receipts attach foreign waits +without messages or worker wakes. Source/remote/Hub readback verifies 66 new +checkpoint owner bindings plus the nine Repo Manager/Secrets bindings; source +counts and native acceptance remain separate.