feat(system): Personal-name scrub: Patrick -> user / AIPass Developer across public repo
Co-Authored-By: @devpulse <devpulse@aipass>
This commit is contained in:
@@ -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
@@ -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
+1
Submodule .claude/worktrees/agent-aa2b7d43 added at 98191fa97e
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"branch": "devpulse",
|
||||
"feature_branch": "",
|
||||
"started": "2026-04-14T13:14:01.042006+00:00",
|
||||
"pid": 219648
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user