Skip to content

Migrate darrow-information-architecture mechanics to Python + uv #180

Description

@BjRo

Parent: #168

Outcome

Migrate darrow-information-architecture's setup and doctor mechanics to Python + uv with reliable cross-platform path and filesystem behavior.

Priority

6 of 14 remaining plugins. It builds on the file-mutation pattern established by the decisions plugin and adds richer repository-tree operations.

Scope

Migrate the substantial logic behind ia-doctor, ia-setup.sh, and their thin launchers. Preserve the separation between setup and doctor intent and keep repository-specific judgment in the skills.

Done criteria

  • Preserve all setup/doctor commands, diagnostics, refusal behavior, output records, and exit statuses.
  • Support Windows and POSIX paths, newline conventions, case behavior, symlink limitations, and atomic guidance-file updates explicitly.
  • Retain reachability, routing, scoped-rule, adapter, deduplication, and stale-reference invariants with regression tests.
  • Add the contained package to the Python inventory and meet all typing, complexity, property-test, and coverage gates.
  • Validate fresh independent installation and execution on Linux, macOS, and native Windows.
  • Keep both skill eval suites passing and update specifications, documentation, and matching manifest versions.

Migration blueprint

Use the implementation merged in PR #173 as the default blueprint for Python + uv plugin mechanics. Reuse its self-contained package layout, committed uv lock, runtime/development dependency separation, python-packages.txt inventory, Ruff and strict mypy gates, separate 95% line and branch coverage gates, and fresh copied-artifact validation. Extend that pattern with native-Windows fresh-artifact validation where this rollout requires Windows support. Document any plugin-specific deviation explicitly instead of introducing a competing convention.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions