diff --git a/.gitignore b/.gitignore index 605784a3..6cffd7da 100644 --- a/.gitignore +++ b/.gitignore @@ -118,6 +118,11 @@ README_ORIGINAL_DISABLED.md readme_history/ src/aipass/trigger/trigger_data.lock +# STATUS files — auto-generated, contain developer session data. +# Gitignored until prax sync is fixed to produce clean public output (#298). +STATUS.md +STATUS.local.md + # Private integrations — driver layer (@api) and wrapper layer (all branches) # Per DPLAN-0133. Contents are gitignored; only the scaffold README.md is tracked. # Drop project-specific code into src/aipass/{branch}/apps/integrations/{project}/ diff --git a/README.md b/README.md index a31b7d4e..ae0fb7b7 100644 --- a/README.md +++ b/README.md @@ -242,7 +242,7 @@ For detailed session history, see [HERALD.md](HERALD.md). - At least one AI CLI: Claude Code (recommended), Codex, or Gemini CLI - `sudo` access (for global CLI symlinks) - API keys optional (OpenRouter/OpenAI — for optional add-on agents) -- **Platforms:** Linux (fully tested), macOS (untested, should work), Windows via WSL2 +- **Platforms:** Linux (tested, primary dev environment), macOS (untested), Windows (native testing in progress — see [open issues](https://github.com/AIOSAI/AIPass/issues?q=is%3Aissue+is%3Aopen+Windows)) --- diff --git a/STATUS.md b/STATUS.md deleted file mode 100644 index e978560a..00000000 --- a/STATUS.md +++ /dev/null @@ -1,946 +0,0 @@ -# AIPass — System Status - -> Auto-generated by `drone @prax status sync`. Do not edit manually. - -**Last sync:** 2026-04-15 -**Summary:** 8 operational | 0 in-progress | 0 not started - ---- - -
@ai_mail — Operational (2026-04-07 (session 30)) - -# @ai_mail - -> Inter-branch email, dispatch, wake, bounce - -**State:** Operational -**Last update:** 2026-04-07 (session 30) - -## Milestones -- Send/receive/reply/close lifecycle -- Dispatch+wake pattern (combined `dispatch` command) -- Sender identity fix (AIPASS_BRANCH_NAME env var) -- email.py split (840 to 420 lines) -- notify-send to dbus notifications -- mailbox_path bug fixed (relative→absolute in get_user_by_email, get_all_users) -- Health audit: 7 dead handlers archived, branch cleaned -- Venv PATH guarantee in dispatch (wake.py + dispatch_monitor.py) -- Phase 1 dispatch safety net: JSONL-based startup timeout (90s), auto-retry (3 strikes), notification naming -- 100% module test coverage: 322 tests, 16 test files - -## Command Status (audited 2026-04-07) -| Command | Status | -|---------|--------| -| `--help` | works | -| `inbox` | works | -| `view ` | works | -| `reply "msg"` | works | -| `close ` | works | -| `close all` | works | -| `sent` | works | -| `contacts` | works | -| `email @target "Subj" "Body"` | works | -| `dispatch @target "Subj" "Body"` | works | -| `dispatch wake @target` | works | -| `ping status` | exit 0, no visible output (partial) | -| `ping ping` | exit 0, no visible output (partial) | -| `ping thresholds` | exit 0, no visible output (partial) | - -## Seedgo Audit (2026-04-07) -- **Overall: 99%** -- 32/35 standards at 100% -- Error_Handling: 96% — dispatch_monitor.py line 124 silent failure -- Silent_Catch: 97% — dispatch_monitor.py 5 silent catches (lines 101, 125, 127 + 2 more, from JSONL helpers) -- 54/101 public functions tested (53% function coverage, 100% module coverage) - -## Current Work -- DPLAN-0091 Phase 2 (JSONL pre-validation in wake.py) pending -- ping commands need Rich console output investigation (works in branch, silent via drone) - -## Known Issues -- Registry shows 6 pytest test branches with /tmp paths (test pollution) -- ping commands produce no visible output via drone (Rich console likely suppressed in subprocess) -- dispatch combined command BRANCH DETECTION FAILED when AIPASS_CALLER_BRANCH not set (known identity tension, low severity, dispatch succeeds via wake step) -- dispatch_monitor.py has 5 silent catches flagged by seedgo (JSONL helper OSError catches) - -## Architecture Notes -- trigger branch owns error_detected events; ai_mail provides delivery only -- extensions/, plugins/, json_templates/, json/ shim, persistence/ = repeatable skeleton (don't archive) -- Dead code was inherited from DevPass migration, not accumulated in AIPass -- .seedgo/bypass.json: email.py bypassed for introspection, json_handler bypassed for json_structure -- Startup check monitors JSONL session files at ~/.claude/projects/{encoded-cwd}/*.jsonl (not stdout, which is buffered by --output-format json) -- .ai_mail/ at repo root is a stray dir created by @memory branch (should be .ai_central/) - -
- -
@api — Operational | **Seedgo:** 99% (32/33 at 100%) | **Tests:** 290 pass, 65/65 functions (2026-04-10) - -# @api - -> Centralized external API gateway — authenticated service clients for all external APIs - -**State:** Operational | **Seedgo:** 99% (32/33 at 100%) | **Tests:** 290 pass, 65/65 functions -**Last update:** 2026-04-10 - -## Milestones -- OpenRouter client (get_response, models, test) -- Key management from ~/.secrets/aipass/ -- Google provider module (Drive, Calendar, any Google API) -- Seedgo compliance: 100% across all 33 categories -- Test coverage: 100% — all 64 public functions tested - -## Current Work -- Backup migration to use our Google module (pending backup) - -## Known Issues -- Seedgo Architecture 99% — missing CLAUDE.md from builder template (pre-existing, not a real gap) -- Seedgo introspection standard doesn't account for standalone commands (workaround in place) - -## Command Audit (2026-04-07) - -| Command | Status | Notes | -|---|---|---| -| `--help` | OK | Shows all 15 commands | -| `--version` | OK | v1.0.0 | -| (no args) | OK | Introspection shows 4 modules | -| `get-key` | OK | Retrieves masked key | -| `validate` | OK | Key valid | -| `validate google` | OK | Creds valid | -| `reauth google` | skipped | Would trigger real OAuth flow | -| `test` | OK | 352 models found | -| `models` | OK | 352 models, table format | -| `status` | OK | Key, SDK, cache info | -| `call` (no args) | OK | Proper error message | -| `list-providers` | OK | openai, openrouter | -| `init` | OK | Detects existing .env | -| `track` (no args) | OK | Proper error message | -| `stats` | OK | No data (expected) | -| `session` | OK | No data (expected) | -| `caller-usage` (no args) | OK | Proper error message | -| `cleanup` | OK | Now handles empty state gracefully | - -## Recent (Session 20, 2026-04-10) -- S84 dispatch from @devpulse — 3 CRITICAL security fixes + 3 BUG fixes -- CRITICAL: get_cache_stats() no longer exposes raw API keys -- CRITICAL: .env and google_creds.json now created with 0o600 permissions -- BUG: Validation rules aligned, cleanup return type fixed, stats/session differentiated -- 290/290 tests, seedgo 99%, no type errors - -
- -
@cli — Operational (2026-04-11) - -# @cli - -> Display service, Rich formatting for all branches - -**State:** Operational -**Last update:** 2026-04-11 -**Seedgo:** 100% (all standards green, 161 tests) - -## Branch State Audit (2026-04-07) - -### Command Status — ALL operational -| Command | Status | -|---------|--------| -| `drone @cli --help` | Works | -| `drone @cli` (introspection) | Works — shows 1 command module + 2 services | -| `drone @cli --version` | Works — v2.0.0 | -| `drone @cli aipass` | Works — shows subcommand table | -| `drone @cli aipass init /path Name` | Works — creates 12 items | -| `drone @cli aipass init agent ` | Works — routes to spawn | -| `drone @cli aipass init --help` | Works — Rich-formatted help | -| `drone @cli display` | Works — shows function list | -| `drone @cli display demo` | Works — full showcase | -| `drone @cli templates` | Works — shows function list | -| `drone @cli templates demo` | Works — full showcase | -| `python -m aipass.cli --help` | Works — standalone entry | - -### Architecture Reality -- **3 modules:** display.py, templates.py, init_project.py — all operational -- **2 handlers:** init/bootstrap.py (pure Python), json/json_handler.py — both operational -- **1 empty handler:** handlers/templates/ — placeholder from scaffold, never used -- **.archive/:** extensions/, json_templates/ — archived stubs, not active -- **Extra dirs:** artifacts/, docs/, docs.local/, templates/, tools/ — exist but not in architecture tree - -### Tests -- 161 tests, 6 files, 5/5 modules covered, all passing -- Seedgo Test_Quality: 100% - -### No APLAN -- No .plans/ directory exists. No active architecture plan. - -## Milestones -- Console singleton -- Header/success/error/warning/fatal formatters -- Shared across all branches -- `aipass init` project bootstrap command -- 100% seedgo compliance -- 138 unit tests (100% module coverage) - -## Current Work -- S31: DPLAN-0121 (AIPASS_HOME auto-setup + external mailbox) + local prompt hook (5eb695d7). 161 tests. - -## Known Issues -- None. All commands operational, all tests passing, seedgo 100%. - -
- -
@devpulse — Operational (2026-04-14 (S92 18:20)) - -# @devpulse - -> Orchestration hub — coordinates via dispatch + agents. Feedback channel live. - -**State:** Operational -**Last update:** 2026-04-14 (S92 18:20) - -## Current State - -- **11 core agents** (split from 15 — backup, daemon, commons, skills moved to standalone projects; api reinstated as infrastructure) -- **90 sessions** of development -- **230+ PRs** merged (PR #254 created S90) -- **3,500+ tests** across core agents (1,162 verified S90) -- **Feedback channel:** Cross-project communication bridge (DPLAN-0117, 101 tests) -- **Watchdog module:** Directed wake system live. `drone @devpulse watchdog {agent,timer,schedule,status,cancel,list}`. 130 tests, seedgo 92%. FPLAN-0186 complete. Bash one-liner replaced. -- **PyPI:** `pip install aipass` works (v2.0.0) -- **Vera Studio:** standalone promotion project — 4 bug reports received via feedback -- **Goldfish panel:** 7-round multi-model README review (Claude + Codex + Gemini) - -## Active Work - -- **S90 In Progress:** SYSTEM HEALTH + CROSS-PROJECT COMPLETION. Dispatch -c -p bug found (Claude Code v2.1.90-100, fixed v2.1.101, DPLAN-0122). AIPASS_HOME added to .bashrc + settings.json. Vera 4 bug reports via feedback (ai_mail registry hardcode, export issue, registry ID mismatch, local prompt hook). CLI built AIPASS_HOME auto-detect + project mailbox (DPLAN-0121 P1+2). Drone JSON KeyboardInterrupt fix. Prax monitor refactored (introspection extracted). Test isolation fixes (AIPASS_HOME leaking). PR #254. DPLAN-0123 system health tracker. ai_mail dispatched for bidirectional email (Phase 3). Prax re-dispatched for Ctrl+C fix. -- **S89 Complete:** FULL EXTERNAL ACCESS + FEEDBACK BRIDGE. Dual registry (AIPASS_HOME), global prompt template rewrite (7→expanded with dispatch+dplan+feedback), UX warnings when AIPASS_HOME not set, idempotent init update (diff check), feedback channel built (DPLAN-0117/FPLAN-0173, 101 tests, cross-project sender detection). 8 dispatches to drone/cli/seedgo/flow. Global prompt: "ask before spelunking" rule + feedback section added. -- **S88 Complete:** AIPL Phase 1 complete. Style guide + 6 examples. Polyglot wired. DPLAN-0115. Global prompt: no manual plan files. -- **S86 Complete:** 6-HOUR AUTONOMOUS SESSION (DPLAN-0111). 41 dispatches. 15 PRs (#233-247). 11 CRITICALs + 35+ BUGs + 25+ quality fixes. DPLAN-0112 COMPLETE. Seedgo 22-23/33 at 100%. APLAN 42→7. decisions.md #029+#030. -- **S85 Complete:** TRIGGER SELF-HEALING LIVE. Git divergence fixed (merge not reset). Drone git fix/sync upgraded (PR #229). OSS Health badge (PR #230). 13 stale plans closed (28→15). Trigger Medic v2 fixed: log_watcher dedup, count gate removed, wake_branch() wired. Full autonomous error cycle proven. -- **S84 Complete:** Watchdog fixed. Night shift: 4 DPLANs (0107-0110), 10 branches dispatched, PRs #214-226. API key incident. 28 stale branches purged. -- **Hook-sounds plugin:** Built by drone, wired to sound scripts. `drone hook-sounds off/on`. -- **DPLAN-0106:** Watchdog v2 — SUPERSEDED by DPLAN-0130 + FPLAN-0186 (shipped S92). -- **DPLAN-0119:** Auto-watchdog hook — CLOSED in FPLAN-0186 Phase 1 (replaced by watchdog module). -- **DPLAN-0105:** Promotion prep — Vera owns execution. -- **DPLAN-0099:** README value prop — Vera owns future changes. - -## Recent Milestones - -- S82: Core 10 split decided + executed. 6 agents verified zero deps. README/Herald/prompts updated. Spawn CWD-aware sync-registry. Sandbox + vision docs updated. -- S81: TDPLAN-0002 complete. Init creates 10 items with real content. Spawn routing fixed. Watchdog daemon mode. README Quick Start rewritten. Vera Studio initiated. -- S80: FPLAN-0165 (README 366→279). Goldfish R5-7. 14-branch simultaneous audit. CLI init bug fixed. Watchdog statusline indicator. PRs #202-207. -- S79: README overhaul with 4 Goldfish rounds. PyPI published. Security blocked across 3 CLIs. - -## Known Issues - -- **Watchdog module:** FPLAN-0186 shipped S92 (agent + timer + schedule + registry). Known issue: `drone @devpulse watchdog agent ` clipped at 30s by drone CLI wrapper — workaround is direct `python3 apps/devpulse.py watchdog agent ` call. Watchdog's own --timeout flag governs the real wait. -- **Wake protection:** Any branch can manually wake devpulse. Medic only blocks auto-dispatch. Needs blocklist in wake.py. -- **Hook inbox notification:** Cosmetic only — watchdog handles real waking. -- **Hooks:** Don't work from external projects. Hooks reference AIPass-specific scripts. -- **backup:** Directory confirmed gone from disk S87. Registry cleaned S86. -- **Memory rollover:** At limit (20/20 sessions, 25/25 learnings). Auto-archives on next write. -- **inotify limits:** System-wide exhaustion when many agents run simultaneously. Cosmetic warning. - -## Notepad (Agent) - -### S92 (2026-04-14 ~18:20 PT) — FPLAN-0186 watchdog module MASTER COMPLETE - -**All 5 phases shipped. Plan closed.** - -- **Files:** `apps/modules/watchdog.py` + `apps/handlers/watchdog/{agent,timer,schedule,registry,__init__}.py` + 5 test files -- **Tests:** 130 passed, 3 skipped, 0 failed (Phase 1→4 baseline 122 → 130) -- **Seedgo:** 88% baseline → 92% final (held through Phase 4 and Phase 5). 11 bypass entries all justified inline (encapsulation + json_structure manager-branch gaps) -- **Agent completion signal:** ai_mail dispatch lock file polling. Monitor deletes `.ai_mail.local/.dispatch.lock` on exit (success or crash); `last_bounce.json` distinguishes. Zero upstream changes needed. -- **Bash one-liner GONE** from `.aipass/aipass_local_prompt.md` — replaced with `drone @devpulse watchdog agent @target` -- **Smoke test:** 13/13 steps PASS — `artifacts/reports/watchdog_smoke_test.md` -- **Plans closed:** DPLAN-0119 (Phase 1), DPLAN-0106 superseded by DPLAN-0130, FPLAN-0186 closed via `drone @flow close` -- **Known issue:** drone CLI 30s wrapper timeout clips long agent watches. Workaround is direct python call. Not a watchdog bug. Worth lifting in a future drone fix. - -### S92 (2026-04-14 ~14:08 PT) — DPLAN-0128 complete, working on private memory project - -**DPLAN-0128 execution DONE — reformat is live.** - -- T1 @cli: 27 PASS, 2 FAIL. Removed `drone @flow info ` and `drone @memory archive` from reformat. -- T2 @spawn: terminology PASS. Reformat's agent=citizen framing is more consistent with spawn code than the old live prompt was. -- T4 Anthropic source read: MISMATCH. AIPL format is ORIGINAL AIPass convention, NOT copied from Claude Code. Report: `.trinity/night_shift_reports/aipl_format_provenance.md` -- T5 @seedgo: recommended prompt note + reference doc, NOT a 34th standard. Unenforceable soft rules. -- T6 @prax: sync mechanism fully wired (pr_created/pr_merged → pr_status_sync.py). Softened wording: "PR commit"→"PR create/merge", "11 branches"→"all registered branches", "Herald reads it"→"Herald documents it". -- T3 skill files split: PR #272 — /memo user-scope only (removed from repo), /prep shipped via `aipass init` template in bootstrap.py `_prep_md()`. Init test passed. -- T7: stale `agent-aa2b7d43` worktree removed. -- T8: reformat promoted to live `.aipass/aipass_global_prompt.md` + new `.aipass/PROMPT_STYLE.md` reference doc + one-line style comment. PR #273. - -**PRs awaiting merge**: #272, #273 (both scoop the S91 night shift backlog of 6 commits — known drone @git system-pr behavior). Plus S91's #265-#271 still open. - -### S92 (2026-04-14 ~14:08 PT) — Private memory project autonomous work while user AFK - -**User said**: "lets park this off. work on your private memory project. no need to stop im outside working on my rv. ill be in and out all day" - - -- **Phase 1** scaffold + ROOMS_ENABLED flag (default False, v1 untouched) -- **Phase 2** BERTopic clustering → 12 real clusters on 133 live fragments, persisted to `.chroma/rooms_map.json` -- **Phase 3** cluster-aware rerank via `room_aware_query()` with majority-vote target room picking. Smoke test: "verify claims" query correctly boosted verification observations to ranks 2+3 while preserving top anchor -- **Phase 4** `RoomStrategy` protocol + `prior_plan_decisions` hand-authored strategy (filter kind=decision, recency boost, source-branch text-match boost) + strategy registry -- **Phase 5** `consult()` advisor entrypoint — single call handles both paths (cluster_aware + strategy), contract locked, placeholder `suggested_question_for_user` per rule table ("mixed signal" / "tight consensus" annotations), state echoed for Phase 7 to consume -- **Phase 6** `ProjectState` dataclass + `birth_watcher` scaffold (diff new/gone/resized clusters vs baseline, 20% threshold). SCAFFOLD ONLY — no auto-notification, no LLM, no background job - -**Live end-to-end commands** when `ROOMS_ENABLED=True` in the project: -`status | discover | list | peek | query "..." | strategies | strategy "..." | consult "..." --strategy X --state-energy N --state-pressure N | births | births --save-baseline` - -**Metrics**: 201 tests green (started Phase 1 at 122), ~5,300 LOC across handlers+modules+tests, 0 v1 file mutations, 0 Chroma collection mutations, 0 commits. - -**DPLAN-0129** (architecture research) and **FPLAN-0185** (master plan, 6 phases) both live in the private project repo, uncommitted. - -- Runtime unblocked: created dedicated `~/Projects//.venv` with chromadb 1.5.5 + sentence-transformers 5.3.0. -- Fixed `navigator/__init__.py` missing. Bypass entries added for seedgo `__init__.py` false positives. Emailed @seedgo friction note. -- First real query ran and surfaced decision_006 ("branches self-report optimistically") + obs_s60_verification_agents — the exact prior art DPLAN-0128 was defending against. **Rule #033 closed** — the project is being used, not just built. Next time: query first, plan second. -- S92 decisions #034-#036 ingested. Collection now 133 fragments. -- Invocation form: the private project invocation form. Bare script invocation fails with path issue — not urgent to fix. - -- `navigator/__init__.py` (new — package marker) -- `navigator/.seedgo/bypass.json` (modified — 2 new bypass entries) -- `navigator/.trinity/local.json` (modified — S4 session) -- `navigator/STATUS.local.md` (updated — gitignored anyway) - -### Friction notes - -- **watchdog inotify limit (low priority)**: S93 afternoon, `python3 apps/devpulse.py watchdog agent @api` logged `inotify instance limit reached, continuing without file watcher: [Errno 24] inotify instance limit reached`. Watchdog gracefully fell back to PID polling (no functional impact), but the limit hit suggests the system has accumulated lots of file watchers (likely from Claude Code/other dev tools). Worth investigating if this starts blocking something — for now it's a noisy warning, not a failure. Check `cat /proc/sys/fs/inotify/max_user_instances` and `lsof | grep inotify | wc -l` when revisiting. - -### S92 (2026-04-14 ~12:45 PT) — PRE-COMPACT, system prompt reformat work in flight - -**Not shipped, verification-pending**: -- `/home/patrick/Projects/AIPass/.aipass/aipass_global_prompt.reformat.md` — draft reformat of AIPass's global system prompt in AIPL/Anthropic Claude Code style. Gitignored, not tracked. Original `.aipass/aipass_global_prompt.md` untouched. -- Multiple correction rounds applied this morning (terminology, memory roles, TDPLAN, librarian philosophy, sections removed). See DPLAN-0128 Context section for full history. - -**DPLAN-0128 is the execution plan** — 8 tracks, verification-first, designed to survive /compact. Post-compact session reads DPLAN-0128 first, then the two prompt files, then executes Tracks 1-6 serially (one branch/agent at a time), and ONLY promotes the reformat (Track 8) if all critical claims pass. Critical claims: TDPLAN command exists, no invalid commands in reformat, STATUS.local.md central sync is real. - -**Skill integration gaps to confirm**: -- `/prep` at `~/.claude/commands/prep.md` — Section 1 "Memories" lists local.json, observations.json, passport.json — does NOT include STATUS.local.md in the main update list -- `/memo` at `~/.claude/commands/memo.md` — STATUS.local.md is in "If Relevant" section, weak framing -- Proposed edits drafted verbally but not applied. DPLAN-0128 Track 3 verifies claim + applies fixes post-compact. - -**AIPL format standard question**: -- AIPL format is Anthropic-sourced per the user (unconfirmed) -- Decision: seedgo standard / prompt note / both — DPLAN-0128 Track 5 asks @seedgo to recommend - -**Gavin reply posted**: https://github.com/AIOSAI/AIPass/issues/261#issuecomment-4245709624 — done this morning. - -**Stale worktree flagged**: `/home/patrick/Projects/AIPass/.claude/worktrees/agent-aa2b7d43` on branch `fix/wake-claude-path-resolution` (PR #268) — leftover from last night's Track E. Cleanup in DPLAN-0128 Track 7 if safe, else manual. - -**S91 follow-ups still open**: -- PRs #265-#270 await merge (user reviews in their own time) -- Track G (AIPL log leak) still blocked — prax ghosted last night, needs firm retry -- PR #269 category-d flags (code-level /home/patrick/ paths in symbolic.py, branch_detector.py docstrings, .claude/settings.json deny rules, ai_mail docstrings) -- 2% usage finding to confirm (S91 night shift burned less than expected) - -**Next steps**: /compact (the user does this) → post-compact session reads DPLAN-0128 → executes. - -### S91 (2026-04-14 ~05:00 Pacific) — NIGHT SHIFT COMPLETE - -**6 PRs shipped tonight** — all awaiting AIPass Developer review: -- **#265** — devpulse docs restructure (README 209→35 lines + new SETUP.md with Linux/Mac/Windows/WSL/uninstall/troubleshooting) -- **#266** — drone three bugs fix (`system-pr` git add -A, STATUS.md sync before commit, Rich help table + bonus encapsulation fix) -- **#267** — Windows compat for issue #261 (bootstrap.py pathlib traversal, setup.sh OS detection, new cross-platform setup.py) -- **#268** — wake PATH isolation fix (bare `claude` → absolute path via shutil.which + ~/.local/bin PATH prepend) -- **#269** — personal-name scrub (11 files, 14+/14-, flagged category-d code paths for manual review) - -**Research reports in `.trinity/night_shift_reports/`** — morning reading: -- `anthropic_peak_hours.md` — peak hours are 5 AM–11 AM Pacific (AIPass Developer's intuition was inverted) -- `repo_etiquette.md` — top gaps: SECURITY.md (urgent), CHANGELOG.md, root-level INSTALLATION.md -- `local_llm_research.md` — hybrid recommendation: Qwen 2.5 3B Q4 Ollama local + Llama 3.3 70B / DeepSeek R1 OpenRouter free -- `watchdog_design.md` — full design for future hooks session (Options A-D insufficient, Option E requires hooks) - -**Gavin reply draft**: `/tmp/gavin_reply_261.md` — ready for AIPass Developer review/approval/posting - -**Track G blocked**: @prax ghosted the AIPL log leak dispatch (exited code=0 after 722s but no PR, no reply). Same pattern as S90 `prax_needs_firm_prompts` learning. Retry in morning with MANDATORY framing. - -**Time log**: `.trinity/time_log.jsonl` — 24 entries, 12 complete, 189.5 min tracked. First temporal data point. - -**Anthropic peak hours reality**: I finished the night shift inside the off-peak window. Peak starts at 5 AM Pacific and runs until 11 AM. The "cross 5 AM" theory was backwards but the net effect was right — I paced serial and finished before 5 AM anyway. - -**Total runtime**: ~2h50m of session wall-clock, ~3h09m of tracked task time (overlap from watchdog waits). - -**Session cost estimate**: 6 branch dispatches + 5 sub-agent spawns + manual work. Within off-peak doubled-limit promotion, so cheap. - -**NEEDS AIPASS DEVELOPER ATTENTION**: -1. Review and merge PRs #265-270 (in order — #266 drone fix unblocks future `system-pr` usage) -2. Review Gavin reply draft, approve and post to issue #261 -3. Read the 5 research docs in `.trinity/night_shift_reports/` -4. Retry Track G (AIPL log leak) — prax needs firm framing -5. Manually review category-d code path flags from PR #269 (symbolic.py priority_dirs, branch_detector.py docstrings, .claude/settings.json deny rules, ai_mail docstrings blocked by pre-existing seedgo) -6. Consider landing the hooks session soon — unblocks watchdog-as-code (Track H) + audio hook cleanup - -### S91 (2026-04-14 early AM) — Issue #261 triage + cleanup + night shift planning - -**Status at /prep** (02:15 AM, going into autonomous night shift): - -- **3 PRs created**: #262 (cleanup + scrub + epigraph + gitignore), #263 (S90 stragglers drone system-pr missed), #264 (STATUS.md auto-sync refresh) — all need AIPass Developer merge. -- **`.claude/CLAUDE.md`**: Patrick scrub complete (3 lines). Only private global `~/.claude/CLAUDE.md` retains the name. -- **`README.md`**: memory/presence epigraph added near line 40 with `— AIPass` attribution. -- **`trigger_data.lock`**: explained (fcntl process lock from log_watcher_service PID 1622), gitignored with pattern `src/aipass/trigger/*.lock`. -- **`unknown_branch/`**: confirmed AIPL polyglot log leak. Tracked as Track G of DPLAN-0125. -- **Issue #261 (Gavin Rooney, Windows 10)**: triaged. 3 real bugs (setup.sh symlink, bootstrap.py bash loop, audio hooks). Stale-clone artifacts (old .claude/settings.json `/home/patrick` paths removed April 5). Non-bugs (AIPASS_REGISTRY.json gitignored, passports not tracked). Reply draft pending (FPLAN-0183 Step 1). -- **Feedback channel tests**: grep showed 0 module-level test defs — needs verification morning, may be class-based. - -**Plans built**: -- **DPLAN-0125** — S91 Night Shift master plan. 10 tracks, SERIAL execution strategy, cross-5AM pacing theory. -- **DPLAN-0126** — Future research: local LLM + OpenRouter free tier (split from 0125 as future-ideas bucket). -- **FPLAN-0183** — Step-by-step execution script. Post-compact survival. 12 numbered steps + pre-flight. This is what I follow when I wake up. - -**Autonomous night shift directive from the AIPass Developer**: GO. Serial execution, deliberate slow pacing, cross 5 AM peak-hours cutoff, do not touch `.claude/hooks/*`, do not merge PRs, log time per track to `.trinity/time_log.jsonl`, keep going until usage cap or dawn. - -**Known bugs that will bite during execution**: -1. `drone @git system-pr` doesn't stage untracked files — stage manually with `git add` before running it -2. `drone @git system-pr` leaves STATUS.md dirty after every run — known, accept it, do NOT chase the loop -3. Wake command may not work (S90 flag — Track E investigates) - -**Loose ends at /prep**: -- STATUS.md still modified (drone bug, documented, ignored) -- trigger log_watcher_service running (PID 1622, healthy, leave it) -- No background agents running, no open watchdogs at /prep time -- Next action after compact: Step 0.5 of FPLAN-0183 (Anthropic peak hours WebSearch) → Step 1 (Gavin reply draft) → onward - -**The AIPass Developer is asleep. Work alone. Stay steady.** - -### S90 (2026-04-11 evening) — System health + cross-project completion -- **Dispatch -c -p bug:** Claude Code v2.1.90-100 broke headless resume. Fixed v2.1.101. DPLAN-0122 (closed). -- **AIPASS_HOME:** Added to .bashrc (export) + ~/.claude/settings.json env. CLI auto-detects via importlib. -- **Vera 4 bugs via feedback:** All resolved. Registry hardcode (PR #255), export (manual), registry ID (spawn already built), local prompt hook (PR #257). -- **5 PRs:** #254 (drone JSON+cli init+test isolation), #255 (ai_mail bidirectional), #256 (prax cleanup), #257 (local prompt hook), #258 (prax Ctrl+C+labels) -- **Prax finally delivered:** Ctrl+C clean exit, UNKNOWN→AIPL/POLYGLOT labels, AI_MAIL→AI_MAIL label fix. Took 4 dispatches. -- **Contacts system built:** identity.json + contacts.json + auto-registration. PR #259. -- **Cross-project email WORKING:** Vera→@strategy tested live in tmux. Two fixes: sender detection (drone router_handler) + target resolution (ai_mail delivery.py loads caller registry). PR #260. -- **15+ dispatches:** ai_mail x4, prax x4, drone x1, cli x2, spawn x1, flow x1, + sub-agents -- **PRs #249-260 all need merge** (Patrick reviews in his own time) -- **Wake broken:** dispatch wake not working at end of S90. Investigate S91. -- **NEEDS PATRICK:** Merge PRs #249-260 - -### S89 (2026-04-11 afternoon) — Full external access + feedback bridge -- AIPASS_HOME dual registry: drone loads both local + AIPass registries simultaneously -- Global prompt template rewrite: 3→7 sections, all command variants (dplan/aplan/master, dispatch, feedback) -- UX warnings: drone systems hints + BranchNotFoundError guidance when AIPASS_HOME not set -- `aipass init update` idempotent: content diff before write, "Already current" for unchanged files (8 new CLI tests) -- Feedback channel (DPLAN-0117/FPLAN-0173): cross-project communication bridge - - 4 handler files + 1 module, 101 tests passing - - Sender auto-detected via AIPASS_CALLER_BRANCH env var - - Reply path stored per-message for cross-project delivery - - Fixed devpulse.py module discovery (full package import path) - - Fixed pytest.ini inline comments bug (seedgo confirmed: isolated to devpulse, no standard exists) -- Global prompt: "ask before spelunking" rule + feedback section added -- Learning: dispatch the question to branches instead of reading 4-5 unfamiliar files - -### S88 (2026-04-11 morning) — AIPL Phase 1 + global prompt fix -- AIPL Phase 1 COMPLETE: docs/style_guide.md (7 rules, symbols, content types, anti-patterns, decode protocol, quick reference) -- 6 before/after examples: session_log, observation, email, status_update, plan, delta_update (54-69% savings) -- Polyglot agent wired: local prompt filled, CLAUDE.md updated with AIPL context -- DPLAN-0115 created via flow (replaced manual DPLAN-001 — wrong numbering) -- Global prompt: "Never create plan files manually" rule added -- Learning: external AIPass projects still use AIPass tooling (flow, seedgo) — don't bypass - -### S87 (2026-04-11 morning) — Model choice + AIPL + init update -- dispatch --model flag: sonnet default, all 3 tiers tested (sonnet/haiku/opus confirmed in process args) -- Apr 4 usage policy change discovered — sub-agent compute metered more aggressively -- DPLAN-0114: aipass init update (5 phases). cli+spawn+drone dispatched, all replied. Registry fix, hook fixes, source headers ready. -- Patrick-Personal deny rules added to AIPass settings -- Vera Studio S3 reviewed — registry mismatch, missing hooks, 5 gaps documented in DPLAN-0114 -- AIPL PROJECT LAUNCHED: ~/Projects/AIPL/. 72K research transferred. DPLAN-001 written. Caveman analyzed (neighbor, not parent). Build from scratch, hand to Polyglot when ready. -- PRs #231-248 ALL MERGED (Patrick merged #247 for S86 stack, #248 for S87) -- Trigger cleaned up after PC shutdown (stale lock removed, log_watcher auto-restarted, processed 2 pending emails) -- **NEEDS PATRICK:** Wake protection — any branch can manually wake devpulse -- **NEEDS PATRICK:** CLAUDE.md template gap — spawn template has it, no branch does - - -### S86 (2026-04-10 afternoon) — Autonomous session -- 41 dispatches, 15 PRs (#233-247), DPLAN-0112 complete -- Devpulse APLAN: 42→7 open items -- decisions.md: #029 (dispatch patterns) + #030 (fixes→architecture in one session) - -### S85 (2026-04-10 morning) -- TRIGGER SELF-HEALING PROVEN: Full autonomous error cycle — detect → dispatch → wake → fix → report -- Fixes to trigger: (1) log_watcher dedup blocking count increment, (2) report_error() count==2 gate, (3) wake_branch() after email delivery -- Drone git fix/sync upgraded to merge on divergence instead of rebase (PR #229) -- OSS Health badge: 364 commits, 2.8h pace, 1 month old (PR #230) -- 13 stale plans closed (28→15 open) -- Old Dev-Pass trigger studied at /media/patrick/EXTERNAL/Dev-Pass/aipass_core/trigger/ -- Key learning: old system had no count threshold (noisy), new system's threshold was right but gate logic was wrong -- TODO: Watchdog needs error handling (log failures so trigger catches them) -- TODO: Add prax logger catch-all to all branch entry points (unhandled exceptions bypass logs) -- TODO: Properly develop watchdog v2 (leave duct tape running for a week first) -- Never reset HEAD — merge only. SATA=/mnt/sata (old OS), EXTERNAL=/media/patrick/EXTERNAL (Dev-Pass) - -### S83 (2026-04-09 evening) -- 22 Opus adversarial audit agents: 350+ findings across all 11 branches -- 11 CRITICALs: prax thread safety, flow FPLAN-only (x3), cli .gitignore, cli cd path, ai_mail locking (x2), api key exposure, api permissions, trigger no atomic writes, memory path bugs, memory security violation -- All 11 APLANs updated by builder agents. Health: 2 RED (memory, devpulse), 9 YELLOW -- Memory doesn't use api branch — raw urllib to OpenRouter, bypasses api entirely -- Hook-sounds plugin built by drone (14 tests). Sound scripts wired. -- Test count reality: ~3,501 not 4,900+ (split branches took their tests) -- PR count reality: ~179 not 192+ -- PR #211 created with all S83 work -- Wave 3 complete: 170+ new findings, all written directly to APLANs by agents -- API is NOT on public repo — local/private only. Docs need correcting (say 10 public + api local) -- PR #211 (Wave 1 + hook-sounds) and PR #212 (Wave 3 APLAN updates) both shipped -- Next: fix CRITICALs via branch dispatches, correct api count in public docs - -### S82 (2026-04-09) -- Core split: daemon/commons/skills moved. API reinstated (LLM access layer). Backup pending move. -- All 9 agents dispatched for split fallout testing — replies received, not fully reviewed. -- Flow/spawn/memory dispatched for .backup/ redirect — replies received. -- README + Herald + global/local prompts all updated to "11 agents". -- Patrick's direction: focus on core 11, use the system for real projects, Vera handles promotion. - -## Notepad (User) -- Study Anthropic prompt layout. -- Review builder agent (~/.claude/agents/builder.md) — should it default to sonnet? Should seedgo checklist be the primary validator instead of pyright? Should it be available to external projects? -- Add /memo and /prep to `aipass init` so new projects get them in .claude/commands/ (DPLAN-0114 follow-up) -- Prax: fix AI_MAIL showing as MAIL (underscore branch names getting split) - -
- -
@drone — Operational (2026-04-07 (Session 38)) - -# @drone - -> Command router, @branch resolution, subprocess dispatch, custom commands, git workflow, plugin architecture - -**State:** Operational -**Last update:** 2026-04-07 (Session 38) -**Seedgo audit:** 99% (Readme 83%, Silent_Catch 96%) -**Test suite:** 513 passed, 4 skipped — 19 test files - -## All Commands — Verified Operational - -| Command | Status | Notes | -|---------|--------|-------| -| `drone --help` | Operational | | -| `drone --version` | Operational | v1.1.0 | -| `drone` (no args) | Operational | Auto-discovers 9 modules | -| `drone systems` | Operational | Shows infrastructure, modules (4), branches (11) | -| `drone @target command` | Operational | Routes to any branch via subprocess | -| `drone @target --help` | Operational | | -| `drone @seedgo audit` | Operational | Interactive mode for Rich progress bars | -| `drone @git pr/status/sync/lock/unlock` | Operational | Internal module routing | -| `drone @git system-pr/merge/smart-sync/fix` | Operational | devpulse_ops plugin | -| `drone scan @branch` | Operational | Discovers commands via --help + modules/ | -| `drone activate @branch` | Operational | Scan + register as custom shortcuts | -| `drone list` | Operational | Shows registered custom commands | -| `drone remove ` | Operational | | - -## Milestones (Cumulative) - -- Core routing: @branch resolution, subprocess dispatch, interactive mode -- `drone systems` with infrastructure + modules + branches sections -- Credential verification (RegistryMismatchError split from RegistryNotFoundError) -- Activated commands: scan, activate, list, remove, execute (PR #74) -- `drone @git` module: pr, status, sync, lock, unlock (FPLAN-0094) -- `devpulse_ops` plugin: system-pr, merge, smart-sync, fix (DPLAN-0087) -- DPLAN-0053: Removed drone from _MODULE_REGISTRY, --help in all 9 modules, @ validation, generic adapter, bypass reduction (13 → 4) -- Persistent citizen branches: citizen/{name} instead of feat/{name}-{slug} -- External project fallback: module routing when subprocess fails (DPLAN-0104) -- Test coverage push: 447 → 513 tests, 3 new test files (S73) -- Seedgo 100% → 99% (pre-existing readme date + 2 silent_catch in resolver.py) - -## Architecture Summary - -- **3-layer pattern:** drone.py (entry) → modules/ (orchestrators) → handlers/ (implementation) -- **Routing:** internal modules via importlib, external modules via generic_adapter + routing_config.json -- **Interactive mode:** per-command (monitor, audit) + per-branch (cli, backup) -- **Plugins:** apps/plugins/devpulse_ops/ (auth.py + 4 plugin files) -- **Module fallback:** BranchNotFoundError for registered modules → _handle_module() (DPLAN-0104) - -## Known Issues - -- Pyright warns about `json` package name shadowing stdlib — works at runtime -- Pyright can't fully resolve handlers/git/ imports (handler guard __init__.py limitation) -- Silent_Catch: resolver.py lines 55, 72 — needs logger calls added -- README date flagged by seedgo (auto-stales between sessions) -- ai_mail `close` command times out through drone routing (30s capture timeout) — workaround: clear inbox directly - -## No APLAN Exists - -No action plan file found for drone. Cross-branch plans (DPLAN-0053, DPLAN-0087, DPLAN-0104) tracked in devpulse. - -
- -
@flow — Operational (2026-04-07) - -# @flow - -> Plan lifecycle — FPLANs, DPLANs, RPLANs, TDPLANs, and any custom plan type via filesystem-driven template registry - -**State:** Operational -**Last update:** 2026-04-07 - -## Command Status - -| Command | Status | Notes | -|---------|--------|-------| -| `drone @flow create` | Operational | FPLAN default, master, DPLAN, RPLAN, TDPLAN | -| `drone @flow close` | Operational | Foreground archival + vector verify | -| `drone @flow close --dry-run` | Operational | Preview mode | -| `drone @flow list open/all` | Operational | Multi-registry merge | -| `drone @flow restore` | Operational | Reopen closed plans | -| `drone @flow templates` | Operational | 4 registered types | -| `drone @flow scan` | Operational | Found 1 unregistered (audit_plans/) | -| `drone @flow register/unregister` | Operational | Template CRUD | -| `drone @flow aggregate` | Operational | Cross-branch aggregation | -| `drone @flow registry scan` | Operational | But trigger events not handled (132 unprocessed) | -| `drone @flow post` | NOT OPERATIONAL | "Unknown command" — post_close_runner not standalone-routable | - -## Seedgo Audit - -- **Overall:** 100% (all 33 standards) -- **Tests:** 452 tests, 90/90 public functions, 0 failures -- **Last audit:** 2026-04-07 - -## Registered Plan Types - -| Type | Prefix | Templates | -|------|--------|-----------| -| flow_plans | FPLAN | default, master | -| dev_plans | DPLAN | default | -| research_plans | RPLAN | default | -| team_dev_plans | TDPLAN | default | - -Unregistered: `audit_plans/` (1 template, needs `drone @flow register audit_plans APLAN`) - -## Close Pipeline - -Fully operational. On close: -1. Template check → 2. Mark closed → 3. Archive to processed_plans/ (foreground, flags set atomically) → 4. Vector intake (drone @memory process-plans + is_plan_vectorized verification) → 5. Dashboard updates → 6. CLOSED_PLANS.local.json - -Vector verification shows in console output: "Vectorized: N chunks in chroma" or "NOT vectorized". - -## Known Issues - -- `post` command not routable as standalone (post_close_runner is background-only, invoked internally by close) -- `registry scan` fires 132 trigger events that are never handled (trigger event bus not wired for plan_file_created/deleted/moved) -- `audit_plans/` directory exists but is not registered -- Dashboard push still warns on some closes ("Failed to push flow section to branch dashboard") - -## Pending Dispatches - -- Dispatch from @devpulse (6e3f39e5): Update FPLAN templates — old send syntax -- Dispatch from @devpulse (f37c43f6): Update drone @flow list → list open in docs - -
- -
@memory — Operational — 100% seedgo compliant (33/33 standards) (2026-04-07 (s29)) - -# @memory - -> Vector memory archive — ChromaDB, sentence-transformers - -**State:** Operational — 100% seedgo compliant (33/33 standards) -**Last update:** 2026-04-07 (s29) - -## Command Audit (2026-04-07) - -| Command | Status | Notes | -|---------|--------|-------| -| `--help` | OK | Lists all commands correctly | -| `rollover` (introspection) | OK | Shows handlers + subcommands | -| `rollover status` | OK | 16 branches, 32 files checked | -| `rollover check` | OK | Correctly identifies 2 files needing rollover | -| `rollover run` | OK | Not executed this session (discovery only) | -| `rollover sync-lines` | OK | Updated 32 files | -| `search "query"` | OK | 20 results from 4 collections | -| `symbolic` (introspection) | OK | Lists 6 subcommands | -| `symbolic demo` | OK | v1 + v2 mock extraction works | -| `symbolic fragments "query"` | EMPTY | Returns 0 fragments — no stored data | -| `symbolic extract` | UNTESTED | Requires API key | -| `templates` (introspection) | OK | Lists 3 subcommands | -| `templates template-status` | FAIL | Template files MISSING | -| `templates diff-templates` | FAIL | Template files MISSING | -| `templates push-templates` | FAIL | Template files MISSING | -| `verify FPLAN-XXXX` | OK | Confirmed FPLAN-0128 = 126 chunks | -| `watch` | UNTESTED | Persistent watcher, would block | - -## Seedgo Audit - -- **Overall: 100%** — all 33 standards passing -- 175 public functions, 102 tested (58% function coverage) -- 35 files checked, 0 type errors - -## Rollover Status - -- **MEMORY.local:** READY for rollover (21/20 sessions, 26/25 key_learnings) -- **DEVPULSE.local:** READY for rollover (21/20 sessions, 46/25 key_learnings) -- DEVPULSE.observations: 567/600 lines (33 remaining — approaching limit) -- All other branches within limits - -## Milestones -- ChromaDB integration -- Auto-rollover at entry-count limits (v2 mode) -- Searchable vector archive (4 collections, 2200+ vectors) -- FPLAN-0026 complete (rollover E2E, search, plans archival) -- DPLAN-0073 COMPLETE — 100% seedgo audit -- FPLAN-0128 COMPLETE — verify command + config fix (PR #94) -- Session 16: CRITICAL FIX — batch vectorization, decoupled from startup trigger (PR #95) -- 113 plan files vectorized (2019 chunks) -- Session 27: 468 tests passing, 16/16 module coverage - -## Known Issues -- `search` fails without torch/sentence-transformers (memory .venv required) -- Templates subsystem not operational — template files (LOCAL.template.json, OBS.template) missing from `apps/templates/` -- `symbolic fragments` returns 0 results — no fragment data stored yet -- `symbolic extract` requires API key — untested -- `inotify limit reached` warning on every command (system-level, not memory's fault) -- Memory's own local.json needs rollover (21/20 sessions, 26/25 learnings) - -## Architecture Notes -- Dual vector storage: local (`{branch}/.chroma/`) + global (`memory/.chroma/`). Local fails gracefully, global is critical. -- Plan vectorization decoupled from startup trigger. `_check_plans()` = count only. Processing via explicit command. -- All ML operations via subprocess isolation — main process never imports torch/chromadb. -- Startup trigger chain: prax logger -> trigger.fire('startup') -> check_and_rollover(). Keep lightweight. - -## No APLAN -- No APLAN file exists for memory branch. - -
- -
@polyglot — Unknown (n/a) - -# @POLYGLOT - -> AIPL compression engine developer - -State: Phase 2 complete + seedgo 99% + guardrails designed (DPLAN-0124) -Last update: 2026-04-12 - -## Milestones -- Phase 1 spec: COMPLETE (locked) -- Phase 2 engine: COMPLETE (441 tests, 10 handlers, 5 modules, 99% seedgo) -- Global prompt AIPL'd: DONE (913->843 tokens, 7.7% honest savings) -- ~/.aipl scaffold: DEPLOYED -- Phase 3 integration: In progress -- Phase 4 validation: Not started - -## Current Work -- Token scan: 220K tokens across 80 AIPass files, 81K saveable -- Stress tested 16 real files, 15.8% avg automated savings -- Decode tests: 93-95% info recovery on compressed files -- AIPL is convention not engine — agents write terse from global prompt -- Private repo: AIOSAI/AIPL - -## Known Issues -- Commands incompressible — only prose between commands can shrink -- .trinity/ must stay valid JSON — no headers, no unquoted keys -- Cross-project ai_mail outbound broken (feedback channel in progress) -- delta_extractor limited pattern detection -- Handlers standard 93% — inspect.stack() needed on 2 pipeline files - -## Next -- Build DPLAN-0124: anchor detection + integrity verification (guardrails) -- Roll AIPL global prompt to AIPass and Vera-Studio -- Test with fresh agents across projects -- Close 17% vs 62% gap via convention (not engine) - -
- -
@prax — Operational (2026-04-07) - -# @prax - -> Logging, monitoring, dashboard infrastructure - -**State:** Operational -**Last update:** 2026-04-07 - -## Commands (4 active) -| Command | Status | Notes | -|---------|--------|-------| -| `drone @prax monitor run` | Operational | Polling fallback, caller attribution, model tags, multi-CLI | -| `drone @prax status` | Operational | Shows modules, loggers, watcher state | -| `drone @prax log-audit audit` | Operational | 197 log files, all healthy | -| `drone @prax dashboard` | Operational | Template sections, refresh from centrals | - -## Seedgo Audit: 99% -- 35 categories, 32 at 100% -- Deep_Nesting: 97% (filesystem_handler.py — Codex/Gemini adapters) -- Error_Handling: 96% (filesystem_handler.py) -- Silent_Catch: 97% (filesystem_handler.py) -- Custom tests: 90/134 functions (374 tests, 2.0s) - -## Monitor Features -- **Operational:** File watcher, log watcher, polling fallback, caller attribution (CALLER→TARGET), model tags (BRANCH/model), Claude Code JSONL, Codex JSONL, Gemini JSON adapters, agent activity tracking -- **Not operational:** Interactive filtering (watch/filter commands deferred) - -## Recently Completed -- Session 40: Inbox watchdog tool (tools/inbox_watchdog.py) -- Session 39: Codex model tag fix (turn_context.payload.model) -- Session 38: Dynamic branch detection for Codex/Gemini (CWD + projects.json) -- Session 37: Filter fix + model tags + Gemini adapter live test -- Session 36: inotify errno-specific messages (Errno 28 vs 24) -- Session 34: Codex + Gemini monitoring adapters (DPLAN-0097) -- Session 33: Test coverage push (229→374 tests) - -## Archived Modules (5) -init_prax, shutdown, discover, run, terminal — in modules/.archive/ - -## Known Issues -- inotify watches/instances near-exhausted. Monitor uses polling fallback — functional but slower. -- filesystem_handler.py has 3 seedgo violations (deep_nesting, error_handling, silent_catch) from Codex/Gemini adapter code -- Interactive filtering (Phase 4) deferred indefinitely - -
- -
@seedgo — Operational — 99% self-audit (32/33 standards at 100%, Architecture 99%) (2026-04-14 (session 59 — DPLAN-0128 Track 5 advisory: recommend prompt note + ref doc over 34th standard)) - -# @seedgo - -> Standards enforcement, 32-standard audit pack + seedgo proof system (CERTIFIED) + hook ownership - -**State:** Operational — 99% self-audit (32/33 standards at 100%, Architecture 99%) -**Last update:** 2026-04-14 (session 59 — DPLAN-0128 Track 5 advisory: recommend prompt note + ref doc over 34th standard) - -## Session 43 — Dispatch Processing - -Two emails processed: - -1. **Devpulse 4adc667b** — 5-branch split-out fallout test (backup, daemon, api, commons, skills removed from AIPass). Result: zero imports from split branches, no runtime deps, README clean, self-audit 99%. Reported all clear. -2. **Trigger af202e98** — Recurring JSON parse error (ERROR 3c63b0e0). Root cause: race condition in json_handler.py `load_json()` line 134 — no try-except around `json.load()`. Concurrent writes truncate file between validation and read. Low severity, fix recommended for next PR. - -### Command Test Results - -| Command | Status | Notes | -|---------|--------|-------| -| `--help` | Works | Lists 9 commands. Missing: proof, proof_query, test_map | -| `audit` | Works | Introspection shows 1 pack (32 checkers) | -| `audit aipass @seedgo` | Works | 99% overall, 0 type errors | -| `standards_query` | Works | Lists packs | -| `standards_query aipass_standards` | Works | Lists 32 standards | -| `standards_query aipass_standards cli` | Works | Shows content | -| `checklist` | Works | Introspection output | -| `checklist ` | Works | Per-file scoring | -| `diagnostics` | Works | Introspection — redirects to audit | -| `diagnostics @seedgo` | Works | Same redirect | -| `readme` | Works | Introspection | -| `proof` | Works | **Not in --help** | -| `test_map` | Works | **Not in --help** | - -### Self-Audit (2026-04-07) - -- 99% overall -- 32/33 standards at 100% -- Readme at 83% (date was 8 days stale — now fixed) -- 0 type errors -- 181 public functions, 65 tested (36% coverage) - -### Findings - -1. **--help missing 3 commands** — `proof`, `proof_query`, `test_map` work but not listed in help output -2. **diagnostics @branch doesn't run diagnostics** — just tells you to use audit pipeline. UX confusion. -3. **Standards count: 32 checkers + diagnostics = 33 audit lines** — pack says 32 (correct), audit shows 33 (includes diagnostics separately) -4. **README was stale** — date 2026-03-29, now updated to 2026-04-07 - -## Active Plans - -- **DPLAN-0104** — External project registry discovery. Seedgo section DONE (CWD-first fix tested). -- **Hook work (no dedicated DPLAN yet)** — spread across DPLAN-0093 (install hardening / hook path genericizing), DPLAN-0094/0095/0096 (multi-CLI hook integration research), DPLAN-0121 (AIPASS_HOME injection + local prompt hook wiring in aipass init), DPLAN-0125 Track A (Windows compat, hooks explicitly reserved for AIPass Developer session). Session 21 (2026-03-17) Patrick decided seedgo owns hooks — ownership declared, code still lives outside seedgo/apps/. - -## TODO - -- **Add proof/test_map to --help** — missing from help output -- **Bypass CLI** — Feature request from devpulse -- **Checker test coverage** — 31/32 checkers still need direct tests (APLAN-0084) - -## Known Issues -- audit_display.py has depth 5-6 nesting (bypassed) -- unused_function_check: importlib/getattr dynamic discovery needs bypass -- documentation_check 5-line lookahead limitation for multi-line signatures -- dead_code_check doesn't recognize iterdir() discovery patterns -- Duplicate PostToolUse hooks (PARKED) - -
- -
@spawn — Operational (2026-04-07) - -# @spawn - -> Branch lifecycle — create, update, delete, sync - -**State:** Operational -**Last update:** 2026-04-07 - -## Branch State Audit (2026-04-09) - -### Command Status - -| Command | Status | Notes | -|---|---|---| -| `--help` | Operational | Full help text with all commands | -| `(no args)` | Operational | Introspection — lists connected modules | -| `create ` | Operational | Creates agent from builder template, registers in registry | -| `create` (external project) | Operational | Auto-detects *_REGISTRY.json, stores relative paths | -| `passport @dirname` | Operational | Grants birthright citizenship | -| `update @branch` | Operational | Single branch update with class-aware template | -| `update --all` | Operational | Batch update by citizen class | -| `update --dry-run` | Operational | Preview mode works | -| `update --help` | Operational | Shows usage and returns 0 | -| `delete @branch` | Operational | Archive + deregister | -| `delete --help` | Operational | Shows usage and returns 0 | -| `sync-registry` | Operational | Reports healthy/stale/unregistered branches | -| `sync-registry --fix` | Operational | Rebuilds .spawn/ tracking | -| `sync-templates` | Partial | Runs but template_owners.json is empty — no managed files | -| `regenerate-registry` | Operational | Regenerates builder template hashes (43 files, 23 dirs) | -| `regenerate-registry --all` | Operational | All template classes | -| Python API (`spawn_agent`) | Operational | `from aipass.spawn import spawn_agent` | - -### Metrics - -- **Seedgo:** 99% (architecture: CLAUDE.md not yet pushed to spawn branch) -- **Tests:** 206 passed, 37 skipped -- **Module coverage:** 23/23 (100%) -- **Registry:** 12 healthy branches (clean — test artifact removed) - -## Known Issues - -- `sync-templates` is a no-op (template_owners.json has no entries) -- No APLAN exists for this branch - -## Recent Work - -- S82 dispatch: Fixed update --help and delete --help (--help interception before argparse processing). test_spawn_audit_agent already removed from registry by S82 split. -- CWD-aware sync-registry for external projects -- TDPLAN-0002: --template flag, CLAUDE.md in builder template -- Seedgo compliance: 99% (CLAUDE.md architecture item pre-existing) - -
- -
@trigger — Operational (2026-04-09) - -# @trigger - -> Event bus — 14 events, error registry, circuit breaker, Medic auto-dispatch - -**State:** Operational -**Last update:** 2026-04-09 - -## Milestones -- 14 event types, 14 handlers wired (via registry.py) -- fire/status/list/--version commands -- Error registry (104 tracked errors, SHA1 fingerprinting) -- handle_command routing on all 5 modules -- Medic: enabled, running via systemd, circuit breaker closed -- Seedgo 100% (33/33 categories) -- 370 tests, all passing (12/12 modules covered) -- json_handler wired to all 21 modules/handlers -- Introspection gates on all 5 modules + config.py -- PR events: pr_created + pr_merged fire prax status sync -- Persistent log watcher via systemd user service - -## Current State (verified 2026-04-09) -- All CLI commands operational (--help, fire, list, status, medic, errors, branch_log_events, log_events) -- branch_log_events watcher: Active=False in-process (systemd service handles persistence) -- log_events watcher: Active=False in-process (same) -- Error registry: 0 errors tracked (cleared 106 stale entries 2026-04-09) -- Circuit breaker: closed (normal operation) -- Dispatch pipeline: verified working (count>=2 triggers email delivery) -- 55/76 public functions tested - -## Current Work -- No active plans. All FPLANs closed. - -## Known Issues -- UNKNOWN component errors from prax branch detection failures in watchdog contexts (root cause in prax, not trigger) -- No dispatches have occurred organically yet — all real errors are unique (count=1), never repeating to trigger dispatch threshold (count>=2) - -
- diff --git a/src/aipass/drone/cli.py b/src/aipass/drone/cli.py index 66f45ba3..b403da0f 100644 --- a/src/aipass/drone/cli.py +++ b/src/aipass/drone/cli.py @@ -13,8 +13,15 @@ Usage: drone @module command [args] Route command to internal module """ +import os import sys +# Windows terminals default to cp1252 which can't encode Rich's Unicode +# characters (box-drawing, em dashes, arrows). Force UTF-8 before any +# imports that trigger Rich output. +if sys.platform == "win32": + os.environ.setdefault("PYTHONUTF8", "1") + from aipass.drone.apps.drone import main as _drone_main