Commit Graph

258 Commits

Author SHA1 Message Date
felixm 19654c2b57 Align M3.5 design doc with the nudgeEpoch guard
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 18:52:01 -04:00
felixm 622a1cd401 Tie nudge validity to the on-task stretch
A soft nudge advisory belongs to one continuous on-task stretch in an allowed
app. Guard it with an on-task-stretch epoch (advanced on session reset and on
any non-on-task-match observation) instead of a session-only counter, and clear
the advisory on leaving the allowed app, so a stale 'Heads up' never resurfaces
after a drift episode.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 18:20:22 -04:00
felixm 9dd0bb934e Wire the semantic nudge into the daemon and document M3.5
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 18:11:42 -04:00
felixm 20a102b4a4 Add dismiss-only Heads up tier for semantic nudges
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 18:10:03 -04:00
felixm 97577c003f Assert semantic nudge reaches the state payload
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 18:08:51 -04:00
felixm b43ba5179d Orchestrate semantic nudge on the on-task path
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 18:07:31 -04:00
felixm b96319d847 Add ai.Nudger role for semantic drift within allowed apps
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 17:57:20 -04:00
felixm 4e5e1f3881 Plan M3.5 semantic nudge implementation
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 17:52:31 -04:00
felixm 5818d401c3 Design M3.5 semantic nudge within allowed apps
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 17:44:30 -04:00
felixm 7621093eef Document M3 drift interceptor in README
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 17:23:31 -04:00
felixm fefa72b909 Wire drift judge into the daemon alongside the coach
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 17:23:05 -04:00
felixm f73bb21c80 Add allowed-apps field and active-view drift interrupt UI
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 17:21:12 -04:00
felixm 6ca796dee3 Add /refocus and /ontask routes and carry allowed classes
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 17:18:25 -04:00
felixm 4e7676560d Wire debounced cached async drift judgment into RecordWindow
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 17:16:59 -04:00
felixm 2977b903c2 Add drift state, persistence, and override controls to controller
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 16:53:23 -04:00
felixm 75d31b5fa8 Extend coach proposal with allowed window classes
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 16:49:06 -04:00
felixm 83bae00e45 Add DriftJudge AI role with verdict parsing
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 16:45:59 -04:00
felixm 7e9d00b80b Port allowed-context matching to evidence package
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 16:42:48 -04:00
felixm fccf856054 Add M3 drift interceptor implementation plan
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 16:39:08 -04:00
felixm 4e167744a0 Add M3 drift interceptor design spec
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 16:27:50 -04:00
felixm 571a97e0e2 M2: mark AI planning coach milestone done
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 14:22:08 -04:00
felixm b51ad45c10 M2: wire planning coach backend into the daemon with graceful fallback
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 14:21:37 -04:00
felixm c61c9d46b1 M2: planning-view Sharpen control with non-clobbering coach updates
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 14:20:39 -04:00
felixm 38a62e4c68 M2: POST /coach route wiring the planning coach
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 14:19:12 -04:00
felixm 463ac4f23c M2: controller async coach with generation guard and ephemeral state
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 14:16:28 -04:00
felixm 25a33f027a M2: surface codex empty-output and clean CLI error messages
Addresses code-review follow-ups: codex now returns a specific error when
its -o file is empty rather than degrading to ErrEmptyResponse downstream;
CLI errors omit a dangling stderr suffix when stderr is empty.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 14:14:04 -04:00
felixm 3148fdfa92 M2: ai claude and codex CLI backends with selector
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 14:11:57 -04:00
felixm dea8e6ba78 M2: ai Coach interface and Service over a pluggable Backend
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 14:10:49 -04:00
felixm 5545a4e1cd M2: ai Proposal type, JSON extraction and validation
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 14:09:21 -04:00
felixm ae5a0f123c Add M2 AI planning coach implementation plan
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 13:47:31 -04:00
felixm b2104f6442 Pin M2 spec to verified claude/codex CLI invocations
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 13:39:10 -04:00
felixm 332e17d742 Add M2 AI planning coach design spec
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 13:33:37 -04:00
felixm cd5d69dec5 Reframe roadmap around the gate-first focus loop
Make the OS-level "gate → plan → work → reflect → gate" loop the explicit
destination. Promote the deferred AI reviewer into the loop as M7 (Reflection),
and reframe enforcement as M8 (Enforcement & gate) building toward the Guard
checking for a declared intention before the machine is usable — kept as the
last, heaviest milestone.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 13:22:03 -04:00
felixm 1d281ad528 M1: mark evidence & audit milestone done in README
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 12:58:54 -04:00
felixm ed5085ab6b M1: make evidence tests race-clean
Rewrite TestFakeSourceEmits to synchronize through a channel (it now
asserts emission instead of racing on a shared slice and discarding it).
Skip the live X11 smoke test under -race: xgbutil's event loop has an
internal Quit/Quitting race on shutdown that is never reached in
production (Watch runs under a never-cancelled context.Background()).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 12:57:50 -04:00
felixm f286609ec0 M1: render evidence (current window, buckets, switches) in UI
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 12:55:43 -04:00
felixm b5c3f883b7 M1: start active-window sensor wired to the controller
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 12:54:31 -04:00
felixm 63418d106f M1: broadcast focus updates, expiry uses Expire outcome
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 12:52:55 -04:00
felixm df384afb7c M1: controller evidence stats, accumulation, replay, audit-at-End
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 12:49:19 -04:00
felixm 1646321d0b M1: X11 active-window adapter + platform fallback
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 12:44:25 -04:00
felixm 034cc16540 M1: snapshot carries session_id and outcome_pending
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 12:42:35 -04:00
felixm 5ee34a350d M1: raw per-session focus log with retention prune
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 12:41:08 -04:00
felixm d780643015 M1: hash-chained session audit log
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 12:38:40 -04:00
felixm a31ce702fe M1: evidence types, Source port, ScrubTitle
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 12:37:04 -04:00
felixm edca3e280b M1: add jezek/xgbutil + xgb dependencies
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 12:34:47 -04:00
felixm 28305da530 Plan M1: evidence & audit implementation
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 12:31:35 -04:00
felixm e68b7437fa Spec M1: evidence & audit
The activity port (evidence.Source + X11 adapter + fake), a two-tier
evidence store (disposable per-session raw log + permanent hash-chained
session summaries), live SSE evidence updates, and crash-recovery replay.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 12:22:51 -04:00
felixm fe2fb4e250 Frame architecture as ports around a decision core
Add the hexagonal architecture section (skeleton/nervous-system/cortex
layering), name the tasks/knowledge/enforce ports as deferred, and extend
the roadmap with M5-M7. Clarifies that the state machine owns transitions
and the LLM advises within the rails.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 12:20:38 -04:00
felixm 06c1b719b3 Merge M0 walking skeleton: Go reimagining
Stand up the antidriftd daemon serving a local web UI that drives a manual
commitment through Locked -> Planning -> Active -> Review -> Locked, with
server-authoritative timebox expiry and snapshot persistence that survives
restart. Rust moved to legacy/.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 12:04:28 -04:00
felixm d08cc9f891 Document M0 walking skeleton
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 12:00:15 -04:00