Commit Graph
24 Commits
Author SHA1 Message Date
AIOSAI 10a8f738a0 #660 install: aipass install no longer hard-exits 2 (silently) when it cannot create global symlinks. setup.sh runs under set -euo pipefail; the #660 safe_symlink refactor returns 2 on ln failure, but the call sites read rc on the NEXT line (rc=$?) — so set -e killed the installer at the symlink step BEFORE the ~/.local/bin fallback (built for exactly the no-sudo case) could run. Any sudo-less env (containers, CI, locked-down machines) got a silent exit 2 + no symlinks despite an otherwise-complete install. Fixed all 3 call sites to rc=0; safe_symlink ... || rc=$? (set-e-safe). Found by the #678 owner-capability docker verify. +tests/docker_owner_verify.sh (owner-capability SOP harness) +tests/_install_diag.sh. 2026-07-10 01:07:35 -07:00
AIOSAI f5554158f9 #660 install: aipass install no longer silently repoints global drone/aipass symlinks. setup.sh safe_symlink guard refuses to hijack a symlink pointing at a DIFFERENT install (loud from->to warning, left untouched) unless --force-symlink; --no-symlink opts out entirely. Both flags thread through install.py -> _run_setup. Fresh/same-location installs unchanged. +tests/setup_symlink_guard_test.sh (10 asserts) +3 flag-forwarding tests; touched install output migrated to cli success() (#661). Verified: 635 aipass tests, seedgo 31/31, live dry-run forwarding + guard test all-pass. 2026-07-09 21:34:17 -07:00
AIOSAI a20d191f87 tests: dev-docker verify script (bridge-era, 19 assertions) — proven vs real dev clone; supersedes stale docker_clone_test.sh 2026-07-07 20:07:32 -07:00
AIOSAIandClaude Opus 4.8 776e53044c docs(cross-os): fix CROSS_OS_TESTING.md drift — 11 stages, @hooks status, pre-flight note
@aipass TDPLAN-0011 doc-drift request (repo-level doc = devpulse git territory):
1. Stage count 12->11 in rows 3.2 and 7.2 (aipass init has been 11 stages since S42;
   row 3.3 already said 'all stages', no numeric drift there).
2. 'drone @hooks hookstatus' -> 'drone @hooks status' in Phase 6.3 and the per-branch
   smoke matrix (hookstatus is Unknown on current drone — gap #9 itself).
3. Added a 'Machine pre-flight' note to the 3-layers intro: aipass init runs a
   layer-3-lite pre-flight, and 'aipass doctor --cross-os/--e2e/--record' is the
   machine sweep that augments (never replaces) the human layer-3 pass.

Left the two legit 'other 12 branches' references (branch count) untouched.
Closes devpulse todo #64.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013uzDhtcZ6wT1T9e2AHPQig
2026-07-03 10:32:35 -07:00
AIOSAIandClaude Opus 4.8 91cb59154d fix(e2e): rm_gate block contract is exit 2, not exit 0 (FPLAN-0289 CI)
beb048d made the Claude bridge propagate a hook's exit code so presence_gate's
UserPromptSubmit block can cancel a prompt. Every security gate
(rm/git/edit/subagent/presence) already returned exit_code 2 for a block, but
the old bridge swallowed it — so test_t2a_rm_gate_blocks pinned exit 0. Update
the e2e contract to expect exit 2 + the stdout decision JSON, which is the real,
live-proven block signal.

Sole CI red on the P1-activation commits: 1 failed, 10116 passed. Fixes both
e2e-wheel (all 3 OSes) and Windows Test (full suite includes tests/e2e).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GmDj4eu8aFFVP2rapovqkg
2026-06-30 04:36:01 -07:00
AIOSAIandClaude Opus 4.8 8bd270287d chore(release): bump 2.5.0 -> 2.5.1
- pyproject: patch bump (cross-OS e2e wiring harness + Windows portability
  fixes landed this week; CHANGELOG [2026.W23] documents the work)
- tests/CROSS_OS_TESTING.md: add manual layer-3 cross-OS acceptance checklist
  (living draft; refined as real Win/Mac VM runs surface gaps)
- prax dashboard: drop commons_mentions from quick-status calc

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 17:52:23 -07:00
AIOSAI 80aac59423 style(e2e): ruff format conftest.py (fixes CI lint lane)
tests/e2e/conftest.py shipped unformatted in cd1af34, so 'ruff format
--check src/ tests/' failed the CI lint job. Pure formatting (string
concat join); no logic change. ruff check + ruff format --check + e2e
14/14 all green locally.
2026-06-04 01:24:52 -07:00
AIOSAIandClaude Opus 4.8 cd1af34be8 test(e2e): cross-OS wiring harness + 3-OS CI, red-first (FPLAN-0239)
Build-wheel -> install-clean -> assert 4-tier wiring ladder (install/init/
hooks-fire/drone-route). Validated green on Linux; Windows red-first by design
(symlink/venv-path/tmp gaps = DPLAN-0194 P3 fix-list).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 00:03:37 -07:00
AIOSAIand@devpulse 5114986c31 feat(system): feat(system): Docker clone testing + setup.sh aipass symlink fix — Dockerfile.test replaces old code-server Dockerfiles, tests/docker_clone_test.sh for fresh-install verification, hook_test.py portability fix (skip gracefully without ~/Projects), setup.sh now symlinks both drone AND aipass to ~/.local/bin. Verified 11/11 on real git clone + aipass init inside container.
Co-Authored-By: @devpulse <devpulse@aipass>
2026-05-07 15:36:34 -07:00
AIOSAIandClaude Opus 4.6 f30443504c chore: add hooks, CI/CD infrastructure, ignore runtime JSON
- Transfer Claude Code hooks from internal: identity injector, email
  notification, auto-fix diagnostics, pre-compact recovery
- Add notification sounds for tool use, stop, and alerts
- Wire all hooks in .claude/settings.json
- Add global system prompt (.aipass/aipass_global_prompt.md)
- Add branch-local prompt placeholders for all modules
- Set up CI pipeline: lint (ruff) → test matrix (3.10-3.13) → coverage
- Add workflows: PyPI publish, security scanning, stale issues
- Add GitHub issue templates, dependabot, editorconfig
- Configure pytest norecursedirs and coverage fail-under=70
- Add *.json to gitignore — runtime JSON files constantly change
- Untrack runtime JSON (registry, plans, seed bypass, module data)
- Keep source JSON tracked via negation rules (json_templates, pack,
  spawn templates, settings, pyrightconfig)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 20:33:40 -08:00
AIOSAI 5aa8db5d0b 🐛 chore(spawn/templates/agent_mock_branch): remove deprecated modules and tests
- delete all deprecated aipass modules: api, assistant, citizenship, devpulse,
  drone, flow, mail, seedgo, skills, trigger, templates, and tests
- remove seedgo config and coverage files no longer used
- cleanup tests for drone CLI, compliance, core, integration, modules, phase2,
  seedgo CLI, core, plugins, silent failure detection, file module size, paths,
  and version to reduce maintenance burden
- add new agent_mock_branch spawn template with scaffold files, config, and
  verification tool for branch consistency checks
- add comprehensive .registry_ignore.json and .backup_ignore.json to exclude
  unwanted files from branch updates and backups
- include branch README, artifacts, docs, logs, pytest setup, tools, tests, and
  standard bypass configs for new agent mock branch template
- rename and reorganize template files from branch_template to spawn/templates
  agent.template for consistent naming and usage
2026-03-05 13:03:38 -08:00
AIPassandClaude b1fe460adf feat(seedgo): add silent-failure-detection and file-module-size plugins (#9)
Implements 2 High-priority Seed compliance checks:

**silent-failure-detection plugin:**
- Detects except: pass patterns that silently swallow exceptions
- Severity: ERROR (dangerous — hides bugs and failures)
- Catches bare except, Exception, and specific exception types with only pass
- Provides actionable fix hints: add logging or meaningful error handling
- 17 comprehensive tests

**file-module-size plugin:**
- Flags files exceeding 400 code lines (Seed threshold)
- Severity: WARNING (code smell, not always immediately fixable)
- Accurate line counting: excludes blanks, comments, and docstrings
- Smart fix hints based on file structure (classes, functions, mixed)
- 17 comprehensive tests

**Implementation details:**
- AST-based pattern matching for accuracy
- Follows existing plugin architecture (CheckResult, Severity)
- 478 total tests pass (34 new tests added)
- Both plugins pass Seed's own standards (80/100 score)

**Session 239** — Autonomous execution: Periodic wake identified High-priority Seed recommendations as highest-value work, deployed agent to implement, tested comprehensively.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2026-03-04 07:41:55 -08:00
AIPassandClaude e4622d700e feat(seedgo): enhance drone-compliance and add naming-convention plugin (#8)
Implement three priority improvements from seed review:

1. DRONE_MODULE key validation:
   - Add check for required keys (name, version, description)
   - Fail with ERROR severity if keys are missing
   - Extract helper function _get_missing_drone_module_keys()

2. get_introspective() check:
   - Add WARNING-level check for get_introspective() function
   - Recommended but not required for drone modules
   - Follows introspective pattern for module self-documentation

3. New naming-convention plugin:
   - Enforce PEP 8 naming conventions
   - Check snake_case for functions, variables, module names
   - Check PascalCase for classes
   - Check UPPER_CASE for module-level constants
   - Provide helpful conversion suggestions in fix hints

Test coverage:
- Update existing tests to include new checks
- Add tests for missing DRONE_MODULE keys (ERROR)
- Add tests for missing get_introspective (WARNING)
- All 444 tests pass

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2026-03-04 03:13:43 -08:00
AIOSAIandClaude Opus 4.6 fc6f83b3e1 ✨ feat(seedgo): add Rich formatting to CLI output
Replace raw ANSI escape codes with Rich library for all human-facing
seedgo CLI output. Adds display.py module with styled components:
header panels, plugin result lines, check items with severity markers,
summary sections, and plugin tables.

- seedgo check: branded header, styled verdicts, hint formatting
- seedgo list: Rich table with bordered columns
- seedgo init: styled success message
- drone_adapter: use direct import instead of parsing CLI output
- Add rich>=13.0 as dependency

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 23:29:54 -08:00
AIOSAIandClaude Opus 4.6 b3067ff45a feat(drone): add introspective pattern — no-args discovery vs --help
Implements the internal AIPass navigation pattern:
- `drone @module` (no args) → introspective: shows what's connected
- `drone @module --help` → help: shows usage documentation

Seedgo introspective lists all discovered plugins with descriptions.
Modules that don't implement get_introspective() fall back to help.

442 tests pass. 5 new introspective tests.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 23:06:28 -08:00
AIOSAI 2435a70c79 ✨ feat(drone): add internal module routing system for drone commands
- introduce drone module registry with metadata and command routing
- add seedgo as a registered internal drone module with adapter
- update drone CLI to route commands to modules or branches by @target
- enhance `drone systems` to list registered modules with descriptions
- provide module help integration alongside branch help

✨ feat(seedgo): create drone adapter for seedgo module commands
- implement handle_command forwarding to seedgo CLI subprocess
- provide get_help function with command-specific help text
- support commands: check, audit, list, init with options and examples

✨ feat(seedgo): add __main__.py to support `python -m seedgo` execution

✨ feat(seedgo plugin): add drone-compliance plugin to verify drone adapter compliance
- checks existence of drone_adapter.py and required interface elements
- validates presence of DRONE_MODULE dict, handle_command(), and get_help()
- reports compliance results with pass/fail and score with detailed checks
- skips non-target packages and handles syntax errors gracefully

✅ test(drone modules): add comprehensive tests for drone module registry and routing
- test listing, info retrieval, command routing, and help retrieval
- test CLI integration for `drone systems` and `drone @seedgo` commands
- verify module priority over branch routing and error handling

✅ test(seedgo drone compliance): add tests for drone-compliance plugin
- test passing cases with proper adapter and interface
- test failures for missing adapter, metadata, or functions
- test warnings for missing get_help function
- test skipping non-target packages and file-not-found cases
- test handling of syntax errors in adapter files
2026-03-02 22:44:41 -08:00
AIOSAIandClaude Opus 4.6 866b0596aa feat(drone): rename routing → drone and add CLI entry point
BREAKING: aipass.routing renamed to aipass.drone. Routing IS drone —
the command routing engine IS the CLI command center. No reason to
keep them separate.

Adds `drone` CLI entry point:
  drone systems          — list registered branches
  drone @branch command  — route command to branch
  drone @branch --help   — get branch help
  drone --version        — show version

406 tests pass (20 new CLI tests). All imports updated.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 22:14:32 -08:00
AIOSAIandClaude Opus 4.6 34247bd373 fix(tests): remove unused imports and variable in test_paths
Fixes ruff F401 (unused os import, unused _get_root_direct alias) and
F841 (unused parent variable) that caused CI lint failure.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 22:57:55 -08:00
AIOSAIandClaude Opus 4.6 c5126b300c feat(paths): add aipass-paths root resolution module v1.0.0
Foundation package with zero external dependencies. Implements 3-tier
AIPASS_ROOT resolution: env var → .aipass/ marker walk → ~/.aipass/ default.
Includes derived path helpers (system_logs_dir, branch_registry_path,
branch_path, branch_logs_dir). 32 tests, full coverage.

Also positions placeholder modules (cortex, mail, prax) with documented
intent for upcoming implementation. Version bumped to 1.0.0.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 22:56:24 -08:00
AIOSAIandClaude Opus 4.6 a295e18b03 fix(seedgo): resolve ruff lint errors in test files
- Remove sys.path.insert() blocks from test files (E402) — package is
  installed via pip install -e . so path manipulation is unnecessary
- Move import importlib.util and import subprocess to top of file (E402)
- Remove unused sys import from test_seedgo_core.py (F401)
- Fix undefined _src_path reference in test_seedgo_cli.py (F821)
- Remove unused result variable assignment in TestCLIInit (F841)
- Remove extraneous f prefix from f-string in cli.py (F541)

All 249 tests pass. Zero ruff violations.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 20:25:28 -08:00
AIOSAIandClaude Opus 4.6 ba51e747cf feat(seedgo): add Seed Go portable standards framework v1.0.0
Complete implementation of a plugin-based code standards checker.

Core Framework:
- CheckResult/CheckItem/Severity data models
- Three-source plugin discovery (builtin, entry_points, local)
- Config system (.seedgo/config.json) with profiles and overrides
- Severity-weighted scoring (errors block, warnings degrade, info reports)

CLI:
- seedgo init — create project config
- seedgo check — run all enabled plugins
- seedgo list — show available plugins
- Three output formats: human, json, github (CI annotations)

5 Starter Plugins:
- no-bare-except, type-hints-required, docstring-coverage
- function-length (no linter equivalent)
- file-structure (no linter equivalent)

354 tests, all passing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 20:25:28 -08:00
AIOSAIandClaude Sonnet 4.6 002bcb672f fix(routing): remove unused imports to pass CI lint
Remove unused `pathlib.Path` and `RegistryNotFoundError` from resolver.py
and unused `tempfile` from test_routing_core.py, resolving ruff F401 errors.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-01 20:21:03 -08:00
AIOSAIandClaude Opus 4.6 78ae5f63b6 feat(routing): add Routing & Discovery module v1.0.0
Complete implementation of symbolic @branch addressing for multi-agent systems.

Phase 1 — Core Routing:
- Registry management (BRANCH_REGISTRY.json)
- Symbolic resolution (@branch → absolute path)
- Branch lifecycle (register, list, exists, info)
- Configuration (env vars, custom paths)

Phase 2 — Command Routing:
- route_command() — execute commands on remote branches
- Safe subprocess execution (no shell=True)
- Module discovery (--help parsing + filesystem scan)

Phase 3 — Help System & Release Prep:
- HelpResult dataclass (structured help output)
- get_system_help() — aggregate help across all branches
- route_all() — broadcast commands to all active branches
- Complete API documentation (docs/api.md)
- pyproject.toml configured for PyPI (v1.0.0)
- trinity-pattern moved to optional dependency

106 tests, all passing. Ready for PyPI publication.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 12:37:05 -08:00
AIOSAIandClaude Opus 4.6 b564248de2 feat: initial repository scaffold
- README with project overview
- pyproject.toml with trinity-pattern dependency
- src/aipass/ package with version
- Basic CI workflow (Python 3.10-3.13, ruff, pytest)
- MIT license

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 08:04:44 -08:00