| name | ll-product-epic-to-feat |
| description | Governed LL workflow skill for transforming a frozen epic_freeze_package into a lite-native feat_freeze_package between ll-product-src-to-epic and downstream FEAT design and QA derivation flows. |
LL Product EPIC to FEAT
This skill is a lite-native governed workflow between ll-product-src-to-epic and downstream FEAT consumers. It runs directly through the local scripts/epic_to_feat.py runtime instead of delegating execution back to the legacy lee run stack.
Canonical Authority
- Workflow template:
E:\ai\LEE\spec-global\departments\product\workflows\templates\epic-to-feat\v1\workflow.yaml
- Upstream handoff:
ll-product-src-to-epic
- Downstream workflows:
workflow.dev.feat_to_tech
workflow.qa.feat_to_testset
- Downstream consumer ordering: After FEAT freeze, when
design_impact_required=true, consumers MUST run ll-dev-feat-to-surface-map first (design ownership layer), then run ll-dev-feat-to-tech and ll-dev-feat-to-proto in parallel.
- Derived child artifacts expected downstream:
TECH, TESTSET
- Preferred runtime command:
python scripts/epic_to_feat.py run --input <epic-package-dir> --repo-root <repo-root>
Runtime Boundary Baseline
- Interpret this workflow using
E:\ai\LEE-Lite-skill-first\ssot\adr\ADR-038-运行时核心抽象边界与对象分层基线.MD.
- This capability is a governed
Skill and Workflow for EPIC -> FEAT derivation. Output FEAT bundles are artifacts; they do not replace runtime task, session, or gate authority.
Required Read Order
ll.contract.yaml
input/contract.yaml
output/contract.yaml
resources/upstream-workflow-analysis.md
agents/executor.md
agents/supervisor.md
input/semantic-checklist.md and output/semantic-checklist.md
Execution Protocol
- Accept only a freeze-ready
epic_freeze_package emitted by ll-product-src-to-epic.
- Validate the package structurally before deriving or editing any FEAT output.
- Resolve the authoritative EPIC context from
epic-freeze.md, epic-freeze.json, inherited source_refs, and the upstream acceptance evidence.
- Run
python scripts/epic_to_feat.py executor-run --input <epic-package-dir> to generate the governed FEAT bundle.
- Collect execution evidence, then hand the governed FEAT bundle to the supervisor.
- Run
python scripts/epic_to_feat.py supervisor-review --artifacts-dir <feat-package-dir> before freeze.
- Freeze only after the supervisor records a semantic pass and
python scripts/epic_to_feat.py freeze-guard --artifacts-dir <feat-package-dir> returns success.
- Emit a downstream handoff that preserves
epic_freeze_ref, src_root_id, feat_refs, integration_context_ref, and the downstream workflow list for governed TECH and TESTSET derivation.
- When external gate returns
revise or retry, rerun run, executor-run, or supervisor-review with --revision-request <revision-request.json> so the regenerated FEAT bundle carries normalized revision context.
Workflow Boundary
- Input: one
epic_freeze_package that is freeze-ready and traceable to ll-product-src-to-epic
- Output: one
feat_freeze_package with a FEAT inventory, governance evidence, and downstream handoff metadata
- Out of scope: direct TECH authoring, TASK planning, TESTSET authoring, or bypassing the governed EPIC to FEAT boundary
Non-Negotiable Rules
- Do not accept raw requirements, SRC candidate packages, or informal EPIC markdown directly.
- Do not bypass
scripts/epic_to_feat.py by hand-authoring only the final FEAT bundle without execution and supervision evidence.
- Every emitted FEAT must remain an independently acceptable capability slice, not an implementation task, screen TODO list, or architecture-only note.
- Preserve
epic_freeze_ref, src_root_id, authoritative source_refs, and ADR-025 acceptance semantics.
- Downstream readiness must stay explicit: FEAT output must be strong enough to seed TECH and TESTSET derivation without re-deriving the parent EPIC.
- Always materialize
integration-context.json as a downstream seed for ll-dev-feat-to-tech; do not force TECH derivation to guess integration facts from FEAT prose alone.
- Do not let the executor self-approve the semantic validity of its own FEAT output.