Preserve canonical journal digests and bounded JWT source reviews
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s

Assistant: codex
Assistant-Model: gpt-6.1-sol
Assistant-Session: 01a126e1-76f8-7643-8cf3-e93336539ade
This commit is contained in:
codex 2026-10-11 17:30:10 +02:00
parent 4ed50501f6
commit 4e8fa6e831
6 changed files with 241 additions and 9 deletions

View file

@ -0,0 +1,63 @@
{
"completed_same_owner_refinement_precedes_formal_review": true,
"decision": "changes_requested",
"findings": [
{
"counterexample": "Actual main after mocked source validation/public-health with a synthetic20ms original window and partial JSON pipe without EOF remained blocked after100ms. sys.stdin.read has no byte cap or elapsed/EOF bound. Child was terminated by test parent; no credential/native operation occurred.",
"location": "sso-mfa/k8s/keycape/openbao-negative-session.py:755",
"required_change": "Read private JSON through a strict byte cap and EOF requirement within the original unrenewed monotonic and wall execution window. Expiry/oversize/no-EOF must fail with fixed value-free receipt before protected/native effects. Independently review new immutable source; no custody completion based on v7.",
"severity": "blocking_before_private_producer_admission"
}
],
"input_unchanged": true,
"intent_basis": "Platform INTENT stable shared interfaces, secure custody and observable recovery: exact provider route prerequisites and fail-closed guarded native preparation without publichealth becoming authority.",
"mandatory_native_prerequisites": [
"Publichealth clusterhash is unauthenticated: independently verify founder/node/Service/cluster/provider route identity, current admitted route/estate and exact source/runtime pins; no arbitrary workstation diagnostic proves node placement.",
"Actual installed OpenBao JWT plugin/version, role/config/effective-policy source equality and raw/effective expiration_leeway, clock_skew_leeway and not_before_leeway interaction. Helm2.5.4/tag and raw0=>150 model are not native facts; semantic expiry proof remains mandatory.",
"Establish issuer actual readiness_state and Argo ownership through authoritative source/owner receipt. No keycape declaration/current deployment adoption established in inspected sources; absence is not nonproduction. Unmapped production-tier rules apply. If adopted/production-approved, transient directCAS needs explicit reviewed one-use maintenanceexception, close-down entry and reconciliation before nativego.",
"Fresh authenticated scoped founder decision covers exact route, source, issuer mutation/window and finite abort/revoke/restoration/recovery obligations. Helper labels/sourceacknowledgments cannot authenticate approval or waive gates.",
"Admitted private founder human/coding-agent token producer/client/callback/custody handoff remains unimplemented. No credential request/read/reuse authorized.",
"Native correct role/claim permutation/expiry/refusal/revoke, baseline restoration/client removal/temporaryobject absence and all unknown outcome resolution. MASON and Secrets native/full-adoption obligations stay separate."
],
"not_approved": [
"route setup, native preflight/login/Secret access or production mutation",
"privileged authority/helperapproval authentication or default flip",
"current provider identity/plugin/leeway/readiness/Argo facts",
"private producer or whole KEY39/RPF35T02/SecretsT06 native acceptance"
],
"platform_source_pins": {
"helm/openbao-ui-overlay-k8s.yaml": "7b345359906bf1ecc4cb8e61de7a9f1a121068a66bd919e606190a9217a82daf",
"helm/openbao-ui-overlay/nginx.conf": "464f7f5cecc69ea343c1e2acc5932e832b2a9c0e6a5099113634a12abc80ccb3",
"helm/openbao-values.yaml": "a10239851277889dd69dacb8636109dddd095551d85b46ca4ed2c141944e8d1e"
},
"previous_review_retained_sha256": "159c784cce600ef5ce21db98244782c73a997c209082c064a1b0ce93625c4715",
"review_scope": "v7 source/public-health and fail-before-native gate only; private input custody incomplete",
"reviewed_entries": {
"sso-mfa/k8s/keycape/openbao-negative-node-route.md": "ff3604380a616dfaa86cd9aaa1f131136ee4fc751397a1ebda3a8d737e3c5346",
"sso-mfa/k8s/keycape/openbao-negative-session.py": "4c90edb541b5ea2ff131c3e674c80197c358c2f81140187028e57de0ac8dbf81",
"sso-mfa/k8s/keycape/test_openbao_negative_session.py": "01e23f2b4fc77824a161a57acb3a52d19aad846b3b6c0fd3abd81afa1dc2985c",
"sso-mfa/k8s/keycape/test_openbao_node_route.py": "02a715dcc028d0cacbf3b0ffdf705758438717f064e290b283f8e773540dd2d7"
},
"reviewed_manifest": "/tmp/keycape-jwt-node-route-v7-stage/manifest.json",
"reviewed_manifest_sha256": "90aabec336008d7d51e37c04b5ff96ba8ed6630821cca1a4c333d803367247f7",
"reviewer": "railiance-platform-owner (agent railiance-platform, codex)",
"same_trial": true,
"schema": "owner-source-review/v1",
"validation": {
"commands": [
"PYTHONDONTWRITEBYTECODE=1 python3 -m unittest discover -s /tmp/keycape-jwt-node-route-v7-stage/net-kingdom/sso-mfa/k8s/keycape -p test_openbao*.py -q",
"PYTHONDONTWRITEBYTECODE=1 /home/worsch/secrets-engine/.venv/bin/python -m pytest -q -p no:cacheprovider /tmp/platform-key39-node-route-v7-review-stage/tests/test_platform_route_v7.py"
],
"independent_checks": 9,
"result": "passed offline checks including expected v7 unbounded-input counterexample",
"supplied_lifecycle_and_route": 58,
"total_fresh_checks": 67
},
"verified": [
"SourceService openbao/openbao-ui-gateway8080 routes to nginx /v1 proxy for OpenBao8200; proposed dedicated node-loopback Service port-forward avoids node PodDNS assumption and shared workstation tunnel alteration. No portforward/bridge/native route executed.",
"Actual main source validation and public-health pin precede private stdin; source failure never reads private input or begins health/native work.",
"Preinput start establishes original wall/monotonic window; execute window_started=True does not renew it and expired window refuses before runner.",
"Existing public-health/no-auth and fail-before-native gates remain qualified source agreement only."
],
"work_item": "RPF-WP-0035-T13"
}

View file

@ -0,0 +1,60 @@
{
"completed_same_owner_refinement_precedes_formal_review": true,
"decision": "approved",
"input_unchanged": true,
"intent_basis": "Platform INTENT stable shared interfaces, secure custody and observable recovery: exact provider route prerequisites and fail-closed guarded native preparation without publichealth becoming authority.",
"mandatory_native_prerequisites": [
"Publichealth clusterhash is unauthenticated: independently verify founder/node/Service/cluster/provider route identity, current admitted route/estate and exact source/runtime pins; no arbitrary workstation diagnostic proves node placement.",
"Actual installed OpenBao JWT plugin/version, role/config/effective-policy source equality and raw/effective expiration_leeway, clock_skew_leeway and not_before_leeway interaction. Helm2.5.4/tag and raw0=>150 model are not native facts; semantic expiry proof remains mandatory.",
"Establish issuer actual readiness_state and Argo ownership through authoritative source/owner receipt. No keycape declaration/current deployment adoption established in inspected sources; absence is not nonproduction. Unmapped production-tier rules apply. If adopted/production-approved, transient directCAS needs explicit reviewed one-use maintenanceexception, close-down entry and reconciliation before nativego.",
"Fresh authenticated scoped founder decision covers exact route, source, issuer mutation/window and finite abort/revoke/restoration/recovery obligations. Helper labels/sourceacknowledgments cannot authenticate approval or waive gates.",
"Admitted private founder human/coding-agent token producer/client/callback/custody handoff remains unimplemented. No credential request/read/reuse authorized.",
"Native correct role/claim permutation/expiry/refusal/revoke, baseline restoration/client removal/temporaryobject absence and all unknown outcome resolution. MASON and Secrets native/full-adoption obligations stay separate.",
"Before private token production/transfer, implement and independently review authenticated/validated child-ready acknowledgment bound to exact pipe session and original window; no current handshake exists and eager piping is prohibited. Bounded child read does not admit producer custody."
],
"not_approved": [
"route setup, native preflight/login/Secret access or production mutation",
"privileged authority/helperapproval authentication or default flip",
"current provider identity/plugin/leeway/readiness/Argo facts",
"private producer or whole KEY39/RPF35T02/SecretsT06 native acceptance",
"Parent-ready handshake, eager producer piping, launcher/session/window custody admission or protected token production."
],
"platform_source_pins": {
"helm/openbao-ui-overlay-k8s.yaml": "7b345359906bf1ecc4cb8e61de7a9f1a121068a66bd919e606190a9217a82daf",
"helm/openbao-ui-overlay/nginx.conf": "464f7f5cecc69ea343c1e2acc5932e832b2a9c0e6a5099113634a12abc80ccb3",
"helm/openbao-values.yaml": "a10239851277889dd69dacb8636109dddd095551d85b46ca4ed2c141944e8d1e"
},
"previous_review_retained_sha256": "a319e5acb5af2aac242cf1f217af5abc3305ace8df80e646c995dff5a11ac039",
"review_scope": "child-side bounded private JSON receive and retained source/public-health fail-before-native gates only; no producer/custody admission",
"reviewed_entries": {
"sso-mfa/k8s/keycape/openbao-negative-node-route.md": "a04c94512efec7a524b15a3eec61d86de5a41df872e59a3114093063a11e75a0",
"sso-mfa/k8s/keycape/openbao-negative-session.py": "da4e0ab767e0c3bebb48bcf5ab578b50845d9fa7211a6771661a0e1baa4314ab",
"sso-mfa/k8s/keycape/test_openbao_negative_session.py": "01e23f2b4fc77824a161a57acb3a52d19aad846b3b6c0fd3abd81afa1dc2985c",
"sso-mfa/k8s/keycape/test_openbao_node_route.py": "9f3d8d4297c5ef68f6c6bf7ca21e981e37d7eceb836a60bc254d33b0f5129047",
"sso-mfa/k8s/keycape/test_openbao_private_input.py": "a59c2cd4ec895c1718d52fd12f64666f1be45ae423fde476755b6d77a89280c2"
},
"reviewed_manifest": "/tmp/keycape-jwt-node-route-v8-stage/manifest.json",
"reviewed_manifest_sha256": "316fd6005cc4cb7fe14ea69a5fd408aed13e6122afef60afd13d97952b27cf4a",
"reviewer": "railiance-platform-owner (agent railiance-platform, codex)",
"same_trial": true,
"schema": "owner-source-review/v1",
"validation": {
"commands": [
"PYTHONDONTWRITEBYTECODE=1 python3 -m unittest discover -s /tmp/keycape-jwt-node-route-v8-stage/net-kingdom/sso-mfa/k8s/keycape -p test_openbao*.py -q",
"PYTHONDONTWRITEBYTECODE=1 /home/worsch/secrets-engine/.venv/bin/python -m pytest -q -p no:cacheprovider /tmp/platform-key39-node-route-v8-review-stage/tests/test_platform_route_v8.py"
],
"independent_checks": 12,
"result": "passed synthetic/offline checks; native/custody admission false",
"supplied_lifecycle_route_private_input": 65,
"total_fresh_checks": 77
},
"verified": [
"SourceService openbao/openbao-ui-gateway8080 routes to nginx /v1 proxy for OpenBao8200; proposed dedicated node-loopback Service port-forward avoids node PodDNS assumption and shared workstation tunnel alteration. No portforward/bridge/native route executed.",
"Actual main source validation and public-health pin precede private stdin; source failure never reads private input or begins health/native work.",
"Preinput start establishes original wall/monotonic window; execute window_started=True does not renew it and expired window refuses before runner.",
"Existing public-health/no-auth and fail-before-native gates remain qualified source agreement only.",
"Private binary JSON input is limited to64KiB, each token16KiB UTF8, exact two-field object and complete EOF; one hard15s maximum timer is clipped to the original remaining wall/monotonic window, with postreceive/decode deadline checks. Stalled/noEOF/oversize/malformed/expired input refuses before protected effects; alarm timer/handler restored.",
"V7 actual unbounded-input finding corrected; standard buffered pipe with completeJSON/noEOF now interrupts within original window."
],
"work_item": "RPF-WP-0035-T13"
}

View file

@ -0,0 +1,56 @@
{
"completed_record_precedes_review": true,
"contract_source_pins": {
"access-engine/pkg/api/canonical.go": "21e754617c2b82d673cef31b7075f8d177e4367782b63b20b37125587bf9e300",
"approval-engine/approval_engine/binding.py": "737081b11040233f3460c32d4a9a1ecf57b5a80961f8a39b07cf879a0fa4263b",
"secrets-engine/src/secrets_engine/approval_consume.py": "2c528667d017e0d3ba18d3fc24a7856585c532b40e3c7e9364646cb629b99274",
"secrets-engine/src/secrets_engine/authorization.py": "0ec4c3f7304d68abd06a0d08dc459e4f1f7269da0e4258549662be9e57b39fd3"
},
"correction": "Exact served PDP/Approval sha256:<64 lowercase hex> request_digest preserved and required; bare request digests refused. Plan/call/evidence content hashes stay strict bare64hex. V3 source was unintegrated/native-unused; no live journal migration accepted.",
"decision": "approved",
"implementation_gates": [
"Authenticate actual caller/representation and PDP/claim/consume; source methods do not authorize transitions.",
"Independent owner plan compiler pins exact ordinal/method/target/body hashes; call hashes alone prove no method/body scope.",
"Restricted native adapter, TTL/uses/deadline and owner-held grant/cleanup enforcement.",
"Owner-private cleanup/recovery after unknown remains unwired: business dispatch must not resume; cleanup needs a separately admitted bounded owner recovery interface.",
"Runtime private directory/credential isolation and actual native crash/refusal/revoke/readback proofs; source modes alone do not establish enforcement."
],
"intent_basis": "Platform INTENT stable interfaces, secure custody and recovery: durable one-operation admission and truthful pending outcomes without a prototype becoming authority.",
"not_approved": [
"native grants, production execution or source application",
"complete mediator/whole execution contract acceptance",
"RPF35-T12 or SecretsT06 closure or default migration"
],
"prior_changes_requested_retained": true,
"prior_review": "docs/reviews/2026-10-11-task-execution-journal-v3-platform-review.json",
"prior_review_sha256": "b9001798bdc09cad3da5a18ba7aab6a048c962ed6b4fe68fb62a78c8ef3d721b",
"review_scope": "unintegrated durable admission journal primitive source only",
"reviewed_files": {
"scripts/task_execution_journal.py": "dc9bbb4a153ce8c466f39fde1fd0104f2dd37af9ff765399dfb9415ca607e767",
"tests/test_task_execution_journal.py": "189f99ce05383b53e37cf652a9664f0e8e7eeef7199ebee97b0d55399dfe4201"
},
"reviewed_input_unchanged": true,
"reviewed_manifest": "/tmp/platform-execution-journal-stage-v4/manifest.json",
"reviewed_manifest_sha256": "22c6d225d393b994ab7b44a43904ced1b6d7f74e0e2bebf71ffe99f87191ef4c",
"reviewer": "railiance-platform-owner (agent railiance-platform, codex)",
"same_trial": true,
"schema": "owner-source-review/v1",
"validated_properties": [
"Actual4process race admits one operation only.",
"Real child-process abrupt exit after fsynced reservation/pending intent survives reopen as unknown/nonresumable.",
"Exclusive invocation, approval/operation uniqueness, immutable binding, exact call intent/confirmation and no terminal replay.",
"Private owner directory/SQLite/lock modes and no symlink/hardlink files; FULL SQLite commits and directory sync.",
"Exact canonical prefix persists byte-for-byte through reopen; bare/uppercase/double prefix/wrong length/whitespace refused before durable admission. Prefixed plan/call/evidence content digests refused, pending unknown preserved."
],
"validation": {
"commands": [
"PYTHONDONTWRITEBYTECODE=1 /home/worsch/secrets-engine/.venv/bin/python -m pytest -q -p no:cacheprovider /tmp/platform-execution-journal-stage-v4/tests/test_task_execution_journal.py",
"PYTHONDONTWRITEBYTECODE=1 /home/worsch/secrets-engine/.venv/bin/python -m pytest -q -p no:cacheprovider /tmp/platform-journal-owner-review-stage/revision-v4/tests/test_independent_journal_v4.py"
],
"independent_regressions": 15,
"result": "passed synthetic/local source checks including actual4process race and separate abrupt child crash; no native/credential action",
"supplied_tests": 15,
"total": 30
},
"work_item": "RPF-WP-0035-T11"
}

View file

@ -33,9 +33,11 @@ class Binding:
raise Refused("binding fields must be strings")
if not re.fullmatch(r"[A-Za-z0-9][A-Za-z0-9_-]{0,127}", self.approval_id):
raise Refused("invalid approval identifier")
for digest in (self.request_digest, self.plan_digest):
if not re.fullmatch(r"[0-9a-f]{64}", digest):
raise Refused("invalid digest")
# Preserve the exact served PDP/Approval value; never silently strip it.
if not re.fullmatch(r"sha256:[0-9a-f]{64}", self.request_digest):
raise Refused("invalid canonical request digest")
if not re.fullmatch(r"[0-9a-f]{64}", self.plan_digest):
raise Refused("invalid owner plan content digest")
try:
if str(uuid.UUID(self.operation_id)) != self.operation_id:
raise ValueError()

View file

@ -32,7 +32,7 @@ class Tests(unittest.TestCase):
self.tmp = tempfile.TemporaryDirectory()
self.addCleanup(self.tmp.cleanup)
self.path = Path(self.tmp.name)
self.binding = Binding('approval-1', 'a'*64, str(uuid.uuid4()), 'b'*64)
self.binding = Binding('approval-1', 'sha256:'+'a'*64, str(uuid.uuid4()), 'b'*64)
self.journal = Journal(self.path)
self.addCleanup(self.journal.close)
@ -61,7 +61,7 @@ class Tests(unittest.TestCase):
def test_same_approval_different_digest_refused(self):
with self.journal.locked(): self.journal.reserve(self.binding)
changed = Binding('approval-1','c'*64,str(uuid.uuid4()),'b'*64)
changed = Binding('approval-1','sha256:'+'c'*64,str(uuid.uuid4()),'b'*64)
with self.journal.locked():
with self.assertRaises(Refused): self.journal.reserve(changed)
with self.assertRaises(Refused): self.journal.observe(changed)
@ -69,7 +69,7 @@ class Tests(unittest.TestCase):
def test_same_operation_different_approval_refused(self):
with self.journal.locked(): self.journal.reserve(self.binding)
with self.journal.locked():
with self.assertRaises(Refused): self.journal.reserve(Binding('approval-2','a'*64,self.binding.operation_id,'b'*64))
with self.assertRaises(Refused): self.journal.reserve(Binding('approval-2','sha256:'+'a'*64,self.binding.operation_id,'b'*64))
def test_full_path_cleanup_and_terminal_replay(self):
states=['reserved','consume-confirmed','authenticating','grant-issuing','grant-issued','applying','readback','verified','cleanup-confirmed']
@ -118,8 +118,8 @@ class Tests(unittest.TestCase):
def test_binding_rejects_unbounded_or_malformed_metadata(self):
for value in ['token'+ 'x'*200, '../approval', 'approval\n1']:
with self.assertRaises(Refused): Binding(value,'a'*64,self.binding.operation_id,'b'*64).validate()
for value in ['a'*63,'A'*64,'not-a-digest']:
with self.assertRaises(Refused): Binding(value,'sha256:'+'a'*64,self.binding.operation_id,'b'*64).validate()
for value in ['a'*64,'sha256:'+'a'*63,'sha256:'+'A'*64,'not-a-digest']:
with self.assertRaises(Refused): Binding('a',value,self.binding.operation_id,'b'*64).validate()
def test_pending_external_call_blocks_next_and_survives_reopen(self):
@ -146,7 +146,7 @@ class Tests(unittest.TestCase):
self.journal.before_call(self.binding,1,'e'*64)
def test_nonstring_binding_and_boolean_ordinal_refused(self):
with self.assertRaises(Refused): Binding(True,'a'*64,self.binding.operation_id,'b'*64).validate()
with self.assertRaises(Refused): Binding(True,'sha256:'+'a'*64,self.binding.operation_id,'b'*64).validate()
with self.journal.locked():
self.journal.reserve(self.binding)
with self.assertRaises(Refused): self.journal.before_call(self.binding,False,'d'*64)

View file

@ -1078,3 +1078,54 @@ CAS requires an explicit reviewed one-use maintenance exception and close-down
entry, plus reconciliation, before native go. No helper/source acknowledgment
waives that gate. Private token producer/callback/client/custody admission and
actual native negative/revoke/restoration/cleanup remain prerequisites.
2026-10-11 T13 v7 node-route preparation refinement (same trial): exact frozen
manifest `90aabec336008d7d51e37c04b5ff96ba8ed6630821cca1a4c333d803367247f7`
and all entries verified.58 supplied lifecycle/route checks plus9 independent
checks pass offline. Actual main now verifies source/public health before private
stdin; execute preserves the original wall/monotonic window rather than renewing
it. Actual child-process partial-pipe counterexample shows unbounded stdin.read
remains blocked beyond a synthetic20ms original window (still alive after100ms
without EOF). No credential/native/provider access is involved. Before private
producer admission, require byte-capped, deadline-bounded JSON input and EOF within
the original window, with fail-closed fixed receipt and no protected effects.
This completed ownT13 preparation precedes formal v7 source changes-requested
review. Retain v6 qualified health-gate agreement and all prior reviews; neither
v7 health ordering nor any source acknowledgment establishes custody completion,
actual route/plugin/leeway/readiness/Argo identity or founder/runtime authority.
Native and private-producer gates remain open; no owner checkout write occurred.
2026-10-11 T13 v8 bounded-input correction preparation (same trial): exact
frozen manifest `316fd6005cc4cb7fe14ea69a5fd408aed13e6122afef60afd13d97952b27cf4a`
and all entry hashes verified.65 supplied tests plus12 fresh independent checks
pass offline, including a standard buffered stdin pipe with complete JSON/noEOF
interrupted within original20ms window and restored SIGALRM state; exact64KiB
JSON/EOF accepted and extra byte refused, UTF8 token bytecap enforced, original
wall deadline clips longer monotonic budget. Original preinput window is retained.
Completed ownT13 preparation precedes fresh exact source review; v7 refusal and
v6 qualified agreement/prior reviews retained. This accepts child bounded-input
source only. No parent-ready handshake exists: producer must not eagerly pipe
private inputs, and producer/session/window readiness protocol remains an
unimplemented admission gate. No custody/native completion, sourcepacket approval
authentication, route/plugin/leeway/readiness/Argo observation or inherited grant.
Native prerequisites and producer handoff remain open; no owner checkout changed.
2026-10-11 T11 journal v4 canonical-format preparation refinement (same trial):
exact frozen manifest `22c6d225d393b994ab7b44a43904ced1b6d7f74e0e2bebf71ffe99f87191ef4c`
and entry hashes verified. Actual access-engine pkg/api/canonical.go RequestDigest/
CanonicalDigest, Approval binding.py and Secrets authorization/approval_consume
all use sha256:<64 lowercase hex> request digests. V4 now preserves this exact
request value without prefix stripping; plan/call/evidence content hashes remain
explicit bare64hex.15 supplied checks plus15 fresh independent checks pass,
including malformed prefix/bare/uppercase/trailing whitespace refusal before
reservation, exact persistent value/reopen/mismatch replay, private-file mode,
real child crash after pending intent, ill-typed confirmations and pending-unknown
refusal. Completed ownT11 preparation precedes formal v4 source review; prior v2
refusal/v3 approval and T13 v7 refusal/v8 source acknowledgment retained.
Acceptance is unintegrated primitive source only; no data migration/native use
of v3 journal has occurred. RPF35-T12 caller/PDP/consume validation, independent
owner plan compiler/restricted adapter, private runtime custody, bounded execution
and owner-private unknown cleanup recovery remain open. No checkout/native writes.