Phase ID: APG26
Complete — pytest and Bash-to-Python capabilities implemented provisionally
APG26 evaluates and retains pytest-test-profile and
converting-bash-scripts-to-python as independent provisional private-
development capabilities. Each candidate has current source and reuse evidence,
thirty frozen scenario families, precise trigger and non-trigger boundaries,
project and authority separation, rollback, failing-first focused contracts,
and fresh non-author review. Pytest remains at zero behavior-bearing
corrections. Conversion-safety review applies the Bash-to-Python candidate’s
one allowed correction: fixed or trusted option tokens, validated untrusted
operands, an end-of-options boundary where supported without changing the
contract, and a stop for unresolved argument or option injection.
The pytest profile owns pytest-specific collection, fixtures, parametrization, mocks, isolation, xdist, coverage, and structural warning judgment. It freezes ten concrete Green/Yellow/Orange/Red signals and stops false assertions, false integration claims, worker contamination, protected-data exposure, unsupported-version claims, unsafe external mutation, incomplete evidence, and crisis-level undecomposed growth. Worker counts, coverage thresholds, exact commands, plugins, dependencies, and test levels remain project-owned.
The conversion skill owns a nineteen-step compatible-migration procedure across CLI, streams, status, environment, paths, metadata, locks, replacement, signals, subprocesses, Git, protected data, characterization, Python design, wrappers, rollout, rollback, and release projection. It does not mandate conversion or select dependencies or platforms. Insufficient characterization, unclear authority/platforms, unresolved exact compatibility, injection or exposure, weakened file/lock behavior, approximated Git semantics, missing rollback, and unrelated rewrite are stops.
The current Git-show and operational report CLIs, shared Bash owner, Bats tests,
and future Git-diff contract are mapped to a possible Python core and adapters.
Standard-library subprocess plus fixed Git CLI vectors remains the baseline;
GitPython is permitted but not selected. Existing POSIX characterization and
the remaining cross-platform, signal, temporary-index, association, and parity
gaps are recorded. No report source or test is changed and git-diff-report is
not implemented.
Private development contains 21 canonical skills, 21 catalog rows, 21 relative projections, 14 stable rows, 7 provisional rows, and 20 routable non-router entries. Public and active v0.3.0 remain unchanged at 19/19/19 with 14 stable, 5 provisional, and 18 routes. Managed defaults, release schemas, active integration, and personal sources remain unchanged.
The failing-first APG26 contracts initially fail for absent leaves and routes. The resulting focused unit and integration contracts, skill-library checker, Python compilation, applicable Bash syntax, Markdown, links, privacy, identity, and whitespace checks pass. Fresh reviewers accept pytest semantics and mock/ xdist/coverage boundaries, conversion compatibility and safety, overlap and router/catalog integration, and the complete diff. The complete APG suite is not run because APG26 is an ordinary implementation phase, not a readiness or release checkpoint.
APG26A later records that APG26’s formal-phase commit contains only its subject and therefore does not satisfy ADR 0020’s required material body. APG26 remains unchanged in Git. The forward correction adds deterministic message validation without changing APG26’s substantive capability, scenario, routing, maturity, or distribution decisions.
No successor is authorized. A next request, if desired, must separately
allocate a bounded v0.4 roadmap slice. The first dependency-ordered request is
the Python report core and report composition slice: characterize and convert
the current report family, implement git-diff-report, and enforce associated
operational records. APG26 does not begin it.
The personal APG router remains decommissioned. The three personal hygiene skills are not removed. No report script is converted, no test suite is migrated, no ChatGPT skill is moved, no later profile is implemented, and no v0.4 release, readiness phase, publication, or APG27 work begins.