Skip to content

fix(perception): bind immutable capture provenance - #9

Merged
mattebad merged 3 commits into
mainfrom
recovery/rec-f01
Sep 13, 2026
Merged

mattebad merged 3 commits into
mainfrom
recovery/rec-f01

Conversation

@mattebad

Copy link
Copy Markdown
Owner

Scope

REC-F01 only, from verified origin/main d150b78.

  • Snapshot payload/metadata, including mutable fields nested in frozen dataclasses, before hashing. Unsupported payload types fail closed rather than losing image shape/type.
  • Bind observations to the requested capture/session/ordinal/dimensions/time and payload/transport/semantic digests. Reject foreign, incomplete, contradictory, and replayed session events.
  • Reject conflicting screen/overlay/target recognition instead of selecting the first match. Hash-only mappings cannot acquire provenance.
  • Reclassify on router revalidation rather than trusting cached targets. Actual pre/final action admission checks current capture age, session/ordinal progression, source/target stable ROIs, dimensions, and overlays.
  • Preserve full-frame animation variance when authoritative ROIs match. Equal clock ticks remain valid with a newer capture ordinal (Windows clocks can have coarse resolution).
  • Invalid pre-transport observations block without input and preserve ownership release behavior.

Verification (Python 3.12, offline)

  • python -m unittest tests.test_automation_service_boundaries tests.test_automation_service_temporal: 45 passed.
  • python scripts/check.py: 306 passed (selected static suite, not comprehensive).
  • Existing affected CI unittest selection: 114 passed.
  • python -m compileall -q automation_service safe_action_core scripts tasks tools: passed.
  • API smoke: HOME+DAILY positives produce CONTRADICTORY_RECOGNITION; caller mutation leaves captured payload unchanged; hash-only mapping produces CAPTURE_PROVENANCE_MISMATCH.
  • Regression coverage includes mutable nested dataclasses, cached-target reclassification, expired captures despite newer ordinals, rejected replayed session captures, animation-positive rebinding, and invalid-observation ownership cleanup.
  • Staged and committed PR diff whitespace checks passed. Windows/Linux CI includes the focused suite.

Existing native Startup/Home/World consumers remain on their current native-frame contracts; this does not introduce a parallel native perception pipeline or claim their migration/native acceptance. No device/runtime operation, production-state edit, registration/queue promotion, or retained-evidence rewrite occurred. Do not merge this PR from orchestration.

@mattebad
mattebad merged commit 44e177e into main Sep 13, 2026
2 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.

1 participant