Commit Graph
486 Commits
Author SHA1 Message Date
905f2a45fb feat(drone): fix pr_handler: scope commit to branch_dir pathspec — prevents concurrent-PR index contamination (FPLAN-0190 Task A) (#351)
* feat(devpulse): watchdog: breadcrumb on exit + default timeout 1800s to 600s (FPLAN-0189)

Co-Authored-By: @devpulse <devpulse@aipass>

* feat(drone): fix pr_handler: scope commit to branch_dir pathspec — prevents concurrent-PR index contamination (FPLAN-0190 Task A)

Co-Authored-By: @drone <drone@aipass>

---------

Co-authored-by: @devpulse <devpulse@aipass>
Co-authored-by: @drone <drone@aipass>
2026-04-20 11:24:33 -07:00
c941c3d6ac fix(setup): make setup.sh self-sufficient on macOS (no admin required) (#354)
Fresh-install testing on macOS 12 Intel surfaced five friction points that
blocked or silently broke installation for users without admin rights.
All fixes are Mac-only, gated behind a new IS_MACOS flag. Linux and
Windows paths are untouched. See #353 for full context.

1. Stock macOS 12 ships /usr/bin/python3 at 3.9.6; setup.sh aborts at
   the 3.10+ minimum check. Fix: probe versioned python3.10-3.13
   binaries before falling back to plain python3.

2. Homebrew auto-install is not a universal fallback. Non-admin Mac
   accounts cannot install Homebrew at all because its installer
   requires admin/sudo. Fix: add uv (astral.sh/uv) as a no-sudo,
   no-admin fallback. uv drops into ~/.local/bin via curl and downloads
   a prebuilt standalone Python 3.11 to ~/.local/share/uv/python; the
   venv is created from that.

3. macOS defaults to zsh since Catalina (2019). Writing AIPASS_HOME to
   ~/.bashrc silently fails because zsh does not source it. Fix: on
   Mac, pick ~/.zshrc (or ~/.bash_profile for bash) based on SHELL.

4. The final symlink used sudo ln -sf /usr/local/bin/drone, which
   prompts for a password on Mac and breaks entirely for non-admin
   users. Fix: on Mac, link into ~/.local/bin (user-writable, no sudo)
   and ensure it is on PATH via the profile rc.

5. HOOK_PYTHON was set to plain python3 on Unix. On Mac that resolves
   to /usr/bin/python3 (3.9.6), which cannot parse hook scripts using
   PEP 604 union syntax (X | None). Hooks silently crash on every
   prompt. Fix: on Mac, point HOOK_PYTHON at the venv python (3.11)
   that setup just built.

Tested end-to-end on a fresh clone, non-admin user, zsh, Intel: all 11
branches bootstrapped, drone CLI works, hooks fire and execute cleanly,
ai_mail delivery verified, sub-agents spawn successfully.

Refs #353

Co-authored-by: Paddy <padddypaddypaddy-boop@users.noreply.github.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 11:16:39 -07:00
AIPass 6998cc5ba7 Merge pull request #347 from AIOSAI/citizen/seedgo
feat(seedgo): fix(bypass): resolve relative registry paths in get_branch_from_path and _load_bypass_for_file — bypass.json entries silently failed for all checklist invocations because branch paths from registry are relative (src/aipass/seedgo) but were compared directly against absolute resolved file paths
2026-04-16 19:18:20 -07:00
AIOSAIand@seedgo 26f02be103 feat(seedgo): fix(bypass): resolve relative registry paths in get_branch_from_path and _load_bypass_for_file — bypass.json entries silently failed for all checklist invocations because branch paths from registry are relative (src/aipass/seedgo) but were compared directly against absolute resolved file paths
Co-Authored-By: @seedgo <seedgo@aipass>
2026-04-16 17:07:37 -07:00
AIPassand@devpulse 127b874c5f feat(system): doc(prompt): add 'run ruff before PR' habit rule to global prompt — habit not safety net, prevents silent format/lint debt from accumulating. Rationale in session S94: CI already catches drift, seedgo already audits structure. The missing piece is the agent-side habit. Culture-over-containers. (#346)
Co-authored-by: @devpulse <devpulse@aipass>
2026-04-16 15:00:39 -07:00
AIPassand@devpulse 4a402d287b feat(system): chore(lint)+chore(deps): ruff format sweep — 535 files reformatted (whitespace/line-breaks, zero behavior change) + add pytest-timeout to dev extras (was missing, tests use --timeout flag). Unblocks CI lint job which has been failing on the format-check step. (#345)
Co-authored-by: @devpulse <devpulse@aipass>
2026-04-16 14:08:23 -07:00
AIPassand@devpulse b92014a20e feat(system): fix(setup): Gemini hook install NameError — hook_python was undefined in the Gemini block (only defined in Claude block above). Pass HOOK_PYTHON through explicitly like the Claude flow does. (#344)
Co-authored-by: @devpulse <devpulse@aipass>
2026-04-16 13:57:17 -07:00
AIPassand@devpulse 8be6ac0418 feat(system): fix(setup): warn on Windows when shadowing drone installs are detected (#317 system Python pip aipass, #321 legacy npm aipass-drone scripts) — prints precise uninstall commands, doesn't auto-modify the user's system (#343)
Co-authored-by: @devpulse <devpulse@aipass>
2026-04-16 13:56:22 -07:00
AIPassand@devpulse e4a42f2186 feat(system): feat(windows): cherry-pick Windows parity fixes from #328 — watchdog ctypes (#323), dispatch monitor projects dir encoding (#324), prax atomic_write retry on PermissionError (#325), prax _WindowsSafeRotatingHandler (#318), branch_detector forward-slash normalize, memory_bank config seed (#322), PS profile wrapper (#319/#340). All Windows-only branches or no-op on Linux. 3146 tests pass, ruff zero. Closes #328 scope. Input-X credit preserved. (#342)
Co-authored-by: @devpulse <devpulse@aipass>
2026-04-16 13:41:31 -07:00
AIPassand@devpulse fd033672af feat(system): doc(drone): document Windows PowerShell @ splatting issue in drone.py — explains why bare-branch names must error and points to issue #340 for the PS wrapper fix (#341)
Co-authored-by: @devpulse <devpulse@aipass>
2026-04-16 13:25:11 -07:00
93098c5a72 feat(api+spawn): DPLAN-0133 Phase 1 (part 2/2) + Phase 2 — bridge registry, driver auto-discovery, integrations handlers (#290)
* feat(drone): add watchdog to INTERACTIVE_COMMANDS — bypass 30s capture timeout for long-running poller

Co-Authored-By: @drone <drone@aipass>

* feat(drone): fix merge_plugin: stash unstaged changes before git pull --rebase to prevent dirty-tree abort

Co-Authored-By: @drone <drone@aipass>

* feat(system): DPLAN-0133 Phase 1 (part 1/2): add gitignore rule for apps/integrations/** with README negation, plus scaffold README.md in all 10 core branches' apps/integrations/ — private integration space is now leak-proof by construction. Drivers and wrappers dropped here stay local; only README.md is tracked. See DPLAN-0133 for architecture rationale (three-layer design: @api drivers, per-branch wrappers, public generic contracts).

Co-Authored-By: @devpulse <devpulse@aipass>

* feat(spawn): DPLAN-0133 Phase 1 (part 2/2): add apps/integrations/ scaffold to builder template

Every new branch spawned via `drone @spawn create` now lands with
`apps/integrations/README.md` — the private integration space introduced
in DPLAN-0133. The README explains the three-layer architecture (api
driver → branch wrapper → public contracts) and is the only tracked file
in the folder; everything else dropped there is gitignored by the root
rule shipped in PR #289.

Changes:
- templates/builder/apps/integrations/README.md — new scaffold file
- templates/builder/.spawn/.template_registry.json — regenerated (44→45 files, 23→24 dirs)
- tests/test_citizen_classes.py — new test asserting integrations/ exists after create; added missing docstrings to 14 test methods
- .seedgo/bypass.json — added architecture + encapsulation bypasses for test_citizen_classes.py (standard test-file exemptions)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(api): DPLAN-0133 Phase 2 — bridge contract registry + driver auto-discovery + integrations handlers

Implements the @api side of the three-layer private-integration architecture
(DPLAN-0133). Branches call generic contracts; @api resolves them at runtime
to whatever private driver is registered locally.

New modules:
  apps/modules/bridge.py             — module-level dict registry (register/resolve/list_contracts/clear)
  apps/modules/registry.py           — auto-discovery walker for apps/integrations/*/driver.py
  apps/modules/integrations_manager.py — drone @api integrations {list,call} command routing
  apps/handlers/integrations/list.py — handler: log + return contract listing
  apps/handlers/integrations/call.py — handler: invoke driver, return result dict
  apps/integrations/testcontract/driver.py — canary driver (contract "test" → "pong", gitignored)
  tests/test_integrations.py         — 17 tests (bridge, registry, fetch_contracts, call_contract)

All 306 existing tests remain green. Empty integrations/ exits 0 cleanly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(api): integrations_manager — unknown subcommand exits 1 + fix doubled Try: prefix

Found via stress testing DPLAN-0133 Phase 2:
- `drone @api integrations foobar` returned exit 0 (success) instead of 1
- Error message showed "Try: Try: list, call" (doubled prefix)

Two-line fix: suggestion string drops "Try:" prefix (error() adds it),
return True → sys.exit(1) for proper non-zero exit.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: @drone <drone@aipass>
Co-authored-by: @devpulse <devpulse@aipass>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 13:24:25 -07:00
AIPassand@devpulse fbdef76463 feat(system): fix(drone): AIPASS_HOME fallback in _cwd_has_registry — lets drone find registry when invoked from external projects / global usage. Additive only. Cherry-picked from #328 after testing. (Rejected #328's bare-branch auto-route which broke the @ contract.) (#339)
Co-authored-by: @devpulse <devpulse@aipass>
2026-04-16 13:21:06 -07:00
AIPass 880302a172 Merge pull request #331 from AIOSAI/system/devpulse-fixwindows-ci-activate-venv-in-verify-step-so-dron
feat(system): fix(windows-ci): activate venv in Verify step so drone binary is on PATH

PR #330 fixed the pip bootstrap (ensurepip error-swallowing in setup.sh). With that fix working, the Verify step in windows-test.yml now fails at 'drone: command not found' (exit 127). Root cause: each CI step spawns a fresh shell, so the venv activation from setup.sh doesn't carry to Verify. drone lives at .venv/Scripts/drone.exe which isn't on the default PATH.

Fix: prepend 'source .venv/Scripts/activate' to the Verify step so drone is findable.

Stacked on PR #330 conceptually — both fixes needed for windows-test.yml to actually pass.
2026-04-16 13:08:27 -07:00
AIPassand@devpulse 7004fe48f5 feat(system): doc(prompt): strengthen git-is-drone-only rule — if drone can't fix it, don't improvise with raw git. Ask the user. (Lesson from S94: tried git reset/push for stacked-PR-post-squash recovery, got sandbox-denied, drone system-pr handled it cleanly in one command.) (#338)
Co-authored-by: @devpulse <devpulse@aipass>
2026-04-16 13:06:05 -07:00
AIPassand@devpulse 123f3af226 feat(system): chore(lint)+feat(seedgo): ruff F841+E741 cleanup (36 errors) + ruff_check as seedgo's 33rd standard — combined replacement for #334/#335/#336 invalidated by #333 squash-merge (#337)
* feat(system): chore(lint): ruff F841 cleanup — 28 unused-variable fixes (2 production dead-code removals + 26 test mock/local cleanups)

Co-Authored-By: @devpulse <devpulse@aipass>

* feat(system): chore(lint): ruff E741 cleanup — rename ambiguous 'l' to 'line' in 8 comprehensions (3 prod + 5 test)

Co-Authored-By: @devpulse <devpulse@aipass>

* feat(system): feat(seedgo): add ruff_check as 33rd standard (advisory, branch-level) — DPLAN-0137 Phase 4. Dispatched to @seedgo who built the checker + content + spec + 18 tests, but process ended before committing/replying. Opening PR on their behalf. Integration verified: drone @seedgo audit shows 'Ruff 100%' — auto-discovered, scored, non-blocking.

Co-Authored-By: @devpulse <devpulse@aipass>

---------

Co-authored-by: @devpulse <devpulse@aipass>
2026-04-16 13:03:32 -07:00
AIPassand@devpulse 73bddf2119 feat(system): fix(windows-ci): combine pip bootstrap fix + venv activation in Verify step (#332)
Combines both fixes needed to get windows-test.yml actually passing:

1. setup.sh: stop swallowing ensurepip errors (quiet + 2>/dev/null + || true was
   hiding real failures — pip was silently not installed). Add get-pip.py fallback
   and hard pip verification.

2. windows-test.yml: add 'source .venv/Scripts/activate' to Verify step. Each CI
   step gets a fresh shell — setup.sh's venv activation doesn't carry over, so
   drone wasn't on PATH in the subsequent step.

Together, these should take Windows CI from the 'silent failure every run since
creation' state to actually green. Supersedes PRs #330 and #331 which had the
fixes on separate branches (neither green alone).

Co-authored-by: @devpulse <devpulse@aipass>
2026-04-16 13:00:27 -07:00
AIPassand@devpulse e2c868084a feat(system): chore(lint): ruff auto-fix sweep — 303 errors across 178 files (F401 unused imports + F541 f-string placeholders + F811 redefined); restored report_error re-export + added logger call in errors.py (#333)
* feat(system): fix(windows-ci): combine pip bootstrap fix + venv activation in Verify step

Combines both fixes needed to get windows-test.yml actually passing:

1. setup.sh: stop swallowing ensurepip errors (quiet + 2>/dev/null + || true was
   hiding real failures — pip was silently not installed). Add get-pip.py fallback
   and hard pip verification.

2. windows-test.yml: add 'source .venv/Scripts/activate' to Verify step. Each CI
   step gets a fresh shell — setup.sh's venv activation doesn't carry over, so
   drone wasn't on PATH in the subsequent step.

Together, these should take Windows CI from the 'silent failure every run since
creation' state to actually green. Supersedes PRs #330 and #331 which had the
fixes on separate branches (neither green alone).

Co-Authored-By: @devpulse <devpulse@aipass>

* feat(system): chore(lint): ruff auto-fix sweep — 303 errors across 178 files (F401 unused imports + F541 f-string placeholders + F811 redefined); restored report_error re-export + added logger call in errors.py

Co-Authored-By: @devpulse <devpulse@aipass>

---------

Co-authored-by: @devpulse <devpulse@aipass>
2026-04-16 12:58:53 -07:00
AIOSAIand@devpulse b25fc5c2fd feat(system): fix(windows-ci): activate venv in Verify step so drone binary is on PATH
PR #330 fixed the pip bootstrap (ensurepip error-swallowing in setup.sh). With that fix working, the Verify step in windows-test.yml now fails at 'drone: command not found' (exit 127). Root cause: each CI step spawns a fresh shell, so the venv activation from setup.sh doesn't carry to Verify. drone lives at .venv/Scripts/drone.exe which isn't on the default PATH.

Fix: prepend 'source .venv/Scripts/activate' to the Verify step so drone is findable.

Stacked on PR #330 conceptually — both fixes needed for windows-test.yml to actually pass.

Co-Authored-By: @devpulse <devpulse@aipass>
2026-04-16 11:17:04 -07:00
AIOSAIand@devpulse 96c68f0bc1 feat(system): fix(windows-ci): stop swallowing ensurepip errors in setup.sh, add get-pip.py fallback and hard verify
Every Windows CI run since windows-test.yml was created has failed silently on the same line: pip missing after venv creation. Root cause: ensurepip invocation was wrapped with --quiet, 2>/dev/null, and || true — three layers of error-hiding. ensurepip was running, failing silently, and the script continued to pip install which exploded with 'No module named pip'.

Fix removes the error-suppression so real errors surface, adds a get-pip.py fallback if ensurepip whiffs, and hard-verifies pip exists before continuing. If this fix itself fails on CI, we'll see the actual error for the first time.

Co-Authored-By: @devpulse <devpulse@aipass>
2026-04-16 11:13:17 -07:00
AIPassand@devpulse bf1f37bf41 feat(system): feat(setup): auto-configure AIPASS_HOME + PATH for cross-project access — all AIPass services (seedgo, flow, ai_mail, etc.) now available from any project after setup. Linux: AIPASS_HOME added to .bashrc. Windows: AIPASS_HOME + PATH + PYTHONUTF8 added to .bash_profile. Claude Code settings.json gets AIPASS_HOME in env block so dispatched agents inherit it. (#314)
Co-authored-by: @devpulse <devpulse@aipass>
2026-04-16 01:07:37 -07:00
AIPass 8ffbb21cde Merge pull request #312 from AIOSAI/system/devpulse-fixwindows-hooks-use-venv-python-not-python3-307-i
feat(system): fix(windows): hooks use venv python not python3 (#307), identity_injector reads identity.name fallback (#309), Path.rename→os.replace for Windows (#310), RotatingFileHandler catches PermissionError on rotation (#311)
2026-04-16 01:01:06 -07:00
AIOSAIand@devpulse fb087b0e01 feat(system): fix(windows): hooks use venv python not python3 (#307), identity_injector reads identity.name fallback (#309), Path.rename→os.replace for Windows (#310), RotatingFileHandler catches PermissionError on rotation (#311)
Co-Authored-By: @devpulse <devpulse@aipass>
2026-04-16 00:53:18 -07:00
AIPassand@devpulse e1ec726da9 feat(system): feat: ship /memo and /prep slash commands in .claude/commands/ — available on every clone, no per-user setup needed. Previously only existed in developer's personal ~/.claude/commands/. (#308)
Co-authored-by: @devpulse <devpulse@aipass>
2026-04-16 00:38:37 -07:00
AIPass 28841b605d Merge pull request #303 from AIOSAI/system/devpulse-ci-add-windows-setup-test-workflow-runs-setupsh-dr
feat(system): ci: add Windows setup test workflow — runs setup.sh + drone CLI verification on windows-latest GitHub Actions runner. Triggers on changes to setup.sh, handler __init__.py files, cli.py, or pyproject.toml. Closes the 'we never tested on Windows' gap.
2026-04-16 00:28:06 -07:00
AIPassand@devpulse d8d5afdd9d feat(system): fix(windows): SIGPIPE guard in flow.py (#301) + fcntl platform guards in trigger/config.py and watchdog/registry.py (#302) — lazy import fcntl on Unix only, no-op on Windows. inbox_lock.py already cross-platform (msvcrt). ai_mail.py already guarded (hasattr check). (#305)
* feat(system): ci: add Windows setup test workflow — runs setup.sh + drone CLI verification on windows-latest GitHub Actions runner. Triggers on changes to setup.sh, handler __init__.py files, cli.py, or pyproject.toml. Closes the 'we never tested on Windows' gap.

Co-Authored-By: @devpulse <devpulse@aipass>

* feat(system): fix(windows): SIGPIPE guard in flow.py (#301) + fcntl platform guards in trigger/config.py and watchdog/registry.py (#302) — lazy import fcntl on Unix only, no-op on Windows. inbox_lock.py already cross-platform (msvcrt). ai_mail.py already guarded (hasattr check).

Co-Authored-By: @devpulse <devpulse@aipass>

---------

Co-authored-by: @devpulse <devpulse@aipass>
2026-04-16 00:06:14 -07:00
AIPassand@devpulse 504df48e82 feat(system): fix(windows): handler guard backslash path fix — all 11 __init__.py files (#304). caller_file.replace('\\', '/') normalizes Windows paths before the same-branch check. This is the actual fix for #293 which was incorrectly closed. drone is completely broken on Windows without this. (#306)
* feat(system): ci: add Windows setup test workflow — runs setup.sh + drone CLI verification on windows-latest GitHub Actions runner. Triggers on changes to setup.sh, handler __init__.py files, cli.py, or pyproject.toml. Closes the 'we never tested on Windows' gap.

Co-Authored-By: @devpulse <devpulse@aipass>

* feat(system): fix(windows): SIGPIPE guard in flow.py (#301) + fcntl platform guards in trigger/config.py and watchdog/registry.py (#302) — lazy import fcntl on Unix only, no-op on Windows. inbox_lock.py already cross-platform (msvcrt). ai_mail.py already guarded (hasattr check).

Co-Authored-By: @devpulse <devpulse@aipass>

* feat(system): fix(windows): handler guard backslash path fix — all 11 __init__.py files (#304). caller_file.replace('\\', '/') normalizes Windows paths before the same-branch check. This is the actual fix for #293 which was incorrectly closed. drone is completely broken on Windows without this.

Co-Authored-By: @devpulse <devpulse@aipass>

---------

Co-authored-by: @devpulse <devpulse@aipass>
2026-04-16 00:06:02 -07:00
AIOSAIand@devpulse 458951c61f feat(system): ci: add Windows setup test workflow — runs setup.sh + drone CLI verification on windows-latest GitHub Actions runner. Triggers on changes to setup.sh, handler __init__.py files, cli.py, or pyproject.toml. Closes the 'we never tested on Windows' gap.
Co-Authored-By: @devpulse <devpulse@aipass>
2026-04-15 23:57:40 -07:00
AIPass d0391f01d6 Merge pull request #297 from AIOSAI/system/devpulse-fixwindows-pythonutf81-in-drone-clipy-for-rich-uni
feat(system): fix(windows): PYTHONUTF8=1 in drone cli.py for Rich Unicode on Windows (#296) + STATUS.md reset to stub (#291) + README.md platform honesty (Linux tested, macOS untested, Windows in progress)
2026-04-15 23:50:48 -07:00
AIPass 5a417e9a21 Merge pull request #300 from AIOSAI/system/devpulse-fixsetup-windows-10-hardening-python3-ms-store-ali
feat(system): fix(setup): Windows 10 hardening — python3 MS Store alias fallback (#292), venv file-locking workaround (#294-C), pip bootstrap via explicit venv python (#294-B/E), strip stale .venv from PATH (#294-D), PYTHONUTF8 for Rich Unicode (#296). All fixes from Input-X's Windows 10 test session. Linux path unchanged — same python3 detection, same venv flow.
2026-04-15 23:50:22 -07:00
AIOSAIand@devpulse 946a0f46f9 feat(system): fix(setup): Windows 10 hardening — python3 MS Store alias fallback (#292), venv file-locking workaround (#294-C), pip bootstrap via explicit venv python (#294-B/E), strip stale .venv from PATH (#294-D), PYTHONUTF8 for Rich Unicode (#296). All fixes from Input-X's Windows 10 test session. Linux path unchanged — same python3 detection, same venv flow.
Co-Authored-By: @devpulse <devpulse@aipass>
2026-04-15 23:44:49 -07:00
AIPassand@devpulse e1be1f685b feat(system): fix: gitignore STATUS.md + STATUS.local.md — interim fix for #291/#298. Auto-generated status files contain developer session data that shouldn't ship in the public repo. Will be un-gitignored when prax sync produces clean public output. (#299)
* feat(system): fix(windows): PYTHONUTF8=1 in drone cli.py for Rich Unicode on Windows (#296) + STATUS.md reset to stub (#291) + README.md platform honesty (Linux tested, macOS untested, Windows in progress)

Co-Authored-By: @devpulse <devpulse@aipass>

* feat(system): fix: gitignore STATUS.md + STATUS.local.md — interim fix for #291/#298. Auto-generated status files contain developer session data that shouldn't ship in the public repo. Will be un-gitignored when prax sync produces clean public output.

Co-Authored-By: @devpulse <devpulse@aipass>

---------

Co-authored-by: @devpulse <devpulse@aipass>
2026-04-15 23:38:09 -07:00
AIOSAIand@devpulse b68ed7a660 feat(system): fix(windows): PYTHONUTF8=1 in drone cli.py for Rich Unicode on Windows (#296) + STATUS.md reset to stub (#291) + README.md platform honesty (Linux tested, macOS untested, Windows in progress)
Co-Authored-By: @devpulse <devpulse@aipass>
2026-04-15 23:33:01 -07:00
AIPass 5ebb8b274e Merge pull request #295 from AIOSAI/system/devpulse-fixsetup-remove-stale-bootstrapbranch-calls-for-ba
feat(system): fix(setup): remove stale bootstrap_branch calls for backup, daemon, commons, skills — these branches were removed in S82/S87 and moved to external repos. setup.sh was creating ghost directories with .trinity/ scaffolding that confused new users and made drone route to non-existent agents. Also removed commons/skills from registry generator. Fixes #294 Part 2, relates to #291.
2026-04-15 23:25:49 -07:00
AIOSAIand@devpulse 91fb49db84 feat(system): fix(setup): remove stale bootstrap_branch calls for backup, daemon, commons, skills — these branches were removed in S82/S87 and moved to external repos. setup.sh was creating ghost directories with .trinity/ scaffolding that confused new users and made drone route to non-existent agents. Also removed commons/skills from registry generator. Fixes #294 Part 2, relates to #291.
Co-Authored-By: @devpulse <devpulse@aipass>
2026-04-15 23:23:16 -07:00
AIOSAIand@devpulse b29dc08537 feat(system): DPLAN-0133 Phase 1 (part 1/2): add gitignore rule for apps/integrations/** with README negation, plus scaffold README.md in all 10 core branches' apps/integrations/ — private integration space is now leak-proof by construction. Drivers and wrappers dropped here stay local; only README.md is tracked. See DPLAN-0133 for architecture rationale (three-layer design: @api drivers, per-branch wrappers, public generic contracts).
Co-Authored-By: @devpulse <devpulse@aipass>
2026-04-15 15:28:16 -07:00
AIOSAIand@drone e6d4998c8d feat(drone): fix merge_plugin: stash unstaged changes before git pull --rebase to prevent dirty-tree abort
Co-Authored-By: @drone <drone@aipass>
2026-04-15 15:19:32 -07:00
AIOSAI adfae9c701 Merge remote-tracking branch 'origin/main' 2026-04-15 15:18:26 -07:00
AIPassand@drone 752263bac7 feat(drone): add watchdog to INTERACTIVE_COMMANDS — bypass 30s capture timeout for long-running poller (#287)
Co-authored-by: @drone <drone@aipass>
2026-04-15 15:18:08 -07:00
AIOSAIand@drone 61a8166254 feat(drone): add watchdog to INTERACTIVE_COMMANDS — bypass 30s capture timeout for long-running poller
Co-Authored-By: @drone <drone@aipass>
2026-04-15 15:16:49 -07:00
AIPass 1d0f88d707 Merge pull request #286 from AIOSAI/citizen/drone
feat(drone): fix merge_plugin: worktree branch-cleanup failure treated as non-fatal warning
2026-04-15 11:35:45 -07:00
AIOSAIand@drone 6bbf53078f feat(drone): fix merge_plugin: worktree branch-cleanup failure treated as non-fatal warning
Co-Authored-By: @drone <drone@aipass>
2026-04-15 10:43:50 -07:00
AIPassandClaude Sonnet 4.6 b5b03433a6 fix(wake): resolve_branch falls back to caller project registry for cross-project dispatch (#285)
Email delivery to external branches (e.g. @strategy in Vera-Studio) worked
because delivery.py already had a caller-registry fallback, but wake failed
with "Branch not found" because resolve_branch() only checked AIPASS_REGISTRY.

Extracted the shared registry-walking logic into
registry/read.py::get_caller_project_branches(), then:
- wake.py resolve_branch() now checks AIPASS_REGISTRY first, then falls back
  to the caller's project registry via AIPASS_CALLER_CWD (cross-project wake)
- delivery.py _load_caller_project_branches() delegates to the shared function
  (eliminates duplicate implementation)

Fixes #283.

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 10:41:58 -07:00
AIPassand@devpulse e86269b398 feat(system): fix(feedback-template): remove email field from feedback.yml — GitHub issue forms have no private-field support, the field promised 'Never shared' but wrote the email into the public issue body (#282). Replaced with a Discussions link for private follow-up. (#284)
Co-authored-by: @devpulse <devpulse@aipass>
2026-04-15 10:05:41 -07:00
AIPass faf2d780c4 Merge pull request #280 from AIOSAI/seedgo/strip-aipl-from-public
Docs Maintenence
2026-04-15 00:55:21 -07:00
AIOSAI c4ac4343cb chore(seedgo): refresh branch prompt — missing commands + hook ownership
- Add checklist, proof, proof_query, test_map to the Commands list (were
  missing from the branch prompt even though the commands work)
- Note that proof/proof_query/test_map are not in --help output yet (TODO)
- Add Hook Ownership section: full inventory of the 8 hooks seedgo owns,
  their wiring state (including the unwired subagent_stop_gate), and the
  three-location drift. Points at DPLAN-0131 for the consolidation plan.
- Update audit line count from "all branches" to "all 11 agents (33 audit
  lines)" to match current reality
2026-04-15 00:51:15 -07:00
AIOSAI c0121665d1 chore(public): clean up out-of-scope content in public repo
- Remove a 38-line branch section from STATUS.md that belongs to an
  external private project
- Strip scattered external-project mentions from devpulse session logs in
  STATUS.md (S87/S88 entries, DPLAN-0128 T4 line, S90 prax delivery notes,
  Track G log leak references)
- Remove an injected reference from .aipass/aipass_global_prompt.md that
  pointed at an out-of-scope style guide
- Remove unverified "original convention" literature from
  .aipass/PROMPT_STYLE.md
- Remove matching external-project reference from README.md project status
- Remove matching reference from HERALD.md S74 session line
- Add policy note to .aipass/.gitignore: do not add other exceptions here
2026-04-15 00:51:01 -07:00
AIPass 19c2e65c6e Merge pull request #279 from AIOSAI/seedgo/fix-init-py-false-positives
fix(seedgo): __init__.py false positives in imports + naming
2026-04-14 22:00:04 -07:00
AIOSAIandClaude Opus 4.6 cf0bf34276 fix(seedgo): short-circuit __init__.py in imports + naming checkers
Empty __init__.py files were failing both checkers as false positives:
- imports: zero-check result scored 0% and reported "Failed (no details)"
- naming: __init__ fails snake_case regex ^[a-z][a-z0-9_]*$

Python package markers don't require imports by convention and cannot
be renamed (Python-reserved). Short-circuit both checkers to return
PASS for any file named __init__.py.

Reported by @devpulse while adding navigator/__init__.py to compass.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 21:58:16 -07:00
AIPassand@devpulse 5d3935a720 feat(system): prax status sync: drop minute precision from STATUS.md timestamp — date-only (agents already get current time injected every turn, minute precision was causing phantom diffs on every sync within a new minute) (#278)
Co-authored-by: @devpulse <devpulse@aipass>
2026-04-14 21:53:08 -07:00
AIPass ad0e266026 Merge pull request #277 from AIOSAI/system/devpulse-test-s92-lock-unstage-fix-remove-gitprlock-from-gi
feat(system): test S92 lock-unstage fix: remove .git_pr.lock from gitignore and verify drone's reset HEAD keeps lock out of commit
2026-04-14 21:24:26 -07:00