Record independent custody verifier review and required corrections

Assistant: codex
Assistant-Model: gpt-6.1-sol
Assistant-Session: 01a126e1-76f8-7643-8cf3-e93336539ade
This commit is contained in:
tegwick 2026-10-11 14:00:37 +02:00
parent 6196be5dca
commit a36b6100fc
2 changed files with 121 additions and 0 deletions

View file

@ -0,0 +1,81 @@
{
"reviewer": "ops-mason-owner (agent ops-mason, codex)",
"decision": "changes_requested",
"comment": "INTENT Mission four-phase process and Responsibility boundary authorize source-grounded metadata/capability verification without secret retrieval or access widening. Exact reviewed manifest SHA256 e5d4781c6280c3bc8a3930c63cfb563f59752465720d6c2c3e95eb0551f8e949; script d79f03733b864319a3c4b8fcdb5a956795bb17679eb96b03b46ffa07030ae730; own completed work item ADHOC-2026-10-11-T03 written before this entry. Guarded endpoints, survey/lane separation, source attendance gates and honest correlated nonmember acceptance fit this boundary. Response acceptance and accessor correlation require corrections before native execution. Source preparation does not finish MASON-WP-0009-T05 or activate routing.",
"own_work_record_sha256": "9d637bb9fd9d5fc73cfcc24fb2615e65e0849d54c385db4129501469c214d346",
"reviewed_manifest_sha256": "e5d4781c6280c3bc8a3930c63cfb563f59752465720d6c2c3e95eb0551f8e949",
"reviewed_files": [
{
"original_sha256": null,
"path": "scripts/verify-keycape-client-custody.py",
"repo": "ops-mason",
"staged_path": "/tmp/mason-jwt-capability-next-stage/ops-mason/scripts/verify-keycape-client-custody.py",
"staged_sha256": "d79f03733b864319a3c4b8fcdb5a956795bb17679eb96b03b46ffa07030ae730"
},
{
"original_sha256": null,
"path": "tests/test_keycape_client_custody_verifier.py",
"repo": "ops-mason",
"staged_path": "/tmp/mason-jwt-capability-next-stage/ops-mason/tests/test_keycape_client_custody_verifier.py",
"staged_sha256": "c7a9f77930d28f5d1136ca82f7bcafe68a22ce7a1583063a9a7be0213e9c1691"
},
{
"original_sha256": null,
"path": "docs/keycape-client-custody-attended-verification.md",
"repo": "ops-mason",
"staged_path": "/tmp/mason-jwt-capability-next-stage/ops-mason/docs/keycape-client-custody-attended-verification.md",
"staged_sha256": "ddc791e935cf3d6916565af13081f65005e9865677d4e043295bd920e255b408"
},
{
"original_sha256": "857458214d94f7852f841bad25887625ee4d90575a79b5153465c661a2e0089f",
"path": "workplans/MASON-WP-0009-keycape-secrets-engine-openbao-client-custody.md",
"repo": "ops-mason",
"staged_path": "/tmp/mason-jwt-capability-next-stage/ops-mason/workplans/MASON-WP-0009-keycape-secrets-engine-openbao-client-custody.md",
"staged_sha256": "c2a7907ba44226a2332a55a8d4f153291cee4d85c1299fa63333f12885bcd1ca"
},
{
"original_sha256": null,
"path": "docs/evidence/2026-10-11-keycape-client-custody-native-preparation.json",
"repo": "ops-mason",
"staged_path": "/tmp/mason-jwt-capability-next-stage/ops-mason/docs/evidence/2026-10-11-keycape-client-custody-native-preparation.json",
"staged_sha256": "237a21711859b2228b56f769520bd5dd521657ec65b5a7c7869d74bb103e5403"
}
],
"findings": [
{
"id": "MASON-CUSTODY-REVIEW-01",
"severity": "blocking",
"location": "scripts/verify-keycape-client-custody.py Api.call and main cleanup",
"observed": "Api.call accepts synthetic HTTP202 text/plain body with errors as ordinary returned JSON. Both revoke callers mark success on any nonexception return. Cleanup can therefore be labeled confirmed without successful endpoint semantics.",
"required_change": "Check endpoint-specific statuses (200 for lookup/login/capability; documented success/no-content for revoke), content type for nonempty JSON, object shape and errors absence; refuse unexpected statuses or bodies and preserve cleanup false/unproved. Add main-level failure tests for unsuccessful/malformed revoke response, plus correct no-content success."
},
{
"id": "MASON-CUSTODY-REVIEW-02",
"severity": "blocking",
"location": "scripts/verify-keycape-client-custody.py survey and main lane accessor digest",
"observed": "Missing query accessor passes survey and becomes SHA256(empty). Lane accessor likewise defaults to empty. This does not identify an actual native session and undermines promised owner correlation.",
"required_change": "Require actual nonempty bounded valid accessor strings before fingerprinting; suppress raw fields; missing/malformed accessor keeps acceptance unproved while attempting safe recovered-token cleanup. Add missing/empty/wrong-type accessor counterexamples."
}
],
"verified_safe_scope": [
"HTTP endpoint allowlist excludes KV data/metadata retrieval and role/policy writes",
"fixed loopback endpoint, ProxyHandler({}), redirect refusal, 64KiB response body read bound",
"task-named survey policy/TTL and exact data/self-policy/token-create denials checked before lane login",
"operator native -no-store with private HOME; native ESO separate fixed-service-account/audience10m TokenRequest and existing SSH cluster-IP check",
"both recovered lane and valid query self-revokes attempted on later failure; failed query identity recovery explicitly remains founder obligation",
"nonmember only candidate, no automatic accepted outcome; owner identity+same-attempt groups-refusal correlation remains required",
"formal source review/founder exact digest go/native evidence/route-owner acceptance remain gates"
],
"tests": {
"authored_suite": "19 passed",
"independent_synthetic_counterexamples": [
"HTTP202 text/plain errors accepted by revoke API",
"missing query accessor accepted and hashed empty"
]
},
"native_actions": false,
"credential_requests": false,
"owner_checkout_writes": false,
"whole_plan_closed": false,
"approval_or_admission_fields_changed": false
}