docs: update 7 branch READMEs with accurate state + switch dispatch default to sonnet + codex setup + gitignore memory_pool

This commit is contained in:
AIOSAI
2026-05-16 16:41:02 -07:00
parent 42e0353043
commit 482f4e7b06
13 changed files with 179 additions and 71 deletions
+2
View File
@@ -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
+3 -2
View File
@@ -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.
+28 -16
View File
@@ -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
@@ -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")
+3 -3
View File
@@ -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():
+92
View File
@@ -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)
+4 -4
View File
@@ -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)
+5 -5
View File
@@ -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)
+10 -9
View File
@@ -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)
+14 -14
View File
@@ -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)
+9 -9
View File
@@ -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)
@@ -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": {
+6 -6
View File
@@ -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)