Commit Graph
100 Commits
Author SHA1 Message Date
felixmandClaude Opus 4.8 8b7bec1173 Fetch today's tasks asynchronously on entering planning
The controller fetches the Marvin task list when entering planning,
mirroring the planning coach: generation-guarded goroutine, status enum
(idle/pending/ready/error), projected into State only while planning and
only when a provider is set. nil provider degrades to no tasks view.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 22:02:28 -04:00
felixmandClaude Opus 4.8 569264be11 Add tasks port and Amazing Marvin adapter
The tasks.Provider port answers "what should I be doing?". The Marvin
adapter shells out to ampy's `am --json` and parses today's open tasks,
dropping done/empty-title entries. Leaf package mirroring ai.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 21:59:00 -04:00
felixmandClaude Opus 4.8 267eda59e6 Add M5 tasks-port design spec
Design for the tasks.Provider port: an Amazing Marvin adapter shelling
out to `am --json`, today's tasks seeding the planning intent field.
Read-only, no writeback, graceful degradation — mirrors the ai port.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 21:50:15 -04:00
felixmandClaude Opus 4.8 6b2a96620c M4: drop stale plan-task reference from CSS comment
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 21:16:11 -04:00
felixmandClaude Opus 4.8 51cb09c520 M4: presentational review recap
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 21:13:04 -04:00
felixmandClaude Opus 4.8 f5da12362a M4: cockpit HUD with state-driven accent
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 21:10:03 -04:00
felixmandClaude Opus 4.8 76816ae188 M4: split web UI assets into app.css and app.js
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 21:05:34 -04:00
felixmandClaude Opus 4.8 93e779348c M4: add look-good implementation plan
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 21:03:34 -04:00
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