Commit Graph
100 Commits
Author SHA1 Message Date
felixmandClaude Opus 4.8 c807a72623 Spec M4: cockpit-style web UI design pass
State-driven accent HUD, stacked bands, CSS/JS split out of the inline
HTML, polished presentational review recap. No behavior changes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 20:57:32 -04:00
felixmandClaude Opus 4.8 097678e839 Mirror runtime status to ~/.antidrift_status
A window-manager status bar can now read a single-line status file: a
glyph plus minutes-remaining (● 24m / ⚠ DRIFT 24m / ● 24m ·? / ◔ planning
/ ✓ review), empty when idle. Rewritten on a one-minute tick, only when
the line changes, and removed on shutdown. Degrades to no file if $HOME
is unresolvable.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 20:49:48 -04:00
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 28305da530 Plan M1: evidence & audit implementation
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 12:31:35 -04:00
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 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
felixmandClaude Opus 4.8 d08cc9f891 Document M0 walking skeleton
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 12:00:15 -04:00
felixmandClaude Opus 4.8 937d714be2 Wire antidriftd daemon entrypoint
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 11:59:31 -04:00
felixmandClaude Opus 4.8 0318aeb08d Add web server, SSE handlers, and UI
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 11:53:21 -04:00
felixmandClaude Opus 4.8 f243f3004e Add SSE broadcaster
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 11:49:57 -04:00
felixmandClaude Opus 4.8 a8216095de Make Complete atomic and guard zero deadline
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 11:49:03 -04:00
felixmandClaude Opus 4.8 18108c3da3 Add session controller with snapshot persistence
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 11:45:46 -04:00
felixmandClaude Opus 4.8 63247e402a Add snapshot store
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 11:43:31 -04:00
felixmandClaude Opus 4.8 de40fe73c7 Add runtime and commitment state machines
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 11:41:40 -04:00
felixmandClaude Opus 4.8 0a934bf061 Harden timebox validation and test ForRuntime
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 11:39:38 -04:00
felixmandClaude Opus 4.8 e66fddd29f Add domain types and validation
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 11:36:51 -04:00
felixmandClaude Opus 4.8 3da269c3b7 Set up Go module and move Rust to legacy
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 11:35:04 -04:00
felixmandClaude Opus 4.8 0eb30ca93d Add M0 walking-skeleton implementation plan
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 11:31:17 -04:00
felixmandClaude Opus 4.8 bb97a374da Add M0 walking-skeleton design
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 11:25:10 -04:00
felixmandClaude Opus 4.8 010e8c07a2 Add Go focus-OS reimagining design
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 11:13:47 -04:00
felixm 1706e8afd8 Accept legacy review return events 2026-05-26 17:25:11 -04:00
felixm 25aeb58ae8 Freeze active time during review 2026-05-26 17:14:26 -04:00
felixm 379804caae Tie review completion to commitments 2026-05-26 17:10:39 -04:00
felixm 6fd1a61b04 Make review completion durable 2026-05-26 16:58:08 -04:00
felixm f2eab5492c Fix persisted review startup 2026-05-26 10:40:38 -04:00
felixm 1fa94f3ca0 Document commitment stage one 2026-05-26 10:33:32 -04:00
felixm 65d6b992a0 Surface degraded evidence 2026-05-26 10:28:17 -04:00
felixm 41da2c11a2 Fix post-dismissal prompt handoff 2026-05-26 10:19:27 -04:00
felixm 3b6ba569ce Fix violation prompt window acknowledgement 2026-05-26 10:11:49 -04:00
felixm 3ff868c4e8 Fix violation prompt evidence gating 2026-05-26 10:05:42 -04:00
felixm fd166d1ebb Fix violation prompt invariants 2026-05-26 09:57:01 -04:00
felixm ed00c7c24f Add tier zero violation friction 2026-05-26 09:48:41 -04:00
felixm b61db909c9 Keep transition prompt time active 2026-05-25 21:45:01 -04:00
felixm 932c9ac807 Require explicit transition prompts 2026-05-25 21:38:58 -04:00
felixm 7303eeacaf Restore timers from session events 2026-05-25 21:33:28 -04:00
felixm e07bd8dcda Keep TUI and controller lifecycle aligned 2026-05-25 21:25:58 -04:00
felixm dd6314027c Return controller to planning after review 2026-05-25 21:18:53 -04:00
felixm 6ce6bb97ab Wire commitments into session UI 2026-05-25 21:13:35 -04:00
felixm 65b2a756c5 Enable winapi windef feature 2026-05-25 21:07:34 -04:00
felixm 7b1bc32c3f Harden window evidence adapters 2026-05-25 21:03:36 -04:00
felixm 92cc023b4d Expose window evidence snapshots 2026-05-25 20:57:41 -04:00
felixm 1b8b6cabf0 Require planning before activation replay 2026-05-25 15:52:13 -04:00
felixm a71a7ce84f Close transition replay loopholes 2026-05-25 15:48:40 -04:00
felixm dd9fc3de3a Require transition policy replay 2026-05-25 15:43:03 -04:00
felixm 2e58e3b269 Keep transition policy consistent 2026-05-25 15:36:15 -04:00
felixm 999d99749a Enforce session replay invariants 2026-05-25 15:29:02 -04:00
felixm 3cf6ab42b8 Reject invalid session replay 2026-05-25 15:23:45 -04:00
felixm 3cece19e73 Harden session event replay 2026-05-25 15:20:09 -04:00
felixm aebebade87 Add session controller 2026-05-25 15:12:48 -04:00
felixm c02002825d Lock event log reads 2026-05-25 15:08:50 -04:00
felixm e7cc388742 Lock durable event log appends 2026-05-25 15:04:07 -04:00
felixm 814f28c5ae Format state machine assertion 2026-05-25 13:13:59 -04:00
felixm 03eb1f82b3 Harden event log validation 2026-05-25 13:13:14 -04:00
felixm 52d5c65290 Add hash chained event log 2026-05-25 13:09:20 -04:00
felixm a7f9ef9e42 Add allowed context matching 2026-05-25 13:04:18 -04:00