Admit reviewed receiver evidence batch 3

This commit is contained in:
codex 2026-10-17 03:40:33 +02:00
parent 5994d4208b
commit f4a672f3aa
24 changed files with 14424 additions and 0 deletions

View file

@ -0,0 +1,86 @@
{
"schema": "state95.workplan-followthrough-readback.v1",
"status": "applied",
"source_revision": "9eaa36143ea18111c522ea14d32978495b4e5030",
"remote_revision": "9eaa36143ea18111c522ea14d32978495b4e5030",
"instance_role": "primary",
"instance_label": "railiance01",
"expected_commit": "9eaa36143ea18111c522ea14d32978495b4e5030",
"derived_commit": "9eaa36143ea18111c522ea14d32978495b4e5030",
"tasks": [
{
"uuid": "6a5f87bb-e63d-5e20-b9fc-c1b5cd403ff7",
"record_id": "STATE-WP-0095-T01",
"status": "done",
"needs_human": false
},
{
"uuid": "ebb24194-e4cc-5130-aaa6-663f2ea2c822",
"record_id": "STATE-WP-0095-T02",
"status": "done",
"needs_human": false
},
{
"uuid": "e8566341-cf6e-5b9c-ad80-8564d14cd52a",
"record_id": "STATE-WP-0095-T03",
"status": "done",
"needs_human": false
},
{
"uuid": "3bbb311f-194e-5862-8aed-358a580f22b4",
"record_id": "STATE-WP-0095-T04",
"status": "done",
"needs_human": false
},
{
"uuid": "339b9a37-181c-5599-9a89-0393e199bd4b",
"record_id": "STATE-WP-0095-T05",
"status": "done",
"needs_human": false
},
{
"uuid": "6af973b4-1964-5d4d-a2f8-8dbd4c01fda4",
"record_id": "STATE-WP-0095-T06",
"status": "done",
"needs_human": false
},
{
"uuid": "cfd1ea99-e75b-542e-a434-acefb62f3c7d",
"record_id": "STATE-WP-0095-T07",
"status": "wait",
"needs_human": false
},
{
"uuid": "2dd9b04f-2250-5a8a-b5bc-c8a009872858",
"record_id": "STATE-WP-0095-T08",
"status": "done",
"needs_human": false
},
{
"uuid": "8be8f13b-6352-5295-9755-de6fbfb13593",
"record_id": "STATE-WP-0095-T09",
"status": "done",
"needs_human": false
},
{
"uuid": "88585c69-d9b9-5e1f-a256-6416ff71e824",
"record_id": "STATE-WP-0095-T10",
"status": "wait",
"needs_human": true
}
],
"new_dependency": {
"id": "713e6db5-7574-4ade-a750-84bdde02f80a",
"from_workplan_id": "79579572-8120-5d3b-aca5-dd4aff60d058",
"from_task_id": "cfd1ea99-e75b-542e-a434-acefb62f3c7d",
"to_task_id": "88585c69-d9b9-5e1f-a256-6416ff71e824",
"relationship_type": "starts_after",
"source_owner": "forge:state-hub",
"source_commit": "9eaa36143ea18111c522ea14d32978495b4e5030"
},
"unchanged_old_edge_creation_commits_not_rewritten": true,
"whole_unrelated_index_dirty_preserved": true,
"runtime_source": "c103cbf3c8bed5dba87a03e320595ddded9301a3",
"runtime_changed": false,
"new_UUIDs": false
}

View file

@ -0,0 +1,39 @@
--- a/workplans/STATE-WP-0095-historical-source-receiving.md
+++ b/workplans/STATE-WP-0095-historical-source-receiving.md
@@ -237,7 +237,7 @@
id: STATE-WP-0095-T07
status: wait
priority: high
-depends_on: [STATE-WP-0095-T06, RMGR-WP-0019-T06]
+depends_on: [STATE-WP-0095-T06, RMGR-WP-0019-T06, STATE-WP-0095-T10]
state_hub_task_id: "cfd1ea99-e75b-542e-a434-acefb62f3c7d"
```
@@ -357,3 +357,27 @@
before any retry; capture legitimate source HEAD transitions rather than assume
a static revision. T07 and T10 remain wait. No original parent preimage recovery,
new runtime delivery or broader authority follows from this source repair.
+
+
+T07 current-baseline client return, 2026-10-17: after the owner refreshed the
+installed package and verified the actually loaded checker matched the reviewed
+R6 source, ordinary Cluster deep consistency and fast projection passed.
+Bindings synced 20/20, omitting the three frozen histories; all three parent
+and 15 task CURRENT full-row hashes remained unchanged across
+before-verified-client.json / after-verified-client.json. Unrelated staged brief
+state was preserved. This proves the corrected installed client stage against
+its fresh current baseline; earlier parent-hash failures remain retained
+historical exceptions, not restored preimages or backfilled successes.
+
+T10 remains wait/needs_human for exact proposal
+STATE-WP-0095-T10-frozen-bindings-guard-r1 revision 1, metadata
+sha256:81d365926fc585a186955d8c98ee83501fd3cec12135b2256d71b46a75097932,
+pending decision df703266-6719-4c04-ae1b-ba9afd3bca1c. The inspected candidate
+image is main-c103cbf@sha256:4cc4ce17bbcdb1b66132d07c5b7b741f46df83124ef1c8403ffabdafba6993d1,
+from runtime source c103cbf3c8bed5dba87a03e320595ddded9301a3. Image-only
+server dry-run passed eight identities with only three image-field changes.
+The exact proposal and recovery limits are retained in the Custodian dated
+2026-10-17 guard-successor-review-r1 packet. No new API runtime is approved or
+delivered by this source-only note; its later workplan commit does not change
+the image's source pin. T09 stays done, T07/T10 stay wait pending reviewed API
+delivery and explicit successor/current-baseline acceptance disposition.

View file

@ -0,0 +1,8 @@
{
"task_blocks": 10,
"all_UUIDs_statuses_needs_human_unchanged": true,
"only_task_field_change": "T07.depends_on adds STATE-WP-0095-T10",
"proposal_metadata_digest_verified": true,
"canonical_mutation": false,
"runtime_changed": false
}

View file

@ -0,0 +1,16 @@
{
"schema": "state95.proposal-revision-followthrough.v1",
"base_revision": "9eaa36143ea18111c522ea14d32978495b4e5030",
"files": [
{
"path": "workplans/STATE-WP-0095-historical-source-receiving.md",
"base_sha256": "df055846c34f4e4eb9dc1fcc88969efd40bfca9daad1df006f7527e9b6d6c9e7",
"candidate_sha256": "163acbdf8252f37e309f4cb0b51d48706c6bd43d439fdbf7802b953b78ae35ac"
}
],
"patch_sha256": "sha256:83bf9a6d6f7dc9de6856aca30b3d10c5e715214132ab715f15a8f0caeef9c935",
"new_UUIDs": false,
"runtime_changed": false,
"proposal_id": "STATE-WP-0095-T10-frozen-bindings-guard-r1",
"revision": 2
}

View file

@ -0,0 +1,198 @@
{
"ok": true,
"status": "applied",
"repo_slug": "state-hub",
"commit": "4c03c9d2c6a47f5c7247473f74b2e2f188b787bd",
"requests": 2,
"elapsed_ms": 10221.2,
"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": [],
"historical_identity_collisions": [],
"files_changed": []
},
"receipt": {
"schema": "state-hub.repository-projection-reconcile.v1",
"instance_role": "primary",
"instance_label": "railiance01",
"expected_commit": "4c03c9d2c6a47f5c7247473f74b2e2f188b787bd",
"derived_commit": "4c03c9d2c6a47f5c7247473f74b2e2f188b787bd",
"outcome": {
"schema": "state-hub.projection-reset.v1",
"repo_slug": "state-hub",
"commit": "4c03c9d2c6a47f5c7247473f74b2e2f188b787bd",
"status": "applied",
"counts": {
"created": 0,
"updated": 70,
"retired": 0,
"refused": 0,
"released": 0,
"created_tasks": 0,
"updated_tasks": 1,
"cancelled_tasks": 0,
"created_edges": 0,
"removed_edges": 0,
"unresolved_edges": 0,
"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": [],
"updated_tasks": [
"STATE-WP-0095-T10"
],
"cancelled_tasks": [],
"created_edges": [],
"removed_edges": [],
"unresolved_edges": [],
"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": []
}
}
}

View file

@ -0,0 +1,16 @@
from pathlib import Path
import hashlib,json,importlib.util
p=Path(__file__).resolve().parent;owner=Path('/home/worsch/state-hub')
spec=importlib.util.spec_from_file_location('pub',p.parent/'owner-followthrough-r5/publish_followthrough_source.py');pub=importlib.util.module_from_spec(spec);spec.loader.exec_module(pub)
d=json.loads((p/'manifest.json').read_text());e=d['files'][0];assert len(d['files'])==1
assert pub.git(owner,'rev-parse','HEAD').stdout.decode().strip()==d['base_revision']
assert hashlib.sha256((p/'state-hub-workplan.patch').read_bytes()).hexdigest()=='83bf9a6d6f7dc9de6856aca30b3d10c5e715214132ab715f15a8f0caeef9c935'
f=owner/e['path'];s=p/'state-hub'/e['path'];assert not f.is_symlink() and not s.is_symlink()
assert hashlib.sha256(f.read_bytes()).hexdigest()==e['base_sha256']
assert hashlib.sha256(s.read_bytes()).hexdigest()==e['candidate_sha256']
assert not pub.git(owner,'diff','--cached','--',e['path']).stdout
before=pub.preserved_state(owner,{e['path']});f.write_bytes(s.read_bytes());assert pub.preserved_state(owner,{e['path']})==before
result=pub.commit_source(owner,d,pub.SCANNER,execute=True,push=False)
assert pub.preserved_state(owner,{e['path']})==before
(p/'source-commit-result.json').write_text(json.dumps(result,indent=2)+'\n')
print(json.dumps({k:v for k,v in result.items() if k not in {'preserved_before','preserved_after'}}))

View file

@ -0,0 +1,10 @@
from pathlib import Path
import subprocess,json,hashlib
p=Path(__file__).resolve().parent
checker=Path('/home/worsch/state-hub/scripts/consistency_check.py')
assert hashlib.sha256(checker.read_bytes()).hexdigest()=='1bfbc89d3ff5c621ec541fd32384083cc7dcf96a639b217d62b6fc34de238efd'
r=subprocess.run(['/home/worsch/state-hub/.venv/bin/python',str(checker),'--repo','state-hub','--repo-path','/home/worsch/state-hub','--api-base','http://127.0.0.1:8000','--json'],cwd='/home/worsch/state-hub',capture_output=True,text=True,timeout=180)
try:d=json.loads(r.stdout)
except Exception:d={'status':'unparsed','exit':r.returncode}
(p/'normal-consistency-result.json').write_text(json.dumps(d,indent=2)+'\n')
print(json.dumps({'exit':r.returncode,'mode':'normal_check_no_fix_preserve_existing_dirty_files','parsed_type':type(d).__name__,'checker_sha256':'sha256:1bfbc89d3ff5c621ec541fd32384083cc7dcf96a639b217d62b6fc34de238efd'}))

View file

@ -0,0 +1,10 @@
from pathlib import Path
import subprocess,json
p=Path(__file__).resolve().parent
r=subprocess.run(['make','sync','SYNC_PATH=.','SYNC_PUSH=1','STATE_HUB_API_BASE=http://127.0.0.1:8000'],cwd='/home/worsch/state-hub',capture_output=True,text=True,timeout=180)
try:d=json.loads(r.stdout[r.stdout.index('{'):])
except Exception:d={'status':'unverified','reason':'normal_sync_receipt_unparseable','exit':r.returncode}
(p/'normal-sync-result.json').write_text(json.dumps(d,indent=2)+'\n')
receipt=d.get('receipt',{})
print(json.dumps({'exit':r.returncode,'status':d.get('status'),'commit':d.get('commit'),'instance_role':receipt.get('instance_role'),'instance_label':receipt.get('instance_label'),'expected_commit':receipt.get('expected_commit'),'derived_commit':receipt.get('derived_commit'),'identifier_assignments':d.get('identifiers',{}).get('assignments')}))
raise SystemExit(r.returncode)

View file

@ -0,0 +1,31 @@
--- a/workplans/STATE-WP-0095-historical-source-receiving.md
+++ b/workplans/STATE-WP-0095-historical-source-receiving.md
@@ -370,14 +370,25 @@
historical exceptions, not restored preimages or backfilled successes.
T10 remains wait/needs_human for exact proposal
-STATE-WP-0095-T10-frozen-bindings-guard-r1 revision 1, metadata
-sha256:81d365926fc585a186955d8c98ee83501fd3cec12135b2256d71b46a75097932,
+STATE-WP-0095-T10-frozen-bindings-guard-r1, now revision 2, metadata
+sha256:5d0ddebc21bcb035809cc8b57f4c2e1ba8ed09204be5b965460e178a90913f1e,
pending decision df703266-6719-4c04-ae1b-ba9afd3bca1c. The inspected candidate
image is main-c103cbf@sha256:4cc4ce17bbcdb1b66132d07c5b7b741f46df83124ef1c8403ffabdafba6993d1,
from runtime source c103cbf3c8bed5dba87a03e320595ddded9301a3. Image-only
server dry-run passed eight identities with only three image-field changes.
The exact proposal and recovery limits are retained in the Custodian dated
-2026-10-17 guard-successor-review-r1 packet. No new API runtime is approved or
+2026-10-17 guard-successor-review-r2 packet. No new API runtime is approved or
delivered by this source-only note; its later workplan commit does not change
the image's source pin. T09 stays done, T07/T10 stay wait pending reviewed API
delivery and explicit successor/current-baseline acceptance disposition.
+
+
+T10 proposal revision history: revision 1 metadata
+sha256:81d365926fc585a186955d8c98ee83501fd3cec12135b2256d71b46a75097932
+and its original helper remain immutable local evidence, unapproved and
+unexecuted. Revision 2 of the same stable proposal changes only the native
+probe's EXPECTED hash metadata into module/sha256 records for normal publication
+scanning; probe behavior, exact image, recovery and acceptance scope remain
+unchanged. The same decision df703266-6719-4c04-ae1b-ba9afd3bca1c remains open
+and pending. This source-only amendment grants no runtime authority or new
+image/code change; T07/T10 remain wait and T09 remains done.

View file

@ -0,0 +1,5 @@
{
"all10_task_blocks_unchanged": true,
"proposal_metadata_digest_verified": true,
"source_only": true
}

View file

@ -0,0 +1,46 @@
# Approved root-owned deployment verification preparation
These are source helpers for root review and execution through the existing
State Hub owner API-pod path. This subagent did not execute them or mutate a
live database. No additional approval or credential request is implied.
1. Root must run snapshot_full_row_hashes.py before the approved rollout and
again afterward inside the ordinary API-pod Python environment. It uses
existing async_session_factory with repeatable-read READ ONLY and dynamic
Workplan/Task model table assertions, full to_jsonb records hashed inside
the pod, columns/counts/UUIDs and canonical hashes only. It returns no raw
rows, credentials, DSN or SQL diagnostics and retains no full DB row bytes.
2. compare_snapshots.py compares only those sanitized receipts, exact3parent /
15task columns/UUID/full-row hashes and expected delivered module hash. Do
not substitute API-only snapshots for this full DB evidence. The optional
private API baseline is explicitly limited in its receipt and is not a full
database preservation claim.
3. After delivered module hash review, root can review/run
native_rollback_refusal_probes.py inside the same API-pod interpreter with
the exact private published-source payload on stdin. The payload receipt
binds published cluster HEADcac8eabe and22workplan files; all uncommitted
cluster additions are excluded. It performs no Forge token lookup and no
network clone. The deployed receiving module derives the checked source in
private temporary files; no caller projection is published as authority.
4. Each actual DB defect is inside a nested transaction, with explicit outer
rollback and statement/lock/idle timeouts. It tests ordinary preservation,
actual foreign-parent move, actual task/parent nonterminal status and actual
missing task (DELETE inside rollback). Source status and UUIDs are never
committed or published. The foreign-holder case precisely expects the
historical binding missing-child refusal; it is not a claim of reaching the
separate global creation-UUID holder branch. Constraint/lock/unrelated
refusal remains unverified and must be retained, not relabeled success.
5. Each case rolls back, clears ORM state and checks all historical full-row
hashes restored; final fresh transaction rechecks. Successful preserve may
stage unrelated legitimate source updates inside rollback, never commit.
Any unrelated authoritative-source or stale-row refusal must remain a
blocker to claiming that normal receive passed. Native helper exceptions
emit only closed status and optional five-character SQLSTATE, not values.
Root should invoke Python with argv lists, not shell interpolation, e.g. fixed
kubectl -n state-hub exec -i <approved API pod> -- /app/.venv/bin/python -c
<exact reviewed script text>, passing the payload bytes as stdin. No TTY, secret
argument, file credential or environment dump is needed. Keep any command error
stdout/stderr private and publish only the helper's fixed JSON receipt. Root
retains the real approved action/verification receipt; source compile is not
native proof. All helpers are compiled, not run against a live DB by this lane.

View file

@ -0,0 +1,13 @@
{
"status": "private_api_baseline_captured",
"observed_at": "2026-10-16T23:55:07.822861+00:00",
"rows": {
"parents": 3,
"tasks": 15
},
"private_snapshot": "/tmp/state95-private-api-baseline-dkreewoe/baseline.json",
"snapshot_sha256": "sha256:8204a2095433feb777694bfef5b2beec512acaaadd5129501d8ca1f278838c6c",
"limitations": [
"API fields only, not all DBcolumns. No schema migration or database mutation performed."
]
}

View file

@ -0,0 +1,13 @@
#!/usr/bin/env python3
"""Compare sanitized full-row hash receipts only; never consumes row values."""
import argparse,json
from pathlib import Path
ap=argparse.ArgumentParser();ap.add_argument('before');ap.add_argument('after');args=ap.parse_args()
a=json.loads(Path(args.before).read_text());b=json.loads(Path(args.after).read_text())
assert a['status']==b['status']=='captured_readonly'
assert a['tables']['workplans']['row_count']==b['tables']['workplans']['row_count']==3
assert a['tables']['tasks']['row_count']==b['tables']['tasks']['row_count']==15
same=a['tables']==b['tables']
expected='sha256:e3c4bf965764b32a6df5d61c71272ee22569df9a9ddae2a3fc3df97ec554e0b2'
result={'schema':'state95.historical-full-row-preservation.v1','status':'passed' if same and b['historical_module_sha256']==expected else 'refused_or_unverified','full_row_columns_uuids_hashes_equal':same,'delivered_historical_module_hash_matches':b['historical_module_sha256']==expected,'parent_count':3,'task_count':15,'raw_rows_retained':False}
print(json.dumps(result));raise SystemExit(result['status']!='passed')

View file

@ -0,0 +1,32 @@
{
"schema": "state95.postdeployment-verifier-source.v1",
"status": "source_prepared_for_root_review_not_native_executed_by_subagent",
"approved_rollout_proposal_digest": "63a02e8296d126c0158b7eb2c4ce79c7eeb6f8d6f61298d473c1065c7557ba32",
"runtime_source": "51bc70d1ff8f25450a8650d8e50caf053093a02e",
"files": [
{
"path": "snapshot_full_row_hashes.py",
"sha256": "sha256:f01e93c0fcb4ca155bdf76813626c33e4343f6a8caec2870ab1d785243c60479"
},
{
"path": "native_rollback_refusal_probes.py",
"sha256": "sha256:839d90fd336fe56bbd73d101b0770e8eba3d7517a3953b8afd075feccdd0b94d"
},
{
"path": "compare_snapshots.py",
"sha256": "sha256:fe38d1268a8c4bb54f0941f87a9aab5ee24410cc0197b082dbebe71bc94b0b78"
},
{
"path": "README.md",
"sha256": "sha256:f432c3bcb29ee0715ef8e72d5ae806a800f07338cd9b5faea9d71c470c51d699"
},
{
"path": "private-published-source-payload-receipt.json",
"sha256": "sha256:df2c438c455578d778b00363203b69aedd46e8bcdbdb3e0bd6650de6bde14bb9"
},
{
"path": "api-baseline-receipt.json",
"sha256": "sha256:8f6da30c33482b552392d16584f704265750f3a0263fa6ec4f20f5175b7bd852"
}
]
}

View file

@ -0,0 +1,79 @@
#!/usr/bin/env python3
"""Root-reviewed in-pod native probes only; private source stdin, every DB effect rolled back."""
import asyncio,base64,copy,hashlib,json,logging,sys,tempfile,uuid
from pathlib import Path
logging.disable(logging.CRITICAL)
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'}]}]
PAYLOAD_SHA='82af93c3f8585f97fed63fafca2a6105caaeed8d52848ad628091663386fa949'
EXPECTED_HP='e3c4bf965764b32a6df5d61c71272ee22569df9a9ddae2a3fc3df97ec554e0b2'
EXPECTED_FP='b980e62cbd85c3e7df42b01abf14354e04133374db94af6531dcd91629c3487d'
def digest(value):return 'sha256:'+hashlib.sha256(json.dumps(value,sort_keys=True,separators=(',',':'),ensure_ascii=False).encode()).hexdigest()
async def main():
from sqlalchemy import text
from api.database import async_session_factory,engine
from api.services import forge_projection as fp,historical_projection as hp
from api.models.workplan import Workplan
from api.models.task import Task
engine.echo=False
assert Workplan.__tablename__=='workplans' and Task.__tablename__=='tasks'
assert hashlib.sha256(Path(hp.__file__).read_bytes()).hexdigest()==EXPECTED_HP
assert hashlib.sha256(Path(fp.__file__).read_bytes()).hexdigest()==EXPECTED_FP
raw=sys.stdin.buffer.read(2097153);assert len(raw)<=2097152 and hashlib.sha256(raw).hexdigest()==PAYLOAD_SHA
payload=json.loads(raw);assert set(payload)=={'repo','revision','files'} and payload['repo']=='railiance-cluster'
parents=[e['uuid'] for e in BINDINGS];task_ids=[t['uuid'] for e in BINDINGS for t in e['tasks']]
async def snapshot(session):
result={}
for table,ids in [('workplans',parents),('tasks',task_ids)]:
values=(await session.execute(text('SELECT to_jsonb(row) FROM '+table+' AS row WHERE row.id=ANY(:ids) ORDER BY row.id'),{'ids':[uuid.UUID(v) for v in ids]})).scalars().all()
assert len(values)==len(ids)
result[table]=digest(values)
return result
with tempfile.TemporaryDirectory(prefix='state95-exact-published-source-') as temporary:
checkout=Path(temporary)/'railiance-cluster';checkout.mkdir(mode=0o700)
for name,value in payload['files'].items():
path=Path(name);assert path.parts[0]=='workplans' and not path.is_absolute() and '..' not in path.parts and path.suffix=='.md'
target=checkout/path;target.parent.mkdir(parents=True,exist_ok=True);target.write_bytes(base64.b64decode(value,validate=True));target.chmod(0o600)
derived=fp.derive_from_checkout(checkout,'railiance-cluster',payload['revision'])
histories=[w for w in derived.workplans if w.historical_preservation]
assert len(histories)==3 and {w.uuid for w in histories}==set(parents)
result={'schema':'state95.native-rollback-refusal-probes.v1','status':'failed','source_revision':payload['revision'],'private_source_payload_sha256':'sha256:'+PAYLOAD_SHA,'module_hashes_verified':True,'commits_performed':0,'cases':{},'raw_rows_or_diagnostics_retained':False}
async with async_session_factory() as session:
try:
await session.execute(text("SET LOCAL statement_timeout='5s'"))
await session.execute(text("SET LOCAL lock_timeout='1s'"))
await session.execute(text("SET LOCAL idle_in_transaction_session_timeout='10s'"))
before=await snapshot(session);result['before_full_row_hashes']=before
for case in ('preserve','foreign-holder','nonterminal-task','nonterminal-parent','missing-task'):
nested=await session.begin_nested();row={'status':'unverified','rolled_back':False}
try:
session.expire_all()
if case=='foreign-holder':await session.execute(text('UPDATE tasks SET workplan_id=:parent WHERE id=:task'),{'parent':uuid.UUID(parents[1]),'task':uuid.UUID(task_ids[0])})
elif case=='nonterminal-task':await session.execute(text("UPDATE tasks SET status='progress' WHERE id=:task"),{'task':uuid.UUID(task_ids[0])})
elif case=='nonterminal-parent':await session.execute(text("UPDATE workplans SET status='active' WHERE id=:parent"),{'parent':uuid.UUID(parents[0])})
elif case=='missing-task':await session.execute(text('DELETE FROM tasks WHERE id=:task'),{'task':uuid.UUID(task_ids[0])})
outcome=await fp.reset_repository_projection(session,'railiance-cluster',derived=copy.deepcopy(derived))
reasons={r.get('reason') for r in outcome.refused}
if case=='preserve':
await session.flush();row['full_historical_rows_equal']=await snapshot(session)==before
row['status']='passed' if outcome.status in {'noop','applied'} and not outcome.refused and row['full_historical_rows_equal'] else 'refused_or_unverified'
else:
row['historical_binding_refused']=outcome.status=='refused' and 'historical binding requires existing parent and task UUIDs' in reasons
row['status']='passed' if row['historical_binding_refused'] else 'wrong_or_unverified_refusal'
row['native_outcome_status']=outcome.status
except BaseException as error:
code=getattr(getattr(error,'orig',error),'sqlstate',None)
row={'status':'native_probe_error','sqlstate':code if isinstance(code,str) and len(code)==5 and code.isalnum() else None,'rolled_back':False}
finally:
await nested.rollback();session.expire_all();row['rolled_back']=True
row['full_historical_rows_restored']=await snapshot(session)==before
result['cases'][case]=row
result['after_full_row_hashes']=await snapshot(session)
finally:await session.rollback()
async with async_session_factory() as check:
try:result['fresh_transaction_full_rows_equal']=await snapshot(check)==before
finally:await check.rollback()
result['status']='passed' if all(v['status']=='passed' and v['rolled_back'] and v['full_historical_rows_restored'] for v in result['cases'].values()) and result['fresh_transaction_full_rows_equal'] else 'refused_or_unverified'
await engine.dispose();print(json.dumps(result,sort_keys=True))
if __name__=='__main__':
try:asyncio.run(main())
except BaseException:print(json.dumps({'schema':'state95.native-rollback-refusal-probes.v1','status':'refused_or_unverified','commits_performed':0,'raw_rows_or_diagnostics_retained':False}));raise SystemExit(1)

View file

@ -0,0 +1,10 @@
{
"schema": "state95.source-probe-payload.v1",
"scope": "exact_current_git_HEAD_workplans_only_uncommitted_additions_excluded",
"revision": "cac8eabef5a0d0990a7b0de8f5e2c762666ac7f0",
"private_payload_path": "/tmp/state95-private-source-payload-frvylkw5/published-workplans.json",
"bytes": 155730,
"sha256": "sha256:82af93c3f8585f97fed63fafca2a6105caaeed8d52848ad628091663386fa949",
"file_count": 22,
"native_authority": false
}

View file

@ -0,0 +1,40 @@
#!/usr/bin/env python3
"""Run by approved owner inside API pod; SELECT-only, output full-row hashes only."""
import asyncio
import hashlib
import json
import logging
from pathlib import Path
import uuid
logging.disable(logging.CRITICAL)
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'}]}]
def digest(value):return 'sha256:'+hashlib.sha256(json.dumps(value,sort_keys=True,separators=(',',':'),ensure_ascii=False).encode()).hexdigest()
async def main():
from sqlalchemy import text
from api.database import async_session_factory,engine
from api.models.workplan import Workplan
from api.models.task import Task
engine.echo=False
assert Workplan.__tablename__=='workplans' and Task.__tablename__=='tasks'
parents=[entry['uuid'] for entry in BINDINGS]
tasks={task['uuid']:entry['uuid'] for entry in BINDINGS for task in entry['tasks']}
result={'schema':'state95.full-db-row-hash-snapshot.v1','status':'failed','credential_values_exposed':False,'raw_rows_retained':False}
async with async_session_factory() as session:
try:
await session.execute(text('SET TRANSACTION ISOLATION LEVEL REPEATABLE READ, READ ONLY'))
rows={}
for table,identifiers in [('workplans',parents),('tasks',list(tasks))]:
query=text('SELECT to_jsonb(row) FROM '+table+' AS row WHERE row.id=ANY(:ids) ORDER BY row.id')
values=(await session.execute(query,{'ids':[uuid.UUID(v) for v in identifiers]})).scalars().all()
assert len(values)==len(identifiers) and {v['id'] for v in values}==set(identifiers)
if table=='tasks':assert all(v['workplan_id']==tasks[v['id']] for v in values)
assert all(v['status'] in {'done','cancel','finished','archived','completed'} for v in values)
rows[table]={'row_count':len(values),'columns':sorted(values[0]),'rows':[{'uuid':v['id'],'sha256':digest(v)} for v in values],'all_rows_sha256':digest(values)}
from api.services import historical_projection
result.update(status='captured_readonly',tables=rows,historical_module_sha256='sha256:'+hashlib.sha256(Path(historical_projection.__file__).read_bytes()).hexdigest())
finally:await session.rollback()
await engine.dispose()
print(json.dumps(result,sort_keys=True))
if __name__=='__main__':
try:asyncio.run(main())
except BaseException:print(json.dumps({'schema':'state95.full-db-row-hash-snapshot.v1','status':'refused_or_unverified','raw_rows_retained':False}));raise SystemExit(1)

View file

@ -0,0 +1,152 @@
---
id: RCLUSTER-WP-0018
type: workplan
title: "Establish original KeyCape TLS recovery and future archive boundary"
domain: financials
repo: railiance-cluster
status: active
owner: codex
topic_slug: railiance
created: "2026-10-17"
updated: "2026-10-17"
flavor: implementation
depends_on: []
related: [CUST-WP-0080, NK-WP-0049, RCLUSTER-WP-0007, RCLUSTER-WP-0017]
state_hub_workstream_id: "e0a7813d-c916-5e49-84b2-5e5b30441891"
---
Required owner source work for NK-WP-0049-T35 and CUST-WP-0080 G08. Reviewed
against current INTENT/SCOPE, backup sources and existing work records; ready
means work can proceed, not privileged execute authority. This does not promote
HA/backlog work, reopen archived local backup delivery or duplicate signer0017.
Source-owner scope is certificate plumbing/backup posture; NetKingdom owns
namespace ingress, while exact original independent TLS custody remains to be
established. No secret read, reissue, live change or native assent occurred.
## Record source boundary and public-only metadata preparation
```task
id: RCLUSTER-WP-0018-T01
status: done
priority: high
assignee: codex
state_hub_task_id: "7280193d-0d59-5b78-a2d3-96ebd127127f"
```
Completed 2026-10-17 as isolated source preparation. Independently reviewed the
17 public source references against current owner bytes, checked current owner
instructions/environment/supervision and existing plans, and recorded the exact
boundary in docs/keycape-tls-recovery-boundary.md. Prepared bounded public-only
certificate/trust metadata projection with generated-certificate tests; no actual
certificate/key read. Source integration/publication and task projection remain
separate receipts, not claimed by this completed preparation task.
Evidence: the-custodian docs/changes/netkingdom-target-2026-10-16/
recovery-owner-handoffs-r1/ and prior recovery-attempt-r1/t35-t36-source-next/.
Publication return, 2026-10-17: normal owner source publication at
c562d7134c38679952a8ffd17a8a893a900aef0d was applied on primary/railiance01
with expected and derived commits equal. Read-only source/remote/Hub proof
verified this workplan's five exact task ID/UUID/status bindings and three
internal dependency edges. Receipts are retained in the Custodian packet
docs/changes/netkingdom-target-2026-10-17/railiance-cluster-projection.json and
cluster-publication-readback.json. The later legitimate C23 lifecycle repair
at 26671d33600e218316d29c9cd020f115ebfb35b2 changed ready to active; active
is retained. This return records publication separately from the completed
source preparation above. Original TLS artifact/provider custody, extraction
and native admission remain T02–T05 obligations; publication proves no TLS
recovery, private-key custody or native acceptance.
The whole maintenance pipeline's historical-row guard failed for three parent
rows while 15 task full-row hashes remained unchanged. STATE-WP-0095-T07 and
RMGR-WP-0019-T06 remain wait; neither publication nor this memo asserts full
historical-row preservation or restoration. The subsequent forward correction
restores the brief's committed content to its pre-accident version while restoring
the original staged/worktree change for its owner; history is not rewound. No legacy deep consistency fix is run by the correction.
## Establish exact independent original TLS artifact and provider custody metadata
```task
id: RCLUSTER-WP-0018-T02
status: todo
priority: high
assignee: codex
state_hub_task_id: "90836435-917f-504c-a711-3f29ece348e3"
```
Next: identify the actual original sso/kc-tls custody owner and independent public
provenance through existing owner processes. Record artifact/provider, timestamp,
public certificate/trust hashes, private custody entry point and outage dependencies
without values. Source review cannot infer a fresh backup, original key coverage
or independent decryption custody from a local backup script. Use credential
routing before any later credential need; missing route is not proof of absence.
Done when exact independent recovery or an explicitly owned unavailable capability
is evidenced as metadata and a reviewed next action, with no guessed assent.
## Prepare safe isolated original extraction or explicit reissue alternative
```task
id: RCLUSTER-WP-0018-T03
status: wait
priority: high
assignee: codex
depends_on: [RCLUSTER-WP-0018-T02]
blocking_reason: "Exact original artifact/provider/custody disposition is required before selecting extraction or reissue source."
state_hub_task_id: "5dfa9a3a-2639-5cf6-b0a4-13eef417d47a"
```
From T02, reuse the actual owner path to prepare an exact attended private-only
recovery command and full dependency/cleanup proof. Do not run whole-state restore
or expose raw state/Secret output. If existing backup staging is required, correct
only the needed path with bounded memory-only staging and early exact cleanup,
including error/parent-loss tests before use. Original recovery and accepted
reissue are distinct claims; no self-signed trust substitute, new broker or
implicit production action. Done when the exact source proposal, public metadata
preflight, negatives, timeout, abort and custody obligations are reviewed.
## Verify admitted original TLS recovery through the actual owner boundary
```task
id: RCLUSTER-WP-0018-T04
status: wait
priority: high
assignee: codex
needs_human: true
depends_on: [RCLUSTER-WP-0018-T02, RCLUSTER-WP-0018-T03]
blocking_reason: "Await exact reviewed attended owner custody path and its existing scoped authority; no private input or native attempt requested yet."
state_hub_task_id: "021b07bb-65bc-5743-bac5-4294b4be74f6"
```
Only the actual admitted owner action can prove recovered certificate/key pairing,
original hostname/trust and independent outage operation, or the expressly accepted
reissue result. Retain exact source/artifact/target/identity/negative/cleanup receipts.
Human custody/authority gates are not worker wakeups. Source and historical local
backup proof never fill native assent. Return bounded public proof to NK49T35;
no production mutation, credential retrieval or approval is granted by this task.
## Disposition original TLS coverage in the future identity archive contract
```task
id: RCLUSTER-WP-0018-T05
status: todo
priority: high
assignee: codex
state_hub_task_id: "5bc67a22-0991-5625-86a6-f749560d8a0e"
```
Next: deliver the source-owned requirement in docs/keycape-tls-recovery-boundary.md
to NetKingdom's existing contract process: original TLS custody or accepted reissue,
independent provider/key recovery, public identity hashes, scoped capture/read
permissions and verification/retention. Record named owner dependencies as live
work before closure. Do not append kc-tls to secret_refs, expand capture credentials
or rewrite a historical archive without those owner reviews/authority. Done when
the future contract requirement has an exact tracked disposition/handoff; it is
not proof of current archive coverage or actual future capture.
## Coordination and completion
Beneficiary NK-WP-0049-T35/CUST-WP-0080 remains linked to this obligor record by
derived cross_owner_wait case nk49-t35-rcluster18 in the packet. No new project
driver, live worker injection or message was created. Own T03 wait has an explicit
local prerequisite; T04 is a human gate. Close only after source/native obligations
are proved or an explicit bounded scope disposition hands off remaining live work.

View file

@ -0,0 +1,132 @@
---
id: RCLUSTER-WP-0018
type: workplan
title: "Establish original KeyCape TLS recovery and future archive boundary"
domain: financials
repo: railiance-cluster
status: active
owner: codex
topic_slug: railiance
created: "2026-10-17"
updated: "2026-10-17"
flavor: implementation
depends_on: []
related: [CUST-WP-0080, NK-WP-0049, RCLUSTER-WP-0007, RCLUSTER-WP-0017]
state_hub_workstream_id: "e0a7813d-c916-5e49-84b2-5e5b30441891"
---
Required owner source work for NK-WP-0049-T35 and CUST-WP-0080 G08. Reviewed
against current INTENT/SCOPE, backup sources and existing work records; ready
means work can proceed, not privileged execute authority. This does not promote
HA/backlog work, reopen archived local backup delivery or duplicate signer0017.
Source-owner scope is certificate plumbing/backup posture; NetKingdom owns
namespace ingress, while exact original independent TLS custody remains to be
established. No secret read, reissue, live change or native assent occurred.
## Record source boundary and public-only metadata preparation
```task
id: RCLUSTER-WP-0018-T01
status: done
priority: high
assignee: codex
state_hub_task_id: "7280193d-0d59-5b78-a2d3-96ebd127127f"
```
Completed 2026-10-17 as isolated source preparation. Independently reviewed the
17 public source references against current owner bytes, checked current owner
instructions/environment/supervision and existing plans, and recorded the exact
boundary in docs/keycape-tls-recovery-boundary.md. Prepared bounded public-only
certificate/trust metadata projection with generated-certificate tests; no actual
certificate/key read. Source integration/publication and task projection remain
separate receipts, not claimed by this completed preparation task.
Evidence: the-custodian docs/changes/netkingdom-target-2026-10-16/
recovery-owner-handoffs-r1/ and prior recovery-attempt-r1/t35-t36-source-next/.
## Establish exact independent original TLS artifact and provider custody metadata
```task
id: RCLUSTER-WP-0018-T02
status: todo
priority: high
assignee: codex
state_hub_task_id: "90836435-917f-504c-a711-3f29ece348e3"
```
Next: identify the actual original sso/kc-tls custody owner and independent public
provenance through existing owner processes. Record artifact/provider, timestamp,
public certificate/trust hashes, private custody entry point and outage dependencies
without values. Source review cannot infer a fresh backup, original key coverage
or independent decryption custody from a local backup script. Use credential
routing before any later credential need; missing route is not proof of absence.
Done when exact independent recovery or an explicitly owned unavailable capability
is evidenced as metadata and a reviewed next action, with no guessed assent.
## Prepare safe isolated original extraction or explicit reissue alternative
```task
id: RCLUSTER-WP-0018-T03
status: wait
priority: high
assignee: codex
depends_on: [RCLUSTER-WP-0018-T02]
blocking_reason: "Exact original artifact/provider/custody disposition is required before selecting extraction or reissue source."
state_hub_task_id: "5dfa9a3a-2639-5cf6-b0a4-13eef417d47a"
```
From T02, reuse the actual owner path to prepare an exact attended private-only
recovery command and full dependency/cleanup proof. Do not run whole-state restore
or expose raw state/Secret output. If existing backup staging is required, correct
only the needed path with bounded memory-only staging and early exact cleanup,
including error/parent-loss tests before use. Original recovery and accepted
reissue are distinct claims; no self-signed trust substitute, new broker or
implicit production action. Done when the exact source proposal, public metadata
preflight, negatives, timeout, abort and custody obligations are reviewed.
## Verify admitted original TLS recovery through the actual owner boundary
```task
id: RCLUSTER-WP-0018-T04
status: wait
priority: high
assignee: codex
needs_human: true
depends_on: [RCLUSTER-WP-0018-T02, RCLUSTER-WP-0018-T03]
blocking_reason: "Await exact reviewed attended owner custody path and its existing scoped authority; no private input or native attempt requested yet."
state_hub_task_id: "021b07bb-65bc-5743-bac5-4294b4be74f6"
```
Only the actual admitted owner action can prove recovered certificate/key pairing,
original hostname/trust and independent outage operation, or the expressly accepted
reissue result. Retain exact source/artifact/target/identity/negative/cleanup receipts.
Human custody/authority gates are not worker wakeups. Source and historical local
backup proof never fill native assent. Return bounded public proof to NK49T35;
no production mutation, credential retrieval or approval is granted by this task.
## Disposition original TLS coverage in the future identity archive contract
```task
id: RCLUSTER-WP-0018-T05
status: todo
priority: high
assignee: codex
state_hub_task_id: "5bc67a22-0991-5625-86a6-f749560d8a0e"
```
Next: deliver the source-owned requirement in docs/keycape-tls-recovery-boundary.md
to NetKingdom's existing contract process: original TLS custody or accepted reissue,
independent provider/key recovery, public identity hashes, scoped capture/read
permissions and verification/retention. Record named owner dependencies as live
work before closure. Do not append kc-tls to secret_refs, expand capture credentials
or rewrite a historical archive without those owner reviews/authority. Done when
the future contract requirement has an exact tracked disposition/handoff; it is
not proof of current archive coverage or actual future capture.
## Coordination and completion
Beneficiary NK-WP-0049-T35/CUST-WP-0080 remains linked to this obligor record by
derived cross_owner_wait case nk49-t35-rcluster18 in the packet. No new project
driver, live worker injection or message was created. Own T03 wait has an explicit
local prerequisite; T04 is a human gate. Close only after source/native obligations
are proved or an explicit bounded scope disposition hands off remaining live work.

View file

@ -0,0 +1,54 @@
#!/usr/bin/env python3
"""Reviewed forward-only two-path commit; retain original brief/index/worktree dirt."""
from pathlib import Path
import argparse,hashlib,json,subprocess
P=Path(__file__).resolve().parent
R=Path('/home/worsch/railiance-cluster')
B=P.parent/'railiance-cluster-publication-backup'
M=json.loads((P/'manifest.json').read_text())
def sha(p):return hashlib.sha256(p.read_bytes()).hexdigest()
def git(*args):
r=subprocess.run(['git','-C',str(R),*args],capture_output=True,timeout=180)
if r.returncode:raise RuntimeError(json.dumps({'args':args,'exit':r.returncode,'stdout':r.stdout.decode(errors='replace'),'stderr':r.stderr.decode(errors='replace')}))
return r.stdout
parser=argparse.ArgumentParser();parser.add_argument('--execute',action='store_true');a=parser.parse_args()
assert git('rev-parse','HEAD').decode().strip()==M['base']
for name,h in M['files'].items():assert sha(P/name)==h
for name,h in M['original_backup_sha256'].items():assert sha(B/name)==h
originals=json.loads((B/'originals.json').read_text())
for name,index in originals.items():
assert (R/name).read_bytes()==(B/(name+'.worktree')).read_bytes()
assert git('ls-files','--stage','--',name).decode()==index
wp,brief=M['paths'];assert (R/wp).read_bytes()==(P/'WP18.preimage.md').read_bytes()
assert git('show',M['restore_brief_from_commit']+':'+brief)==(P/'brief.forward-restore.md').read_bytes()
assert git('diff','--cached','--name-only')==b''
before_index=git('ls-files','--stage').decode().splitlines()
frozen={str(p.relative_to(R)):sha(p) for p in (R/'workplans/archived').glob('260622-RAIL-BS-WP-000[234]-*.md')};assert len(frozen)==3
assert sha(R/'WORK-RECORDS.md')==M['original_backup_sha256']['WORK-RECORDS.md.worktree']
git('apply','--check',str(P/'forward-correction.patch'))
if not a.execute:print(json.dumps({'status':'checked-ready','paths':M['paths'],'original_brief_and_work_records_preserved':True}));raise SystemExit(0)
(P/'execution-start.json').write_text(json.dumps({'status':'started','base':M['base'],'index_entries':before_index,'frozen_sha256':frozen},indent=2)+'\n')
commit_output='';error=None
try:
git('apply',str(P/'forward-correction.patch'))
# --only feeds exactly the two reviewed worktree versions to normal hooks.
commit_output=git('commit','--only','-m','Record Cluster publication and restore unrelated staged brief','--',*M['paths']).decode()
finally:
# The owner's original brief index/worktree is reinstated even if a hook refuses.
(R/brief).write_bytes((B/(brief+'.worktree')).read_bytes())
mode,oid,stagepath=originals[brief].split(' ',2)
assert stagepath=='0\t'+brief+'\n'
git('update-index','--cacheinfo',mode,oid,brief)
for name,index in originals.items():
assert (R/name).read_bytes()==(B/(name+'.worktree')).read_bytes()
assert git('ls-files','--stage','--',name).decode()==index
head=git('rev-parse','HEAD').decode().strip();assert head!=M['base']
assert set(git('diff-tree','--no-commit-id','--name-only','-r',head).decode().splitlines())==set(M['paths'])
assert git('show','HEAD:'+brief)==(P/'brief.forward-restore.md').read_bytes()
assert git('show','HEAD:'+wp)==(P/'WP18.candidate.md').read_bytes()
# Every unrelated stage entry is identical, including user's exact brief entry.
without_wp=lambda entries:[line for line in entries if line.split('\t',1)[1]!=wp]
assert without_wp(git('ls-files','--stage').decode().splitlines())==without_wp(before_index)
assert {path:sha(R/path) for path in frozen}==frozen
receipt={'status':'committed-forward-correction','head':head,'parent':M['base'],'paths':M['paths'],'commit_output':commit_output,'head_brief_equals_c562':True,'original_brief_index_and_worktree_restored':True,'all_other_index_entries_identical':True,'work_records_index_and_dirty_worktree_preserved':True,'three_archives_unchanged':True,'wp18_status':'active','task_blocks_and_UUIDs_unchanged':True,'legacy_deepfix':False,'history_rewrite':False,'native_TLS_acceptance':False,'all18historical_preservation_claim':False,'status_porcelain':git('status','--porcelain').decode()}
(P/'forward-correction-commit.json').write_text(json.dumps(receipt,indent=2)+'\n');print(json.dumps(receipt,indent=2))

View file

@ -0,0 +1,33 @@
<!-- custodian-brief: generated by fix-consistency — do not edit manually -->
# Custodian Brief — railiance-cluster
**Domain:** financials
**Last synced:** 2026-10-16 19:05 UTC
**State Hub:** http://127.0.0.1:8000 *(adjust if running on a remote machine)*
## Current Goal
Install k3s and Kubernetes Baseline on the HostEurope Server
## Active Workstreams
### Review NetKingdom signer runtime and node-local storage readiness
Progress: 1/3 done | workplan_id: `f383557d-c8a8-553e-adcd-9f82ff9c2929`
**Open tasks:**
- ► Review the bounded native preflight and storage action `7f4320c6`
- · Verify the approved runtime and storage result `747a8d77`
## Inbox Hygiene
**Stale unread:** 6 message(s) older than 3 day(s) — triage at session start.
**Missing thread_id:** 8 unread message(s) lack supersession chains.
- ! the-custodian: Workplan 'three-phoenix-ha-cluster' is blocked with no wait task `a1368d99`
---
## MCP Orientation (when available)
If the state-hub MCP server is reachable, call:
`get_domain_summary("financials")`
This provides richer cross-domain context.
If the MCP call fails, use this file as your orientation source.

View file

@ -0,0 +1,28 @@
<!-- custodian-brief: generated by fix-consistency — do not edit manually -->
# Custodian Brief — railiance-cluster
**Domain:** financials
**Last synced:** 2026-10-13 18:24 UTC
**State Hub:** http://127.0.0.1:8000 *(adjust if running on a remote machine)*
## Current Goal
Install k3s and Kubernetes Baseline on the HostEurope Server
## Active Workstreams
*(none — repo may need first-session setup)*
## Inbox Hygiene
**Stale unread:** 6 message(s) older than 3 day(s) — triage at session start.
**Missing thread_id:** 6 unread message(s) lack supersession chains.
- ! the-custodian: Workplan 'three-phoenix-ha-cluster' is blocked with no wait task `a1368d99`
---
## MCP Orientation (when available)
If the state-hub MCP server is reachable, call:
`get_domain_summary("financials")`
This provides richer cross-domain context.
If the MCP call fails, use this file as your orientation source.