diff --git a/WORK-RECORDS.md b/WORK-RECORDS.md index 97d1b54..f3171a1 100644 --- a/WORK-RECORDS.md +++ b/WORK-RECORDS.md @@ -51,6 +51,7 @@ | task | FLEX-WP-ADHOC-2026-10-11-T01 | done | — | workplans/ADHOC-2026-10-11.md | | task | FLEX-WP-ADHOC-2026-10-11-T02 | done | — | workplans/ADHOC-2026-10-11.md | | task | FLEX-WP-ADHOC-2026-10-11-T03 | done | — | workplans/ADHOC-2026-10-11.md | +| task | FLEX-WP-ADHOC-2026-10-11-T04 | done | — | workplans/ADHOC-2026-10-11.md | | task | FLEX-WP-0001-T001 | done | — | workplans/FLEX-WP-0001-repo-intent-and-architecture-baseline.md | | task | FLEX-WP-0001-T002 | done | — | workplans/FLEX-WP-0001-repo-intent-and-architecture-baseline.md | | task | FLEX-WP-0001-T003 | done | — | workplans/FLEX-WP-0001-repo-intent-and-architecture-baseline.md | diff --git a/docs/evidence/2026-10-11-task-execution/canonical-independent-verification.json b/docs/evidence/2026-10-11-task-execution/canonical-independent-verification.json new file mode 100644 index 0000000..c641a49 --- /dev/null +++ b/docs/evidence/2026-10-11-task-execution/canonical-independent-verification.json @@ -0,0 +1,18 @@ +{ + "native_execution": false, + "synthetic_only": true, + "source_manifest_sha256": "c15b3704d59a3441f2ce203f1b866b62d83a49f553b50afbaa9c6fcc06105876", + "original_counterexample_digest": "sha256:09bef6f94ad1caf77b9cb39139c59a337b954608da4e205831962cce23050568", + "repaired_request_digest": "sha256:dcaff2c7d48e04a78ca49f2b0e7c19da3d01868bf432a9ac56170511ae125465", + "actual_go_request_digest": "sha256:dcaff2c7d48e04a78ca49f2b0e7c19da3d01868bf432a9ac56170511ae125465", + "repaired_approval_binding_digest": "sha256:dcaff2c7d48e04a78ca49f2b0e7c19da3d01868bf432a9ac56170511ae125465", + "actual_go_approval_binding_digest": "sha256:dcaff2c7d48e04a78ca49f2b0e7c19da3d01868bf432a9ac56170511ae125465", + "digests_match": true, + "independent_focused_passed": 149, + "independent_additional_passed": 21, + "additional_binary64_samples": 384, + "full_suite_green_claimed": false, + "numeric_profile": "finite binary64 floats; Python integer magnitude <= 2^53-1; all larger integers/nonfinite refused", + "go_algorithm_changed": false, + "policy_constant_flipped": false +} diff --git a/docs/evidence/2026-10-11-task-execution/compiler-canonical-counterexample.json b/docs/evidence/2026-10-11-task-execution/compiler-canonical-counterexample.json new file mode 100644 index 0000000..b012834 --- /dev/null +++ b/docs/evidence/2026-10-11-task-execution/compiler-canonical-counterexample.json @@ -0,0 +1,16 @@ +{ + "schema": "source-integration-counterexample/v1", + "native_execution": false, + "target_manifest_sha256": "41cda74ab32384c789ea8a760475671aadad4e5121335c8f60567ff53d66665b", + "case": "actual consumer permits purpose café<&>; full canonical request hash differs from Go HTML escaping", + "synthetic_only": true, + "actual_compiler_and_consumer_parser_accepted": true, + "python_request_digest": "sha256:09bef6f94ad1caf77b9cb39139c59a337b954608da4e205831962cce23050568", + "go_request_digest": "sha256:dcaff2c7d48e04a78ca49f2b0e7c19da3d01868bf432a9ac56170511ae125465", + "policy_effect": "deny", + "policy_reason": "initiating_provider_unadmitted", + "request_contains_tokens": false, + "fixture_sha256": "3ba1337dc913076286b6c018b2f60026d906699aa3fe6d4d50d712a64ac27c2e", + "go_result_sha256": "dc652292bfbb56528aa5c9b47057d64473b62951680f1a532f7ffdd662d5002d", + "scope_note": "Compiler catalogue fingerprint matches actual Secrets local target helper. Full request digest mismatch is separate Python/Go canonical join integration blocker, not compiler authority bypass." +} diff --git a/docs/reviews/2026-10-11-platform-typed-plan-technical-review.md b/docs/reviews/2026-10-11-platform-typed-plan-technical-review.md new file mode 100644 index 0000000..6bf390b --- /dev/null +++ b/docs/reviews/2026-10-11-platform-typed-plan-technical-review.md @@ -0,0 +1,70 @@ +# Independent technical review: Platform typed plan compiler + +Reviewer: Access source integration agent access_task_execution_policy. +Scope: technical component interoperability only; no Platform owner approval. +Candidate manifest /tmp/platform-typed-plan-stage-v2/manifest.json SHA256 +41cda74ab32384c789ea8a760475671aadad4e5121335c8f60567ff53d66665b. +Verified all four candidate file hashes. Code SHA256 +0a96c39a71c6fcca5ea695d1a46ce20d7345b27a507851d4d46e1543fd97e656; +maker tests SHA256 432f2a316a94b586286426906504cae9368e74cc6ba7a32d788c37924cad8224. + +Result: source component correspondence established within the stated boundary; +whole execution readiness refused. Independently reproduced 40 maker checks and +10 additional checks. Tests use synthetic approved copies of public owner data, +not an approved actual CCR or matching native catalogue. No policy source constant +was flipped, no credential/native call or owner checkout write occurred. + +The actual thirteen-field Secrets build_action_request catalog_target equals +Compiler.proposal's owner-derived projection and local catalogue fingerprint. +Actual ExecutionContract.parse accepts the six generated GET/PUT/GET ACL then +GET/PUT/GET auth-role method/path/payload hashes. Compiler.before_call returns +bytes whose hashes equal those descriptor entries; GET bodies hash empty bytes. +Normal fixture's actual Python full/approval-free request digest matches Go. +Actual Go/OPA evaluates the unchanged closed source package as deny, +initiating_provider_unadmitted. This is not a runtime allow test. + +Independent forged Plan schema/operation/source_pins/catalog_target/budget/cleanup +metadata all refused on before_call. After an observed pinned owner auth TTL +change and re-pinning, an old Plan refused before role call. Supplied root/body, +wrong operation, replay-readiness, alternate fields/path and local observed source +indirection/drift counterexamples likewise refuse in the independently rerun maker +suite. Source trust/runtime custody and mutation of Python memory remain external +requirements explicitly stated by the maker; the compiler is not a sandbox. + +## Concrete additional integration counterexample + +A valid catalogue consumer purpose café<&> is accepted by the actual catalogue +validator, compiler, typed descriptor and request builder. Its local target hash +matches Secrets. But the actual Python canonical request digest differs from Go +RequestDigest: Go JSON Marshal escapes HTML characters, Python compact UTF8 JSON +does not. Exact evidence is recorded in +../evidence/2026-10-11-task-execution/compiler-canonical-counterexample.json. +This is a Python/Go canonical join blocker, not permission escalation. The current +hard provider refusal still denies both. Baseline ASCII fixture matches; a broad +claim of arbitrary metadata canonical interoperability is not established. +Keep the counterexample and fix/test canonical consumer serialization before any +real request/approval/PDP consume adoption. Do not conflate descriptor-local +catalogue hashing (intentionally separate) with the PDP canonical request hash. + +## Boundaries still required + +Compiler request_digest is an opaque prefixed hash, not authenticated authority. +Full descriptor construction must additionally bind owner grant/baseline/readback, +estate/origin/deadline/source bundle and verified initiating representation. It +must not fabricate task_execution_projection or member/MFA/verified flags. Current +Access source admission remains literally false; authenticated KeyCape origin, +User/Tenant facts and server projection are absent. Source compiler cannot supply +them. Native CCR42 is still in-flight/unadmitted and no live matching catalogue +was demonstrated. + +The future owner mediator must enforce the real full canonical request/claim/PDP +and trusted consume joins, owner-private journal phase/order/budget and durable +pending intent, unchanged exact source/body bytes immediately at dispatch, actual +native token TTL/use/endpoint scope and custody, baseline conflict/readback and +revoke/cleanup/unknown recovery. before_call rederives bytes but has no dispatcher, +clock deadline, phase authority, transaction or native CAS. Component source tests +cannot close Secrets T06 or RPF35-T02/T12, or certify authenticated native access. + +This review uses the existing completed Access T04 source-contract scope and does +not sign as Platform's owner or accept another owner/provider boundary. No new +operational workplan is created. diff --git a/docs/reviews/2026-10-11-secrets-canonical-go-technical-review.md b/docs/reviews/2026-10-11-secrets-canonical-go-technical-review.md new file mode 100644 index 0000000..c7eb1c7 --- /dev/null +++ b/docs/reviews/2026-10-11-secrets-canonical-go-technical-review.md @@ -0,0 +1,65 @@ +# Independent technical review: Secrets Go canonical digest repair + +Reviewer: Access source integration agent access_task_execution_policy. +Disposition: exact bounded consumer source repair technically accepted; +no Secrets owner assent, package activation or native execution admission. +Manifest /tmp/secrets-canonical-go-stage/manifest.json SHA256 +c15b3704d59a3441f2ce203f1b866b62d83a49f553b50afbaa9c6fcc06105876. +Verified all six candidate hashes. authorization.py staged SHA256 +d58e5fd01ca2470a5d11a6b4f7e9d262a0c1565637e07b35466faa30e4991d14. + +## Independent source evidence + +In an isolated full public source copy overlaid with exact candidate files, +149 focused tests passed: real Go oracle, immutable execution descriptor and four +builder preservation, action authorization, claim/consume joins and normal replay. +21 additional independent tests passed, including 384 separately seeded binary64 +bit samples, nextafter neighbors at fixed/scientific formatting boundaries, +HTML/Unicode/control/separator characters in nested keys/arrays, negative zero, +unsupported numeric refusals and semantic mutation/approval-free joins. + +The original actual typed compiler counterexample (catalogue consumer purpose +café<&>) is repaired. Its original Python digest +sha256:09bef6f94ad1caf77b9cb39139c59a337b954608da4e205831962cce23050568 +now becomes exactly the actual unchanged Go result +sha256:dcaff2c7d48e04a78ca49f2b0e7c19da3d01868bf432a9ac56170511ae125465. +Both full and approval-free digests match. Safe summarized evidence is in +../evidence/2026-10-11-task-execution/canonical-independent-verification.json. +No human-policy source constant was flipped and no native provider was contacted. + +## Numeric contract and algorithm boundaries + +The admitted numeric profile is explicitly finite binary64 floats and Python +integers in [-(2^53-1),2^53-1]. Larger integers refuse rather than hash an exact +Python integer while Go's HTTP decoder rounds it. NaN and infinities refuse. +Shortest binary64 formatting, Go exponent/fixed thresholds and signed zero are +exercised against the actual exported Go API after actual JSON decoding. This +is not a claim that arbitrary Go-native json.Number/big integers, Decimal objects, +invalid scalar Unicode or other non-JSON values are supported. + +Only the consumer full Access request and Access approval-free request digest +serialization changes. Descriptor-local UTF8 catalogue target fingerprints, +Approval's distinct claim digest and owner body hashes remain separate; no Go +canonical algorithm, served claim, immutable original decision or policy changes. +Existing approvals must not be rewritten: an old mismatching request needs a +fresh properly bound request/approval. Advisory purpose hashing parity does not +make an enforcement API accept an otherwise rejected top-level purpose. + +Very large integer timestamps, including proposed epoch-nanosecond projection +fields, are outside this profile. Future provider projection must select a faithful +cross-runtime representation instead of silently rounding those fields. The prior +human projection is unadmitted and its source package remains closed; this review +provides no admission for that shape. + +## Validation limits + +This review does not claim the full repository suite is green. The frozen maker +receipt retains full-suite custody failures under uid65534 in /tmp and one unchanged +baseline reproduction. Only one of the 16 full-suite failures was reproduced against unchanged +baseline. The other 15 were not independently classified as baseline failures. +The coordinator corrected an earlier broader statement; no broader baseline +reproduction is claimed. The focused +candidate suite and independent counterexamples passed; private file custody +behavior is not weakened to satisfy the test environment. No deployment, credential +request, native proof, default migration, ownership acceptance or operational task +closure follows from this serializer repair.