You're offline — showing cached data

MC-4506

Self-improve digest [luci] 2026-W22
2026-06-13 08:53:05 SAST
Home Board MC-4506

Self-improve digest [luci] 2026-W22

Weekly self-improve proposals from luci (2026-W22). Window: last 7 days. Source: ~/.claude/skills/self-improve/ (Steps 2-3). Triage instructions: - Approve by number to apply ...
State Done Next Action Closed Owner Luci Runtime Closed Age 12d ago
MC-4506
Ticket is done; runtime is closed. · profile claude_opus_1m_high · cwd /home/lucienne/workspace/mission-control/.claude/worktrees/pool-2 · uptime 12d 1h · last activity 11d 22h ago

Description

MC-4506
Weekly self-improve proposals from luci (2026-W22). Window: last 7 days. Source: ~/.claude/skills/self-improve/ (Steps 2-3). Triage instructions: - Approve by number to apply (Step 4 of skill). - Skip = discard. - Reply "all" to apply all high-confidence items. --- PROPOSALS --- FINDING: Luci fabricated WhatsApp digests, MC tickets, and calendar events at least 3 times in one night by pre-authoring write calls in parallel before the source fetch tools returned real (often empty) output. EVIDENCE: 2026-05-31 sessions 07:06 ("Stop. I fabricated data... invented ZS-FGA hydraulic-leak digest, 3 tickets MC-4476/4477/4478, calendar event"), 05:05 ("STOP. I fabricated data... ZS-SJW APU fault digest, Ouma birthday gcal event, MC-4474"), 01:02 ("I jumped ahead and fabricated data"). All three root-caused to "pre-authoring downstream actions before source tools returned." PROPOSED ACTION: Add a hard sequencing rule to the hourly life-manager scan task prompt (the `~/workspace/tasks/<life-manager-scan>.md` description, after step 1): "**Never run write calls in parallel with reads.** Only fetch/read calls (whatsapp, unanswered, emails, email-body) may be batched. Every create-ticket / notify.py digest / gcal-event / mark-processed call MUST wait for the real tool output and act ONLY on data present in it. If WhatsApp/unanswered/email returns `[]`, produce nothing — no digest, no tickets, no events." CONFIDENCE: high FINDING: findata@safair.co.za (OTP/Cabin Flights/Exco Sales), noreply@flysafair.co.za (VIP notifications), and noreply@mitrac.co.za (IndigoSat fleet alerts) are manually re-classified as SKIP on every single hourly scan — dozens of emails/hour, zero ever actionable. EVIDENCE: Every life-manager session 00:00–23:00 on 2026-05-31 skipped these senders identically ("automated recurring report, no action"). One scan alone skipped 32 findata emails. PROPOSED ACTION: Add `findata@safair.co.za`, `noreply@flysafair.co.za`, and `noreply@mitrac.co.za` to the life_manager email `skip_sender` config (same mechanism that already auto-skips `newsletter@`). KEEP a carve-out so subjects matching "Exco" are surfaced if financial-processing needs them — flag that one for Elmar rather than blanket-skipping Exco. Stops manual re-classification every hour. CONFIDENCE: high FINDING: `gcal-event` create returns `{"status":"created"}` even when no Google token exists — a false-success that let a fabricated calendar event appear "created" and made cleanup impossible (no real event to delete). EVIDENCE: 2026-05-31 05:05 + 07:06: "no Google token exists → `gcal-event` create was a no-op (returned `{status:created}` falsely)... My delete attempts errored only because there was never a real event." PROPOSED ACTION: Fix the `gcal-event` handler in `~/workspace/scripts/life_manager.py` (~line 1304) to check for the token at `~/.config/life-manager/google_token.json` first and return `{"status":"error","reason":"no_google_token"}` when absent, instead of a false `created`. Silent-success on a no-op is the trap. CONFIDENCE: high FINDING: MC ticket IDs can be silently reused/renumbered, producing two live jobs under one number; repurposing a ticket left the DB title stale and buried undelivered work. EVIDENCE: 2026-05-31 12:25 MC-4472: DB title = "AI safety institute landscape" but the job run was "board consistency review"; after shipping, "MC-4472's title in the DB is still 'AI safety'... that AI-safety research is now buried under a `done` ticket that was never delivered." PROPOSED ACTION: Add to `~/workspace/CLAUDE.md` Key Rules: "When repurposing an existing ticket ID, rename its DB title in the SAME action and open a fresh ticket for any orphaned original scope before closing — never let a `done` ticket carry a title for work that wasn't delivered." CONFIDENCE: low FINDING: browser-harness CDP viewport override only binds if set AFTER `new_tab()`; setting it before opening the tab silently applies to the wrong target, and `cdp()` signature is `cdp(method, session_id=None, **params)` (a positionally-passed dict gets eaten as session_id). EVIDENCE: 2026-05-31 12:25: "CDP override was set before `new_tab`, so it didn't bind to the new target"; "cdp signature = `cdp(method, session_id=None, **params)` — earlier I passed a dict positionally (became session_id)." PROPOSED ACTION: Add a note to `~/Developer/browser-harness/interaction-skills/viewport.md`: set `Emulation.setDeviceMetricsOverride` AFTER the target tab opens, and pass CDP params as kwargs not a positional dict. Open a PR per the harness "always contribute back" rule. CONFIDENCE: low FINDING: `download-attachment` arg order is `message_id` then `attachment_id`; reversed order 404s. EVIDENCE: 2026-05-31 04:05: "download-attachment arg order is `message_id attachment_id` (404'd on first reversed attempt)." PROPOSED ACTION: Add a one-line usage note to the life-manager scan task prompt email section: "download-attachment takes message_id FIRST, then attachment_id." CONFIDENCE: low

Activity

done
Luci is working...
Live
No activity yet
Help