feat(system): Personal-name scrub: Patrick -> user / AIPass Developer across public repo

Co-Authored-By: @devpulse <devpulse@aipass>
This commit is contained in:
AIOSAI
2026-04-14 06:14:03 -07:00
co-authored by @devpulse
parent efc5eefabd
commit 3c5ac29fba
14 changed files with 264 additions and 57 deletions
+2 -2
View File
@@ -174,7 +174,7 @@ If the conversation suddenly shifts to a topic, project, or domain that doesn't
- **No cross-branch file edits.** If you find an issue in another branch → email them.
- **No bare imports.** Always `from aipass.{module}.apps.modules...`
- **No hardcoded paths.** Use `Path(__file__).parents[N]` or drone for resolution.
- **Never move, archive, or delete files with "patrick" in the name.** Patrick's personal files (audits, templates, notes) are off-limits. Don't reorganize them, don't archive them, don't touch them.
- **Never move, archive, or delete files with "patrick" in the name.** The AIPass Developer's personal files (audits, templates, notes) are off-limits. Don't reorganize them, don't archive them, don't touch them.
- **No deleting files.** Tag with `(disabled)` and move to `.archive/`:
- Rename the file: `my_handler.py` → `my_handler(disabled).py`. The `(disabled)` tag is gitignored — it blocks imports and keeps the file out of version control while preserving it locally.
- If `.archive/` doesn't exist in the current directory, create it. Place `.archive/` next to the files being moved — if you're in `handlers/`, the archive goes in `handlers/.archive/`. If in `apps/`, it goes in `apps/.archive/`.
@@ -213,7 +213,7 @@ What to save where:
- `observations.json` → collaboration patterns (how the user works, what works well, what to avoid)
- `STATUS.local.md` → current work, known issues, todos, recently completed. Surfaces in pre-compact recovery and startup reads.
**Don't stress about compaction.** We run on a 1M context window. Patrick monitors context usage and controls compaction manually — it's his job, not yours. Auto-compact is effectively obsolete. Save your memories because they're valuable, not because you're racing a clock. The cost of saving too often is zero.
**Don't stress about compaction.** We run on a 1M context window. The user monitors context usage and controls compaction manually — it's their job, not yours. Auto-compact is effectively obsolete. Save your memories because they're valuable, not because you're racing a clock. The cost of saving too often is zero.
## Breadcrumbs
+1 -1
View File
@@ -145,7 +145,7 @@ Defined in `settings.json` (this directory). These DO fire from subdirectories.
**What:** Injects `# Current Time: Thursday, April 2 2026 — 11:24 AM` as its own system-reminder every turn.
**Why:** Claude has no temporal awareness by default — doesn't know what time it is, how long a session has been running, or whether it's day/night. Patrick requested this in S71 as the first step toward autonomous scheduling, task duration estimation, and personal reminders. A year-old wishlist item finally built.
**Why:** Claude has no temporal awareness by default — doesn't know what time it is, how long a session has been running, or whether it's day/night. The user requested this in S71 as the first step toward autonomous scheduling, task duration estimation, and personal reminders. A year-old wishlist item finally built.
**How:** Pure inline shell — no script file. Added as a separate entry in `~/.claude/settings.json` UserPromptSubmit array so it gets its own system-reminder block (not buried in the 13.6KB global prompt output).
Submodule .claude/worktrees/agent-aa2b7d43 added at 98191fa97e
+6
View File
@@ -0,0 +1,6 @@
{
"branch": "devpulse",
"feature_branch": "",
"started": "2026-04-14T13:14:01.042006+00:00",
"pid": 219648
}
+1 -1
View File
@@ -44,7 +44,7 @@ You are a citizen of AIPass. Your `.trinity/passport.json` defines who you are.
## Security
- NEVER read, access, or reference files in `~/.secrets/` or `/home/patrick/.secrets/`. This directory contains API keys, tokens, and recovery codes. No agent needs to see this. Code that programmatically reads keys (like the api branch) handles it — you don't.
- NEVER read, access, or reference files in `~/.secrets/`. This directory contains API keys, tokens, and recovery codes. No agent needs to see this. Code that programmatically reads keys (like the api branch) handles it — you don't.
- NEVER output credentials, tokens, or API keys in responses.
## Key Principles
+1 -1
View File
@@ -15,7 +15,7 @@ On any greeting, silently read these files from CWD and run the commands — no
## Security
- NEVER read, access, or reference files in `~/.secrets/` or `/home/patrick/.secrets/`. This directory contains API keys, tokens, and recovery codes. No agent needs to see this. Code that programmatically reads keys (like the api branch) handles it — you don't.
- NEVER read, access, or reference files in `~/.secrets/`. This directory contains API keys, tokens, and recovery codes. No agent needs to see this. Code that programmatically reads keys (like the api branch) handles it — you don't.
- NEVER output credentials, tokens, or API keys in responses.
## Memories
+1 -1
View File
@@ -44,7 +44,7 @@ You are a citizen of AIPass. Your `.trinity/passport.json` defines who you are.
## Security
- NEVER read, access, or reference files in `~/.secrets/` or `/home/patrick/.secrets/`. This directory contains API keys, tokens, and recovery codes. No agent needs to see this. Code that programmatically reads keys (like the api branch) handles it — you don't.
- NEVER read, access, or reference files in `~/.secrets/`. This directory contains API keys, tokens, and recovery codes. No agent needs to see this. Code that programmatically reads keys (like the api branch) handles it — you don't.
- NEVER output credentials, tokens, or API keys in responses.
## Key Principles
+1 -1
View File
@@ -38,7 +38,7 @@ Watchdog fixed. Night shift: 4 DPLANs (0107-0110), 10 branches dispatched, PRs #
Decided to split 4 agents to standalone projects (backup, daemon, commons, skills); api reinstated as infrastructure. 6 parallel agents verified zero code dependencies. Updated README from 15 → 11 agents. All agent tables, tree diagrams, TOC, metrics updated. CLI dispatched for src/ directory in init + CWD-aware sync-registry for spawn.
### S81 — aipass init v2 + Vera Studio (2026-04-08)
TDPLAN-0002: Complete init overhaul. CLI, spawn, drone worked in parallel. Init now creates 10 items with real content (CLAUDE.md, AGENTS.md, GEMINI.md, global prompt, README, .gitignore, hooks, settings). `aipass init agent` routes to spawn. Spawn added --template flag + CLAUDE.md to builder template. Drone added spawn to routing_config.json. Prax fixed watchdog with --daemon mode + statusline indicator. Vera Studio project created. Patrick testing as real first-time user — found .trinity shouldn't be in project root, local prompt is agent-level only. CLI fixed both. DPLAN-0105 (promotion prep), DPLAN-0106 (watchdog v2). PRs #204-205.
TDPLAN-0002: Complete init overhaul. CLI, spawn, drone worked in parallel. Init now creates 10 items with real content (CLAUDE.md, AGENTS.md, GEMINI.md, global prompt, README, .gitignore, hooks, settings). `aipass init agent` routes to spawn. Spawn added --template flag + CLAUDE.md to builder template. Drone added spawn to routing_config.json. Prax fixed watchdog with --daemon mode + statusline indicator. Vera Studio project created. The AIPass Developer testing as real first-time user — found .trinity shouldn't be in project root, local prompt is agent-level only. CLI fixed both. DPLAN-0105 (promotion prep), DPLAN-0106 (watchdog v2). PRs #204-205.
### S80 — README Marathon + 14-Branch Audit (2026-04-07/08)
FPLAN-0165 executed (README 366→279 lines). Goldfish Rounds 5-7: R5 approval (8/8.5/9 ratings), R6 branch deep dive (flow+memory undersold, honest tagging builds credibility), R7 hands-on CLI (routing 100%, nothing broke). 14 branches dispatched simultaneously for state audit — all completed in 15 min, 3,600+ tests, 11/14 at 100% seedgo. README Round 7 update (flow/memory lifecycle, transparency sentence). CLI init bug fixed (double prefix). Watchdog race condition fixed. PyPI 2.0.0 published. ~/.secrets/ blocked across all 3 CLIs. DPLAN-0099 updated through 7 rounds. Gemini free tier dead. PRs #202-203.
+187 -35
View File
@@ -2,7 +2,7 @@
> Auto-generated by `drone @prax status sync`. Do not edit manually.
**Last sync:** 2026-04-10 00:40
**Last sync:** 2026-04-14 06:14
**Summary:** 8 operational | 0 in-progress | 0 not started
---
@@ -73,14 +73,14 @@
</details>
<details><summary><strong>@api</strong> — Operational | **Seedgo:** 100% (33/33) | **Tests:** 290 pass, 64/64 functions (2026-04-07)</summary>
<details><summary><strong>@api</strong> — Operational | **Seedgo:** 99% (32/33 at 100%) | **Tests:** 290 pass, 65/65 functions (2026-04-10)</summary>
# @api
> Centralized external API gateway — authenticated service clients for all external APIs
**State:** Operational | **Seedgo:** 100% (33/33) | **Tests:** 290 pass, 64/64 functions
**Last update:** 2026-04-07
**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)
@@ -93,7 +93,7 @@
- Backup migration to use our Google module (pending backup)
## Known Issues
- `cleanup` command fails with "Cleanup failed" — likely no usage data file exists to clean. Needs better error handling for empty state.
- 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)
@@ -117,26 +117,26 @@
| `stats` | OK | No data (expected) |
| `session` | OK | No data (expected) |
| `caller-usage` (no args) | OK | Proper error message |
| `cleanup` | FAIL | "Cleanup failed" |
| `cleanup` | OK | Now handles empty state gracefully |
## Recent (Session 19, 2026-04-07)
- Branch state audit (discovery only) — dispatch from @devpulse
- 14/15 commands operational, 1 failure (cleanup)
- Seedgo 100%, 290 tests, no type errors
- README updated with full command list, cleanup tagged as not operational
- No APLAN exists for this branch
## 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
</details>
<details><summary><strong>@cli</strong> — Operational (2026-04-07)</summary>
<details><summary><strong>@cli</strong> — Operational (2026-04-11)</summary>
# @cli
> Display service, Rich formatting for all branches
**State:** Operational
**Last update:** 2026-04-07
**Seedgo:** 100% (all standards green, 33+ bootstrap tests)
**Last update:** 2026-04-11
**Seedgo:** 100% (all standards green, 161 tests)
## Branch State Audit (2026-04-07)
@@ -147,7 +147,7 @@
| `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 14 items (v2) |
| `drone @cli aipass init /path Name` | Works — creates 12 items |
| `drone @cli aipass init agent <name>` | Works — routes to spawn |
| `drone @cli aipass init --help` | Works — Rich-formatted help |
| `drone @cli display` | Works — shows function list |
@@ -164,7 +164,7 @@
- **Extra dirs:** artifacts/, docs/, docs.local/, templates/, tools/ — exist but not in architecture tree
### Tests
- 138 tests, 6 files, 5/5 modules covered, all passing
- 161 tests, 6 files, 5/5 modules covered, all passing
- Seedgo Test_Quality: 100%
### No APLAN
@@ -179,35 +179,42 @@
- 138 unit tests (100% module coverage)
## Current Work
- TDPLAN-0002: aipass init v2 — CLI section complete (S19). Templates rewritten, 6 new files, init agent subcommand, next steps output.
- 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%.
</details>
<details><summary><strong>@devpulse</strong> — Operational (2026-04-09 (S83 23:52))</summary>
<details><summary><strong>@devpulse</strong> — Operational (2026-04-11 (S90 17:59))</summary>
# @devpulse
> Orchestration hub — coordinates via dispatch + agents (no apps/)
> Orchestration hub — coordinates via dispatch + agents. Feedback channel live.
**State:** Operational
**Last update:** 2026-04-09 (S83 23:52)
**Last update:** 2026-04-11 (S90 17:59)
## Current State
- **11 core agents** (split from 15 — backup, daemon, commons, skills moved to standalone projects; api reinstated as infrastructure)
- **82 sessions** of development
- **207+ PRs** merged
- **4,900+ tests** across core agents
- **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)
- **PyPI:** `pip install aipass` works (v2.0.0)
- **Vera Studio:** standalone promotion project (separate from AIPass construction)
- **Vera Studio:** standalone promotion project — 4 bug reports received via feedback
- **Goldfish panel:** 7-round multi-model README review (Claude + Codex + Gemini)
## Active Work
- **S83 Adversarial Audit:** 22 Opus agents audited all 11 branches (code + docs). 350+ findings. All 11 APLANs updated. 11 CRITICALs across 6 branches. PR #211. Wave 2 (verification pass) next.
- **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.
- **S87 Complete:** COMPASS STANDALONE + IMPROVEMENTS. DPLAN-0113 complete (7 imports→stdlib, handler guard removed, module path fixed, tests updated 89/89). Compass v0.2: observations parser (75 fragments), richer embedding text (context+decision+feedback+tags), ingest-obs/ingest-all commands, 103 total fragments. 7 orphaned watchdog processes killed. backup/ dir confirmed gone. 4 commits pushed to AIOSAI/compass.
- **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 — Phase 2 depends on daemon (removed). Needs replanning.
- **DPLAN-0105:** Promotion prep — Vera owns execution.
@@ -222,14 +229,114 @@
## Known Issues
- **Watchdog:** Doesn't survive Claude Code background tasks. DPLAN-0106 addresses this (tmux/daemon approach).
- **Hooks:** Don't work from external projects. aipass init generates .claude/settings.json but hooks reference AIPass-specific scripts. Logged in seedgo branch audit.
- **backup:** Still in src/aipass/ — needs to be moved to standalone project.
- **drone.py:** `interactive_branches = ("cli", "backup")` — backup reference needs removing after move.
- **Memory rollover:** devpulse at 22/20 sessions, 26/25 learnings (trimmed in S81, but keeps growing).
- **Watchdog:** v1.1 (snapshot pattern) working since S85. Orphaned processes cleaned up S87.
- **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
## Notepad (Agent)
### 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
- Compass decisions #031-033 written (autonomy patterns, PR stacking, build vs use)
- 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
@@ -252,6 +359,12 @@
- 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)
</details>
<details><summary><strong>@drone</strong> — Operational (2026-04-07 (Session 38))</summary>
@@ -272,7 +385,7 @@
| `drone --help` | Operational | |
| `drone --version` | Operational | v1.1.0 |
| `drone` (no args) | Operational | Auto-discovers 9 modules |
| `drone systems` | Operational | Shows infrastructure, modules (3), branches (15) |
| `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 |
@@ -456,6 +569,45 @@ Vector verification shows in console output: "Vectorized: N chunks in chroma" or
</details>
<details><summary><strong>@polyglot</strong> — Unknown (n/a)</summary>
# @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)
</details>
<details><summary><strong>@prax</strong> — Operational (2026-04-07)</summary>
# @prax
@@ -503,14 +655,14 @@ init_prax, shutdown, discover, run, terminal — in modules/.archive/
</details>
<details><summary><strong>@seedgo</strong> — Operational — 99% self-audit (32/33 standards at 100%, Architecture 99%) (2026-04-09 (session 43 — dispatch processing))</summary>
<details><summary><strong>@seedgo</strong> — Operational — 99% self-audit (32/33 standards at 100%, Architecture 99%) (2026-04-11 (session 58 — pytest.ini investigation, no standard exists, no other branches affected))</summary>
# @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-09 (session 43 — dispatch processing)
**Last update:** 2026-04-11 (session 58 — pytest.ini investigation, no standard exists, no other branches affected)
## Session 43 — Dispatch Processing
@@ -13,7 +13,7 @@ You are DEVPULSE — orchestration hub. Manager, not builder. Coordinate, plan,
- Never block waiting on agents. Never burn context reading code across branches.
- Use `drone @branch --help` for command syntax. Use `drone systems` for branch list.
- **ALWAYS WAKE after sending dispatch emails.** Send email → wake. Every time. No asking. If the user wants something different, they will say so.
- **START WATCHDOG after any dispatch.** Use the watchdog one-liner (see Watchdog section below) with `run_in_background: true`. Don't wait for Patrick to ask.
- **START WATCHDOG after any dispatch.** Use the watchdog one-liner (see Watchdog section below) with `run_in_background: true`. Don't wait for the user to ask.
## Dispatch, Don't Do
@@ -46,7 +46,7 @@ drone @git lock # Check PR lock status
Read-only git commands are fine: `git status`, `git diff`, `git log`.
**NEVER cd to repo root.** `drone @git system-pr` requires `.trinity/passport.json` in the CWD hierarchy. If you cd to `/home/patrick/Projects/AIPass/`, it fails. Stage files with relative paths from devpulse: `git add ../../../HERALD.md`. Always run drone commands from this directory.
**NEVER cd to repo root.** `drone @git system-pr` requires `.trinity/passport.json` in the CWD hierarchy. If you cd to the repo root, it fails. Stage files with relative paths from devpulse: `git add ../../../HERALD.md`. Always run drone commands from this directory.
## Key Commands
@@ -100,7 +100,7 @@ INBOX="path/to/.ai_mail.local/inbox.json"; INITIAL=$(python3 -c "import json; fr
**Watchdog one-liner (copy-paste ready):**
```
INBOX="/home/patrick/Projects/AIPass/src/aipass/devpulse/.ai_mail.local/inbox.json"; INITIAL=$(python3 -c "import json; from pathlib import Path; p=Path('$INBOX'); print(json.loads(p.read_text()).get('unread_count',0) if p.exists() else 0)" 2>/dev/null); C=0; while [ $C -lt 60 ]; do sleep 10; C=$((C+1)); CURRENT=$(python3 -c "import json; from pathlib import Path; p=Path('$INBOX'); print(json.loads(p.read_text()).get('unread_count',0) if p.exists() else 0)" 2>/dev/null); if [ "$CURRENT" -gt "$INITIAL" ]; then echo "WOKE: new mail ($INITIAL→$CURRENT)"; exit 0; fi; done; echo "TIMEOUT: 10min no new mail"; exit 0
INBOX="$(pwd)/.ai_mail.local/inbox.json"; INITIAL=$(python3 -c "import json; from pathlib import Path; p=Path('$INBOX'); print(json.loads(p.read_text()).get('unread_count',0) if p.exists() else 0)" 2>/dev/null); C=0; while [ $C -lt 60 ]; do sleep 10; C=$((C+1)); CURRENT=$(python3 -c "import json; from pathlib import Path; p=Path('$INBOX'); print(json.loads(p.read_text()).get('unread_count',0) if p.exists() else 0)" 2>/dev/null); if [ "$CURRENT" -gt "$INITIAL" ]; then echo "WOKE: new mail ($INITIAL→$CURRENT)"; exit 0; fi; done; echo "TIMEOUT: 10min no new mail"; exit 0
```
## Memory & Tracking
+1 -1
View File
@@ -184,7 +184,7 @@ python -m pytest src/aipass/<branch>/tests/
If tests fail because `AIPASS_HOME` leaks the real registry into test results, that's a known pattern — the tests need `monkeypatch.delenv("AIPASS_HOME")`. See S90 notes for the fixture pattern.
### `.claude/settings.json` has `/home/patrick/` paths
### `.claude/settings.json` has hardcoded absolute paths
You pulled an old clone. The hardcoded paths were removed in commit `867dad0` (April 5, 2026). Pull the latest main and re-run `setup.sh`, which generates the settings dynamically from your local repo root.
+57 -9
View File
@@ -1,9 +1,9 @@
# =================== AIPass ====================
# Name: load.py
# Description: Load Logging Configuration Handler
# Version: 1.0.1
# Version: 1.0.2
# Created: 2025-11-07
# Modified: 2026-03-09
# Modified: 2026-04-14
# =============================================
"""
@@ -27,12 +27,13 @@ Usage:
max_lines = system_logs['max_lines']
"""
import inspect
import json
import logging
import os
logger = logging.getLogger(__name__)
from pathlib import Path
from typing import Dict, Any
from typing import Dict, Any, Optional
from aipass.prax.apps.handlers.json import json_handler
@@ -78,26 +79,53 @@ def get_system_logs_dir() -> Path:
return _system_logs_dir_cache
def get_module_logs_dir(module_name: str) -> Path:
def _warn_routing(module_name: str, destination: object) -> None:
"""Log routing warning when a module's log path falls outside ECOSYSTEM_ROOT."""
try:
from aipass.prax.apps.modules.logger import get_direct_logger
get_direct_logger().warning(
"[get_module_logs_dir] '%s' not in ECOSYSTEM_ROOT; routing to %s",
module_name, destination,
)
except Exception as e:
logger.warning(
"[get_module_logs_dir] '%s' routing to %s (logger unavailable: %s)",
module_name, destination, e,
)
def get_module_logs_dir(module_name: Optional[str] = None) -> Path:
"""Get the branch-root logs directory for a module.
Checks ECOSYSTEM_ROOT (src/aipass/) first, then SRC_ROOT (src/) for
branches that live outside the aipass namespace (e.g., commons).
branches that live outside the aipass namespace (e.g., commons). For
cross-project dispatch, resolves paths relative to the caller's project
root via AIPASS_CALLER_CWD (set by drone, DPLAN-0121) instead of
ECOSYSTEM_ROOT. Falls back to system_logs/external/ for unknown modules —
never creates new directories inside the AIPass source tree.
This is the primary local log directory resolver for the two-tier
model (system_logs/ for central aggregation + branch-root logs/
for local debugging).
Args:
module_name: Module name (e.g., "flow", "prax", "commons")
module_name: Module name (e.g., "flow", "prax", "commons").
Auto-detected from the calling module if not provided.
Returns:
Path to the module's branch-root logs directory
Path to the module's logs directory
"""
# Auto-detect caller module name when not provided
if module_name is None:
frame = inspect.stack()[1]
module_name = Path(frame.filename).stem
test_log_dir = os.environ.get("AIPASS_TEST_LOG_DIR")
if test_log_dir:
p = Path(test_log_dir) / module_name
p.mkdir(parents=True, exist_ok=True)
return p
# Standard: src/aipass/{module}/logs
branch_dir = ECOSYSTEM_ROOT / module_name
if branch_dir.exists():
@@ -113,9 +141,29 @@ def get_module_logs_dir(module_name: str) -> Path:
logs_dir.mkdir(parents=True, exist_ok=True)
return logs_dir
# Default: create under ECOSYSTEM_ROOT (original behavior for new branches)
logs_dir = branch_dir / "logs"
# Cross-project dispatch: AIPASS_CALLER_CWD is set by drone router_handler
# (DPLAN-0121). Walk up from the caller's CWD to find the project root
# (.git or pyproject.toml), then log there rather than polluting ECOSYSTEM_ROOT
# with directories for unknown/external modules (e.g. AIPL polyglot agents).
caller_cwd = os.environ.get("AIPASS_CALLER_CWD")
if caller_cwd:
caller_path = Path(caller_cwd)
project_root = next(
(c for c in [caller_path, *caller_path.parents]
if (c / ".git").exists() or (c / "pyproject.toml").exists()),
None,
)
if project_root:
logs_dir = project_root / "logs" / module_name
logs_dir.mkdir(parents=True, exist_ok=True)
_warn_routing(module_name, logs_dir)
return logs_dir
# Final safe fallback: system_logs/external/ — never create unknown directories
# inside the AIPass source tree. Fixes AIPL polyglot log leak (DPLAN-0125 Track G).
logs_dir = get_system_logs_dir() / "external" / module_name
logs_dir.mkdir(parents=True, exist_ok=True)
_warn_routing(module_name, "system_logs/external/")
return logs_dir
# Config file
@@ -536,5 +536,5 @@ from aipass.seedgo.apps.handlers.json import json_handler
#@comments:2025-11-29:claude: Added explicit "Drone: CLI Router Pattern" section with FORBIDDEN import examples
#@comments:2025-11-29:claude: Clarified that branches should NEVER import from aipass.drone.apps.modules - Drone resolves @ before calling them
#@comments:2026-03-07:claude: Cleaned old references - updated to AIPass namespace imports, removed sys.path/AIPASS_ROOT patterns, fixed hardcoded home paths, old->seedgo naming
#@comments:2026-03-08:claude: Resolved patrick's "whole file needs updating" flag - fixed old branch names (3 occurrences), removed stale AIPASS_ROOT reference, corrected handler independence summary to reflect that handlers CAN import cross-branch services, bumped to Draft v2
#@comments:2026-03-08:claude: Resolved the user's "whole file needs updating" flag - fixed old branch names (3 occurrences), removed stale AIPASS_ROOT reference, corrected handler independence summary to reflect that handlers CAN import cross-branch services, bumped to Draft v2
#@comments:2026-03-31:claude: Cleaned stale references in comments and docs throughout seedgo standards
+1 -1
View File
@@ -25,7 +25,7 @@
- FINAL: 176 tests, all passing. Test coverage 6%→93%. Overall audit 99%.
- Ready to PR
## Questions for Patrick
## Questions for the AIPass Developer
(none yet)
## Notes