From a36b6100fcfa022e35cdcfaa7bb833dbdfed4e5f Mon Sep 17 00:00:00 2001 From: tegwick Date: Sun, 11 Oct 2026 14:00:37 +0200 Subject: [PATCH] Record independent custody verifier review and required corrections Assistant: codex Assistant-Model: gpt-6.1-sol Assistant-Session: 01a126e1-76f8-7643-8cf3-e93336539ade --- ...ent-custody-independent-source-review.json | 81 +++++++++++++++++++ workplans/ADHOC-2026-10-11.md | 40 +++++++++ 2 files changed, 121 insertions(+) create mode 100644 docs/reviews/2026-10-11-keycape-client-custody-independent-source-review.json diff --git a/docs/reviews/2026-10-11-keycape-client-custody-independent-source-review.json b/docs/reviews/2026-10-11-keycape-client-custody-independent-source-review.json new file mode 100644 index 0000000..4320490 --- /dev/null +++ b/docs/reviews/2026-10-11-keycape-client-custody-independent-source-review.json @@ -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 +} diff --git a/workplans/ADHOC-2026-10-11.md b/workplans/ADHOC-2026-10-11.md index 96ffc00..921c5bc 100644 --- a/workplans/ADHOC-2026-10-11.md +++ b/workplans/ADHOC-2026-10-11.md @@ -9,6 +9,7 @@ owner: codex created: "2026-10-11" updated: "2026-10-11" flavor: implementation +state_hub_workstream_id: "e3854bfd-2bc8-5411-8c96-44ed22d878a7" --- ## Review the frozen consumer-reader source refinement @@ -17,6 +18,7 @@ flavor: implementation id: ADHOC-2026-10-11-T01 status: done priority: medium +state_hub_task_id: "d7b760f2-fb8b-542a-a42e-d2846dd03cc9" ``` Independent dedicated ops-mason-owner review under MASON-WP-0010-T03. Loaded ops-mason AGENTS.md, INTENT.md and SCOPE.md in its checkout; read delegated-owner-review_v0.1.md and agent-environment-orientation.md. Review was performed in an isolated checkout, with no owner source/native writes, authentication, credential values or approval recording. @@ -35,6 +37,7 @@ Review outcome and formal review entry are stored in docs/evidence/2026-10-11-fo id: ADHOC-2026-10-11-T02 status: done priority: medium +state_hub_task_id: "ff180859-f3d0-5aee-9e09-73e99fee0ad8" ``` Fresh dedicated ops-mason-owner review under MASON-WP-0010-T03, retaining T01 and its exact c48 review without rewriting its historical outcome. Exact frozen19 manifest sha256:5dbd04cf96d73a2604cbf113073d618c03434fc87508ba614cbe3820a1a0e431; unchanged proposed full render sha256:c0afd5576cdae0cbc807eccb2b9fa87ac668f15e32ec7cf79d295bdb23c75b35. All19 hashes and three current owner source baselines verified. Independent isolated builder/plan/structure suites:44 passed. New workload and lifecycle counterexamples both fail against the earlier c48 builder, reproducing mislabelled keycape consumer target and delete-only recovery wording. Earlier42 suite and original duplicate-role failure remain preserved in /tmp/forgejo-eso-mason-independent-review. @@ -44,3 +47,40 @@ Revised source review approved against INTENT Mission construction consistency a Role-backed consumer recovery first reverts the consumer reference; restricts cleanup to independently proven created objects; preserves shared/preexisting matches; requires owner token revocation or independently verified expiry before declaring deactivation; forbids a new login/remint during recovery; and stops on changed references/UIDs/ownership. Proposed type rollback and CCR42 retain role-before-policy ordering. These are source obligations, not an installed recovery adapter or supplied custody authority. Real proposed1.2 admission remains refused, CCR42 remains proposed with unconfirmed binding, and exact acknowledgment/native per-owner evidence/founder live go remain pending. Own task completed before formal refined review entry in docs/evidence/2026-10-11-forgejo-consumer-eso-independent-mason-review-refined.json. No source writes in owner checkout, native act, authentication, credential value, acknowledgment, admission/binding/status mutation or completion claim. Fresh source build/bundle reconciliation follows exact acceptance; earlier approval does not migrate to the corrected output. Existing MASON-WP-0010-T03 and first-case owner work retain these next steps. + + +## Independently review native client-custody capability preparation + +```task +id: ADHOC-2026-10-11-T03 +status: done +priority: medium +``` + +Completed independent ops-mason source review preparation for MASON-WP-0009-T05 +before issuing its formal review. Read this repo's AGENTS.md, INTENT.md, +MASON-WP-0009, survey policy and the exact operator/ESO platform policies, plus +fleet delegated-owner-review and environment orientation. Reviewed frozen +manifest SHA256 e5d4781c6280c3bc8a3930c63cfb563f59752465720d6c2c3e95eb0551f8e949 and verified all five staged digests and existing +workplan baseline. Original input and owner checkouts were not changed. + +INTENT Mission/Responsibility boundary permits metadata/capability verification, +not secret retrieval or policy widening. Fixed allowlisted endpoints, task-bound +survey identity and data deny, -no-store operator OIDC and fixed ESO TokenRequest +retain that boundary. Native nonmember acceptance correctly requires independent +same-attempt issuer identity plus platform groups-refusal correlation; the runner +never treats login errors as acceptance. Attendance/source-digest checks are +procedural gates, not new live authority or runtime isolation. + +Existing 19 tests pass. Independent synthetic counterexamples show Api.call +accepts HTTP202 text/plain JSON errors as a successful revoke response, and +survey accepts an omitted accessor as SHA256 of empty input. These are concrete +acceptance/correlation defects, so a fresh source revision is required before +native proposal execution. The query identity-failure recovery exception is +explicitly declared: no confirmation, founder revocation, acceptance remains +blocked. It is not silently counted as clean. + +This bounded review task is complete. Corrections and native proof remain live +in MASON-WP-0009-T05; no plan completion or route activation is claimed and no +new residual is parked in prose. No native action, credential request, value +access, approval disposition, commit, push or consistency sync was performed.