felixm and Claude Opus 4.8
c4eb870808
Test that a stale tasks fetch result is discarded
...
Exercises the generation/left-planning guard in startTasksFetchLocked
via the fakeProvider gate: a fetch in flight when its generation is
superseded must not clobber the current tasks state.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-05-31 22:06:04 -04:00
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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
felixm and Claude 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