Mandatory constraints the /implement skill applies during plan phase.
These encode the hard rules previously in AGENTS.md prose.
- Plans MUST run
implementations/python/.venv/bin/python tools/check_repo_policy.pybefore declaring completion. - Plans MUST run
implementations/python/.venv/bin/python tools/check_requirement_governance.pybefore declaring completion. - Plans MUST run
implementations/python/.venv/bin/python tools/verify_all.pybefore declaring completion. - Plans MUST set
ACES_REQUIREMENT_UIDwhen the branch name does not already contain a UID such asGOV-918. - Plans MUST NOT add new authority-bearing artifacts outside
specs/,contracts/,docs/, andimplementations/. - Plans that change a published schema under
contracts/schemas/(the hand-governed normative authority per ADR-009 §7) MUST record a contract-facing change-ledger entry (last_change: summary + content hash) incontracts/schema-publication-manifest.json, and a plan that removes a published schema MUST record aremoved_schemastombstone (schema path + summary) in the same manifest. Plans MUST keep the reference implementation (schema_bundle()) generating an identical bundle sotools/check_generated_schemas.pypasses. The published schema is the authority; a generator/Python edit alone is NOT authorization for a schema change. - Plans MUST NOT add new implementation logic to
implementations/python/src/aces/; that tree is compatibility-only wrappers. - Plans MUST NOT import
aces.*from owning packages underimplementations/python/packages/. - Plans MUST keep concept-authority artifacts in the approved concept-authority surfaces.
- Plans MUST keep IMPLEMENTS and TESTS traceability in Ground Control aligned with changed code and tests.
- Plans MUST NOT edit
CHANGELOG.mdor add changelog fragments: release-please ownsCHANGELOG.mdand generates it from the Conventional Commit history onmain(#684). There is nochangelog.d/. - Plans MUST NOT hand-edit the version (
[project] versioninimplementations/python/pyproject.toml); release-please bumps it on release. Feature PRs squash-merge, so the PR title becomes the commit release-please reads:feat:→ minor,fix:/perf:→ patch,feat!:/ aBREAKING CHANGE:footer → major (pre-1.0 demoted to minor);docs/chore/refactor/test/ci/builddo not release. Usefeat:/fix:for consumer-visible changes so release-please actually cuts a release. The PR title MUST still pass thetitle-guardgate (tools/check_pr_title.py).