Your priority queue. Drag or ▲▼ to reorder · ✓ Done retires a finished ask · ✕ Drop removes one you no longer want.
12 active🔴 5 blocked on you✅ 61 done80 tracked
🔴 Blocked on you 5
Fix the Pixel kiosk (settings/WiFi/sound/lockscreen all broke)
agent2blocked on you2026-06-27
👉 You: You're in Android screen-pinning, not the real TestDPC kiosk. Exit screen-pin, re-enable USB debugging, plug the Pixel into the M2, then run 02_hardware/pixel_7/relock-kiosk.sh (Agent 2.0 drives once it's connected).
One bug behind all of it — settings, WiFi, sound, notifications, and the lock screen all come back in the real kiosk.
Notifications + reminders working on the phone
principalblocked on you2026-06-27
👉 You: Set VAPID keys + pywebpush on the server (fb_bc30629a). Without them the phone can't even subscribe. (Also blocked by the kiosk above right now.)
BUILT — web-push stack + the 60s reminder scheduler (#663). Dormant until VAPID is set.
Model stability / the served-model fleet
agent2blocked on you2026-06-27
👉 You: Flip the 4 switches in 01_admin_docs/FLEET_READINESS.md (WITAN_FLEET_REGISTRY env, node-vitals collector, merge-gate ruleset, exo).
BUILT — health-aware model registry, failover, active health probes, adaptive caps, chronic-wedge detection. Dormant until the env flips.
EXO ring — run 30–70B models across the Macs
agent2blocked on you2026-06-27
👉 You: Approve exo_fleet_benchmark_v1 (proposal #388) — the harness is built but the install/convene/benchmark is gated on your typed approval.
Harness BUILT (fleet_bench, convene controller). Never run — awaiting approval.
Gemma interface model + translate front-door
principalblocked on you2026-06-27
👉 You: Run serve_node.sh --class interface on mac2. The reformatter front-door is already wired and auto-activates the moment Gemma lands in the registry.
Front-door BUILT + dormant; one serve command lights it up.
⚙️ Active queue 12drag or ▲▼ to set priority
1⋮⋮Where is my hotel that I need to check into like what is the address of my hotel
witan-chatqueued2026-07-12
Where is my hotel that I need to check into like what is the address of my hotel tomorrow?
2⋮⋮If I am asking you to do something you don’t need to then ask again here for per
witan-chatqueued2026-07-07
If I am asking you to do something you don’t need to then ask again here for permission, you can say “ok I will work on updating the portfolio page” and then you can send me an approval brief once you’ve planned out what that includes.
3⋮⋮The portfolio tile shouldn’t just be a chat with witan, it should be a page much
witan-chatqueued2026-07-07
The portfolio tile shouldn’t just be a chat with witan, it should be a page much like health or wealth, however this is where I can add things like a current book I am reading (to update that on the justzachz.com page) or new projects and there should be a tab where I can say interview me for some writing, this can specifically either be tied to something I got in my morning brief RSS feed or it could be about coaching or it could be about military and leadership. I want the writing part of my portfolio to be a blog of my own building.
4⋮⋮The portfolio tile shouldn’t just be a chat with witan, it should be a page much
witan-chatqueued2026-07-07
The portfolio tile shouldn’t just be a chat with witan, it should be a page much like health or wealth, however this is where I can add things like a current book I am reading (to update that on the justzachz.com page) or new projects and there should be a tab where I can say interview me for some writing, this can specifically either be tied to something I got in my morning brief RSS feed or it could be about coaching or it could be about military and leadership. I want the writing part of my portfolio to be a blog of my own building.
5⋮⋮ack contract live probe — ignore
witan-chatqueued2026-07-05
ack contract live probe — ignore
6⋮⋮You are adding the asks to my to do list… that’s not correct, I am seeing a lot
witan-chatqueued2026-07-05
You are adding the asks to my to do list… that’s not correct, I am seeing a lot of to dos being added by you that relate to the task I gave you… it’s not a to do…
7⋮⋮Ok where are we on the asks? Can I get the asks I send here added to the tasks l
witan-chatqueued2026-07-05
Ok where are we on the asks? Can I get the asks I send here added to the tasks list? Or add it to the asks tile? I just feel like I lost all the observability where this was coming from
8⋮⋮AGENTS VAULT — canonical markdown home for agent routing/prompts/restrictions, mirrored to home server + agent reader
efficiencybuilding2026-07-01
AI AGENTS VAULT (~/Obsidian/AI AGENTS VAULT on M2). Structure 00_ROUTING/01_SYSTEM_PROMPTS/02_RESTRICTIONS/03_CLAUDE_DOCS/04_MEMORIES seeded. First ROUTING docs authored (README/ROUTING_MAP/LANES). One-way mirror -> homeserver1 ~/witan-agents-vault (read-test PASSED); refresh folded into Router 5-min tick (no new M2 job). NEXT: (a) migrate system prompts (from agent_skills) + restrictions (from 01_admin_docs) into the vault; (b) Agent wires the reader (source_type:obsidian, fail-open); (c) Principal sets WITAN_AGENTS_VAULT env. Reachability guaranteed: local read on homeserver1, fail-open, no M2-awake dependency.
9⋮⋮NEW: Bootstrap a small WITAN CODE AGENT on the Mac minis (self-authoring small code)
Principal APPROVED (Surface-A) the code-model download to the Mac mini fleet. Architecture (his): LOCAL code-WRITER (Qwen-Coder/Code-Llama) -> LOCAL code-EVALUATOR (2nd model reviews the diff) -> MERGE GATE (Claude final check) -> prod, Efficiency monitoring. EXO across 2 minis for a bigger model OK if deconflicted. Agent 2.0 picks models + serve cmds + EXO/deconflict + wires writer->evaluator->gate. NO Claude API. Efficiency drives + monitors first task once serving.
10⋮⋮Connect the calendar to Google Calendar
agentqueued2026-06-27
NOT built — designed only (tiered scheduling: Witan busy-blocks → GCal sub-cals → Acuity). The GCal OAuth connection isn't wired. A real un-started gap.
11⋮⋮Manage my emails (triage / respond loop)
agentbuilding2026-06-27
PARTIAL — email screener + important-email tab + in-your-voice drafter (failover fixed today, #1188) are built. The full triage/archive/respond loop isn't.
12⋮⋮Alert me when I get a high-priority message
agentqueued2026-06-27
PARTIAL — the screener already flags needs-reply/important, but it's pull-only; a proactive alert needs the notification path (see Notifications above).
✅ Done 61
I received an alert about the consequence cascade: 🔭 Consequence cascade — “Whol
I received an alert about the consequence cascade: 🔭 Consequence cascade — “Whole In NY” (wedding). Family event with travel and coordination required.. 22 commitment(s) sit in its window. Propose-only — you decide what to act on (drafts are staged in the outbound gate. I can see why it’s here, but tracking the workflow isn’t possible when I use the drop down the information is hard to understand it seems to have a lot of zeros as if none of it rendered, and find the last mention “the recommendations are at the gate” I cannot find where those recommendations are, and what it would do.
For the consequence cascade for whole in NY really there is no true consequence because that condition is for awareness so it’s not an event that has real conflicts itself. Also that started days before today so it shouldn’t recommend travel planning because it should realize I am already here. I would say that “condition” should make witan realize I 1) no army work time blocks during this time, 2) the time zone I would be in is eastern so my call with Sarah would be in conflict with sleep while I am here and that event needs to move each week. It should also then recommend new ways to fill the time during the day with no Army work on the calendar, like reading information on AI, relaxing, spending quality time with family, or rereading and studying my work for school. So there are several issues with the cascade that I would like to work on
Cortex fix 7/8: the ask->task->prompt->input->retrieval->output map (whole-workflow trace)
A trace view that follows ONE ask from start to finish: ask -> task -> prompt -> input to next step -> context retrievals -> final output, every transformation + retrieval visible, so drift/mistakes are spottable. Extend cortex_thought_chain to start from the ASK (not just the to-do). Reads the now-complete capture from cx1/4/5/6.
#3: the Claude page/board still lives inside Cortex; he asked a while ago to move all Claude out of Cortex into the Claude apex tile and keep Cortex specific to Witan.
#2 Family: per-member pages + 'Add family member' button
Principal's FULL scope: each family member gets their OWN page/tab with their important things (key dates, contacts, to-dos) AND a view of what THEY have going on in the CALENDAR (their events), so he can glance at any member's schedule. Plus an 'Add family member' button. Builds on the existing Family tile (ask_6fe33c5b43). BLOCKED until UI relaunches.
#1 UI half: number the queue; let the Principal drag-drop cards to reprioritize; reflect the auto-reconciled statuses (done/building/queued) so the board stops showing stale 'working on it'.
Cortex fix 8/8: reasoning agents between steps + decompose the monoliths
Insert the 6 reasoning-artifact nodes (cascade plan / plan rationale / inferred-intent / critic-rationale / title-rationale / layout-validator) and split the 4 monolith agents (todo_scribe._enrich_llm worst: sizing+decomp+deps+reasoning+note in one 8B call) into single-purpose agents the roster already names (TOD-02/03...). Later phase, after foundation lands.
#1 Asks page: auto-reconcile status from shipped PRs
MERGED #1251: ask_reconciler scans merge subjects + auto-advances asks to deployed when their PR id appears. Once deployed (~30min) it self-cleans the stale board (family/error-card/tile-fix etc).
To-do domains drive calendar placement: primary+secondary+tertiary, tertiary can be 'any' (fills any block)
Follow-on to ask_todo_secondary_tertiary_domain (#1270, field shipped). Principal: the 3 domains govern WHERE a to-do can be placed on the calendar. RULE: a to-do fits a time-block IF block.domain in {primary, secondary, tertiary} OR tertiary=='any' (any block). tertiary accepts a special 'any' value. This is the assigner/plan-my-day block-fill rule (fixes grow-blocks never filling cross-domain). Agent = placement logic + 'any' sentinel; UI = 'any' option in the tertiary dropdown.
Evening auto-plan: by ~8pm, tomorrow's plan is generated + placed on the calendar
Principal: 'since it's past 8pm the plan for tomorrow should already be on the calendar.' Build an EVENING scheduler: at a configurable local time (~20:00) generate TOMORROW's plan (two_plans over tomorrow's to-dos/priorities/fixed events + capacity) and PLACE the time-blocks on tomorrow's calendar (is_time_block, usable) so it's ready when he looks — not just a proposal buried in the Inbox. proactive_scheduler.run_all exists but does cascade-considerations, NOT plan-tomorrow. Reuse two_plans.plan_today for the NEXT day. Idempotent (don't double-place); respects existing blocks.
#6 secondary + tertiary domain fields on to-dos. Principal wants this to be the FIRST TEST TASK for a new small WITAN CODE AGENT on the Mac minis (see ask_code_agent_fleet). If the code agent can't do it well, Efficiency flags it + does it manually.
Apex redesign: grouped rows with centered titles + spacers + simple tile names (no subtext)
#1259 shipped titled row-groups. Email drafts = one apex tile DONE (portal.html:679). REMAINING: promote Notebook out of Resources to apex COMMUNICATION row + remove from Resources tile. Re-nudged UI.
Cortex fix 2/8: kill the FABRICATED prompt — show real I/O or honest 'not captured' + capture reasoning
event.html: remove the synthetic samplePrompt() fallback that fabricates a fake prompt when has_io=false; show the REAL /cortex/runs/{id}/io, or an explicit 'not captured for this run'. Start rendering the reasoning field (currently 0%). Never show a fake prompt as real.
Principal: 'Tools'->'Other', apex-style titled row-groups. Buckets: TOOLS (flashlight/weather/shopping/pomodoro/deep-work/camera), SYSTEM (troubleshooting/deploy/surface-a), UNSORTED (default home for any NEW/unplaced tile). Add a 'bucket' field to each server-built tile; new tiles default to Unsorted. Don't re-show tiles already homed on apex.
Chat resilient to brief API restarts — auto-retry + keep the message, never drop on a transient blip
Principal got 'several messages only an error'. /ops/chat/stream is healthy (reproduced); cause = API restarts during auto-deploy drop in-flight sends and surface a bare error + lose the message. Fix: front-end auto-retry w/ backoff on network/5xx, keep the user's text, only error after retries fail.
CONFIRMED WORKING on prod v1.1280: two-plan-author ran fresh post-deploy (23:08) with CKPT (was always none before) — #1280 capture verified live. Cascade LLM nodes (trigger/planner/step) CKPT; cascade-engine/outbound + reconcilers correctly none (not LLM calls). Mechanism proven. Remaining low-freq agents (title-agent/scoper/event-parser/todo-assessor) share the same wired path; awaiting first post-deploy run to tick each off, then deployed/done.
Claude chat = async message LOG (post to bus + poll for replies), NOT an API stream
Principal: the 🛠 Claude (build-team) chat must be async — post message to /ops/claude/messages (source=any), render a threaded log, poll for Claude replies (arrive on the loop cadence), show 'Sent — Claude will reply on its next pass', never error on no-immediate-reply, never use /ops/chat/stream. No model/host needed; it's just the log. Fixes the 'only an error' + messages-not-reaching-the-team issue.
Cortex fix 4/8: SOURCE-LEVEL context provenance — which md file / DB / person record pulled in
COMPLETE: window-fill foundation #1290 + UI meter #1291 + adaptive_retrieval nightly agent #1292 (propose-only Inbox card: under-filled<30%+poor->pull more; full>90%+poor->stricter; Principal tunes, never auto-set; nightly_agents). Verify on prod after redeploy + first nightly run.
#8 Plan: never add vague placeholders (it invented 'get work done')
Principal reframe: don't hardcode into the planner. Build the agents/workflows that (a) honor a stated event duration (camp 9am-4pm -> a 9-4 block, not 1h), (b) assess DOMAIN (not grey/unset), (c) DECONFLICT event start/end.
#7 Build a DEDUP AGENT (no to-do/event with same exact name + due date)
Principal reframe: NOT a one-off planner dedup. Build a single-purpose Cortex-traced agent that, before any to-do/event is created, checks there is no existing one with the SAME EXACT NAME + DUE DATE. That's the real cure for the HRC-3x duplicates.
#4 Build the SEMANTIC email-draft AGENT (intent-triggered)
Principal reframe: build the AGENT that detects 'draft an email to <person>' intent on a to-do/activity by MEANING (any phrasing, not exact-match) and produces the draft. + purge discarded junk drafts.
#5 Build the CONDITIONS agent/workflow for plan-your-day
Principal reframe: build the agent/workflow that adds + manages + deconflicts CONDITIONS on the calendar within plan-your-day — not Claude doing it by hand.
Cortex fix 3/8: agent prompts = the EDITABLE Notebook prompts (one source of truth)
The system prompt an agent RUNS must be the one the Principal edits in the Notebook Prompts tab (agent_skills.system_prompt <-> GET/PUT /ops/prompts). Cortex agent-run detail shows THAT live editable prompt (not a file path, not a fabrication). Edit in Notebook -> next run uses it -> Cortex shows it.
Cortex fix 6/8: cascade chain-linking — reconstruct a whole cascade into one trace
VERIFIED on live prod: the 21:53 cascade (task_20260629_accf) shares ONE task_id with a full parent waterfall (cascade-trigger -> planner -> step/engine/outbound). cx6 works.
RESOLVED 2026-06-29: Principal killed the wedged llama-server (580); a supervisor auto-respawned a fresh one (74376); live registry confirms zachmac1-8b healthy -> 4/4. ROOT CAUSE: the supervisor only restarts on process EXIT, not on a wedged-but-listening 500 — durable fix routed to Agent 2.0 (health-checked watchdog).
Hourly 4/4 fleet eval signal + agent-calls-today (Cortex footer data)
FIXED in #1249 (dup of ask_2496cf8acd): phone grid now grid-template-columns repeat(4,1fr) — 4 across, fills+shrinks to fit, no horizontal overflow; >=520px uses auto-fill. Live after auto-deploy + a hard-refresh.
Router-chat classifier mis-routes planning/status to down brief lane
SHIPPED: 'Plan my day now' — #1235 (POST /ops/plans/today one-shot: priority to-dos + events into today's time blocks) + #1236 (one-tap apex action -> approve to calendar). Exactly the ask.
SHIPPED #1233 + VERIFIED: tz_mode defaults to floating (wall-clock kept on zone change); anchored is the opt-in that shifts like an event (kids-nap-PST). The float-as-default that was mis-handled twice is correct now.
LIVE on prod as #1222 (commit 867360d8). Ship-activity liveness + work-vs-chatter split. False 'Claude is DOWN, relaunch?' cards now require real aging build work or a recent no-ship; idle/just-shipped lanes no longer flagged.
Update Witan
agentdone2026-06-28
Capability already live — recurring time blocks follow the zone set on the apex picker (#1198). No build needed.
Real-time Claude chat on the Claude page (full project context + routes your requests); separate Witan chat tile
LIVE: Claude page = real-time Router chat (you), local/Claude badge. Slice 2 merged (#1213): the chat now also LOGS + ROUTES build requests to the owning lane + tells you. Witan assistant on its own apex tile. Full front-door done.
One page that shows where every ask stands (this)
efficiencylive2026-06-27
Live at /ops/views/asks; one-tap Asks tile on the apex (UI #5bd87bd). The Router maintains it each tick.