Repository navigation
fix(export): deny unsupported actor kinds (WO-01, stacked on #212) - #213
Merged
Merged
Conversation
bitmaster162
changed the base branch from
agent/person-continuity-durable-demo-r2
to
master
October 20, 2026 17:22
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Current target and exact revision — reviewed merge candidate
WO-01 — one narrow EXPORT authorization fix. PR #212 is merged; this PR targets protected
master. The completed retarget/update operation preserved history and source scope. The owner has now separately authorized this review note, transition from Draft to Ready, and one ordinary merge commit bound to the exact BASE/HEAD/TREE below. GitHub's actual PR state is authoritative; this description is not a claim that Ready or merge has already occurred. Deployment, release, runtime activation and production admission remain prohibited.master.a56ae18771ecbd6d338292830ec7cbdc6c823c79.a9f23aa5c30fc635ecd8e6a2c82d8f169634f721.agent/person-export-actor-deny-local-r1.e7ffed8ae2e2e91cb3554f5820207bd02c455078.12f878b06bef3435226ce51436a37d8a876f2dda— exact match to the owner-approved expected tree.b11af1a69957e77accc0a6d74dedb7c4dab8ee28, then pinned mastera56ae18771ecbd6d338292830ec7cbdc6c823c79.12f878b06bef3435226ce51436a37d8a876f2dda; expected parents: pinned BASE first, current HEAD second.The original fix commit has tree
69893ca2d8417c5b1904863b97e506f536168134and parent29f4ab8d3fb407245a83cffeff7d559313e8bead. The previous base branch wasagent/person-continuity-durable-demo-r2; those identifiers describe historical publication, not the current PR target. The source branch was updated with a non-force push. No additional source edits, rebase or history rewrite were performed. The update delta against the original HEAD is only the four already-integrated Company Twin demo files (+763/-0).Defect and minimal correction
company_twin_lifecycle._authorize_actor()checked EXPORT requests from HUMAN and AGENT but had no terminating rejection for an unsupportedactor_kind. A supplied synthetic requester with an unknown kind could therefore pass this function. The Person export adapter reuses the same Company export implementation.The correction adds exactly two runtime lines: reject any remaining EXPORT actor kind with
LifecycleAuthorizationError("unsupported export actor kind"). Existing HUMAN and AGENT authority rules, other lifecycle operations, consent/scope/provenance filtering and export formats are unchanged.This is a reproduced fail-open in the pure export-bundle function, not evidence of a live data breach or an authenticated remote exploit. The caller-supplied actor dictionary is not a trusted identity proof.
Exact file scope against pinned master
continuityos/company_twin_lifecycle.py: +2, the terminal EXPORT denial.tests/test_company_twin_lifecycle.py: +16, four parameterized regression cases.tests/test_person_twin_privacy_provenance.py: +21, three Person export regression cases.No runtime generation, new authority issuer, CLI activation, source-document rewrite, CI modification or production switch is included.
Historical local evidence — original fix, not a new test run
The following evidence was recorded for the original fix before this retarget/update. It is retained as historical evidence and is not relabelled as tests of the new merge HEAD.
Validated on Windows / Python 3.11.9 / pytest 9.1.1 / SQLite 3.45.1, synthetic fixtures only:
The one skip is the existing real-filesystem-symlink test because this Windows process cannot create a symlink. It is not counted as PASS. Historical failed runs are retained, and the original sealed manifest was not rewritten. A readback test-runner hook signature error happened before collection and was corrected outside project source; it is not a runtime fix or a successful test.
Exact source hashes, raw test evidence, patch and Git bundle were rechecked before original publication. Original local manifest SHA-256:
23628622ae5fa1cd4aa6c5e655ffcfc44135c6913b61660af554405673f41b7e. Applying the original patch reconstructs the original candidate tree, not the new merged tree. Unsigned commit hashes are not owner identity attestations.Current exact-HEAD CI — 5/5 SUCCESS
All five registered checks on exact HEAD
e7ffed8ae2e2e91cb3554f5820207bd02c455078completed successfully. Times below are UTC on 2026-10-20:Automatically triggered workflows:
Source-tree provenance: the Linux review log records checkout of
refs/pull/213/mergeat synthetic commit58c6b27efbda3e3c500f132fd9faa54493256b0f. Its parents are pinned mastera56ae18771ecbd6d338292830ec7cbdc6c823c79and current HEADe7ffed8ae2e2e91cb3554f5820207bd02c455078; its verified TREE is12f878b06bef3435226ce51436a37d8a876f2dda, identical to the current HEAD TREE. This synthetic CI commit is not a merge of the PR into master.Linux clean-source/editable results: 2615 passed / 69 skipped each; isolated wheel: 2532 passed / 120 skipped. Each mode also recorded 870 passing subtests. Skips are not passes. These overlapping test modes must not be added as unique coverage.
Historical Ubuntu/Windows success on
b11af1a6...is separate evidence, not reused as qualification of this updated HEAD. No manual dispatch/rerun was requested. This update and its CI have been verified. The external model source review below is separate evidence, not another test run.External model source review — Opus 5.5 High, PASS WITH CONDITIONS
An actual separate Antigravity CLI 1.4.2 session requested and reported model
claude-opus-5-5-high, with requested efforthigh. Sessione879e0da-63a7-4497-af9d-0665082d4d7freturnedSUCCESS/ exit 0 at 2026-10-20T18:31:53Z. The reviewer analyzed the supplied exact diff and four full source/test files at HEADe7ffed8ae2e2e91cb3554f5820207bd02c455078; it made no tool calls and ran no tests. This is model source review, not a human GitHub approval or independently reproduced CI.Reviewer verdict: PASS WITH CONDITIONS for the narrow EXPORT patch; no blocking findings in that scope. It found the final EXPORT denial correctly positioned and supported HUMAN/AGENT branches unchanged. The original Russian report is preserved byte-for-byte; SHA-256
9ac8a8de6fce0602639a3d7a8972c1f32a049592829449eaeef79d290b6179a9. Execution/final review receipt SHA-256:779d8830fce4169258cca49e5e65dee2cd9cadd378dce65883016795d61165be.Accepted conditions and retained findings — not claimed fixed
659a7285482bf4b73477a8216a91322d4f556f89c4ecbe25b9d28205c19838ae.Owner authorization and execution gate
RETARGET_UPDATE_AND_CI_ONLY: PASS. Exact-HEAD CI: 5/5 SUCCESS. External model review: PASS WITH CONDITIONS. NOT_PRODUCTION_ADMITTED. The owner explicitly accepted the narrow patch review, the bounded direct-callsite check, the unproven external/dynamic compatibility and the retained nonblocking/inherited findings.
Authorization:
APPROVE_CONTINUITYOS_PR213_REVIEW_NOTE_READY_AND_NORMAL_MERGE_ONLY. It permits this description update, Draft-to-Ready, and exactly one normal merge commit after fresh verification of the pinned BASE/HEAD/TREE, three-file +39/-0 scope, mergeability and CI. No new feature-branch commits or source edits are permitted. Any drift or unmet protection gate requires STOP; branch protection must not be bypassed. Expected result parents are BASE first and HEAD second; expected result TREE is12f878b06bef3435226ce51436a37d8a876f2dda. The actual Ready/merged state must be read from GitHub, not inferred from this authorization note.No squash, rebase, force-push, branch deletion, deploy, release, runtime activation, production admission, or changes to #209/#210/#214/#215 are authorized. Their branch heads, base-branch settings and PR metadata are to remain untouched. After any authorized merge, verify the new master SHA, TREE, ordered parents, preserved other branches and automatically triggered master Actions.
C0 HOLD;T11/T12 UNEXECUTED;NOT_PRODUCTION_ADMITTED;execution_authority=NONE;can_execute=false;can_trade=false;capital_permission=DENY.