yasdef-worker 0.2.1__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.
- yasdef_worker-0.2.1/.github/workflows/publish.yml +29 -0
- yasdef_worker-0.2.1/.gitignore +14 -0
- yasdef_worker-0.2.1/CHANGELOG.md +96 -0
- yasdef_worker-0.2.1/LICENSE +21 -0
- yasdef_worker-0.2.1/PKG-INFO +408 -0
- yasdef_worker-0.2.1/Readme.md +393 -0
- yasdef_worker-0.2.1/openspec/changes/crp-112/.openspec.yaml +2 -0
- yasdef_worker-0.2.1/openspec/changes/crp-112/design.md +155 -0
- yasdef_worker-0.2.1/openspec/changes/crp-112/proposal.md +66 -0
- yasdef_worker-0.2.1/openspec/changes/crp-112/specs/design-as-contract-phase-boundaries/spec.md +30 -0
- yasdef_worker-0.2.1/openspec/changes/crp-112/specs/deterministic-implementation-prompt-packet/spec.md +39 -0
- yasdef_worker-0.2.1/openspec/changes/crp-112/specs/linked-artifact-implementation-fetch-for-fidelity/spec.md +42 -0
- yasdef_worker-0.2.1/openspec/changes/crp-112/specs/linked-artifact-planning-fetch-and-clarify/spec.md +66 -0
- yasdef_worker-0.2.1/openspec/changes/crp-112/specs/linked-artifact-reachability-gate/spec.md +63 -0
- yasdef_worker-0.2.1/openspec/changes/crp-112/specs/linked-artifact-step-scoped-extraction/spec.md +53 -0
- yasdef_worker-0.2.1/openspec/changes/crp-112/specs/planning-to-implementation-readiness-gate/spec.md +55 -0
- yasdef_worker-0.2.1/openspec/changes/crp-112/tasks.md +47 -0
- yasdef_worker-0.2.1/openspec/changes/crp-126-simplify-lars-logic/.openspec.yaml +2 -0
- yasdef_worker-0.2.1/openspec/changes/crp-126-simplify-lars-logic/design.md +33 -0
- yasdef_worker-0.2.1/openspec/changes/crp-126-simplify-lars-logic/proposal.md +24 -0
- yasdef_worker-0.2.1/openspec/changes/crp-126-simplify-lars-logic/specs/lar-jit-fetch-scope/spec.md +20 -0
- yasdef_worker-0.2.1/openspec/changes/crp-126-simplify-lars-logic/tasks.md +13 -0
- yasdef_worker-0.2.1/openspec/changes/crp-127-design-phase-as-skill/.openspec.yaml +2 -0
- yasdef_worker-0.2.1/openspec/changes/crp-127-design-phase-as-skill/design.md +59 -0
- yasdef_worker-0.2.1/openspec/changes/crp-127-design-phase-as-skill/proposal.md +32 -0
- yasdef_worker-0.2.1/openspec/changes/crp-127-design-phase-as-skill/specs/design-to-planning-readiness-gate/spec.md +13 -0
- yasdef_worker-0.2.1/openspec/changes/crp-127-design-phase-as-skill/specs/orchestrator-worker-assigned-step-routing/spec.md +17 -0
- yasdef_worker-0.2.1/openspec/changes/crp-127-design-phase-as-skill/specs/worker-runtime-bootstrap/spec.md +25 -0
- yasdef_worker-0.2.1/openspec/changes/crp-127-design-phase-as-skill/specs/yasdef-worker-design-skill/spec.md +39 -0
- yasdef_worker-0.2.1/openspec/changes/crp-127-design-phase-as-skill/tasks.md +30 -0
- yasdef_worker-0.2.1/openspec/changes/crp-128-plan-phase-as-skill/.openspec.yaml +2 -0
- yasdef_worker-0.2.1/openspec/changes/crp-128-plan-phase-as-skill/design.md +84 -0
- yasdef_worker-0.2.1/openspec/changes/crp-128-plan-phase-as-skill/proposal.md +29 -0
- yasdef_worker-0.2.1/openspec/changes/crp-128-plan-phase-as-skill/specs/worker-plan-skill/spec.md +148 -0
- yasdef_worker-0.2.1/openspec/changes/crp-128-plan-phase-as-skill/tasks.md +43 -0
- yasdef_worker-0.2.1/openspec/changes/crp-129-impl-phase-as-skill/implementation_phase_as_skill.md +327 -0
- yasdef_worker-0.2.1/openspec/changes/crp-130-user-review-phase-as-skill/proposal.md +30 -0
- yasdef_worker-0.2.1/openspec/changes/crp-130-user-review-phase-as-skill/specs/orchestrator-user-review-phase/spec.md +41 -0
- yasdef_worker-0.2.1/openspec/changes/crp-130-user-review-phase-as-skill/tasks.md +26 -0
- yasdef_worker-0.2.1/openspec/changes/crp-130-user-review-phase-as-skill/user_review_phase_as_skill.md +333 -0
- yasdef_worker-0.2.1/openspec/changes/crp-131-ai-audit-phase-as-skill/ai_audit_phase_as_skill.md +528 -0
- yasdef_worker-0.2.1/openspec/changes/crp-132-no-prompt-txt/.openspec.yaml +2 -0
- yasdef_worker-0.2.1/openspec/changes/crp-132-no-prompt-txt/design.md +44 -0
- yasdef_worker-0.2.1/openspec/changes/crp-132-no-prompt-txt/proposal.md +27 -0
- yasdef_worker-0.2.1/openspec/changes/crp-132-no-prompt-txt/specs/orchestrator-user-review-phase/spec.md +17 -0
- yasdef_worker-0.2.1/openspec/changes/crp-132-no-prompt-txt/tasks.md +18 -0
- yasdef_worker-0.2.1/openspec/changes/crp-133-add-claude-audit-skill/.openspec.yaml +2 -0
- yasdef_worker-0.2.1/openspec/changes/crp-133-add-claude-audit-skill/design.md +72 -0
- yasdef_worker-0.2.1/openspec/changes/crp-133-add-claude-audit-skill/proposal.md +34 -0
- yasdef_worker-0.2.1/openspec/changes/crp-133-add-claude-audit-skill/specs/worker-runtime-bootstrap/spec.md +41 -0
- yasdef_worker-0.2.1/openspec/changes/crp-133-add-claude-audit-skill/specs/yasdef-worker-ai-audit-claude-skill/spec.md +41 -0
- yasdef_worker-0.2.1/openspec/changes/crp-133-add-claude-audit-skill/tasks.md +40 -0
- yasdef_worker-0.2.1/openspec/changes/crp-134-add-claude-runner-for-ai-audit/.openspec.yaml +2 -0
- yasdef_worker-0.2.1/openspec/changes/crp-134-add-claude-runner-for-ai-audit/design.md +115 -0
- yasdef_worker-0.2.1/openspec/changes/crp-134-add-claude-runner-for-ai-audit/proposal.md +32 -0
- yasdef_worker-0.2.1/openspec/changes/crp-134-add-claude-runner-for-ai-audit/specs/orchestrator-model-runner-dispatch/spec.md +62 -0
- yasdef_worker-0.2.1/openspec/changes/crp-134-add-claude-runner-for-ai-audit/tasks.md +39 -0
- yasdef_worker-0.2.1/openspec/changes/crp-135-add-claude-design-skill/.openspec.yaml +2 -0
- yasdef_worker-0.2.1/openspec/changes/crp-135-add-claude-design-skill/design.md +75 -0
- yasdef_worker-0.2.1/openspec/changes/crp-135-add-claude-design-skill/proposal.md +35 -0
- yasdef_worker-0.2.1/openspec/changes/crp-135-add-claude-design-skill/specs/worker-runtime-bootstrap/spec.md +41 -0
- yasdef_worker-0.2.1/openspec/changes/crp-135-add-claude-design-skill/specs/yasdef-worker-design-claude-skill/spec.md +41 -0
- yasdef_worker-0.2.1/openspec/changes/crp-135-add-claude-design-skill/tasks.md +33 -0
- yasdef_worker-0.2.1/openspec/changes/crp-136-add-claude-plan-skill/.openspec.yaml +2 -0
- yasdef_worker-0.2.1/openspec/changes/crp-136-add-claude-plan-skill/design.md +72 -0
- yasdef_worker-0.2.1/openspec/changes/crp-136-add-claude-plan-skill/proposal.md +35 -0
- yasdef_worker-0.2.1/openspec/changes/crp-136-add-claude-plan-skill/specs/worker-runtime-bootstrap/spec.md +42 -0
- yasdef_worker-0.2.1/openspec/changes/crp-136-add-claude-plan-skill/specs/yasdef-worker-plan-claude-skill/spec.md +41 -0
- yasdef_worker-0.2.1/openspec/changes/crp-136-add-claude-plan-skill/tasks.md +34 -0
- yasdef_worker-0.2.1/openspec/changes/crp-137-add-claude-implementation-skill/.openspec.yaml +2 -0
- yasdef_worker-0.2.1/openspec/changes/crp-137-add-claude-implementation-skill/design.md +74 -0
- yasdef_worker-0.2.1/openspec/changes/crp-137-add-claude-implementation-skill/proposal.md +35 -0
- yasdef_worker-0.2.1/openspec/changes/crp-137-add-claude-implementation-skill/specs/worker-runtime-bootstrap/spec.md +40 -0
- yasdef_worker-0.2.1/openspec/changes/crp-137-add-claude-implementation-skill/specs/yasdef-worker-implementation-claude-skill/spec.md +43 -0
- yasdef_worker-0.2.1/openspec/changes/crp-137-add-claude-implementation-skill/tasks.md +32 -0
- yasdef_worker-0.2.1/openspec/changes/crp-138-add-claude-user-review-skill/.openspec.yaml +2 -0
- yasdef_worker-0.2.1/openspec/changes/crp-138-add-claude-user-review-skill/design.md +74 -0
- yasdef_worker-0.2.1/openspec/changes/crp-138-add-claude-user-review-skill/proposal.md +35 -0
- yasdef_worker-0.2.1/openspec/changes/crp-138-add-claude-user-review-skill/specs/worker-runtime-bootstrap/spec.md +49 -0
- yasdef_worker-0.2.1/openspec/changes/crp-138-add-claude-user-review-skill/specs/yasdef-worker-user-review-claude-skill/spec.md +41 -0
- yasdef_worker-0.2.1/openspec/changes/crp-138-add-claude-user-review-skill/tasks.md +36 -0
- yasdef_worker-0.2.1/openspec/changes/crp-139-move-blueprint-helper-into-design-skill/design.md +92 -0
- yasdef_worker-0.2.1/openspec/changes/crp-139-move-blueprint-helper-into-design-skill/proposal.md +30 -0
- yasdef_worker-0.2.1/openspec/changes/crp-139-move-blueprint-helper-into-design-skill/specs/yasdef-worker-design-skill/spec.md +64 -0
- yasdef_worker-0.2.1/openspec/changes/crp-139-move-blueprint-helper-into-design-skill/tasks.md +36 -0
- yasdef_worker-0.2.1/openspec/changes/crp-140-direct-tty-phase-completion/design.md +60 -0
- yasdef_worker-0.2.1/openspec/changes/crp-140-direct-tty-phase-completion/proposal.md +30 -0
- yasdef_worker-0.2.1/openspec/changes/crp-140-direct-tty-phase-completion/specs/direct-tty-phase-completion/spec.md +36 -0
- yasdef_worker-0.2.1/openspec/changes/crp-140-direct-tty-phase-completion/specs/orchestrator-step-resume/spec.md +59 -0
- yasdef_worker-0.2.1/openspec/changes/crp-140-direct-tty-phase-completion/specs/phase-done-branch-signal/spec.md +18 -0
- yasdef_worker-0.2.1/openspec/changes/crp-140-direct-tty-phase-completion/tasks.md +22 -0
- yasdef_worker-0.2.1/openspec/config.yaml +20 -0
- yasdef_worker-0.2.1/openspec/specs/ai-audit-review-disposition-gate/spec.md +56 -0
- yasdef_worker-0.2.1/openspec/specs/ai-audit-yasdef-todo-handoff/spec.md +56 -0
- yasdef_worker-0.2.1/openspec/specs/design-as-contract-phase-boundaries/spec.md +45 -0
- yasdef_worker-0.2.1/openspec/specs/design-derived-functional-requirements-execution/spec.md +112 -0
- yasdef_worker-0.2.1/openspec/specs/design-to-planning-readiness-gate/spec.md +47 -0
- yasdef_worker-0.2.1/openspec/specs/deterministic-implementation-prompt-packet/spec.md +67 -0
- yasdef_worker-0.2.1/openspec/specs/feature-path-override-test-contracts/spec.md +46 -0
- yasdef_worker-0.2.1/openspec/specs/human-review-explanation-mode/spec.md +29 -0
- yasdef_worker-0.2.1/openspec/specs/implementation-evidence-gate/spec.md +34 -0
- yasdef_worker-0.2.1/openspec/specs/implementation-evidence-reasoning-summary/spec.md +43 -0
- yasdef_worker-0.2.1/openspec/specs/implementation-prompt-slimming/spec.md +45 -0
- yasdef_worker-0.2.1/openspec/specs/implementation-proof-gate/spec.md +68 -0
- yasdef_worker-0.2.1/openspec/specs/missing-data-answer-traceability/spec.md +43 -0
- yasdef_worker-0.2.1/openspec/specs/orchestrator-debug-artifact-mode/spec.md +88 -0
- yasdef_worker-0.2.1/openspec/specs/orchestrator-step-resume/spec.md +47 -0
- yasdef_worker-0.2.1/openspec/specs/orchestrator-user-review-phase/spec.md +73 -0
- yasdef_worker-0.2.1/openspec/specs/orchestrator-worker-assigned-step-routing/spec.md +53 -0
- yasdef_worker-0.2.1/openspec/specs/overmind-bootstrap-progress-checklist/spec.md +169 -0
- yasdef_worker-0.2.1/openspec/specs/overmind-br-summary-fr-br-line-item-format/spec.md +47 -0
- yasdef_worker-0.2.1/openspec/specs/overmind-br-to-ears-conversion-rule/spec.md +79 -0
- yasdef_worker-0.2.1/openspec/specs/overmind-br-to-ears-init-bootstrap/spec.md +70 -0
- yasdef_worker-0.2.1/openspec/specs/overmind-ears-quality-helper-gate/spec.md +77 -0
- yasdef_worker-0.2.1/openspec/specs/overmind-ears-readiness-gate/spec.md +12 -0
- yasdef_worker-0.2.1/openspec/specs/overmind-feature-br-structuring-bootstrap/spec.md +140 -0
- yasdef_worker-0.2.1/openspec/specs/overmind-feature-br-tmp-workspace/spec.md +33 -0
- yasdef_worker-0.2.1/openspec/specs/overmind-feature-path-override/spec.md +99 -0
- yasdef_worker-0.2.1/openspec/specs/overmind-missing-br-data-resolution-loop/spec.md +39 -0
- yasdef_worker-0.2.1/openspec/specs/overmind-missing-data-resolution-state-gate/spec.md +43 -0
- yasdef_worker-0.2.1/openspec/specs/overmind-process-artifact-ownership/spec.md +30 -0
- yasdef_worker-0.2.1/openspec/specs/overmind-repo-scan-br-quality-gate/spec.md +55 -0
- yasdef_worker-0.2.1/openspec/specs/overmind-step-3-ears-format-alignment/spec.md +36 -0
- yasdef_worker-0.2.1/openspec/specs/overmind-user-input-business-context-loop-gate/spec.md +52 -0
- yasdef_worker-0.2.1/openspec/specs/overmind-worker-registry-bootstrap/spec.md +48 -0
- yasdef_worker-0.2.1/openspec/specs/planning-to-implementation-readiness-gate/spec.md +58 -0
- yasdef_worker-0.2.1/openspec/specs/planning-ur-shortlist-gate/spec.md +96 -0
- yasdef_worker-0.2.1/openspec/specs/project-agent-guidance/spec.md +22 -0
- yasdef_worker-0.2.1/openspec/specs/review-brief-output/spec.md +17 -0
- yasdef_worker-0.2.1/openspec/specs/step-plan-ordered-execution/spec.md +41 -0
- yasdef_worker-0.2.1/openspec/specs/test-layout-separation/spec.md +8 -0
- yasdef_worker-0.2.1/openspec/specs/user-review-canonical-yasdef-todo-markers/spec.md +45 -0
- yasdef_worker-0.2.1/openspec/specs/user-review-rule-hygiene/spec.md +33 -0
- yasdef_worker-0.2.1/openspec/specs/worker-identity-branch-split/spec.md +37 -0
- yasdef_worker-0.2.1/openspec/specs/worker-overmind-registration/spec.md +41 -0
- yasdef_worker-0.2.1/pyproject.toml +52 -0
- yasdef_worker-0.2.1/src/yasdef_worker/__init__.py +3 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/commands/yasdef/audit.md +16 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/commands/yasdef/design.md +15 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/commands/yasdef/implementation.md +15 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/commands/yasdef/plan.md +17 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/commands/yasdef/user-review.md +15 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/golden_examples/blocker_log_GOLDEN_EXAMPLE.md +26 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/golden_examples/decisions_GOLDEN_EXAMPLE.md +30 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/golden_examples/history_GOLDEN_EXAMPLE.md +17 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/golden_examples/open_questions_GOLDEN_EXAMPLE.md +11 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/golden_examples/user_review_GOLDEN_EXAMPLE.md +13 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/runtime/blocker_log_INITIAL.md +0 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/runtime/decisions_INITIAL.md +0 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/runtime/history_INITIAL.md +0 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/runtime/open_questions_INITIAL.md +0 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/runtime/user_review_INITIAL.md +0 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/setup/models.md +28 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-ai-audit/SKILL.md +120 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-ai-audit/assets/audit_result_GOLDEN_EXAMPLE.md +54 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-ai-audit/assets/audit_result_TEMPLATE.md +43 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-ai-audit/assets/raised_question_GOLDEN_EXAMPLE.md +31 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-ai-audit/assets/raised_question_TEMPLATE.md +33 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-ai-audit/scripts/append_follow_up_step.py +190 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-ai-audit/scripts/build_ai_audit_context.py +212 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-ai-audit/scripts/check_ai_audit_closure.py +281 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-ai-audit/scripts/check_ai_audit_entry.py +68 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-design/SKILL.md +112 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-design/assets/feature_design_GOLDEN_EXAMPLE.md +76 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-design/assets/feature_design_TEMPLATE.md +80 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-design/scripts/build_design_context.py +321 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-design/scripts/check_design_readiness.py +111 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-design/scripts/find_blueprints.py +128 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-implementation/SKILL.md +93 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-implementation/scripts/build_implementation_context.py +217 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-implementation/scripts/check_implementation_readiness.py +200 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-plan/SKILL.md +158 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-plan/assets/step_plan_GOLDEN_EXAMPLE.md +57 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-plan/assets/step_plan_TEMPLATE.md +60 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-plan/scripts/build_plan_context.py +290 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-plan/scripts/check_planning_readiness.py +402 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-plan/scripts/sync_step_lars.py +76 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-user-review/SKILL.md +72 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-user-review/assets/review_brief_GOLDEN_EXAMPLE.md +5 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-user-review/assets/review_brief_TEMPLATE.md +5 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-user-review/assets/user_review_GOLDEN_EXAMPLE.md +13 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-user-review/assets/user_review_TEMPLATE.md +30 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/skills/yasdef-worker-user-review/scripts/build_user_review_context.py +246 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/templates/blocker_log_TEMPLATE.md +16 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/templates/decisions_TEMPLATE.md +19 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/templates/history_TEMPLATE.md +19 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/templates/open_questions_TEMPLATE.md +14 -0
- yasdef_worker-0.2.1/src/yasdef_worker/_data/templates/user_review_TEMPLATE.md +30 -0
- yasdef_worker-0.2.1/src/yasdef_worker/app/__init__.py +1 -0
- yasdef_worker-0.2.1/src/yasdef_worker/app/branch_manager.py +84 -0
- yasdef_worker-0.2.1/src/yasdef_worker/app/coordinator.py +107 -0
- yasdef_worker-0.2.1/src/yasdef_worker/app/feature_context.py +390 -0
- yasdef_worker-0.2.1/src/yasdef_worker/app/history_writer.py +112 -0
- yasdef_worker-0.2.1/src/yasdef_worker/app/init_asdlc_worker.py +389 -0
- yasdef_worker-0.2.1/src/yasdef_worker/app/mainline_branch_policy.py +80 -0
- yasdef_worker-0.2.1/src/yasdef_worker/app/metrics_collector.py +38 -0
- yasdef_worker-0.2.1/src/yasdef_worker/app/phases/__init__.py +35 -0
- yasdef_worker-0.2.1/src/yasdef_worker/app/phases/ai_audit.py +89 -0
- yasdef_worker-0.2.1/src/yasdef_worker/app/phases/base.py +168 -0
- yasdef_worker-0.2.1/src/yasdef_worker/app/phases/design.py +47 -0
- yasdef_worker-0.2.1/src/yasdef_worker/app/phases/implementation.py +71 -0
- yasdef_worker-0.2.1/src/yasdef_worker/app/phases/planning.py +65 -0
- yasdef_worker-0.2.1/src/yasdef_worker/app/phases/post_review.py +79 -0
- yasdef_worker-0.2.1/src/yasdef_worker/app/phases/user_review.py +82 -0
- yasdef_worker-0.2.1/src/yasdef_worker/app/pipeline.py +81 -0
- yasdef_worker-0.2.1/src/yasdef_worker/app/post_review.py +303 -0
- yasdef_worker-0.2.1/src/yasdef_worker/app/register_worker.py +154 -0
- yasdef_worker-0.2.1/src/yasdef_worker/app/resume.py +310 -0
- yasdef_worker-0.2.1/src/yasdef_worker/cli/__init__.py +5 -0
- yasdef_worker-0.2.1/src/yasdef_worker/cli/_shared.py +60 -0
- yasdef_worker-0.2.1/src/yasdef_worker/cli/init.py +36 -0
- yasdef_worker-0.2.1/src/yasdef_worker/cli/main.py +43 -0
- yasdef_worker-0.2.1/src/yasdef_worker/cli/post_review.py +77 -0
- yasdef_worker-0.2.1/src/yasdef_worker/cli/register.py +33 -0
- yasdef_worker-0.2.1/src/yasdef_worker/cli/run.py +47 -0
- yasdef_worker-0.2.1/src/yasdef_worker/cli/uninstall.py +43 -0
- yasdef_worker-0.2.1/src/yasdef_worker/domain/__init__.py +2 -0
- yasdef_worker-0.2.1/src/yasdef_worker/domain/branches.py +71 -0
- yasdef_worker-0.2.1/src/yasdef_worker/domain/history/__init__.py +7 -0
- yasdef_worker-0.2.1/src/yasdef_worker/domain/history/records.py +47 -0
- yasdef_worker-0.2.1/src/yasdef_worker/domain/history/token_usage.py +72 -0
- yasdef_worker-0.2.1/src/yasdef_worker/domain/models_config.py +72 -0
- yasdef_worker-0.2.1/src/yasdef_worker/domain/phase_types.py +24 -0
- yasdef_worker-0.2.1/src/yasdef_worker/domain/phases.py +28 -0
- yasdef_worker-0.2.1/src/yasdef_worker/domain/plans/__init__.py +2 -0
- yasdef_worker-0.2.1/src/yasdef_worker/domain/plans/feature_selector.py +64 -0
- yasdef_worker-0.2.1/src/yasdef_worker/domain/plans/implementation_plan.py +136 -0
- yasdef_worker-0.2.1/src/yasdef_worker/domain/plans/ledgers.py +24 -0
- yasdef_worker-0.2.1/src/yasdef_worker/domain/plans/step_design.py +31 -0
- yasdef_worker-0.2.1/src/yasdef_worker/domain/plans/step_plan.py +73 -0
- yasdef_worker-0.2.1/src/yasdef_worker/domain/plans/step_sorting.py +27 -0
- yasdef_worker-0.2.1/src/yasdef_worker/domain/runners/__init__.py +15 -0
- yasdef_worker-0.2.1/src/yasdef_worker/domain/runners/base.py +35 -0
- yasdef_worker-0.2.1/src/yasdef_worker/domain/runners/claude.py +15 -0
- yasdef_worker-0.2.1/src/yasdef_worker/domain/runners/codex.py +15 -0
- yasdef_worker-0.2.1/src/yasdef_worker/domain/runners/echo.py +19 -0
- yasdef_worker-0.2.1/src/yasdef_worker/domain/workers_registry.py +63 -0
- yasdef_worker-0.2.1/src/yasdef_worker/infra/__init__.py +1 -0
- yasdef_worker-0.2.1/src/yasdef_worker/infra/errors.py +73 -0
- yasdef_worker-0.2.1/src/yasdef_worker/infra/files.py +38 -0
- yasdef_worker-0.2.1/src/yasdef_worker/infra/git_repo.py +187 -0
- yasdef_worker-0.2.1/src/yasdef_worker/infra/layout.py +116 -0
- yasdef_worker-0.2.1/src/yasdef_worker/infra/log_capture.py +38 -0
- yasdef_worker-0.2.1/src/yasdef_worker/infra/process.py +192 -0
- yasdef_worker-0.2.1/src/yasdef_worker/infra/prompts.py +73 -0
- yasdef_worker-0.2.1/src/yasdef_worker/infra/templates.py +18 -0
- yasdef_worker-0.2.1/src/yasdef_worker/infra/user_output.py +89 -0
- yasdef_worker-0.2.1/src/yasdef_worker/infra/yaml_io.py +39 -0
- yasdef_worker-0.2.1/src/yasdef_worker/templates/__init__.py +1 -0
- yasdef_worker-0.2.1/src/yasdef_worker/templates/prompts/__init__.py +1 -0
- yasdef_worker-0.2.1/src/yasdef_worker/templates/prompts/ai_audit.md +10 -0
- yasdef_worker-0.2.1/src/yasdef_worker/templates/prompts/design.md +9 -0
- yasdef_worker-0.2.1/src/yasdef_worker/templates/prompts/implementation.md +9 -0
- yasdef_worker-0.2.1/src/yasdef_worker/templates/prompts/planning.md +11 -0
- yasdef_worker-0.2.1/src/yasdef_worker/templates/prompts/user_review.md +9 -0
- yasdef_worker-0.2.1/tests/integration/__init__.py +0 -0
- yasdef_worker-0.2.1/tests/integration/conftest.py +351 -0
- yasdef_worker-0.2.1/tests/integration/test_init.py +145 -0
- yasdef_worker-0.2.1/tests/integration/test_post_review.py +177 -0
- yasdef_worker-0.2.1/tests/integration/test_register.py +207 -0
- yasdef_worker-0.2.1/tests/integration/test_run.py +417 -0
- yasdef_worker-0.2.1/tests/skills_python_scripts/yasdef_worker_ai_audit_tests.sh +683 -0
- yasdef_worker-0.2.1/tests/skills_python_scripts/yasdef_worker_design_find_blueprints_tests.sh +228 -0
- yasdef_worker-0.2.1/tests/skills_python_scripts/yasdef_worker_design_tests.sh +183 -0
- yasdef_worker-0.2.1/tests/skills_python_scripts/yasdef_worker_implementation_tests.sh +263 -0
- yasdef_worker-0.2.1/tests/skills_python_scripts/yasdef_worker_plan_tests.sh +247 -0
- yasdef_worker-0.2.1/tests/skills_python_scripts/yasdef_worker_user_review_tests.sh +217 -0
- yasdef_worker-0.2.1/tests/unit/app/installer/test_init_asdlc_worker.py +342 -0
- yasdef_worker-0.2.1/tests/unit/app/test_branch_manager.py +84 -0
- yasdef_worker-0.2.1/tests/unit/app/test_concrete_phases.py +248 -0
- yasdef_worker-0.2.1/tests/unit/app/test_coordinator.py +187 -0
- yasdef_worker-0.2.1/tests/unit/app/test_feature_context.py +349 -0
- yasdef_worker-0.2.1/tests/unit/app/test_history_metrics.py +94 -0
- yasdef_worker-0.2.1/tests/unit/app/test_phase_base.py +168 -0
- yasdef_worker-0.2.1/tests/unit/app/test_pipeline.py +305 -0
- yasdef_worker-0.2.1/tests/unit/app/test_post_review.py +281 -0
- yasdef_worker-0.2.1/tests/unit/app/test_register_worker.py +142 -0
- yasdef_worker-0.2.1/tests/unit/app/test_resume.py +157 -0
- yasdef_worker-0.2.1/tests/unit/cli/test_main.py +285 -0
- yasdef_worker-0.2.1/tests/unit/domain/test_branches_models.py +94 -0
- yasdef_worker-0.2.1/tests/unit/domain/test_implementation_plan.py +189 -0
- yasdef_worker-0.2.1/tests/unit/domain/test_plan_parsers.py +76 -0
- yasdef_worker-0.2.1/tests/unit/domain/test_plan_properties.py +54 -0
- yasdef_worker-0.2.1/tests/unit/domain/test_runners.py +66 -0
- yasdef_worker-0.2.1/tests/unit/domain/test_workers_history.py +99 -0
- yasdef_worker-0.2.1/tests/unit/infra/test_files.py +19 -0
- yasdef_worker-0.2.1/tests/unit/infra/test_git_repo.py +102 -0
- yasdef_worker-0.2.1/tests/unit/infra/test_layout.py +68 -0
- yasdef_worker-0.2.1/tests/unit/infra/test_process_log_templates.py +79 -0
- yasdef_worker-0.2.1/tests/unit/infra/test_prompts_output.py +80 -0
- yasdef_worker-0.2.1/tests/unit/infra/test_yaml_io.py +23 -0
- yasdef_worker-0.2.1/tests/unit/test_package_resources.py +36 -0
- yasdef_worker-0.2.1/uv.lock +397 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*.*.*"
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
build-and-publish:
|
|
10
|
+
name: Build and publish
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
environment: release
|
|
13
|
+
permissions:
|
|
14
|
+
id-token: write # required for Trusted Publishing OIDC
|
|
15
|
+
contents: read
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v4
|
|
19
|
+
|
|
20
|
+
- name: Install uv
|
|
21
|
+
uses: astral-sh/setup-uv@v5
|
|
22
|
+
|
|
23
|
+
- name: Build wheel and sdist
|
|
24
|
+
run: |
|
|
25
|
+
rm -rf dist
|
|
26
|
+
uv build
|
|
27
|
+
|
|
28
|
+
- name: Publish to PyPI
|
|
29
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# CHANGELOG
|
|
2
|
+
|
|
3
|
+
## v0.2.0 — Python CLI cutover (2026-06-07)
|
|
4
|
+
|
|
5
|
+
All operator-facing invocations changed in this release. The bash scripts under
|
|
6
|
+
`ai/scripts/` are deleted. Upgrade by installing the Python tool and switching
|
|
7
|
+
every invocation using the table below.
|
|
8
|
+
|
|
9
|
+
### Install
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
# Before (bash era — no install step; repo was pulled locally)
|
|
13
|
+
cd /path/to/yasdef
|
|
14
|
+
# ... manually ran scripts from ai/scripts/
|
|
15
|
+
|
|
16
|
+
# After
|
|
17
|
+
uv tool install yasdef-worker
|
|
18
|
+
yasdef --help
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Local wheel install from this repository and plain Python venv installation are
|
|
22
|
+
also supported; see `Readme.md` for commands.
|
|
23
|
+
|
|
24
|
+
### Command rename table
|
|
25
|
+
|
|
26
|
+
| Old command (bash) | New command (yasdef CLI) |
|
|
27
|
+
|--------------------|--------------------------|
|
|
28
|
+
| `bash .asdlc_worker/scripts/init_asdlc_worker.sh` | `yasdef init <target-repo-path>` |
|
|
29
|
+
| `chmod -R +x .asdlc_worker/scripts` | *(no longer needed — tool is installed globally)* |
|
|
30
|
+
| `bash .asdlc_worker/scripts/register_worker.sh` | `yasdef register` |
|
|
31
|
+
| `bash .asdlc_worker/scripts/orchestrator.sh` | `yasdef run` |
|
|
32
|
+
| `bash .asdlc_worker/scripts/orchestrator.sh --resume <step>` | `yasdef run --resume <step>` |
|
|
33
|
+
| `bash .asdlc_worker/scripts/orchestrator.sh --dry-run` | `yasdef run --dry-run` |
|
|
34
|
+
| `bash .asdlc_worker/scripts/orchestrator.sh --debug -- --step 1.3` | `yasdef run --resume 1.3` |
|
|
35
|
+
| `bash .asdlc_worker/scripts/post_review.sh` | `yasdef post-review` |
|
|
36
|
+
| *(no equivalent)* | `yasdef uninstall` — remove the global tool |
|
|
37
|
+
|
|
38
|
+
### Behavior changes
|
|
39
|
+
|
|
40
|
+
- **Exhausted cached feature**: when `feature_meta_sync.yaml` exists but all
|
|
41
|
+
assigned steps are complete, interactive mode prompts to delete or keep the
|
|
42
|
+
file; non-interactive mode exits non-zero with removal instructions.
|
|
43
|
+
- **Merge-back offer**: after `yasdef init` and `yasdef register`, interactive
|
|
44
|
+
mode offers to fast-forward merge the work branch back into the start branch
|
|
45
|
+
(default: no; skipped in non-interactive mode with a reminder).
|
|
46
|
+
- **Skill-based pipeline**: the workflow moved fully from broad model
|
|
47
|
+
instructions and generated phase prompts to per-phase `yasdef-worker-*`
|
|
48
|
+
skills as the process authority.
|
|
49
|
+
- **No `chmod` needed**: the tool is installed by `uv tool install` and is on
|
|
50
|
+
`PATH` immediately.
|
|
51
|
+
|
|
52
|
+
### Migration steps for existing installations
|
|
53
|
+
|
|
54
|
+
1. `uv tool install yasdef-worker`, or use the local wheel / venv install
|
|
55
|
+
options documented in `Readme.md` when developing from a checkout.
|
|
56
|
+
2. Replace every `bash .asdlc_worker/scripts/orchestrator.sh` in CI configs,
|
|
57
|
+
wrapper scripts, and operator runbooks with `yasdef run`.
|
|
58
|
+
3. Replace `bash .asdlc_worker/scripts/register_worker.sh` with
|
|
59
|
+
`yasdef register`.
|
|
60
|
+
4. If you previously ran `bash .asdlc_worker/scripts/init_asdlc_worker.sh` on
|
|
61
|
+
new machines, use `yasdef init <target-repo-path>` instead.
|
|
62
|
+
5. Delete any local copies of `ai/scripts/` if you had them checked out.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## v0.1.3
|
|
67
|
+
|
|
68
|
+
- Remove outdated git logic from worker-overmind interaction
|
|
69
|
+
- Add init script
|
|
70
|
+
- Add AGENTS.md warning and blueprint search
|
|
71
|
+
- Add external links processing
|
|
72
|
+
- Add first commit work logic
|
|
73
|
+
|
|
74
|
+
## v0.1.2
|
|
75
|
+
|
|
76
|
+
- Integration with new coordinator (asdlc folder) — orchestrator can register
|
|
77
|
+
itself in overmind and fetch tasks directly from asdlc folder
|
|
78
|
+
|
|
79
|
+
## v0.1.1
|
|
80
|
+
|
|
81
|
+
- CRP-044 — Worker Init Script for Overmind Registration
|
|
82
|
+
- CRP-045 — Split Worker Identity Persistence from Registry Coordination
|
|
83
|
+
- CRP-046 — UUID-Scoped Step Selection From overmind Git Branch
|
|
84
|
+
- CRP-047 — Phase Denial Must Stop Downstream Prompts
|
|
85
|
+
- CRP-048 — ai_audit TODO Marker Processing Into Findings
|
|
86
|
+
- CRP-050 — Remove Target Bullets From Step Plans
|
|
87
|
+
- CRP-051 — In-Phase Readiness Gates
|
|
88
|
+
|
|
89
|
+
## v0.1.0
|
|
90
|
+
|
|
91
|
+
- First wave (worker POC) features implemented
|
|
92
|
+
- Token consumption reduced ~25-30%
|
|
93
|
+
- CRP-037 — Implementation Prompt Slimming
|
|
94
|
+
- CRP-038 — Deterministic Concise Implementation Prompt From Step Plan + Design
|
|
95
|
+
- CRP-041 — UR Hygiene: Enforce Template Schema + De-dup on Update
|
|
96
|
+
- CRP-042 — Optional Feature-Rich Design/Planning Mode
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 YASDEF contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: yasdef-worker
|
|
3
|
+
Version: 0.2.1
|
|
4
|
+
Summary: Python orchestrator for the YASDEF worker workflow
|
|
5
|
+
License-File: LICENSE
|
|
6
|
+
Requires-Python: >=3.11
|
|
7
|
+
Requires-Dist: pyyaml>=6.0
|
|
8
|
+
Provides-Extra: dev
|
|
9
|
+
Requires-Dist: hypothesis>=6.0; extra == 'dev'
|
|
10
|
+
Requires-Dist: mypy>=1.10; extra == 'dev'
|
|
11
|
+
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
12
|
+
Requires-Dist: ruff>=0.6; extra == 'dev'
|
|
13
|
+
Requires-Dist: types-pyyaml>=6.0; extra == 'dev'
|
|
14
|
+
Description-Content-Type: text/markdown
|
|
15
|
+
|
|
16
|
+
# Yet Another Spec Driven (Enhanced) Framework - YASDEF
|
|
17
|
+
|
|
18
|
+
## Word from first commit
|
|
19
|
+
|
|
20
|
+
There's nothing wrong with vibecoding. Building prototypes with AI — is a new superpower and it's unlocked a huge wave of experimentation and helps people start something new that really matters.
|
|
21
|
+
But sometimes what you need - is not prototype. Some of us work in complex codebases — often in enterprise environments where predictability, maturity, and long-term maintainability matter more than raw velocity. This is sometimes true for startups as well.
|
|
22
|
+
This framework is built to help when vibecoding is not enough. It uses AI to support developer productivity, but never at the expense of code quality. It is also designed to reduce token consumption so one can work comfortably with an entry-level subscription, regardless of how complex one's codebase is and how many tasks should be implemented.
|
|
23
|
+
|
|
24
|
+
This approach can be expressed in a few sentences:
|
|
25
|
+
- Spec-driven, but you dont need to write and read specs -> developers will deliver maximum value by making the right system design decisions.
|
|
26
|
+
- Human in the loop who supervise the model -> guaranty of predictable code quality level and responcibility shift from model to operator
|
|
27
|
+
- Strict phase-based context management -> stable reproduceble outcome and efficient token usage
|
|
28
|
+
- Design/Plan split -> separation of "WHAT we building" question from "HOW we build", which previent model drift and improve codebase consistency
|
|
29
|
+
- Final ai-backed audit for each implementation step -> clear and efficient way to handle implementation issues
|
|
30
|
+
|
|
31
|
+
## Quick start
|
|
32
|
+
|
|
33
|
+
0. Read this carefully:
|
|
34
|
+
- ⚠️ This is alpha — things may break. Use at your own risk. Take precautions before integrating this repo into your project!
|
|
35
|
+
- ⚠️ Your `AGENTS.md` will be used as part of the prompt to the AI model, and the AI model may examine your project code — make sure you're comfortable with that.
|
|
36
|
+
- ✅ You need a supported AI CLI available (currently `codex cli` and `claude cli`). Configure your model runner in `.asdlc_worker/setup/models.md` after init.
|
|
37
|
+
- ✅ You need at least Python3 installed. For real prod instalation you need [uv](https://docs.astral.sh/uv/)
|
|
38
|
+
- ✅ Yasdef worker is part of framework. You need yasdef-coordinator to make it work. To get started with yasdef-coordinator you can a) examine yasdef-coordinator Readme.md here https://github.com/yasdef/yasdef-overmind/blob/main/README.md and follow instructions. b) mock yasdef-coordinator if you just need to take a look at framework. Step-by-step instruction can be found in this readme (scroll down to "How to mock yasdef-coordinator" section).
|
|
39
|
+
|
|
40
|
+
1. Install the `yasdef` tool. Recommended global install requires [uv](https://docs.astral.sh/uv/):
|
|
41
|
+
|
|
42
|
+
* Option A (prod level instalation):
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
uv tool install yasdef-worker
|
|
46
|
+
```
|
|
47
|
+
This puts `yasdef` on your `PATH`. Run `yasdef --help` to verify.
|
|
48
|
+
|
|
49
|
+
* Option B (self-build instalation):
|
|
50
|
+
|
|
51
|
+
During local development from this repository, you can build and install the local wheel instead:
|
|
52
|
+
```
|
|
53
|
+
cd /path/to/yasdef
|
|
54
|
+
rm -rf dist
|
|
55
|
+
uv build
|
|
56
|
+
uv tool install --force dist/*.whl
|
|
57
|
+
yasdef --help
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
* Option C (no UV, simplest option just to try it out):
|
|
61
|
+
|
|
62
|
+
Without `uv`, install into a normal Python venv:
|
|
63
|
+
```
|
|
64
|
+
python3.11 -m venv ~/.venvs/yasdef
|
|
65
|
+
source ~/.venvs/yasdef/bin/activate
|
|
66
|
+
python -m pip install /path/to/yasdef
|
|
67
|
+
yasdef --help
|
|
68
|
+
```
|
|
69
|
+
That same venv should be activated from any worker repo before running `yasdef`:
|
|
70
|
+
```
|
|
71
|
+
cd /path/to/worker-repo
|
|
72
|
+
source ~/.venvs/yasdef/bin/activate
|
|
73
|
+
yasdef run
|
|
74
|
+
```
|
|
75
|
+
⚠️ when you re-install yasdef it will not update installed skills in project-level folders (like .claude, .codex etc) - re-run init phase (see below)
|
|
76
|
+
|
|
77
|
+
2. Bootstrap a worker directory:
|
|
78
|
+
```
|
|
79
|
+
yasdef init <path-to-your-worker-repo>
|
|
80
|
+
```
|
|
81
|
+
The command creates `.asdlc_worker/` inside the target git repo, installs worker skills into `.claude/skills/`, `.codex/skills/`, `.github/skills/`, and `.agents/skills/`, and commits on a new `init_yasdef_worker` branch. Configure the model runner in `.asdlc_worker/setup/models.md` before first run. ⚠️ After init phase will be finished you need to merge changes in main/master manually.
|
|
82
|
+
|
|
83
|
+
This is also valid way to re-write this folders to apply skills.
|
|
84
|
+
|
|
85
|
+
3. Add `AGENTS.md` to the project root. If you don't know what should be in it, ask your model to generate `AGENTS.md` (or `CLAUDE.md` for claude.cli) with project-specific best practices in a root of you working project - it's extremely important for codebase consistency.
|
|
86
|
+
|
|
87
|
+
4. Register this worker with an ASDLC project:
|
|
88
|
+
- prepare the ASDLC project folder path, for example `<asdlc-repo>/projects/<project-id>`
|
|
89
|
+
- prepare your worker UUID from that ASDLC project's `workers.yaml`
|
|
90
|
+
```
|
|
91
|
+
cd /path/to/worker-repo
|
|
92
|
+
yasdef register
|
|
93
|
+
```
|
|
94
|
+
The command prompts for the ASDLC project path and worker UUID. The path must be the project folder that contains `workers.yaml`, `init_progress_definition.yaml`, and feature folders; for the coordinator layout this is usually `<asdlc-repo>/projects/<project-id>`, not the ASDLC repo root. The worker UUID must already exist in that project's `workers.yaml`. The command reads `project_id` from `<asdlc-project-path>/init_progress_definition.yaml` under `meta_info.project_id`, writes a deterministic binding to `.asdlc_worker/project_overmind.yaml`, and commits on a new `register_yasdef_worker_in_coordinator` branch. This path is not the implementation codebase repo.
|
|
95
|
+
|
|
96
|
+
5. Run the worker:
|
|
97
|
+
|
|
98
|
+
- simply run worker and follow interactive steps.
|
|
99
|
+
```
|
|
100
|
+
yasdef run
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
- here is the brief explanation how exactly worker will operate, just in case anyone interested, since all works in interactive mode it can be skiped
|
|
104
|
+
|
|
105
|
+
The worker reads `.asdlc_worker/project_overmind.yaml`, refreshes the bound ASDLC project worktree with `git pull --rebase`, and scans feature folders for `implementation_plan.md` / `requirements_ears.md`.
|
|
106
|
+
|
|
107
|
+
5.1. Feature and step selection:
|
|
108
|
+
- The worker looks for steps assigned to its `worker_uuid` with `#### Assigned: <worker-uuid>`.
|
|
109
|
+
- If `.asdlc_worker/feature_meta_sync.yaml` points to a valid unfinished feature, the worker reuses it.
|
|
110
|
+
- Otherwise, if one candidate feature exists, the worker selects it automatically.
|
|
111
|
+
- If multiple candidate features exist, the worker asks the operator to choose one.
|
|
112
|
+
- The selected feature and step are written back to `.asdlc_worker/feature_meta_sync.yaml`.
|
|
113
|
+
|
|
114
|
+
5.2. Worker execution:
|
|
115
|
+
- The worker runs configured phases one by one in order, normally `design -> planning -> implementation -> user_review -> ai_audit -> post_review`.
|
|
116
|
+
- Each model-driven phase uses its installed `yasdef-worker-*` skill and the selected feature/step context.
|
|
117
|
+
- Each model-driven phase uses model and (sometimes) reasoning depth based on `/setup/models.md`, so it can be changed manually at any time. You can mix different cli's and models in one setup, it'll work. ⚠️ All works in interactive mode, NOT headless (which will save your tokens).
|
|
118
|
+
- After `ai_audit`, the worker commits the updated ASDLC implementation plan and pushes it through the bound ASDLC repo. If outbound sync fails, interactive mode offers retry/finish; non-interactive mode stops before `post_review`.
|
|
119
|
+
|
|
120
|
+
6. To recover interrupted work for a specific step deterministically:
|
|
121
|
+
```
|
|
122
|
+
yasdef run --resume <step>
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
7. OPTIONAL — uninstall the tool when no longer needed:
|
|
126
|
+
```
|
|
127
|
+
yasdef uninstall
|
|
128
|
+
```
|
|
129
|
+
This removes the global `yasdef` tool. Worker skills and `.asdlc_worker/` artifacts in target repos are unaffected.
|
|
130
|
+
|
|
131
|
+
## Why we need yet another SDD framework?
|
|
132
|
+
|
|
133
|
+
* Current SDD frameworks are great (I strongly recommend you forget about vibecoding and try open-spec, spec-kit, or another SDD framework), but they are built with the purpose of growing a vibecoder into a conscious product manager. That's not actually what enterprise developer teams need right now.
|
|
134
|
+
* YASDEF is built for seamless adoption of AI in the usual SDLC — upgrading it to ASDLC. The goal is 10× productivity while keeping enterprise-level quality, familiar processes, and, most importantly, not shifting responsibility from the developer to AI. If that sounds boring — we're probably on the right track.
|
|
135
|
+
* We consider AI coding agents as another tool for engineers — maybe the best and most promising one in many years — but still… it's a tool. And don't forget: the bottleneck is never technology, it's always people.
|
|
136
|
+
* YASDEF has a distributed architecture for distributed teams: someone establishes plans, others write code, we have feedback loops, quality gates, and agile rituals… and we don't really think we need to throw all of that away just because AI appeared.
|
|
137
|
+
* YASDEF is about shifting developers from writing code to making architectural decisions and finding effective approaches. AI can write code. The engineer's duty is to think, decide, and supervise.
|
|
138
|
+
* We don't really need to choose between an agile and a strict approach when writing code with AI. We prefer to stay agile at the product level, because requirements can appear, change, or disappear unexpectedly. But when AI writes code, the process should be extremely strict and straightforward to get predictable, reproducible, and deterministic results (as much as that's possible with AI).
|
|
139
|
+
* We don't like the idea that a developer works for 5 minutes and spends the rest of the time doing something else. YASDEF is about an approach where we work as long as needed but deliver 10× more value per unit of time. Code quality, maintainability, and readability are not negotiable trade-offs.
|
|
140
|
+
* We can outsource many tasks to AI — but not thinking and decision-making.
|
|
141
|
+
|
|
142
|
+
## How this works (or will be)
|
|
143
|
+
|
|
144
|
+
- **Coordinator:** The Coordinator manages the whole project based on technical requirements, architecture, and core technical decisions. All tasks and subtasks form a cyclic graph. Each implementation plan contains a sequence of tasks that can be done one by one. The Coordinator should act agilely, manage the development process and task allocation based on feedback, and constantly optimize and recalculate the graph. The Coordinator never adds new tasks on its own; it only structures them in the graph. Requests to add tasks come from Workers (bottom-up) or from a human operator (top-down) as specific decisions.
|
|
145
|
+
|
|
146
|
+
- **Worker:** Workers are the actual code implementers. They take the implementation plan as input and split it into reasonable steps. Each step is implemented following a strict AI-dev process. The main goal is to guarantee high code quality while reducing manual coding burden for the operator. This shifts the human operator's role from coding to making complex technical decisions and ensuring architectural quality.
|
|
147
|
+
|
|
148
|
+
- **Phase-script behavior:** A phase-script, managed by the model, creates a task context, then the model (via pipe worker -> cli) consumes this context. Specifically, the worker runs a coding agent (cli) with parameters like model, reasoning effort, and a request to run a script. Script-driven context generation makes the input prompt stable.
|
|
149
|
+
|
|
150
|
+
- **Orchestration:** `yasdef run` drives the configured worker phase pipeline.
|
|
151
|
+
- Worker/project binding rule: reads `worker_uuid` and `project_id` from `.asdlc_worker/project_overmind.yaml`.
|
|
152
|
+
- Phase configuration rule: phase order comes from `.asdlc_worker/setup/models.md`; phases normally run as `design -> planning -> implementation -> user_review -> ai_audit -> post_review`.
|
|
153
|
+
- Candidate discovery rule: scans bound ASDLC project features (`<asdlc-project-path>/<feature-id>/implementation_plan.md`), skipping `.git` and directories without usable `implementation_plan.md` / `requirements_ears.md`, and considers only `#### Assigned: <worker-uuid>` blocks.
|
|
154
|
+
- Bound-project freshness rule: when the bound ASDLC project path is inside a Git worktree, the worker runs `git pull --rebase` before feature discovery.
|
|
155
|
+
- Explicit selection rule: `0` candidates fails, `1` candidate auto-selects, and `>1` candidates require explicit user choice.
|
|
156
|
+
- Single-source rule: reads and writes `implementation_plan.md` and `requirements_ears.md` directly at the bound-source paths — there is no local runtime mirror.
|
|
157
|
+
- Post-ai_audit sync rule: before `post_review`, stages the updated bound-source `implementation_plan.md`, commits it in the bound ASDLC repo, runs `git pull --rebase`, and pushes on success.
|
|
158
|
+
- Outbound failure rule: commit/rebase/push failures offer exactly `1. retry` or `2. finish`; `finish` continues to `post_review`, while non-interactive runs stop before `post_review`.
|
|
159
|
+
- Feature sync state: records selected feature metadata in `.asdlc_worker/feature_meta_sync.yaml` (4 fields: `project_id`, `worker_uuid`, `feature_id`, `selected_step`); valid metadata is sticky across runs. Stale metadata (identity mismatch or missing bound-source plan) is discarded and triggers slow-path discovery. If the stored feature is blocked by an upstream step, exits with an explicit blocker message. If the stored feature is exhausted (all assigned bullets complete), offers an interactive prompt to delete `.asdlc_worker/feature_meta_sync.yaml` (choice 1) or exit for manual handling (choice 2); non-interactive mode exits with an error. To reselect a feature manually, remove `.asdlc_worker/feature_meta_sync.yaml` before re-running.
|
|
160
|
+
- Resume mode: `--resume <step>` evaluates phase completion markers in canonical order (`design -> planning -> implementation -> user_review -> ai_audit -> post_review`) and starts at the first unfinished phase.
|
|
161
|
+
- Determinism rule: any missing/partial/inconsistent marker set is treated as unfinished, so the phase is re-run from phase start.
|
|
162
|
+
|
|
163
|
+
## AI-dev process main rules
|
|
164
|
+
|
|
165
|
+
- **Single source of truth for workflow rules**: Behavioral and process rules for AI execution live in the per-phase worker skills (`.claude/skills/yasdef-worker-*`, also installed under `.codex/`, `.github/`, `.agents/`). Scripts stay minimal and phase-scoped. All rules are defined once in the relevant skill and referenced; they are never duplicated across phase scripts.
|
|
166
|
+
- **Clean separation of concerns**:
|
|
167
|
+
- The worker skills define the generic workflow (phases, gates, artifacts, per-step loop). They are project-agnostic and never include project-specific details.
|
|
168
|
+
- `AGENTS.md` defines project-specific constraints: build commands, test runners, API specs, validation rules, branch strategy, tool paths, idempotency expectations. It never discusses the AI-dev process itself.
|
|
169
|
+
- Both the skills and `AGENTS.md` are required; they are kept independent so that workflow improvements do not leak into project configuration, and vice versa.
|
|
170
|
+
- **Phase isolation**: Each model-driven phase (design, planning, implementation, user review, ai_audit/post-step audit) is executed in a separate AI-agent session with a distinct prompt. Context is never shared between phases (e.g., planning artifacts are frozen when implementation starts). Post-review is a non-AI phase. This ensures each phase uses the most suitable model and reasoning effort.
|
|
171
|
+
- **Determinism over speed**: Every decision, blocker, and new finding is recorded in durable artifacts (`decisions.md`, `blocker_log.md`, `open_questions.md`, `step_review_results/`). This enables reproducibility and allows the project to continue without AI assistance at any point. Since technical decisions records in structured format to further retro with team or/and with AI
|
|
172
|
+
- **Human in the loop**: Complex technical decisions and architectural choices are not made by the Worker. Workers must explicitly ask the user for decisions before proceeding; user feedback during the dedicated user review phase is incorporated as generalizable rules in `user_review.md` to improve future iterations.
|
|
173
|
+
|
|
174
|
+
## Main process artifacts and responsibilities
|
|
175
|
+
|
|
176
|
+
Each artifact below serves a specific role in the AI-dev process:
|
|
177
|
+
|
|
178
|
+
- **<asdlc-project-repo>/<feature-id>/requirements_ears.md**: Source-of-truth behavioral requirements for each feature (EARS format).
|
|
179
|
+
- **<asdlc-project-repo>/<feature-id>/implementation_plan.md**: Source-of-truth execution plan for each feature; `#### Assigned:` routes work to workers.
|
|
180
|
+
- **.asdlc_worker/project_overmind.yaml**: Durable local binding created by `yasdef register`; stores the bound ASDLC repo path, `project_id`, worker UUID, class, and status.
|
|
181
|
+
- **.asdlc_worker/feature_meta_sync.yaml**: Selected-feature cache (`project_id`, `worker_uuid`, `feature_id`, `selected_step`) used for traceability and `--resume` reuse.
|
|
182
|
+
- **.asdlc_worker/step_designs/**: Per-step design artifacts (`step-<N>-<feature-id>-design.md`) with scope, data-flow, API/UX, risks, and planning handoff decisions.
|
|
183
|
+
- **.asdlc_worker/step_plans/**: Per-step planning artifacts (`step-<N>-<feature-id>.md`) that define ordered implementation work, translated functional requirements, architecture, risks, and test strategy.
|
|
184
|
+
- **.asdlc_worker/blocker_log.md**: Durable blocker ledger for unresolved issues that stop progress.
|
|
185
|
+
- **.asdlc_worker/open_questions.md**: Durable non-blocking question ledger for questions that should be resolved in the appropriate phase.
|
|
186
|
+
- **.asdlc_worker/decisions.md**: Durable technical decisions recorded during the worker process. Used to avoid rehashing settled choices.
|
|
187
|
+
- **.asdlc_worker/user_review.md**: Generalizable user-review rules and accepted feedback patterns that should influence future work.
|
|
188
|
+
- **.asdlc_worker/step_review_results/**: Post-step audit findings (`review_result-<N>-<feature-id>.md`). Each finding has exactly one terminal disposition: `follow_up_created`, `raised_to_coordinator`, or `rejected`.
|
|
189
|
+
- **.asdlc_worker/history.md**: Step completion log tracking outcomes, effort, surprises, and key decisions.
|
|
190
|
+
|
|
191
|
+
## What's done + plans
|
|
192
|
+
|
|
193
|
+
V-0.0.1
|
|
194
|
+
|
|
195
|
+
1. what's added:
|
|
196
|
+
- main architecture and concept findings
|
|
197
|
+
- based functionality in form of bash scripts
|
|
198
|
+
- templates and golden examples for all artifacts
|
|
199
|
+
- orchestrator.sh, so all steps run semi-automatically from 1 command
|
|
200
|
+
- orchestrator runs phase sessions with isolated context
|
|
201
|
+
- different model and reasonong depth for each phase (/setup/models.sh)
|
|
202
|
+
- each finished step of plan has recorded metrics (including token counts) in history.md
|
|
203
|
+
- each phase can be run separately (manually)
|
|
204
|
+
|
|
205
|
+
V-0.0.2
|
|
206
|
+
|
|
207
|
+
1. whats added
|
|
208
|
+
- new design step
|
|
209
|
+
- phase scripts improved significantly
|
|
210
|
+
|
|
211
|
+
V-0.0.3
|
|
212
|
+
|
|
213
|
+
1. whats added
|
|
214
|
+
- CRP-023 — Evidence-Based Bullet Completion Gate (model check if implementation plan bulets are realy implemented with strict prove of implementation gate)
|
|
215
|
+
- CRP-025 — Orchestrator Explicit Debug Mode for Logs and Prompts (if no --debug flag only "latest" step atrifacts will be recorded)
|
|
216
|
+
- CRP-026 — Strict Numbered Decision Prompts in Planning (on planing model always asked with 1 and 2 to simplify user answer)
|
|
217
|
+
- CRP-028 — Orchestrator Resume Mode per Step (run orchestrator with --resume <step> flag to proceed current step from last finished phase)
|
|
218
|
+
- CRP-011 — Human Review Explanation Mode ai helps user to perform codereview
|
|
219
|
+
|
|
220
|
+
V-0.0.4
|
|
221
|
+
|
|
222
|
+
1. whats added
|
|
223
|
+
- CRP-030 — Extract User Review as a Distinct Phase (Context Optimization)
|
|
224
|
+
- CRP-031 — Review Brief Output (improved), more human-friendly and product oriented description)
|
|
225
|
+
- CRP-032 — Evidence Reasoning Summary in Model Output (improved) - model povide evidence that implementation is done to user (stdout)
|
|
226
|
+
- CRP-033 — Rename Review Phase to `ai_audit` (Consistent Phase Naming)
|
|
227
|
+
|
|
228
|
+
V-0.0.5
|
|
229
|
+
|
|
230
|
+
1. whats added
|
|
231
|
+
- CRP-034 — Move `implementation_plan.md` Bullet-Closure Gate to `ai_audit` (now we check implementation plan bullets on ai audit phase, implementation phase works only with internal ordered plan)
|
|
232
|
+
- CRP-035 — User Review Gate Uses Step Plan Ordered Checkboxes (we use now internal implementation ordered plan on user_review)
|
|
233
|
+
- CRP-036 — Orchestrator Resume Based on Ordered Plan State
|
|
234
|
+
- CRP-039 — Planning Gate: Step Plan Must Declare Applicable UR Shortlist (improve how ai works with previous user review items)
|
|
235
|
+
|
|
236
|
+
V-0.1.0
|
|
237
|
+
|
|
238
|
+
- first wave (worker POC) features implemented
|
|
239
|
+
- reduce token consumption about 25-30%
|
|
240
|
+
- CRP-037 — Implementation Prompt Slimming (Rule De-dup)
|
|
241
|
+
- CRP-038 — Deterministic Concise Implementation Prompt From Step Plan + Design
|
|
242
|
+
- CRP-041 — UR Hygiene: Enforce Template Schema + De-dup on Update
|
|
243
|
+
- CRP-042 — Optional Feature-Rich Design/Planning Mode
|
|
244
|
+
|
|
245
|
+
V-0.1.1
|
|
246
|
+
- CRP-044 — Worker Init Script for Overmind Registration (worker now can register in orchestrator with unique id)
|
|
247
|
+
- CRP-045 — Split Worker Identity Persistence (`master`) From Registry Coordination (`overmind`)
|
|
248
|
+
- CRP-046 — UUID-Scoped Step Selection From `overmind` Git Branch
|
|
249
|
+
- CRP-047 — Phase Denial Must Stop Downstream Prompts (improve phase stop/resume logic)
|
|
250
|
+
- CRP-048 — ai_audit TODO Marker Processing Into Findings (now you can add TODO and they will be converted to folowing tasks by AI)
|
|
251
|
+
- CRP-050 — Remove Target Bullets From Step Plans (now plan, implementation and user_review steps operates with internat complex plan and set od FRs, design and ai_audit phases translate EARS and high-level plan to and from this inter-step plan/FRs)
|
|
252
|
+
- CRP-051 — In-Phase Readiness Gates (significanly improved betwen-phases sanity check logic, extract logic from orchestrator to hooks, 2-times check when finish one phase and when start following one)
|
|
253
|
+
- removed --phase support specific phase cant be run anymore via orchestrator
|
|
254
|
+
- sync between overmind and actual feature/master branch fixed
|
|
255
|
+
|
|
256
|
+
V-0.1.2
|
|
257
|
+
- add integration with new coordinator (asdlc folder) - now orchestrator can register itself in overmind and
|
|
258
|
+
fetch tasks directly from asdlc folder for particular feature (user can select if mutliple features available)
|
|
259
|
+
|
|
260
|
+
V-0.1.3
|
|
261
|
+
- remove outdated git logic from worker-overmind interaction
|
|
262
|
+
- add init script
|
|
263
|
+
- add agents.md warning and blueprint search
|
|
264
|
+
- add external links processing
|
|
265
|
+
- add first commit work logic
|
|
266
|
+
|
|
267
|
+
V-0.2.0
|
|
268
|
+
- Python CLI (`yasdef`) replaces all bash scripts — see CHANGELOG.md for the full command rename table
|
|
269
|
+
- Phase rules and helper scripts for all phases now is agentic skills, setup in native folders (.codex, .claude etc) in init phase
|
|
270
|
+
|
|
271
|
+
V-0.2.1 (current)
|
|
272
|
+
- add blueprints search on design phase
|
|
273
|
+
- bug fixes and code cleanup
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
2. known problems/to-do's:
|
|
277
|
+
- incorrect SP countion on post_review
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
### security_improvement_proposals
|
|
281
|
+
|
|
282
|
+
- **Config trust check:** add a small trust file for `.asdlc_worker/setup/models.md` so runner/model changes require explicit operator approval before execution.
|
|
283
|
+
- **Minimal child environment:** run model CLI subprocesses with a narrow environment allowlist and add explicit opt-in for extra variables when needed.
|
|
284
|
+
- **Path safety:** continue rejecting symlinks and path escapes during `yasdef init`; extend the same checks to any future writable install/runtime paths.
|
|
285
|
+
- **Prompt-input boundaries:** treat implementation plans, step plans, and model outputs as data only; never let artifact content become executable command arguments.
|
|
286
|
+
- **Audit trail:** record runner, model, phase, branch, selected feature/step, and relevant config checksum in `.asdlc_worker/history.md` or a dedicated run log.
|
|
287
|
+
- **Secret hygiene:** add lightweight checks to avoid printing common secret-like values from child command environments or captured logs.
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
## How to mock yasdef-coordinator
|
|
291
|
+
|
|
292
|
+
Create a minimal mock ASDLC project folder for local testing.
|
|
293
|
+
✅ Or you can just pass this instruction to you model/agent
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
Instruction for mock yasdef-coordinator:
|
|
297
|
+
|
|
298
|
+
Required files:
|
|
299
|
+
- Worker repo before `yasdef init`: any existing Git repo root.
|
|
300
|
+
- ASDLC project folder before `yasdef register`: root `init_progress_definition.yaml` with `meta_info.project_id`, and root `workers.yaml` with the worker UUID, class, and status.
|
|
301
|
+
- Feature folder before `yasdef run`: `requirements_ears.md` and `implementation_plan.md`.
|
|
302
|
+
|
|
303
|
+
Create the mock ASDLC project folder:
|
|
304
|
+
|
|
305
|
+
```bash
|
|
306
|
+
mkdir -p /tmp/mock-asdlc/project-demo/feature-demo
|
|
307
|
+
cd /tmp/mock-asdlc/project-demo
|
|
308
|
+
git init -b main
|
|
309
|
+
git config user.name "Mock ASDLC"
|
|
310
|
+
git config user.email "mock-asdlc@example.local"
|
|
311
|
+
cat > init_progress_definition.yaml <<'EOF'
|
|
312
|
+
meta_info:
|
|
313
|
+
project_id: project-demo
|
|
314
|
+
EOF
|
|
315
|
+
cat > workers.yaml <<'EOF'
|
|
316
|
+
workers:
|
|
317
|
+
- uuid: worker-demo
|
|
318
|
+
class: platform
|
|
319
|
+
status: ready
|
|
320
|
+
EOF
|
|
321
|
+
touch feature-demo/feature_request.txt
|
|
322
|
+
git add .
|
|
323
|
+
git commit -m "Create mock ASDLC project"
|
|
324
|
+
git init --bare ../project-demo-remote.git
|
|
325
|
+
git remote add origin ../project-demo-remote.git
|
|
326
|
+
git push -u origin main
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
--- IF YOU ARE USER ---
|
|
330
|
+
Fill `feature-demo/feature_request.txt` with the feature you want to implement.
|
|
331
|
+
|
|
332
|
+
--- IF YOU ARE MODEL/AGENT ---
|
|
333
|
+
ask user to provide you a path to valid requirements in txt format, examine them, ask user if something not clear before starting next prompts. Then run Prompt to create `requirements_ears.md` (see below). Then run Prompt to create `implementation_plan.md`, use `requirements_ears.md` as valid input for `implementation_plan.md`.
|
|
334
|
+
--- IF YOU ARE MODEL/AGENT BLOCK END---
|
|
335
|
+
|
|
336
|
+
Prompt to create `requirements_ears.md`:
|
|
337
|
+
|
|
338
|
+
`Carefully examine feature-demo/feature_request.txt and create feature-demo/requirements_ears.md in EARS format. Keep requirements clear, testable, and scoped to this feature. Respect this strict structure:`
|
|
339
|
+
|
|
340
|
+
```markdown
|
|
341
|
+
# Requirements (EARS)
|
|
342
|
+
|
|
343
|
+
System name: <feature/system name>
|
|
344
|
+
Scope: <one paragraph describing included behavior and explicit exclusions>
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
## Overview
|
|
349
|
+
- Product/Domain: <domain>
|
|
350
|
+
- Goals: <goal list in one line>
|
|
351
|
+
- Out of scope: <explicit exclusions>
|
|
352
|
+
|
|
353
|
+
## Glossary
|
|
354
|
+
- <Term>: <meaning>
|
|
355
|
+
|
|
356
|
+
## Actors
|
|
357
|
+
- <Actor>: <what they do>
|
|
358
|
+
|
|
359
|
+
## Assumptions
|
|
360
|
+
- <Assumption or unresolved gap>
|
|
361
|
+
|
|
362
|
+
---
|
|
363
|
+
|
|
364
|
+
## Requirements
|
|
365
|
+
|
|
366
|
+
### Requirement 1 — <short requirement title>
|
|
367
|
+
**User Story:** As a <actor>, I want <capability>, so that <outcome>.
|
|
368
|
+
|
|
369
|
+
**Acceptance Criteria (EARS):**
|
|
370
|
+
- WHEN <trigger>, THE <system name> SHALL <observable behavior>.
|
|
371
|
+
|
|
372
|
+
**Verification:** <test or evidence that proves this requirement>
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
Prompt to create `implementation_plan.md`:
|
|
376
|
+
|
|
377
|
+
`Carefully examine feature-demo/feature_request.txt and feature-demo/requirements_ears.md, then create feature-demo/implementation_plan.md. Keep one implementation plan for all repos, add concrete steps, include #### Repo: for every step, include #### Assigned: worker-demo for worker-owned steps, use #### Depends on: when sequencing matters, and keep each step small enough for one focused implementation cycle. Respect this strict structure:`
|
|
378
|
+
|
|
379
|
+
```markdown
|
|
380
|
+
# Implementation Plan
|
|
381
|
+
|
|
382
|
+
Use one shared implementation plan for the whole feature.
|
|
383
|
+
Ground the plan in `feature_request.txt` and `requirements_ears.md`.
|
|
384
|
+
Each step belongs to exactly one repo class so workers can execute independently while following one ordered delivery sequence.
|
|
385
|
+
|
|
386
|
+
### Step 1.1 <short step title> [REQ-1]
|
|
387
|
+
Est. step total: <number> SP
|
|
388
|
+
#### Repo: <backend|frontend|mobile|platform|docs>
|
|
389
|
+
#### Depends on: none
|
|
390
|
+
#### Evidence: <requirement ids, files, or components that justify the step>
|
|
391
|
+
#### Assigned: worker-demo
|
|
392
|
+
- [ ] Plan and discuss the step
|
|
393
|
+
- [ ] <concrete implementation task>
|
|
394
|
+
- [ ] <focused verification task>
|
|
395
|
+
- [ ] Review step implementation
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
Commit generated ASDLC artifacts before registering/running a worker:
|
|
399
|
+
|
|
400
|
+
```bash
|
|
401
|
+
git add .
|
|
402
|
+
git commit -m "Add feature plan"
|
|
403
|
+
git push
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
### License
|
|
407
|
+
|
|
408
|
+
This project is licensed under the MIT License. See `LICENSE`.
|