Skip to content

feat(motion): motion hook scope + CONFIRM multi-pending fix (0.1.103) - #113

Merged
brunoazoulay merged 3 commits into
mainfrom
feat/motion-confirm-0.1.103
Oct 10, 2026
Merged

brunoazoulay merged 3 commits into
mainfrom
feat/motion-confirm-0.1.103

Conversation

@brunoazoulay

Copy link
Copy Markdown
Collaborator

Summary

  • New motion hook scope (hook <host> motion): G1 stills / G2 draft approval gates bound to artifact SHA-256, owner-only HMAC-signed approvals, self-approval / forgery / detach guards, critic sandbox, render budget, state verification with quarantine.
  • CONFIRM fix: up to 10 pending codes per session (never expire), armed token survives denial of another command, visible ack on codex/kimi for an exact CONFIRM <code> prompt.
  • Release 0.1.103 (package.json + CHANGELOG).

Changes

  • src/policy/motion/, src/runtime/motion/, src/policy/interfaces/motion.ts, docs/motion.md
  • src/runtime/confirm/*, src/runtime/handle.ts, src/runtime/handle-payload.ts, src/util/record-object.ts, docs/adapters.md
  • Shared: protected-path.ts (motion paths protected in every scope), shell-read-refs.ts exports, scope.ts / dispatch.ts registration

Test plan

  • bun run build exit 0
  • bunx tsc --noEmit exit 0
  • bun test 2473 pass / 1 skip / 0 fail
  • Pre-vs-new differential 471/475 identical on 7 hosts (4 diffs = intended ack)
  • CI green

Breaking changes

None. Only behavior change outside motion: agent writes to ~/.fuse-harness/motion/ and ~/.fuse-harness/motion-keys/ are denied in every hook scope.

…NFIRM multi-pending and visible ack

- New `motion` scope (src/policy/motion/, src/runtime/motion/): stills/draft
  approval gates bound to artifact SHA-256, owner-only signed approvals,
  self-approval/forgery/detach guards, critic sandbox, render budget,
  state verification with quarantine.
- Shared touches: protected-path guards ~/.fuse-harness/motion{,-keys}/,
  handle.ts payload helpers extracted to handle-payload.ts, scope/dispatch
  registration.
- CONFIRM: up to 10 pending codes per session (never expire), armed token
  survives denial of another command, visible ack on codex/kimi for an
  exact `CONFIRM <code>` prompt; legacy single-slot state still read.
…xt budgets

The cold first call pays JSC tier-up (~14 ms locally vs 0.09 ms steady state),
which made the 5 ms / 50 ms budgets flaky on CI runners. The budgets are unchanged
and still catch super-linear blowups.
@brunoazoulay
brunoazoulay merged commit bd6e6d3 into main Oct 10, 2026
1 check passed
@brunoazoulay
brunoazoulay deleted the feat/motion-confirm-0.1.103 branch October 10, 2026 14:13
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