From 482f4e7b06ca254771e28de4c966aa014bace02d Mon Sep 17 00:00:00 2001 From: AIOSAI Date: Sat, 16 May 2026 16:13:24 -0700 Subject: [PATCH] docs: update 7 branch READMEs with accurate state + switch dispatch default to sonnet + codex setup + gitignore memory_pool --- .gitignore | 2 + AGENTS.md | 5 +- src/aipass/ai_mail/README.md | 44 +++++---- .../ai_mail/apps/handlers/dispatch/wake.py | 4 +- src/aipass/ai_mail/tests/test_wake.py | 6 +- src/aipass/devpulse/docs/codex-setup.md | 92 +++++++++++++++++++ src/aipass/drone/README.md | 8 +- src/aipass/flow/README.md | 10 +- src/aipass/prax/README.md | 19 ++-- src/aipass/seedgo/README.md | 28 +++--- src/aipass/spawn/README.md | 18 ++-- .../builder/.spawn/.template_registry.json | 2 +- src/aipass/trigger/README.md | 12 +-- 13 files changed, 179 insertions(+), 71 deletions(-) create mode 100644 src/aipass/devpulse/docs/codex-setup.md diff --git a/.gitignore b/.gitignore index 56fc0ca9..92f84e1e 100644 --- a/.gitignore +++ b/.gitignore @@ -119,6 +119,8 @@ src/aipass/memory/config/.plans_processed.json src/aipass/drone/drone_command_registry.json src/aipass/spawn/templates/builder/.spawn/.template_registry.json src/aipass/memory/config/.plans_processed.json +src/aipass/memory/memory_pool/ +src/aipass/memory/memory_pool_archive/ src/aipass/drone/apps/plugins/devpulse_ops/__pycache__/pr_plugin.cpython-312.pyc whiteboard.md diff --git a/AGENTS.md b/AGENTS.md index b108cc14..5748ff22 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -6,11 +6,12 @@ User: user # Startup protocol -On any greeting, silently read these files from CWD and run the commands — no narration, no announcing steps. Just do it and respond with the status. +On any greeting, silently read these files and run the commands — no narration, no announcing steps. Just do it and respond with the status. - - Read: `.trinity/passport.json`, `.trinity/local.json`, `.trinity/observations.json`, `README.md`, `STATUS.local.md` + - Read (cat): `.trinity/passport.json`, `.trinity/local.json`, `.trinity/observations.json`, `README.md`, `STATUS.local.md` - Check: `drone @ai_mail inbox` — process any mail, don't ask. - Run: `drone @git status` + - Refresh: If `STATUS.local.md` is stale (last updated date older than latest session in local.json), update it from your memories. Keep Current Work accurate. Use drone commands for all operations. Never raw git, gh, file access, or python -m when drone provides it. diff --git a/src/aipass/ai_mail/README.md b/src/aipass/ai_mail/README.md index 7ae5e78c..c13250c5 100644 --- a/src/aipass/ai_mail/README.md +++ b/src/aipass/ai_mail/README.md @@ -5,11 +5,11 @@ **Purpose:** Inter-agent messaging for AIPass. File-based email system that lets agents send, receive, and process messages using `@branch` addresses. No SMTP, no external services — just JSON files and symbolic routing. **Module:** `aipass.ai_mail` **Created:** 2025-11-08 -**Last Updated:** 2026-04-22 +**Last Updated:** 2026-05-16 --- -**Status:** Operational | **Seedgo:** 100% (34/34) | **Tests:** 355 pass | **Battle Tested:** S62 +**Status:** Operational | **Seedgo:** 99% | **Tests:** 712 pass ## Commands @@ -149,25 +149,37 @@ ai_mail/ │ ├── paths.py # Shared find_repo_root() utility │ ├── notify.py # Desktop notifications (dbus direct) │ └── central_writer.py # Central inbox stats aggregation -└── tests/ # 355 tests across 16 test files +└── tests/ # 712 tests across 29 test files ├── conftest.py # Shared fixtures (mock_logger, mock_json_handler) - ├── test_daemon.py # Daemon config, state, kill switch, dispatch check - ├── test_dispatch_monitor.py # Monitor safety features, env stripping - ├── test_dispatch_status.py # Log I/O, age calculation - ├── test_dispatch_watchdog.py # Watchdog auto-spawn - ├── test_wake.py # Branch resolution, PID checks, lock files - ├── test_wake_blocklist.py # Wake protection for @devpulse - ├── test_delivery.py # Inbox migration, private branches, pipeline - ├── test_send_identity.py # Sender identity chain (36 tests) - ├── test_user_paths.py # Mailbox path resolution (13 tests) - ├── test_contacts.py # Address book operations - ├── test_inbox_ops.py # Inbox loading + migration - ├── test_registry_read.py # Registry parsing + branch lookup ├── test_central_writer.py # Central stats aggregation ├── test_cli_routing.py # CLI routing + help/version + ├── test_close_ops.py # Batch close operations + ├── test_contacts.py # Address book operations + ├── test_create.py # Email file creation + ├── test_daemon.py # Daemon config, state, kill switch, dispatch check + ├── test_delivery.py # Inbox migration, private branches, pipeline + ├── test_dispatch_module.py # Dispatch module orchestration + ├── test_dispatch_monitor.py # Monitor safety features, env stripping + ├── test_dispatch_status.py # Log I/O, age calculation + ├── test_email_module.py # Email module orchestration + ├── test_error_dispatch.py # Error reporting via email + ├── test_footer.py # Email footer rendering + ├── test_format.py # Display formatting + ├── test_header.py # Dispatch header injection + ├── test_inbox_cleanup.py # Mark read/opened/closed + archive + ├── test_inbox_ops.py # Inbox loading + migration ├── test_json_handler.py # JSON I/O helpers + ├── test_misc_handlers.py # Misc handler utilities ├── test_notify.py # Desktop notification dbus calls - └── test_paths.py # find_repo_root() utility + ├── test_paths.py # find_repo_root() utility + ├── test_purge.py # Auto-purge sent/deleted folders + ├── test_registry_read.py # Registry parsing + branch lookup + ├── test_reply.py # Reply + auto-close original + ├── test_send_helpers.py # Send helper utilities + ├── test_send_identity.py # Sender identity chain + ├── test_user_paths.py # Mailbox path resolution + ├── test_wake.py # Branch resolution, PID checks, lock files + └── test_wake_blocklist.py # Wake protection for @devpulse ``` ## Integration Points diff --git a/src/aipass/ai_mail/apps/handlers/dispatch/wake.py b/src/aipass/ai_mail/apps/handlers/dispatch/wake.py index 917179aa..dee45136 100644 --- a/src/aipass/ai_mail/apps/handlers/dispatch/wake.py +++ b/src/aipass/ai_mail/apps/handlers/dispatch/wake.py @@ -69,7 +69,7 @@ MODEL_MAP = { "opus": "claude-opus-4-6", "haiku": "claude-haiku-4-5-20251001", } -DEFAULT_MODEL = "opus" +DEFAULT_MODEL = "sonnet" # Branches that cannot be woken manually by cross-branch drone commands. # Dispatch-send path (dispatch.py._orchestrate_dispatch_send) bypasses this check. @@ -556,7 +556,7 @@ if __name__ == "__main__": print(" --fresh Start fresh session (claude -p) instead of resuming (claude -c -p)") print(" --auto Respect autonomous_pause (used by daemon). Manual wake ignores it.") print(" --sender @branch Set return-to-sender for bounce emails (default: @devpulse)") - print(" --model NAME Model to use: opus (default), sonnet, haiku, or full model ID") + print(" --model NAME Model to use: sonnet (default), opus, haiku, or full model ID") print() print("Output: Step-by-step status of the dispatch pipeline:") print(" ✅ resolve → @branch found at /path/to/branch") diff --git a/src/aipass/ai_mail/tests/test_wake.py b/src/aipass/ai_mail/tests/test_wake.py index 2ce16c40..e7ba6fe8 100644 --- a/src/aipass/ai_mail/tests/test_wake.py +++ b/src/aipass/ai_mail/tests/test_wake.py @@ -460,9 +460,9 @@ def test_model_map_has_expected_entries(): assert "claude-opus-4-6" in MODEL_MAP["opus"] -def test_default_model_is_opus(): - """Default model should be opus.""" - assert DEFAULT_MODEL == "opus" +def test_default_model_is_sonnet(): + """Default model should be sonnet.""" + assert DEFAULT_MODEL == "sonnet" def test_model_map_values_are_full_ids(): diff --git a/src/aipass/devpulse/docs/codex-setup.md b/src/aipass/devpulse/docs/codex-setup.md new file mode 100644 index 00000000..2048a918 --- /dev/null +++ b/src/aipass/devpulse/docs/codex-setup.md @@ -0,0 +1,92 @@ +# Codex CLI Integration + +Status: **Working** (S159, 2026-05-16) + +## Overview + +OpenAI Codex CLI runs AIPass with the same hook-driven identity system as Claude Code. Same prompts, same drone commands, same branch awareness. + +- CLI: `codex-cli 0.130.0` +- Model: gpt-5.5 (free tier) +- System prompt: `AGENTS.md` (equivalent to `CLAUDE.md`) +- Hooks: 3 active (SessionStart, UserPromptSubmit, PreToolUse) + +## How It Works + +Codex hooks use the same JSON stdin/stdout protocol as Claude Code. The hook scripts live in `.codex/hooks/` at project level. User-level wrappers in `~/.codex/hooks/` hardcode CWD to devpulse (Codex doesn't reliably set CWD for hook commands). + +``` +~/.codex/config.toml # User config — hooks registered here +~/.codex/hooks/ # Wrapper scripts (anchor CWD) +.codex/hooks.json # Project-level hooks (not actively used — discovery unreliable) +.codex/hooks/ # Actual hook logic +.codex/skills/ # /memo, /prep skills +AGENTS.md # System prompt (loaded hierarchically, 32KB max) +``` + +## Hooks + +| Event | Script | Purpose | +|-------|--------|---------| +| SessionStart | `session_start_identity.py` | Loads global prompt + branch passport + local prompt | +| UserPromptSubmit | `prompt_inject.py` | Per-turn: current time, branch identity, email count | +| PreToolUse | `pre_edit_gate.py` | Blocks edits to passport.json, registry.json, setup.sh | + +## Running + +```bash +# Interactive (full access) +codex --dangerously-bypass-approvals-and-sandbox + +# Headless one-shot +codex --dangerously-bypass-approvals-and-sandbox exec "your prompt" + +# Sandboxed (drone logs will error but commands still work) +codex exec "your prompt" +``` + +## Config — ~/.codex/config.toml + +```toml +[features] +hooks = true + +[hooks] +SessionStart = [{ hooks = [{ type = "command", command = "python3 /home/patrick/.codex/hooks/aipass_session_start_wrapper.py", timeout = 10 }] }] +UserPromptSubmit = [{ hooks = [{ type = "command", command = "python3 /home/patrick/.codex/hooks/aipass_prompt_wrapper.py", timeout = 10 }] }] +PreToolUse = [{ matcher = "^(write_file|edit_file|patch)$", hooks = [{ type = "command", command = "python3 /home/patrick/.codex/hooks/aipass_pre_edit_gate_wrapper.py", timeout = 5 }] }] +``` + +## Known Issues + +- **Sandbox vs drone logging:** Default `workspace-write` sandbox blocks drone's prax/trigger/json_handler log writes (they target paths outside workdir). Commands still execute and return results — just noisy stderr. Fix: use `--dangerously-bypass-approvals-and-sandbox`. +- **Hook CWD unreliable:** Codex doesn't set hook command CWD to the session workdir. Wrappers in `~/.codex/hooks/` hardcode `os.chdir()` as workaround. +- **`drone @fs` doesn't exist:** Codex sometimes invents this command when following AGENTS.md "Read" instructions. Updated AGENTS.md to say "Read (cat)" to clarify. +- **Project hooks.json not auto-discovered:** Despite `.codex/hooks.json` existing at project level with trusted hashes, Codex didn't reliably fire them. Moved all hook registration to `~/.codex/config.toml`. +- **Free tier rate limits:** gpt-5.5 free tier. May hit limits under heavy use. + +## History + +- **2026-04-05:** DPLAN-0094 through DPLAN-0097 created. Research + Docker proof-of-concept. +- **2026-04-28:** Hook scripts written, project `.codex/` directory scaffolded. +- **2026-05-15:** Codex tested interactively. Hooks wired but double-firing (project + user level). Trust/review gate discovered. Wrapper approach proven. Prompts received. +- **2026-05-16 (S159):** Cleaned up double-firing. Wired SessionStart + PreToolUse into config.toml. Removed stale trust entries. Verified end-to-end: identity loads, drone works, inbox checks, STATUS recognized. Full bypass mode clean. + +## Differences from Claude Code + +| Feature | Claude Code | Codex | +|---------|-------------|-------| +| System prompt | CLAUDE.md | AGENTS.md (hierarchical, concatenates all levels) | +| Override file | None | AGENTS.override.md (per-user, not committed) | +| Hooks config | Embedded in settings.json | Separate config.toml + hooks.json | +| Hook events | 6 (incl. PreCompact, Notification) | 5 (incl. SessionStart) | +| Sandbox bypass | `--dangerously-skip-permissions` | `--dangerously-bypass-approvals-and-sandbox` | +| File reading | Read tool (built-in) | `cat`/`sed` via exec_command | +| Model | claude-opus-4-6[1m] | gpt-5.5 | +| Max prompt | No hard limit | 32KB AGENTS.md (hooks inject separately) | + +## Next Steps + +- Gemini CLI integration (same pattern — `.gemini/` directory exists) +- Seedgo ignore pattern for files outside branch tree (false positives on `~/.codex/hooks/`) +- Consider: can Codex be used as a dispatch target? (different model for different tasks) diff --git a/src/aipass/drone/README.md b/src/aipass/drone/README.md index 6db1fbd3..e7535178 100644 --- a/src/aipass/drone/README.md +++ b/src/aipass/drone/README.md @@ -186,7 +186,7 @@ drone/ │ └── hook_sounds_plugin.py # Toggle notification sounds on/off ├── docs/ # Public documentation ├── docs.local/ # Investigation reports and policies -└── tests/ # 704 tests across 21 test files +└── tests/ # 729 tests across 22 test files ``` ### Routing Flow @@ -315,11 +315,11 @@ Tip: set AIPASS_HOME=/path/to/AIPass to access all branches ## Testing -704 tests across 21 test files, covering all layers: +729 tests across 22 test files, covering all layers: | Area | Files | Tests | |------|-------|-------| -| Core routing | `test_resolver.py`, `test_router.py`, `test_activation.py` | ~128 | +| Core routing | `test_resolver.py`, `test_router.py`, `test_activation.py`, `test_registry.py` | ~148 | | Git operations | `test_git_module.py`, `test_system_pr.py`, `test_devpulse_plugins.py`, `test_git_access.py` | ~150 | | Handlers | `test_executor.py`, `test_registry_handler.py`, `test_discovery.py` | ~99 | | Infrastructure | `test_generic_adapter.py`, `test_module_registry.py`, `test_config.py` | ~66 | @@ -338,7 +338,7 @@ Run tests: `cd src/aipass/drone && python -m pytest tests/ -q` --- -**Seedgo:** 99% | **Tests:** 704 pass, 4 skip | **Last Updated:** 2026-05-12 +**Seedgo:** 99% | **Tests:** 729 pass, 4 skip | **Last Updated:** 2026-05-16 --- [← Back to AIPass](../../../README.md) diff --git a/src/aipass/flow/README.md b/src/aipass/flow/README.md index dacf794f..fb09f750 100644 --- a/src/aipass/flow/README.md +++ b/src/aipass/flow/README.md @@ -6,7 +6,7 @@ **Module:** `aipass.flow` **Version:** 2.2.1 **Created:** 2025-11-15 -**Last Updated:** 2026-04-22 +**Last Updated:** 2026-05-16 --- @@ -98,7 +98,7 @@ flow/ │ ├── team_dev_plans/ # TDPLAN templates (default) │ └── audit_plans/ # APLAN templates (default) ├── flow_json/ # Per-type registries + template_registry.json -├── tests/ # 423 tests, 17 test files +├── tests/ # 733 tests, 24 test files └── .archive/ # Archived legacy code ``` @@ -166,9 +166,9 @@ Vector verification displays in console: "Vectorized: N chunks in chroma" or "NO ## Quality - **Seedgo:** 100% (33/33 standards) -- **Tests:** 423 passed, 83/87 public functions tested (95%) +- **Tests:** 733 passed, 87/87 public functions tested (100%) - **Source files:** 39 tracked by seedgo -- **Last audit:** 2026-04-22 +- **Last audit:** 2026-05-14 - **Battle test:** 16/16 commands pass via drone CLI (2026-04-22) ### Known Issues @@ -178,7 +178,7 @@ Vector verification displays in console: "Vectorized: N chunks in chroma" or "NO --- -*Last Updated: 2026-04-22* +*Last Updated: 2026-05-16* --- [← Back to AIPass](../../../README.md) diff --git a/src/aipass/prax/README.md b/src/aipass/prax/README.md index 4c7ae120..02b67640 100644 --- a/src/aipass/prax/README.md +++ b/src/aipass/prax/README.md @@ -5,7 +5,7 @@ **Purpose:** System-wide logging, real-time monitoring, and dashboard infrastructure for AIPass. **Module:** `aipass.prax` **Version:** 2.0.0 -**Last Updated:** 2026-04-22 +**Last Updated:** 2026-05-16 --- @@ -143,7 +143,7 @@ prax/ │ └── watcher/ # Background system watchers ├── prax_json/ # Auto-created per-module config/data/log files ├── templates/ # Dashboard template schema (DASHBOARD.template.json) -└── tests/ # 911 tests across 16 files +└── tests/ # 912 tests across 18 files ``` ### Design Pattern @@ -171,28 +171,29 @@ drone @prax monitor run ## Tests -375 tests across 16 files, covering all major components: +912 tests across 18 files, covering all major components: | Test File | Tests | Coverage | |-----------|-------|----------| +| test_filesystem_handler.py | 172 | Codex/Gemini/Claude session adapters | +| test_monitoring_handlers.py | 139 | Branch detector, log watcher, event stream | +| test_operations.py | 99 | Dashboard operations | +| test_log_watcher.py | 82 | Log file tailing | +| test_monitor_module.py | 74 | Monitor commands | +| test_logging_handlers.py | 41 | Logging setup, rotation, override | | test_logger_module.py | 40 | Logger init, routing, lifecycle | | test_monitoring_filters.py | 39 | Event filtering rules | | test_config.py | 38 | Config loading, path resolution | | test_event_queue.py | 35 | Thread-safe event buffering | -| test_log_watcher.py | 35 | Log file tailing | | test_logging.py | 33 | Core logging system | | test_discovery.py | 25 | Module scanning | -| test_operations.py | 24 | Dashboard operations | | test_watcher.py | 23 | File watcher behavior | | test_registry.py | 22 | Module registry | | test_json_handler.py | 18 | JSON auto-creation | | test_central.py | 14 | Central reader | -| test_monitor_module.py | 11 | Monitor commands | | test_log_audit.py | 10 | Log audit | | test_status.py | 8 | Status commands | -90/136 public functions tested (66%). - ## Integration Points ### Depends On @@ -214,7 +215,7 @@ drone @prax monitor run --- -*Last Updated: 2026-04-22* +*Last Updated: 2026-05-16* --- [← Back to AIPass](../../../README.md) diff --git a/src/aipass/seedgo/README.md b/src/aipass/seedgo/README.md index 8c835e61..e5cc0f21 100644 --- a/src/aipass/seedgo/README.md +++ b/src/aipass/seedgo/README.md @@ -2,7 +2,7 @@ # Seedgo -**Purpose:** Standards compliance platform for AIPass. Audits all 11 core agents against 34 code standards + diagnostics, manages bypass rules, runs proof certification, owns the hook system, and provides per-file checklist validation consumed by auto-fix hooks. +**Purpose:** Standards compliance platform for AIPass. Audits all 11 core agents against 35 code standards + diagnostics, manages bypass rules, runs proof certification, owns the hook system, and provides per-file checklist validation consumed by auto-fix hooks. **Module:** `aipass.seedgo` **Version:** 2.0.0 **Created:** 2026-03-05 @@ -12,7 +12,7 @@ ## Overview ### What I Do -- Audit all 11 core agents against 34 code standards + diagnostics (architecture, CLI, imports, logging, naming, silent catch, deep nesting, etc.) +- Audit all 11 core agents against 35 code standards + diagnostics (architecture, CLI, imports, logging, naming, silent catch, deep nesting, windows compat, etc.) - Score files 0-100 per standard and report violations with actionable details - Manage bypass rules (`.seedgo/bypass.json`) for deliberate exceptions - Run pyright diagnostics across branches for type error detection @@ -41,12 +41,12 @@ drone @seedgo --help # Full command listing drone @seedgo --version # Version string # Audit -drone @seedgo audit aipass # Audit all 11 agents (34 standards + diagnostics) +drone @seedgo audit aipass # Audit all 11 agents (35 standards + diagnostics) drone @seedgo audit aipass @flow # Audit single branch drone @seedgo audit inbox-ids # Inbox message-ID validation # Standards Query -drone @seedgo standards_query aipass_standards # List all 33 standards in pack +drone @seedgo standards_query aipass_standards # List all 35 standards in pack drone @seedgo standards_query aipass_standards cli # Show specific standard content # Per-file Check @@ -112,7 +112,7 @@ seedgo/ │ │ ├── readme_update.py # README generation module │ │ └── test_map.py # Custom function test coverage mapping │ └── handlers/ # 11 handler directories -│ ├── aipass_standards/ # 34 checker standards (67 files) +│ ├── aipass_standards/ # 35 checker standards (108 files) │ │ ├── *_check.py # Checker implementations (score 0-100) │ │ ├── *_content.py # Queryable standard content │ │ └── *.md # Standard documentation @@ -157,7 +157,7 @@ seedgo/ --- -## The 34 Standards +## The 35 Standards | Standard | Scope | What It Checks | |----------|-------|----------------| @@ -195,6 +195,7 @@ seedgo/ | todo | all_files | No unresolved TODO/FIXME/HACK comments | | trigger | all_files | Trigger integration patterns | | unused_function | branch_level | No unreferenced public functions | +| windows_compat | all_files | POSIX-only APIs guarded for Windows compatibility | --- @@ -221,10 +222,9 @@ The `bridge` module (`drone @seedgo bridge install`) manages hook installation t ## Tests -- **29 test files**, **1131 tests**, all passing -- **200 public functions**, 200 tested (100% coverage) +- **39 test files**, **1192 tests**, all passing - **0 type errors** (pyright) -- Key test areas: standards audit, checklist, bypass, JSON handler, hooks (probe, track A/B/E, utility, bridge), proof, README, diagnostics, line coverage (plugin integrity, diagnostics, audit display, branch audit, architecture, checklist) +- Key test areas: standards audit, checklist, bypass, JSON handler, hooks (probe, track A/B/E, utility, bridge), proof, README, diagnostics, windows_compat, line coverage (plugin integrity, diagnostics, audit display, branch audit, architecture, checklist) --- @@ -256,16 +256,16 @@ The `bridge` module (`drone @seedgo bridge install`) manages hook installation t --- -## Latest Audit (2026-04-26) +## Latest Audit (2026-05-16) -- **Seedgo score:** 100% (34/34 + diagnostics) — all standards green -- **Tests:** 1131 passed, 0 failed, 0 skipped -- **Coverage:** 200 public functions, 200 tested (100%) +- **Seedgo score:** 99% (35/35 + diagnostics) — architecture (template dirs not in scope) + modules (hooks.py 608 lines, split needed) +- **Tests:** 1192 passed, 0 failed, 0 skipped - **Type errors:** 0 +- **Custom test coverage:** 203/205 public functions tested --- -**Last Updated:** 2026-04-26 +**Last Updated:** 2026-05-16 --- [<- Back to AIPass](../../../README.md) diff --git a/src/aipass/spawn/README.md b/src/aipass/spawn/README.md index 1c742e0c..1deddcac 100644 --- a/src/aipass/spawn/README.md +++ b/src/aipass/spawn/README.md @@ -125,7 +125,8 @@ spawn/ │ │ ├── delete.py # Delete CLI — archive + deregister │ │ ├── sync_registry.py # Registry repair CLI │ │ ├── sync_templates.py # Template sync CLI -│ │ └── regenerate_registry.py # Template registry regeneration CLI +│ │ ├── regenerate_registry.py # Template registry regeneration CLI +│ │ └── repair.py # Project structure repair CLI (scan, relocate, clean) │ └── handlers/ │ ├── class_registry.py # Citizen class → template directory mapping │ ├── file_ops.py # Template copy, path renaming, registry regeneration @@ -135,19 +136,20 @@ spawn/ │ ├── meta_ops.py # Branch metadata generation, hash computation │ ├── change_detection.py # ID-based file diff between template and branch │ ├── reconcile.py # Registry/filesystem reconciliation -│ ├── passport_ops.py # Passport grant implementation +│ ├── passport_ops.py # Passport grant implementation │ ├── update_ops.py # Update workflow (Phase 0 snapshot → detect → execute) │ ├── delete_ops.py # Delete workflow (resolve → archive → cleanup → deregister) │ ├── sync_registry_ops.py # Registry sync (CWD-aware, external project support) │ ├── sync_templates_ops.py # Template sync implementation │ ├── regenerate_registry_ops.py # Template registry hash regeneration +│ ├── repair_ops.py # Project structure repair (scan, relocate, clean-pollution) │ ├── json_ops.py # JSON deep merge, backup utilities │ └── json/ │ └── json_handler.py # Standard JSON I/O, operation logging, 7 API functions ├── templates/ │ ├── builder/ # Full scaffold template (45 files, 24 dirs) │ └── birthright/ # Minimal template -├── tests/ # 14 test files, 316 tests +├── tests/ # 14 test files, 318 tests ├── spawn_json/ # JSON tracking directory ├── tools/ # Branch verification utilities ├── docs/ # Documentation @@ -198,7 +200,7 @@ spawn/ ## Tests -**316 tests | 0 skipped | 0 failed** across 14 test files: +**318 tests | 0 skipped | 0 failed** across 14 test files: | File | Focus | |------|-------| @@ -212,6 +214,7 @@ spawn/ | `test_cli_routing.py` | Command routing and argument parsing | | `test_contracts.py` | Handler contracts and interface compliance | | `test_spawn.py` | Basic CLI routing and help | +| `test_repair.py` | Project structure repair (scan, relocate, clean-pollution) | | `test_error_resilience.py` | Error handling and edge cases | | `conftest.py` | Fixtures: mock templates, registry protection | @@ -244,14 +247,11 @@ spawn/ ## Metrics -- **Seedgo:** 100% (34/34) -- **Tests:** 253 passed, 0 skipped, 0 failed -- **Module coverage:** 23/23 (100%) +- **Tests:** 318 passed, 0 skipped, 0 failed - **Template registry:** 45 files, 24 dirs (builder) -- **Battle test:** 17/17 commands pass (2026-04-22) --- -*Last Updated: 2026-05-15* +*Last Updated: 2026-05-16* [← Back to AIPass](../../../README.md) diff --git a/src/aipass/spawn/templates/builder/.spawn/.template_registry.json b/src/aipass/spawn/templates/builder/.spawn/.template_registry.json index 609fee3f..0db1ac23 100644 --- a/src/aipass/spawn/templates/builder/.spawn/.template_registry.json +++ b/src/aipass/spawn/templates/builder/.spawn/.template_registry.json @@ -1,7 +1,7 @@ { "metadata": { "version": "1.0.0", - "last_updated": "2026-05-15", + "last_updated": "2026-05-16", "description": "Template file tracking registry for ID-based updates" }, "files": { diff --git a/src/aipass/trigger/README.md b/src/aipass/trigger/README.md index a96723d3..41a94bf8 100644 --- a/src/aipass/trigger/README.md +++ b/src/aipass/trigger/README.md @@ -5,7 +5,7 @@ **Purpose:** Event bus and error dispatch for AIPass. Branches fire events, registered handlers react. Medic watches logs for errors, fingerprints them, gates dispatch through an 8-stage pipeline, and notifies the responsible branch. **Module:** `aipass.trigger` **Version:** 2.2.0 -**Last Updated:** 2026-05-02 +**Last Updated:** 2026-05-16 ## Commands @@ -161,7 +161,7 @@ trigger/ │ │ └── pr_status_sync.py # PR → prax status sync │ └── watchers/ │ └── log_watcher.py # System log watcher (system_logs/ dir) -├── tests/ # 367 tests across 12 modules +├── tests/ # 551 tests across 18 modules ├── trigger_json/ # Runtime state files │ ├── trigger_config.json # Medic state, muted branches │ ├── error_registry.json # All tracked errors @@ -189,21 +189,21 @@ trigger/ ## Testing -367 tests across 12 test modules, all passing. Coverage: 55/76 public functions (72%). +551 tests across 18 test modules, all passing. Coverage: 74/74 public functions (100%). ```bash cd src/aipass/trigger && pytest # Run all tests ``` -Test files: `test_core`, `test_errors`, `test_medic`, `test_error_registry`, `test_error_reporter`, `test_medic_state`, `test_log_watcher`, `test_watchers_log_watcher`, `test_branch_log_events`, `test_log_events`, `test_json_handler`, `test_pr_status_sync` +Test files: `test_core`, `test_errors`, `test_medic`, `test_error_registry`, `test_error_reporter`, `test_medic_state`, `test_log_watcher`, `test_watchers_log_watcher`, `test_branch_log_events`, `test_log_events`, `test_json_handler`, `test_pr_status_sync`, `test_error_detected`, `test_event_handlers`, `test_log_watcher_service`, `test_plan_file_handler`, `test_startup_handler`, `test_trigger_entry` ## Compliance -Seedgo: 100% (34/34 standards). Zero type errors. All categories at 100%. +Seedgo: 99%. Zero type errors. All core categories at 100%. --- -*Last Updated: 2026-04-22* +*Last Updated: 2026-05-16* --- [← Back to AIPass](../../../README.md)