Skip to content

refactor(information-architecture): migrate mechanics to Python - #198

Merged
BjRo merged 4 commits into
mainfrom
refactor/180-information-architecture-python
Sep 18, 2026
Merged

BjRo merged 4 commits into
mainfrom
refactor/180-information-architecture-python

Conversation

@BjRo

@BjRo BjRo commented Sep 18, 2026 •

Copy link
Copy Markdown
Owner

Why

Closes #180. Move information-architecture mechanics off Bash so setup and doctor can run through one contained Python + UV package on POSIX and native Windows.

What changed

  • Replace the setup and doctor Bash entrypoints with frozen ia-setup and ia-doctor commands, preserving inventory records, runtime selection, routing, reachability, adapters, deduplication, budgets, and refusal statuses, and UTF-8 path output.
  • Add ia-write for approved atomic guidance updates with expected-content checks, preserved newline/BOM conventions and permissions, and symlink-source handling.
  • Add native regression/property tests, runtime-only copied-artifact validation, and Linux/macOS/Windows CI; register the package, update both skills and eval fixtures, and bump both manifests to 0.2.1.
  • Port the remaining legacy shell regressions into pytest, strengthen existing native assertions, and remove both Bash suites and their CI steps. All regression cases now run through the cross-platform Python quality matrix.

Verification

  • bun run check:python: passed across all registered packages; 104 target tests, 99.67% statement coverage, 98.44% branch coverage, strict mypy and Ruff.
  • The original Bash suites passed before removal. Their regression scenarios are now covered by native pytest tests; backend/tests/acceptance.md maps the retained coverage. The IA plugin contains no Bash tests or runtime launchers.
  • uv run --quiet --frozen --no-dev --project plugins/foundation/darrow-information-architecture/backend python plugins/foundation/darrow-information-architecture/backend/tests/fresh_install.py: passed locally and in CI on Linux, macOS, and native Windows with a fresh independent plugin and runtime dependencies only.
  • Both bundled skill inspections and claude plugin validate plugins/foundation/darrow-information-architecture: passed.
  • bun run lint, bun run lint:ts, bun run lint:shell, bun run typecheck, bun run check:decisions, bun run check:docs, bun run check:docs:external, bun run check:python:inventory, and scripts/test-python-quality-changes: passed.
  • bun test: 620 passed, two failed. The recovery timeout passed in isolation; the remaining pre-existing discovery test expects a shell check that is now in semantic_output_checks (evals/runner/discovery-eval-checks.test.ts:104). Neither discovery file is changed here.
  • Both IA skill suites: all 23 cases passed task and activation checks on Codex (gpt-5.6-terra, medium) and Claude (claude-sonnet-5, medium), one fresh passing trial per case/host with an 80% case threshold. The final procedure-routing guidance also passed a targeted Codex rerun. Earlier diagnostic failures and corrections are retained; these runs do not establish repeated-trial stability.
  • Python CI: all IA Python 3.10–3.13 jobs passed on Linux, macOS, and Windows at aa2951c, together with all three fresh-install jobs. Documentation CI also passed.

Review notes

The old Bash paths are removed; callers use the frozen package commands. The audit remains a compact structural check, not a complete Markdown or runtime-loader parser. Atomic replacement detects observed source changes but requires coordination with concurrent writers and is not a multi-file transaction.

The independent review's parent-relative resource and unselected-runtime encoding findings are fixed and covered by regressions. Eval calibration changes and the procedure-routing correction are recorded in backend/tests/acceptance.md; full pre-migration live skill baselines are not claimed.

Checklist

  • I have read and followed CONTRIBUTING.md, including the contribution
    licensing terms.
  • I added or updated the applicable invariant before implementation, or
    this change does not affect a capability invariant.
  • I added or updated colocated evals, or this change does not affect skill
    behavior.
  • I confirmed that each changed plugin remains self-contained, or this
    change does not affect plugin content.
  • I ran bun run check:python, or this change does not affect registered
    Python packages or their repository quality infrastructure.

@BjRo
BjRo merged commit 3a6c36e into main Sep 18, 2026
120 checks passed
@BjRo
BjRo deleted the refactor/180-information-architecture-python branch September 18, 2026 13:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Migrate darrow-information-architecture mechanics to Python + uv

1 participant