Skip to content

fix(export): deny unsupported actor kinds (WO-01, stacked on #212) - #213

Merged
bitmaster162 merged 2 commits into
masterfrom
agent/person-export-actor-deny-local-r1
Oct 20, 2026
Merged

bitmaster162 merged 2 commits into
masterfrom
agent/person-export-actor-deny-local-r1

Conversation

@bitmaster162

@bitmaster162 bitmaster162 commented Oct 13, 2026 •

Copy link
Copy Markdown
Owner

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.

  • Base branch: master.
  • Pinned BASE SHA: a56ae18771ecbd6d338292830ec7cbdc6c823c79.
  • BASE TREE: a9f23aa5c30fc635ecd8e6a2c82d8f169634f721.
  • Head branch: agent/person-export-actor-deny-local-r1.
  • Current HEAD: e7ffed8ae2e2e91cb3554f5820207bd02c455078.
  • Current HEAD TREE: 12f878b06bef3435226ce51436a37d8a876f2dda — exact match to the owner-approved expected tree.
  • Update commit parents, in order: original fix HEAD b11af1a69957e77accc0a6d74dedb7c4dab8ee28, then pinned master a56ae18771ecbd6d338292830ec7cbdc6c823c79.
  • 2 commits against master; exactly 3 modified files, +39 / -0. The extra commit is the ordinary history-preserving branch update, not an additional source fix.
  • Expected ordinary PR merge RESULT TREE: 12f878b06bef3435226ce51436a37d8a876f2dda; expected parents: pinned BASE first, current HEAD second.

The original fix commit has tree 69893ca2d8417c5b1904863b97e506f536168134 and parent 29f4ab8d3fb407245a83cffeff7d559313e8bead. The previous base branch was agent/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 unsupported actor_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:

Check Observed result
New regressions against predecessor 6 expected failures; existing AGENT/OWNER denial still passed
Focused Company/Person suite after fix 60 passed, 0 failed, 0 skipped
Ten-file source regression, including a fresh readback rerun 388 passed, 0 failed, 1 skipped
Separate deterministic old/new matrix 882 cases: 90 unsupported EXPORT outcomes changed from ALLOW to DENY; 792 other outcomes preserved
Public Company/Person export API matrix 22/22 expected outcomes; inputs unchanged
Local socket audit 0 socket events observed

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 e7ffed8ae2e2e91cb3554f5820207bd02c455078 completed successfully. Times below are UTC on 2026-10-20:

Check Conclusion Completed at
Ubuntu / Python 3.11 SUCCESS 17:34:36
Windows / Python 3.11 SUCCESS 17:53:20
Analyze Python SUCCESS 17:32:21
CodeQL SUCCESS 17:32:15
offline-shadow-continuity SUCCESS 17:31:27

Automatically triggered workflows:

Source-tree provenance: the Linux review log records checkout of refs/pull/213/merge at synthetic commit 58c6b27efbda3e3c500f132fd9faa54493256b0f. Its parents are pinned master a56ae18771ecbd6d338292830ec7cbdc6c823c79 and current HEAD e7ffed8ae2e2e91cb3554f5820207bd02c455078; its verified TREE is 12f878b06bef3435226ce51436a37d8a876f2dda, 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 effort high. Session e879e0da-63a7-4497-af9d-0665082d4d7f returned SUCCESS / exit 0 at 2026-10-20T18:31:53Z. The reviewer analyzed the supplied exact diff and four full source/test files at HEAD e7ffed8ae2e2e91cb3554f5820207bd02c455078; 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

  • Compatibility: rejecting unsupported actors is intentional. A host-side exact-symbol search over tracked repository text found 22 references, limited to the displayed runtime path, definitions, tests and documentation. It did not identify another direct service/system exporter. This is bounded evidence, not proof of external or dynamic consumer compatibility. Search receipt SHA-256: 659a7285482bf4b73477a8216a91322d4f556f89c4ecbe25b9d28205c19838ae.
  • Test follow-ups remain: distinguish new red regressions from the pre-existing AGENT/OWNER denial control; consider matching the rejection message; add missing/null/non-string/trailing-space actor-kind cases and positive/case-variant HUMAN/AGENT controls; consider additional Person-path controls. None was implemented in this PR update.
  • Inherited observations in the review remain unremediated: Person export checks authorization after consent/provenance filtering; caller-supplied actor claims are not authentication or a verified requester-to-twin binding; unknown-operation handling and PURGE coverage need separate assessment; Unicode normalization and non-Mapping exception types need separate assessment; actor-kind/authority audit detail is limited. These are source-review observations, not newly demonstrated authenticated remote exploits or evidence of a live breach.
  • A3 publication-result semantics and A4 admitted Memory-row binding are inherited limitations addressed separately by fix(person): bind admitted memory rows and clarify publication outcomes (A4/A3) #214. This PR does not fix them, and green CI or this review does not close them.
  • A failed initial text-input transport did not deliver the packet and is not counted as review evidence. The successful review used the stream-json input route. The original review and execution evidence are preserved without editing or re-running the model to obtain a different verdict.

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 is 12f878b06bef3435226ce51436a37d8a876f2dda. 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.

@bitmaster162
bitmaster162 changed the base branch from agent/person-continuity-durable-demo-r2 to master October 20, 2026 17:22
@bitmaster162
bitmaster162 marked this pull request as ready for review October 20, 2026 18:48
@bitmaster162
bitmaster162 merged commit 79d5fc7 into master Oct 20, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants