atm-bd 0.17.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- atm_bd-0.17.3/.gitignore +2 -0
- atm_bd-0.17.3/CONTRACT.md +46 -0
- atm_bd-0.17.3/PKG-INFO +172 -0
- atm_bd-0.17.3/README.md +155 -0
- atm_bd-0.17.3/hatch_build.py +67 -0
- atm_bd-0.17.3/pyproject.toml +36 -0
- atm_bd-0.17.3/src/atm_bd_console/__init__.py +3 -0
- atm_bd-0.17.3/src/atm_bd_console/_build_identity.py +2 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/.claude-plugin/plugin.json +17 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/CHANGELOG.md +651 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/LICENSE +21 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/README.md +265 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/agents/ceremony-qa.md +109 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/agents/dev-sanity.md +387 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/agents/parallax.md +29 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/agents/sc-sanity-jev.md +129 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/agents/sc-sanity-llm.md +110 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/config/atm-bd-orchestration.yaml.j2 +33 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/config/legacy-owned.json +734 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/conftest.py +12 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/install.py +885 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/manifest.yaml +221 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/registry.yaml +60 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/SKILL.md +558 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/blocking-findings-guidelines.md +97 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/arch-qa-assignment-vars.json +15 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/dev-complete-vars.json +15 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/dev-fix-vars.json +13 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/dev-sanity-assignment-context-vars.json +20 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/dev-sanity-assignment-vars.json +15 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/dev-sanity-complete-vars.json +13 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/dev-sanity-template-vars.json +13 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/dev-template-vars.json +13 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/finding-bead-vars.json +28 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/fix-assignment-vars.json +21 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/fix-complete-vars.json +14 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/flaky-test-qa-assignment-vars.json +10 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/plan-review-complete-vars.json +14 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/plan-review-template-fix-round-vars.json +18 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/plan-review-template-vars.json +17 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/plan-scope-reviewer-assignment-vars.json +13 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/qa-bead-vars.json +12 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/qa-complete-vars.json +19 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/qa-template-fix-round-vars.json +25 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/qa-template-vars.json +24 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/req-qa-assignment-vars.json +14 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/review-complete-vars.json +30 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/review-template-vars.json +11 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/ruthless-boundary-qa-assignment-vars.json +11 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/sanity-run-record-vars.json +21 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/sanity-run-table-vars.json +42 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/schema-reviewer-assignment-vars.json +10 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/task-refused-vars.json +10 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/examples/workflow-issue-bead-vars.json +7 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/formulas/README.md +35 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/formulas/finding-group.formula.toml.j2 +127 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/formulas/finding-group.relations.json +46 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/formulas/sprint-group.formula.toml.j2 +104 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/formulas/sprint-group.relations.json +61 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/references/bv.md +88 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/references/post-mortem-context-preparation.md +121 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/references/post-mortem-jev.md +141 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/references/post-mortem.md +111 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/roles/quality-mgr.md +239 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/assignment-gates.py +276 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/bd_commands.py +37 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/bead-groups +404 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/bead-queues +68 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/bead_formulas.py +88 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/bv-analyze +236 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/check-review-completion.py +61 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/fix-round-scope +137 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/jev_client.py +480 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/post_mortem_context.py +109 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/post_mortem_jev.py +274 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/sanity-create-findings +247 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/sanity-merge +644 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/sanity-run-history +282 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/sanity-split +446 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/fixtures/dev-ready.json +1 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/fixtures/dirty-tree.json +1 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/fixtures/not-ready.json +1 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/fixtures/not-rebased.json +1 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/fixtures/not-stacked.json +1 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/fixtures/plan-invalid.json +1 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/fixtures/pr-required.json +1 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/fixtures/pr-target-mismatch.json +1 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/fixtures/qa-head-mismatch.json +1 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/fixtures/qa-ready.json +1 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/fixtures/sanity-frozen.json +1 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/fixtures/sanity-ready.json +1 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/fixtures/stale-sanity.json +1 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/fixtures/transition-first-fail.json +1 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/fixtures/transition-minor-pass.json +1 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/fixtures/transition-round-cap.json +1 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/fixtures/transition-sanity-pass.json +1 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/fixtures/unclaimable.json +1 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/fixtures/wrong-base.json +1 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/fixtures/zero-delta.json +1 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/jev_receipts.py +48 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/rendering.py +19 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/test_assignment_gates.py +342 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/test_atomic.py +73 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/test_bead_pour_mock.py +686 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/test_bead_queues.py +127 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/test_bv_analyze.py +282 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/test_fix_round_scope.py +154 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/test_handoff_contracts.py +675 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/test_jev_client.py +563 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/test_post_mortem_context.py +104 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/test_post_mortem_jev.py +72 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/test_qa_report_contract.py +143 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/test_sanity_create_findings.py +106 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/test_sanity_merge.py +422 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/test_sanity_run_history.py +359 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/test_sanity_selected.py +485 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/test_sanity_split.py +642 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/test_templates.py +705 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/tests/test_transitions.py +24 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/scripts/transitions.py +25 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/templates/arch-qa-assignment.json.j2 +41 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/templates/dev-complete.md.j2 +82 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/templates/dev-fix.xml.j2 +51 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/templates/dev-sanity-assignment.json.j2 +38 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/templates/dev-sanity-complete.md.j2 +83 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/templates/dev-sanity-template.xml.j2 +67 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/templates/dev-template.xml.j2 +53 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/templates/finding-bead.json.j2 +66 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/templates/fix-assignment.xml.j2 +54 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/templates/fix-complete.md.j2 +82 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/templates/flaky-test-qa-assignment.json.j2 +35 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/templates/plan-review-complete.md.j2 +69 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/templates/plan-review-template.xml.j2 +56 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/templates/plan-scope-reviewer-assignment.json.j2 +41 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/templates/qa-bead.json.j2 +52 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/templates/qa-complete.md.j2 +77 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/templates/qa-template.xml.j2 +133 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/templates/req-qa-assignment.json.j2 +40 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/templates/review-complete.md.j2 +77 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/templates/review-template.xml.j2 +65 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/templates/ruthless-boundary-qa-assignment.json.j2 +39 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/templates/sanity-run-record.json.j2 +47 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/templates/sanity-run-table.md.j2 +12 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/templates/schema-reviewer-assignment.json.j2 +26 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/templates/task-refused.md.j2 +55 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-bd-orchestration/templates/workflow-issue-bead.json.j2 +12 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/SKILL.md +91 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/examples/dev-sanity-bead-vars-d-4.json +8 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/examples/plan-root-vars.json +10 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/examples/sprint-bead-vars-d-4.json +32 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/examples/sprint-bead-vars-d-5.json +32 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/references/installation-and-troubleshooting.md +53 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/resources/atm-beads-plan-guidelines.md +347 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/resources/dev-sanity.md +39 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/resources/importing-md-plan.md +195 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/resources/orchestrating.md +178 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/resources/planning.md +231 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/resources/troubleshooting.md +21 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/schemas/sanity-bead.schema.json +64 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/schemas/sprint-bead.schema.json +116 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/scripts/bead_schema.py +126 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/scripts/check-phase-artifact +54 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/scripts/phase-config +48 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/scripts/phase-index-path +27 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/scripts/plan_contract.py +68 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/scripts/repo_config.py +101 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/scripts/resolve-role +31 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/scripts/sc_render.py +45 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/scripts/sprint_index_common.py +313 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/scripts/validate-plan +288 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/templates/dev-sanity-bead.json.j2 +35 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/templates/plan-root.json.j2 +38 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/templates/sprint-bead.json.j2 +63 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/tests/phase_fixtures.py +49 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/tests/test_importing_docs.py +19 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/tests/test_phase_config.py +162 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/tests/test_plan_root.py +39 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/tests/test_repo_config.py +113 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/tests/test_sc_render.py +51 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/atm-beads/tests/test_validate_plan.py +377 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/prompt-rewrite-judge/SKILL.md +17 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/prompt-rewrite-judge/scripts/judge.py +101 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/prompt-rewrite-judge/scripts/tests/test_judge.py +132 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/qa-report/SKILL.md +50 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/sprint-report/SKILL.md +179 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/sprint-report/dag-view.html +68 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/sprint-report/renderer/.gitignore +1 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/sprint-report/renderer/package-lock.json +249 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/sprint-report/renderer/package.json +9 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/sprint-report/renderer/render.cjs +19 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/sprint-report/report.md.j2 +20 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/sprint-report/scripts/sprint-report +468 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/sprint-report/scripts/sprint_dag.py +391 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/sprint-report/scripts/sprint_qa.py +61 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/sprint-report/tests/test_sprint_dag.py +156 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/sprint-report/tests/test_sprint_report.py +357 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/sprint-report/tests/test_sprint_review.py +205 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/sprint-review/SKILL.md +38 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/skills/sprint-review/scripts/sprint-review +24 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/tests/gen_legacy_owned.py +57 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/tests/gen_manifest.py +90 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/tests/subprocess_helpers.py +27 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/tests/test_frontmatter.py +98 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/tests/test_install.py +862 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/tests/test_render_parity.py +54 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/tests/test_sc_compose_version.py +21 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/tests/test_skill_suites.py +123 -0
- atm_bd-0.17.3/src/atm_bd_console/_skills/tests/test_subprocess_helpers.py +35 -0
- atm_bd-0.17.3/src/atm_bd_console/app.py +447 -0
- atm_bd-0.17.3/src/atm_bd_console/atm_bd.py +413 -0
- atm_bd-0.17.3/src/atm_bd_console/atm_source.py +135 -0
- atm_bd-0.17.3/src/atm_bd_console/beads_source.py +62 -0
- atm_bd-0.17.3/src/atm_bd_console/build.py +49 -0
- atm_bd-0.17.3/src/atm_bd_console/ci.py +18 -0
- atm_bd-0.17.3/src/atm_bd_console/cli.py +128 -0
- atm_bd-0.17.3/src/atm_bd_console/codec.py +220 -0
- atm_bd-0.17.3/src/atm_bd_console/collision.py +41 -0
- atm_bd-0.17.3/src/atm_bd_console/command.py +43 -0
- atm_bd-0.17.3/src/atm_bd_console/config.py +103 -0
- atm_bd-0.17.3/src/atm_bd_console/dispatch.py +155 -0
- atm_bd-0.17.3/src/atm_bd_console/enums.py +71 -0
- atm_bd-0.17.3/src/atm_bd_console/facts.py +194 -0
- atm_bd-0.17.3/src/atm_bd_console/git_source.py +89 -0
- atm_bd-0.17.3/src/atm_bd_console/github_source.py +156 -0
- atm_bd-0.17.3/src/atm_bd_console/icons.py +110 -0
- atm_bd-0.17.3/src/atm_bd_console/ids.py +6 -0
- atm_bd-0.17.3/src/atm_bd_console/log.py +93 -0
- atm_bd-0.17.3/src/atm_bd_console/migrations.py +24 -0
- atm_bd-0.17.3/src/atm_bd_console/model.py +556 -0
- atm_bd-0.17.3/src/atm_bd_console/paths.py +25 -0
- atm_bd-0.17.3/src/atm_bd_console/pr_selection.py +11 -0
- atm_bd-0.17.3/src/atm_bd_console/prs.py +50 -0
- atm_bd-0.17.3/src/atm_bd_console/render.py +262 -0
- atm_bd-0.17.3/src/atm_bd_console/result.py +94 -0
- atm_bd-0.17.3/src/atm_bd_console/runner.py +308 -0
- atm_bd-0.17.3/src/atm_bd_console/skill.py +97 -0
- atm_bd-0.17.3/src/atm_bd_console/skill_source.py +123 -0
- atm_bd-0.17.3/src/atm_bd_console/state.py +202 -0
- atm_bd-0.17.3/src/atm_bd_console/status.py +69 -0
- atm_bd-0.17.3/src/atm_bd_console/status_table.py +120 -0
- atm_bd-0.17.3/src/atm_bd_console/terminal.py +77 -0
- atm_bd-0.17.3/src/atm_bd_console/types.py +407 -0
- atm_bd-0.17.3/tests/conftest.py +98 -0
- atm_bd-0.17.3/tests/contract_fixtures.py +66 -0
- atm_bd-0.17.3/tests/contract_samples.py +153 -0
- atm_bd-0.17.3/tests/fixtures/atm/members.json +9 -0
- atm_bd-0.17.3/tests/fixtures/atm/tasks.json +30 -0
- atm_bd-0.17.3/tests/fixtures/beads/list-open.json +2062 -0
- atm_bd-0.17.3/tests/fixtures/beads/planted.json +126 -0
- atm_bd-0.17.3/tests/fixtures/beads/ready.json +1100 -0
- atm_bd-0.17.3/tests/fixtures/beads/repo/.atm-bd/phase-bh.toml +13 -0
- atm_bd-0.17.3/tests/fixtures/beads/repo/.claude/project/atm-bd-orchestration.yaml +16 -0
- atm_bd-0.17.3/tests/fixtures/beads/repo/.claude/skills/atm-bd-orchestration/templates/dev-fix.xml.j2 +1 -0
- atm_bd-0.17.3/tests/fixtures/beads/repo/.claude/skills/atm-bd-orchestration/templates/dev-sanity-template.xml.j2 +1 -0
- atm_bd-0.17.3/tests/fixtures/beads/repo/.claude/skills/atm-bd-orchestration/templates/dev-template.xml.j2 +1 -0
- atm_bd-0.17.3/tests/fixtures/beads/repo/.claude/skills/atm-bd-orchestration/templates/fix-assignment.xml.j2 +1 -0
- atm_bd-0.17.3/tests/fixtures/beads/repo/.claude/skills/atm-bd-orchestration/templates/plan-review-template.xml.j2 +1 -0
- atm_bd-0.17.3/tests/fixtures/beads/repo/.claude/skills/atm-bd-orchestration/templates/qa-template.xml.j2 +1 -0
- atm_bd-0.17.3/tests/fixtures/beads/repo/.claude/skills/atm-bd-orchestration/templates/review-template.xml.j2 +1 -0
- atm_bd-0.17.3/tests/fixtures/beads/repo/docs/plans/phase-bh.jsonl +10 -0
- atm_bd-0.17.3/tests/fixtures/beads/show-closed.json +1641 -0
- atm_bd-0.17.3/tests/fixtures/beads/show-findings.json +738 -0
- atm_bd-0.17.3/tests/fixtures/bh-wide-dag.json +7 -0
- atm_bd-0.17.3/tests/fixtures/contract/actions.jsonl +5 -0
- atm_bd-0.17.3/tests/fixtures/contract/inputs.json +1 -0
- atm_bd-0.17.3/tests/fixtures/contract/merge.json +1 -0
- atm_bd-0.17.3/tests/fixtures/contract/prs.json +1 -0
- atm_bd-0.17.3/tests/fixtures/contract/snapshot-gh-err.json +1 -0
- atm_bd-0.17.3/tests/fixtures/contract/snapshot-gh-off.json +1 -0
- atm_bd-0.17.3/tests/fixtures/contract/snapshot-running.json +1 -0
- atm_bd-0.17.3/tests/fixtures/contract/snapshot-stopped-closed.json +1 -0
- atm_bd-0.17.3/tests/fixtures/contract/snapshot-stopped-idle.json +1 -0
- atm_bd-0.17.3/tests/fixtures/github/graphql-open-prs.json +87 -0
- atm_bd-0.17.3/tests/fixtures/github/rest-open-prs.json +53 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/cfgproof-20261016-233500-7192e36d/PROVENANCE.md +28 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/cfgproof-20261016-233500-7192e36d/REPORT.md +261 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/cfgproof-20261016-233500-7192e36d/config-snapshot/atm-bd-orchestration.yaml +8 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/cfgproof-20261016-233500-7192e36d/config-snapshot/basename-fallback-control.xml.j2 +37 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/cfgproof-20261016-233500-7192e36d/config-snapshot/completion-vars.json +5 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/cfgproof-20261016-233500-7192e36d/config-snapshot/custom-complete-template.md.j2 +20 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/cfgproof-20261016-233500-7192e36d/config-snapshot/custom-sanity-template.xml.j2 +37 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/cfgproof-20261016-233500-7192e36d/config-snapshot/phase-cfgproof.toml +13 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/cfgproof-20261016-233500-7192e36d/console-state/atm-phase-cfgproof/actions.jsonl +1 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/cfgproof-20261016-233500-7192e36d/console-state/atm-phase-cfgproof/lock +0 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/cfgproof-20261016-233500-7192e36d/console-state/atm-phase-cfgproof/merge.json +1 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/cfgproof-20261016-233500-7192e36d/console-state/atm-phase-cfgproof/prs.json +1 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/cfgproof-20261016-233500-7192e36d/console-state/atm-phase-cfgproof/snapshot.json +1 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/cfgproof-20261016-233500-7192e36d/console-state/atm-phase-cfgproof/state.json +1 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/cfgproof-20261016-233500-7192e36d/loki-cover-report.md +16 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/cfgproof-20261016-233500-7192e36d/observations/atm-bd-console.log.jsonl +20 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/cfgproof-20261016-233500-7192e36d/prompt-sha256-before-submit.txt +1 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/cfgproof-20261016-233500-7192e36d/submit-times.txt +3 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/cfgproof-r20261016T171216Z/REPORT.md +72 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/cfgproof-r20261016T171216Z/config-snapshot/configured-sanity.xml.j2 +37 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/cfgproof-r20261016T171216Z/config-snapshot/phase-cfgproof.toml +13 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/cfgproof-r20261016T171216Z/console-state/atm-phase-cfgproof/actions.jsonl +1 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/cfgproof-r20261016T171216Z/console-state/atm-phase-cfgproof/snapshot.json +1 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/cfgproof-r20261016T171216Z/json/canonical-sha.out +5 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/cfgproof-r20261016T171216Z/json/delivered-marker-check.out +12 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/cfgproof-r20261016T171216Z/json/search-template-sha-48d980f7af74d1ebfd0c59d2a9f3bfc1acef7adea3f3be0a4366b3f987d77bbd.out +56 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/cfgproof-r20261016T171216Z/json/templates-list-cfgproof.out +9 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/phase-bh.md +447 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/raw/bh-rdy-f11-dispatch.txt +83 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/raw/bh-rdy-f11-prs.txt +83 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/raw/bh-rdy-f11-status.txt +83 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/raw/bh-refresh3-dispatch.txt +87 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/raw/bh-refresh3-prs.txt +87 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/raw/bh-refresh3-status.txt +87 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/raw/bh10-0810-dispatch.txt +29 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/raw/bh10-0810-prs.txt +6 -0
- atm_bd-0.17.3/tests/fixtures/live_gate/raw/bh10-0810-status.txt +19 -0
- atm_bd-0.17.3/tests/fixtures/render/status-bar-ok.txt +1 -0
- atm_bd-0.17.3/tests/fixtures/render/status-fallback.txt +3 -0
- atm_bd-0.17.3/tests/fixtures/snapshot/pre-enums.json +1 -0
- atm_bd-0.17.3/tests/fixtures/tick/mermaid.txt +7 -0
- atm_bd-0.17.3/tests/process_helpers.py +28 -0
- atm_bd-0.17.3/tests/test_app.py +508 -0
- atm_bd-0.17.3/tests/test_atm_bd.py +741 -0
- atm_bd-0.17.3/tests/test_atm_source.py +270 -0
- atm_bd-0.17.3/tests/test_beads_source.py +116 -0
- atm_bd-0.17.3/tests/test_boundaries.py +130 -0
- atm_bd-0.17.3/tests/test_build.py +205 -0
- atm_bd-0.17.3/tests/test_bundle.py +214 -0
- atm_bd-0.17.3/tests/test_ci_boundary.py +20 -0
- atm_bd-0.17.3/tests/test_cli.py +862 -0
- atm_bd-0.17.3/tests/test_codec.py +334 -0
- atm_bd-0.17.3/tests/test_codec_errors.py +101 -0
- atm_bd-0.17.3/tests/test_collision.py +9 -0
- atm_bd-0.17.3/tests/test_command.py +63 -0
- atm_bd-0.17.3/tests/test_config.py +128 -0
- atm_bd-0.17.3/tests/test_dispatch.py +169 -0
- atm_bd-0.17.3/tests/test_enum_exhaustiveness.py +24 -0
- atm_bd-0.17.3/tests/test_enums.py +86 -0
- atm_bd-0.17.3/tests/test_fixtures.py +106 -0
- atm_bd-0.17.3/tests/test_git_source.py +111 -0
- atm_bd-0.17.3/tests/test_github_source.py +298 -0
- atm_bd-0.17.3/tests/test_icons.py +171 -0
- atm_bd-0.17.3/tests/test_ids.py +10 -0
- atm_bd-0.17.3/tests/test_live_gate_fixture.py +163 -0
- atm_bd-0.17.3/tests/test_log.py +73 -0
- atm_bd-0.17.3/tests/test_model.py +692 -0
- atm_bd-0.17.3/tests/test_paths.py +28 -0
- atm_bd-0.17.3/tests/test_phase_settings.py +175 -0
- atm_bd-0.17.3/tests/test_pr_selection.py +74 -0
- atm_bd-0.17.3/tests/test_prs.py +150 -0
- atm_bd-0.17.3/tests/test_render.py +326 -0
- atm_bd-0.17.3/tests/test_runner.py +1049 -0
- atm_bd-0.17.3/tests/test_skill.py +394 -0
- atm_bd-0.17.3/tests/test_skill_source.py +227 -0
- atm_bd-0.17.3/tests/test_state.py +279 -0
- atm_bd-0.17.3/tests/test_status.py +131 -0
- atm_bd-0.17.3/tests/test_status_anchor.py +126 -0
- atm_bd-0.17.3/tests/test_status_table.py +342 -0
- atm_bd-0.17.3/tests/test_tabs.py +276 -0
- atm_bd-0.17.3/tests/test_terminal.py +74 -0
- atm_bd-0.17.3/tests/test_types.py +175 -0
- atm_bd-0.17.3/tests/test_verification.py +138 -0
- atm_bd-0.17.3/uv.lock +528 -0
atm_bd-0.17.3/.gitignore
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# bh-1 Type Contract
|
|
2
|
+
|
|
3
|
+
The canonical frozen contract is the `atm-bh-1` bead design. Its declarations
|
|
4
|
+
are synchronized with the field orders below.
|
|
5
|
+
|
|
6
|
+
The positional field order in `types.py` is part of the current contract:
|
|
7
|
+
|
|
8
|
+
- `Sprint`: `id`, `title`, `layer`, `branch`, `target`, `stack`, `depends_on`, `closed`, `findings`.
|
|
9
|
+
- `Inputs`: `now`, `lead`, `repo`, `interval_s`, `phase`, `members`, `tasks`, `worktrees`, `remotes`, `merges`, `prs`, `gh`, `task_beads`.
|
|
10
|
+
- `PhaseFile`: `phase`, `root_id`, `label`, `sprints`, `depends_on`, `lead`, `templates`.
|
|
11
|
+
|
|
12
|
+
`Inputs.interval_s` is always `Config.interval_s`; the bh-9 runner builds
|
|
13
|
+
`Inputs` from `Config`. Do not add other `Config` mirrors to `Inputs`.
|
|
14
|
+
|
|
15
|
+
`Config.notification_sender` is the validated `member@team` sender for plain
|
|
16
|
+
notifications, defaulting to `atm-bd@tool` and overridden only by `tool_identity`
|
|
17
|
+
in the repository YAML. It is appended with a default so
|
|
18
|
+
existing callers remain compatible; assignment identity remains `Config.lead`.
|
|
19
|
+
|
|
20
|
+
`RepoConfig.reviewers_round1` is part of the `RepoConfig` declaration in that
|
|
21
|
+
design and remains in its listed position before `plans_dir`.
|
|
22
|
+
|
|
23
|
+
The parallel sprint branches (bh-3 through bh-10) were rebased above the bh-1
|
|
24
|
+
contract layer and carry this field order. New fields must be supplied by
|
|
25
|
+
keyword in constructors from here on; existing fields and signatures are not
|
|
26
|
+
being changed except for the phase-settings update below.
|
|
27
|
+
|
|
28
|
+
## Phase settings (ANC023)
|
|
29
|
+
|
|
30
|
+
`PhaseFile.lead` is the validated nonempty phase TOML identity;
|
|
31
|
+
`Config.lead` is its resolved runtime value, refreshed each tick. Console
|
|
32
|
+
launches accept `--phase` and no longer accept `--as`. Neither environment
|
|
33
|
+
identity nor repository YAML supplies a fallback lead.
|
|
34
|
+
|
|
35
|
+
`PhaseFile.templates` maps exactly `dev`, `dev_fix`, `fix`, `sanity`, `qa`,
|
|
36
|
+
`plan_review`, and `review` to existing repository-relative files within
|
|
37
|
+
`.claude/skills/atm-bd-orchestration/templates/`. Missing or invalid lead and
|
|
38
|
+
template values return `Err(ConfigInvalid)` naming `lead` or
|
|
39
|
+
`templates.<purpose>` before launch effects.
|
|
40
|
+
|
|
41
|
+
`dispatch_spec(context, templates)` takes this validated mapping explicitly.
|
|
42
|
+
The runner binds it to the existing one-argument `SpecFn`; the pure model's
|
|
43
|
+
signature is unchanged. Only sanity and QA dispatch are supported, using the
|
|
44
|
+
matching purpose key and the existing repository-configured recipient.
|
|
45
|
+
`DispatchSpec.template` carries the exact configured relative path to ATM's
|
|
46
|
+
`--template` argument. New `PhaseFile` fields are supplied by keyword.
|
atm_bd-0.17.3/PKG-INFO
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: atm-bd
|
|
3
|
+
Version: 0.17.3
|
|
4
|
+
Summary: ATM and Beads orchestration console, cron runner, and bundled skills
|
|
5
|
+
Project-URL: Repository, https://github.com/randlee/atm-bd-orchestration
|
|
6
|
+
Project-URL: Issues, https://github.com/randlee/atm-bd-orchestration/issues
|
|
7
|
+
Author: Rand Lee
|
|
8
|
+
License-Expression: MIT
|
|
9
|
+
Requires-Python: >=3.11
|
|
10
|
+
Requires-Dist: pydantic
|
|
11
|
+
Requires-Dist: pyyaml
|
|
12
|
+
Requires-Dist: rich<16,>=15.0.0
|
|
13
|
+
Requires-Dist: sc-compose<2,>=1.7.0
|
|
14
|
+
Requires-Dist: sc-observability<2,>=1.5.0
|
|
15
|
+
Requires-Dist: textual<9,>=8.2.8
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
|
|
18
|
+
# atm-bd
|
|
19
|
+
|
|
20
|
+
`atm-bd` provides a terminal dashboard and single-tick cron runner for ATM and
|
|
21
|
+
Beads orchestration. It also bundles the orchestration skills for installation
|
|
22
|
+
into a repository.
|
|
23
|
+
|
|
24
|
+
## Development validation
|
|
25
|
+
|
|
26
|
+
From the repository root, `just lint` runs the console's lint and type gates.
|
|
27
|
+
Pyright checks only `apps/atm-bd-console/src`, including the enum matches whose
|
|
28
|
+
`assert_never` fallbacks make missing cases type errors. `tests/` is not included in the static type-check gate;
|
|
29
|
+
the test suite is validated by pytest at runtime. Ruff checks both `src` and `tests`.
|
|
30
|
+
The GitHub Actions console source type-check step uses the same scope.
|
|
31
|
+
|
|
32
|
+
Run the checks directly from `apps/atm-bd-console`:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
uv run --frozen pytest -q
|
|
36
|
+
uv run --frozen --group dev ruff check src tests
|
|
37
|
+
uv run --frozen pyright src
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Installation and prerequisites
|
|
41
|
+
|
|
42
|
+
Install the package with `uv tool install atm-bd` (Python 3.11 or newer).
|
|
43
|
+
The console and cron commands operate on a configured repository and require
|
|
44
|
+
the `atm`, `bd`, and `git` executables on `PATH`. The Status graph also uses
|
|
45
|
+
`mmdflux` when available.
|
|
46
|
+
|
|
47
|
+
Before running `atm-bd skill`, install the `sc-compose` CLI and ensure the
|
|
48
|
+
host `python3` on `PATH` can import `pydantic`, `yaml` (PyYAML), and the
|
|
49
|
+
`sc-compose` Python wheel. The CLI, host wheel, and the wheel in the atm-bd
|
|
50
|
+
environment must have matching versions within the bundled manifest's range;
|
|
51
|
+
the installer checks these requirements before writing files. The host Python
|
|
52
|
+
dependencies can be installed with `python3 -m pip install pydantic pyyaml
|
|
53
|
+
'sc-compose>=1.7.0,<2'`; install the matching `sc-compose` CLI separately.
|
|
54
|
+
|
|
55
|
+
From the repository root, run `atm-bd skill` to install the bundled skills
|
|
56
|
+
without fetching a release. It reports the bundled source ref, commit SHA,
|
|
57
|
+
and app version. Use `atm-bd skill --help` for release and destination options.
|
|
58
|
+
|
|
59
|
+
## Console operational logs
|
|
60
|
+
|
|
61
|
+
## Launch settings
|
|
62
|
+
|
|
63
|
+
Run `atm-bd console --phase bh` from the repository root. For one cron tick,
|
|
64
|
+
use `atm-bd cron --phase bh`; add `--dry-run` to preview actions.
|
|
65
|
+
The phase file `.atm-bd/phase-bh.toml` supplies the assignment identity and
|
|
66
|
+
template paths:
|
|
67
|
+
|
|
68
|
+
```toml
|
|
69
|
+
plan = "docs/plans/phase-bh.jsonl"
|
|
70
|
+
root = "atm-phase-bh"
|
|
71
|
+
integration_branch = "integrate/phase-bh"
|
|
72
|
+
lead = "solar"
|
|
73
|
+
|
|
74
|
+
[templates]
|
|
75
|
+
dev = ".claude/skills/atm-bd-orchestration/templates/dev-template.xml.j2"
|
|
76
|
+
dev_fix = ".claude/skills/atm-bd-orchestration/templates/dev-fix.xml.j2"
|
|
77
|
+
fix = ".claude/skills/atm-bd-orchestration/templates/fix-assignment.xml.j2"
|
|
78
|
+
sanity = ".claude/skills/atm-bd-orchestration/templates/dev-sanity-template.xml.j2"
|
|
79
|
+
qa = ".claude/skills/atm-bd-orchestration/templates/qa-template.xml.j2"
|
|
80
|
+
plan_review = ".claude/skills/atm-bd-orchestration/templates/plan-review-template.xml.j2"
|
|
81
|
+
review = ".claude/skills/atm-bd-orchestration/templates/review-template.xml.j2"
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
All seven purposes are required. Each value must name an existing file under
|
|
85
|
+
the installed template directory, relative to the repository root. Missing,
|
|
86
|
+
empty, unknown, or invalid settings produce `config_invalid` naming the key
|
|
87
|
+
before the console starts. Console `--as` is removed; `lead` is read only from
|
|
88
|
+
the phase file, with no environment or repository YAML fallback. Each tick
|
|
89
|
+
reloads these phase settings. Team and sanity/QA recipients still come from
|
|
90
|
+
`.atm.toml` and `.claude/project/atm-bd-orchestration.yaml`, respectively.
|
|
91
|
+
|
|
92
|
+
The console automatically assigns ready sanity and QA work using
|
|
93
|
+
`templates.sanity` and `templates.qa`. It passes the configured path to
|
|
94
|
+
`atm task assign --template` and the phase lead to ATM's `--as`. The other
|
|
95
|
+
purposes support orchestration workflows and do not enable additional console
|
|
96
|
+
dispatch kinds.
|
|
97
|
+
|
|
98
|
+
Plain notifications use `atm-bd@tool` by default, independently of the lead
|
|
99
|
+
used for assignments. The skill installer provisions the default tool identity.
|
|
100
|
+
To use another sender, set `tool_identity: "member@team"` in
|
|
101
|
+
`.claude/project/atm-bd-orchestration.yaml` and provision that identity in ATM.
|
|
102
|
+
Environment variables and command-line flags do not select the sender; ATM
|
|
103
|
+
subprocess identity and team are set from the selected sender. Failed sends
|
|
104
|
+
remain visible in snapshot errors and cron error lines. Task assignments remain
|
|
105
|
+
local to the lead's team (cross-team assignments are tracked by atm-core #1870).
|
|
106
|
+
|
|
107
|
+
## Dispatch verification
|
|
108
|
+
|
|
109
|
+
Ready sanity and QA assignments require a successful merge check for their
|
|
110
|
+
branch and target. Missing results, missing targets, timeouts, and unsupported
|
|
111
|
+
git commands hold assignment with an actionable problem until verification
|
|
112
|
+
succeeds. The persisted merge states remain `clean` (verified), `conflict`, and
|
|
113
|
+
`error` (verification unavailable); a failed probe replaces any cached clean
|
|
114
|
+
result. PR and CI status never hold assignment.
|
|
115
|
+
|
|
116
|
+
Each tick with a ready assignment candidate refreshes origin before pinning a
|
|
117
|
+
commit. A fetch or remote-ref read failure appears in the snapshot and logs,
|
|
118
|
+
holds assignment, and clears eligible cached refs so recovery retries safely.
|
|
119
|
+
`--no-fetch` explicitly skips refresh and permits the saved remote refs, while
|
|
120
|
+
still requiring a successful current merge check.
|
|
121
|
+
|
|
122
|
+
## Operational events
|
|
123
|
+
|
|
124
|
+
The console owns one `sc-observability` logger for its repository for the life
|
|
125
|
+
of the process. All ticks reuse it, including stopped and failed ticks. Logs
|
|
126
|
+
live under `.atm-bd/atm-bd/logs/`; the console sink is disabled. Each
|
|
127
|
+
tick flushes admitted events before saving its snapshot. Logger construction,
|
|
128
|
+
event admission and flush failures appear in the snapshot's Errors section
|
|
129
|
+
and in headless error output. They do not change whether a dispatch succeeded.
|
|
130
|
+
After repairing a logger construction failure, restart the process to retry
|
|
131
|
+
initialization.
|
|
132
|
+
|
|
133
|
+
Each proposed assignment, send or batch has an `action` event containing
|
|
134
|
+
`effect`, `recipient`, all `task_ids`, `outcome`, and the complete typed delivery
|
|
135
|
+
`error` (or null). Outcomes are `sent`, `failed <error kind>`, and `dry_run`.
|
|
136
|
+
Dry runs never deliver an ATM effect. Events cover every action even when the
|
|
137
|
+
dashboard's recent-action list retains only five. A logging error means the
|
|
138
|
+
operational log may be incomplete; use the snapshot's delivery outcomes and
|
|
139
|
+
Errors section to investigate. Source reads and git fetch/merge probes record
|
|
140
|
+
their operation, outcome and typed error, with team, task IDs or branch context
|
|
141
|
+
where available. `hold` events record the task, recipient and hold reason;
|
|
142
|
+
they do not introduce additional dispatch rules.
|
|
143
|
+
|
|
144
|
+
The phase's `.atm-bd/atm-bd/<root>/actions.jsonl` is an append-only
|
|
145
|
+
journal. Assignment/send entries record attempts, followed by a `hold` entry
|
|
146
|
+
on failure; `dry_run` entries record previews. An attempt entry alone is not
|
|
147
|
+
proof of delivery. Operational `action` events carry the explicit outcome.
|
|
148
|
+
|
|
149
|
+
## Retention and rotation
|
|
150
|
+
|
|
151
|
+
The console does not enforce an age or size retention limit on either the
|
|
152
|
+
operational log directory or `actions.jsonl`. Both require operator-managed
|
|
153
|
+
rotation. Check their disk usage daily; archive at least weekly or when either
|
|
154
|
+
reaches 100 MiB. Keep compressed archives for 30 days unless the project's
|
|
155
|
+
audit policy requires longer. These are maintenance recommendations, not
|
|
156
|
+
automatic limits.
|
|
157
|
+
|
|
158
|
+
To rotate safely:
|
|
159
|
+
|
|
160
|
+
1. Pause cron launches and stop every console using the repository. Logs are
|
|
161
|
+
shared across its phases, so stopping just one phase is insufficient.
|
|
162
|
+
2. Move the entire `logs/` directory and each phase's `actions.jsonl` to a
|
|
163
|
+
timestamped archive outside the runtime directory. Compress the archive and
|
|
164
|
+
expire archives older than the chosen retention window.
|
|
165
|
+
3. Leave `state.json`, `snapshot.json`, `merge.json`, `prs.json`, and lock files
|
|
166
|
+
in place. They are current runtime data, not log archives.
|
|
167
|
+
4. Restart the consoles and resume cron. The logger recreates its directory;
|
|
168
|
+
the next action recreates `actions.jsonl`. Check the next snapshot for
|
|
169
|
+
logging or journal write errors.
|
|
170
|
+
|
|
171
|
+
Do not truncate or rename active logs while writers are running. A scheduled
|
|
172
|
+
rotation job must coordinate the same stop/archive/restart sequence.
|
atm_bd-0.17.3/README.md
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# atm-bd
|
|
2
|
+
|
|
3
|
+
`atm-bd` provides a terminal dashboard and single-tick cron runner for ATM and
|
|
4
|
+
Beads orchestration. It also bundles the orchestration skills for installation
|
|
5
|
+
into a repository.
|
|
6
|
+
|
|
7
|
+
## Development validation
|
|
8
|
+
|
|
9
|
+
From the repository root, `just lint` runs the console's lint and type gates.
|
|
10
|
+
Pyright checks only `apps/atm-bd-console/src`, including the enum matches whose
|
|
11
|
+
`assert_never` fallbacks make missing cases type errors. `tests/` is not included in the static type-check gate;
|
|
12
|
+
the test suite is validated by pytest at runtime. Ruff checks both `src` and `tests`.
|
|
13
|
+
The GitHub Actions console source type-check step uses the same scope.
|
|
14
|
+
|
|
15
|
+
Run the checks directly from `apps/atm-bd-console`:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
uv run --frozen pytest -q
|
|
19
|
+
uv run --frozen --group dev ruff check src tests
|
|
20
|
+
uv run --frozen pyright src
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Installation and prerequisites
|
|
24
|
+
|
|
25
|
+
Install the package with `uv tool install atm-bd` (Python 3.11 or newer).
|
|
26
|
+
The console and cron commands operate on a configured repository and require
|
|
27
|
+
the `atm`, `bd`, and `git` executables on `PATH`. The Status graph also uses
|
|
28
|
+
`mmdflux` when available.
|
|
29
|
+
|
|
30
|
+
Before running `atm-bd skill`, install the `sc-compose` CLI and ensure the
|
|
31
|
+
host `python3` on `PATH` can import `pydantic`, `yaml` (PyYAML), and the
|
|
32
|
+
`sc-compose` Python wheel. The CLI, host wheel, and the wheel in the atm-bd
|
|
33
|
+
environment must have matching versions within the bundled manifest's range;
|
|
34
|
+
the installer checks these requirements before writing files. The host Python
|
|
35
|
+
dependencies can be installed with `python3 -m pip install pydantic pyyaml
|
|
36
|
+
'sc-compose>=1.7.0,<2'`; install the matching `sc-compose` CLI separately.
|
|
37
|
+
|
|
38
|
+
From the repository root, run `atm-bd skill` to install the bundled skills
|
|
39
|
+
without fetching a release. It reports the bundled source ref, commit SHA,
|
|
40
|
+
and app version. Use `atm-bd skill --help` for release and destination options.
|
|
41
|
+
|
|
42
|
+
## Console operational logs
|
|
43
|
+
|
|
44
|
+
## Launch settings
|
|
45
|
+
|
|
46
|
+
Run `atm-bd console --phase bh` from the repository root. For one cron tick,
|
|
47
|
+
use `atm-bd cron --phase bh`; add `--dry-run` to preview actions.
|
|
48
|
+
The phase file `.atm-bd/phase-bh.toml` supplies the assignment identity and
|
|
49
|
+
template paths:
|
|
50
|
+
|
|
51
|
+
```toml
|
|
52
|
+
plan = "docs/plans/phase-bh.jsonl"
|
|
53
|
+
root = "atm-phase-bh"
|
|
54
|
+
integration_branch = "integrate/phase-bh"
|
|
55
|
+
lead = "solar"
|
|
56
|
+
|
|
57
|
+
[templates]
|
|
58
|
+
dev = ".claude/skills/atm-bd-orchestration/templates/dev-template.xml.j2"
|
|
59
|
+
dev_fix = ".claude/skills/atm-bd-orchestration/templates/dev-fix.xml.j2"
|
|
60
|
+
fix = ".claude/skills/atm-bd-orchestration/templates/fix-assignment.xml.j2"
|
|
61
|
+
sanity = ".claude/skills/atm-bd-orchestration/templates/dev-sanity-template.xml.j2"
|
|
62
|
+
qa = ".claude/skills/atm-bd-orchestration/templates/qa-template.xml.j2"
|
|
63
|
+
plan_review = ".claude/skills/atm-bd-orchestration/templates/plan-review-template.xml.j2"
|
|
64
|
+
review = ".claude/skills/atm-bd-orchestration/templates/review-template.xml.j2"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
All seven purposes are required. Each value must name an existing file under
|
|
68
|
+
the installed template directory, relative to the repository root. Missing,
|
|
69
|
+
empty, unknown, or invalid settings produce `config_invalid` naming the key
|
|
70
|
+
before the console starts. Console `--as` is removed; `lead` is read only from
|
|
71
|
+
the phase file, with no environment or repository YAML fallback. Each tick
|
|
72
|
+
reloads these phase settings. Team and sanity/QA recipients still come from
|
|
73
|
+
`.atm.toml` and `.claude/project/atm-bd-orchestration.yaml`, respectively.
|
|
74
|
+
|
|
75
|
+
The console automatically assigns ready sanity and QA work using
|
|
76
|
+
`templates.sanity` and `templates.qa`. It passes the configured path to
|
|
77
|
+
`atm task assign --template` and the phase lead to ATM's `--as`. The other
|
|
78
|
+
purposes support orchestration workflows and do not enable additional console
|
|
79
|
+
dispatch kinds.
|
|
80
|
+
|
|
81
|
+
Plain notifications use `atm-bd@tool` by default, independently of the lead
|
|
82
|
+
used for assignments. The skill installer provisions the default tool identity.
|
|
83
|
+
To use another sender, set `tool_identity: "member@team"` in
|
|
84
|
+
`.claude/project/atm-bd-orchestration.yaml` and provision that identity in ATM.
|
|
85
|
+
Environment variables and command-line flags do not select the sender; ATM
|
|
86
|
+
subprocess identity and team are set from the selected sender. Failed sends
|
|
87
|
+
remain visible in snapshot errors and cron error lines. Task assignments remain
|
|
88
|
+
local to the lead's team (cross-team assignments are tracked by atm-core #1870).
|
|
89
|
+
|
|
90
|
+
## Dispatch verification
|
|
91
|
+
|
|
92
|
+
Ready sanity and QA assignments require a successful merge check for their
|
|
93
|
+
branch and target. Missing results, missing targets, timeouts, and unsupported
|
|
94
|
+
git commands hold assignment with an actionable problem until verification
|
|
95
|
+
succeeds. The persisted merge states remain `clean` (verified), `conflict`, and
|
|
96
|
+
`error` (verification unavailable); a failed probe replaces any cached clean
|
|
97
|
+
result. PR and CI status never hold assignment.
|
|
98
|
+
|
|
99
|
+
Each tick with a ready assignment candidate refreshes origin before pinning a
|
|
100
|
+
commit. A fetch or remote-ref read failure appears in the snapshot and logs,
|
|
101
|
+
holds assignment, and clears eligible cached refs so recovery retries safely.
|
|
102
|
+
`--no-fetch` explicitly skips refresh and permits the saved remote refs, while
|
|
103
|
+
still requiring a successful current merge check.
|
|
104
|
+
|
|
105
|
+
## Operational events
|
|
106
|
+
|
|
107
|
+
The console owns one `sc-observability` logger for its repository for the life
|
|
108
|
+
of the process. All ticks reuse it, including stopped and failed ticks. Logs
|
|
109
|
+
live under `.atm-bd/atm-bd/logs/`; the console sink is disabled. Each
|
|
110
|
+
tick flushes admitted events before saving its snapshot. Logger construction,
|
|
111
|
+
event admission and flush failures appear in the snapshot's Errors section
|
|
112
|
+
and in headless error output. They do not change whether a dispatch succeeded.
|
|
113
|
+
After repairing a logger construction failure, restart the process to retry
|
|
114
|
+
initialization.
|
|
115
|
+
|
|
116
|
+
Each proposed assignment, send or batch has an `action` event containing
|
|
117
|
+
`effect`, `recipient`, all `task_ids`, `outcome`, and the complete typed delivery
|
|
118
|
+
`error` (or null). Outcomes are `sent`, `failed <error kind>`, and `dry_run`.
|
|
119
|
+
Dry runs never deliver an ATM effect. Events cover every action even when the
|
|
120
|
+
dashboard's recent-action list retains only five. A logging error means the
|
|
121
|
+
operational log may be incomplete; use the snapshot's delivery outcomes and
|
|
122
|
+
Errors section to investigate. Source reads and git fetch/merge probes record
|
|
123
|
+
their operation, outcome and typed error, with team, task IDs or branch context
|
|
124
|
+
where available. `hold` events record the task, recipient and hold reason;
|
|
125
|
+
they do not introduce additional dispatch rules.
|
|
126
|
+
|
|
127
|
+
The phase's `.atm-bd/atm-bd/<root>/actions.jsonl` is an append-only
|
|
128
|
+
journal. Assignment/send entries record attempts, followed by a `hold` entry
|
|
129
|
+
on failure; `dry_run` entries record previews. An attempt entry alone is not
|
|
130
|
+
proof of delivery. Operational `action` events carry the explicit outcome.
|
|
131
|
+
|
|
132
|
+
## Retention and rotation
|
|
133
|
+
|
|
134
|
+
The console does not enforce an age or size retention limit on either the
|
|
135
|
+
operational log directory or `actions.jsonl`. Both require operator-managed
|
|
136
|
+
rotation. Check their disk usage daily; archive at least weekly or when either
|
|
137
|
+
reaches 100 MiB. Keep compressed archives for 30 days unless the project's
|
|
138
|
+
audit policy requires longer. These are maintenance recommendations, not
|
|
139
|
+
automatic limits.
|
|
140
|
+
|
|
141
|
+
To rotate safely:
|
|
142
|
+
|
|
143
|
+
1. Pause cron launches and stop every console using the repository. Logs are
|
|
144
|
+
shared across its phases, so stopping just one phase is insufficient.
|
|
145
|
+
2. Move the entire `logs/` directory and each phase's `actions.jsonl` to a
|
|
146
|
+
timestamped archive outside the runtime directory. Compress the archive and
|
|
147
|
+
expire archives older than the chosen retention window.
|
|
148
|
+
3. Leave `state.json`, `snapshot.json`, `merge.json`, `prs.json`, and lock files
|
|
149
|
+
in place. They are current runtime data, not log archives.
|
|
150
|
+
4. Restart the consoles and resume cron. The logger recreates its directory;
|
|
151
|
+
the next action recreates `actions.jsonl`. Check the next snapshot for
|
|
152
|
+
logging or journal write errors.
|
|
153
|
+
|
|
154
|
+
Do not truncate or rename active logs while writers are running. A scheduled
|
|
155
|
+
rotation job must coordinate the same stop/archive/restart sequence.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import re
|
|
4
|
+
import subprocess
|
|
5
|
+
import tomllib
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
from hatchling.builders.hooks.plugin.interface import BuildHookInterface
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class CustomBuildHook(BuildHookInterface):
|
|
12
|
+
def initialize(self, version: str, build_data: dict[str, object]) -> None:
|
|
13
|
+
package = Path(self.root).resolve()
|
|
14
|
+
root = package.parents[1]
|
|
15
|
+
output = package / "src" / "atm_bd_console" / "_build_identity.py"
|
|
16
|
+
self._generated_identity = False
|
|
17
|
+
package_version = tomllib.loads((package / "pyproject.toml").read_text())["project"]["version"]
|
|
18
|
+
if (package / "PKG-INFO").is_file() and output.is_file():
|
|
19
|
+
if not re.search(r"^COMMIT = (['\"])[0-9a-f]{40}\1$", output.read_text(), re.MULTILINE):
|
|
20
|
+
raise RuntimeError(f"cannot reuse console identity: {output} has no valid 40-hex COMMIT")
|
|
21
|
+
self._include_identity(output, build_data)
|
|
22
|
+
self._include_skills(package, root, build_data)
|
|
23
|
+
return
|
|
24
|
+
try:
|
|
25
|
+
toplevel = subprocess.check_output(
|
|
26
|
+
["git", "-C", root, "rev-parse", "--show-toplevel"], text=True, stderr=subprocess.PIPE
|
|
27
|
+
).strip()
|
|
28
|
+
except FileNotFoundError as error:
|
|
29
|
+
raise RuntimeError("cannot build console identity: git executable is missing") from error
|
|
30
|
+
except (OSError, subprocess.CalledProcessError) as error:
|
|
31
|
+
raise RuntimeError("cannot build console identity: source is not a console checkout") from error
|
|
32
|
+
if Path(toplevel).resolve() != root or not (root / "apps/atm-bd-console" / "pyproject.toml").is_file():
|
|
33
|
+
raise RuntimeError("cannot build console identity: source is not a console checkout")
|
|
34
|
+
try:
|
|
35
|
+
shallow = subprocess.check_output(["git", "-C", root, "rev-parse", "--is-shallow-repository"], text=True).strip()
|
|
36
|
+
if shallow != "false":
|
|
37
|
+
raise RuntimeError("cannot build console identity: checkout is shallow")
|
|
38
|
+
revision = subprocess.check_output(["git", "-C", root, "rev-parse", "--short", "HEAD"], text=True).strip()
|
|
39
|
+
commit = subprocess.check_output(["git", "-C", root, "rev-parse", "HEAD"], text=True).strip()
|
|
40
|
+
count = subprocess.check_output(["git", "-C", root, "rev-list", "--count", "HEAD"], text=True).strip()
|
|
41
|
+
dirty = subprocess.check_output(["git", "-C", root, "status", "--porcelain", "--", ".", ":!.ok"], text=True).strip()
|
|
42
|
+
except (OSError, subprocess.CalledProcessError) as error:
|
|
43
|
+
raise RuntimeError("cannot build console identity: git command failed") from error
|
|
44
|
+
major, minor, _patch = package_version.split(".", 2)
|
|
45
|
+
identity = f"{major}.{minor}.{count}+g{revision}{'-dirty' if dirty else ''}"
|
|
46
|
+
self._include_skills(package, root, build_data)
|
|
47
|
+
output.write_text(f'IDENTITY = {identity!r}\nCOMMIT = {commit!r}\n')
|
|
48
|
+
self._generated_identity = True
|
|
49
|
+
self._include_identity(output, build_data)
|
|
50
|
+
|
|
51
|
+
def _include_identity(self, output: Path, build_data: dict[str, object]) -> None:
|
|
52
|
+
destination = "atm_bd_console/_build_identity.py" if self.target_name == "wheel" else "src/atm_bd_console/_build_identity.py"
|
|
53
|
+
build_data["force_include"][str(output)] = destination
|
|
54
|
+
|
|
55
|
+
def _include_skills(self, package: Path, root: Path, build_data: dict[str, object]) -> None:
|
|
56
|
+
plugin = root / "plugins" / "atm-bd-orchestration"
|
|
57
|
+
bundled = package / "src" / "atm_bd_console" / "_skills"
|
|
58
|
+
# An sdist must use its own contents, never a coincidental adjacent checkout.
|
|
59
|
+
source = bundled if (package / "PKG-INFO").is_file() else (plugin if plugin.is_dir() else bundled)
|
|
60
|
+
if not source.is_dir():
|
|
61
|
+
raise RuntimeError(f"cannot bundle skills: neither {plugin} nor {bundled} exists")
|
|
62
|
+
destination = "atm_bd_console/_skills" if self.target_name == "wheel" else "src/atm_bd_console/_skills"
|
|
63
|
+
build_data["force_include"][str(source)] = destination
|
|
64
|
+
|
|
65
|
+
def finalize(self, version: str, build_data: dict[str, object], artifact_path: str) -> None:
|
|
66
|
+
if self._generated_identity:
|
|
67
|
+
(Path(self.root) / "src" / "atm_bd_console" / "_build_identity.py").unlink(missing_ok=True)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "atm-bd"
|
|
3
|
+
version = "0.17.3"
|
|
4
|
+
description = "ATM and Beads orchestration console, cron runner, and bundled skills"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
license = "MIT"
|
|
7
|
+
authors = [{ name = "Rand Lee" }]
|
|
8
|
+
requires-python = ">=3.11"
|
|
9
|
+
dependencies = ["rich>=15.0.0,<16", "textual>=8.2.8,<9", "sc-observability>=1.5.0,<2", "pyyaml", "pydantic", "sc-compose>=1.7.0,<2"]
|
|
10
|
+
|
|
11
|
+
[project.urls]
|
|
12
|
+
Repository = "https://github.com/randlee/atm-bd-orchestration"
|
|
13
|
+
Issues = "https://github.com/randlee/atm-bd-orchestration/issues"
|
|
14
|
+
|
|
15
|
+
[project.scripts]
|
|
16
|
+
atm-bd = "atm_bd_console.cli:main"
|
|
17
|
+
|
|
18
|
+
[dependency-groups]
|
|
19
|
+
dev = ["pytest", "ruff", "pyright", "hatchling==1.31.0"]
|
|
20
|
+
|
|
21
|
+
[build-system]
|
|
22
|
+
requires = ["hatchling==1.31.0"]
|
|
23
|
+
build-backend = "hatchling.build"
|
|
24
|
+
|
|
25
|
+
[tool.hatch.build.targets.wheel]
|
|
26
|
+
packages = ["src/atm_bd_console"]
|
|
27
|
+
|
|
28
|
+
[tool.hatch.build.targets.wheel.hooks.custom]
|
|
29
|
+
|
|
30
|
+
[tool.hatch.build.targets.sdist.hooks.custom]
|
|
31
|
+
|
|
32
|
+
[tool.pytest.ini_options]
|
|
33
|
+
testpaths = ["tests"]
|
|
34
|
+
|
|
35
|
+
[tool.ruff]
|
|
36
|
+
line-length = 120
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "atm-bd-orchestration",
|
|
3
|
+
"description": "Bead-driven phase orchestration for ATM agent teams: atm-beads (the plan as a beads graph), atm-bd-orchestration (dispatch, dev-sanity, QA and stack landing from bd ready) and sprint-report (status tables and DAGs from live beads), plus the dev-sanity agents they name.",
|
|
4
|
+
"version": "0.16.0",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "randlee"
|
|
7
|
+
},
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"keywords": [
|
|
10
|
+
"atm",
|
|
11
|
+
"beads",
|
|
12
|
+
"orchestration",
|
|
13
|
+
"sprint",
|
|
14
|
+
"qa",
|
|
15
|
+
"gh-stack"
|
|
16
|
+
]
|
|
17
|
+
}
|