Decompose Work Packages (Level 2)
EST-6 Order: #6 Elaboration Has Dependencies
Updated 1 month, 2 weeks ago
Guidance
Purpose
At Level 1 (EST-03) you sized features by T-shirt. That was good enough for a rough cut. Level 2 is different: you have the scenario, you have the screen, you have SAO.md describing exactly how the stack works. You don't need to guess which layers a feature touches — BPE-01 will tell you. EST-06 runs BPE-01 in dry-run/estimation mode on each work package to produce a bottom-up artifact list, then wraps each artifact with a PERT triplet from the Reference Table.
This is the key idea: BPE-01 Plan → exact artifact list → PERT triplets per artifact → sum = Function Point decomposition. No generic taxonomy lookup required.
Each work package's BPE-01 dry-run is independent of every other package — it reads only that package's own scenario file, screen, and SAO.md, and never another package's plan. That independence is what this activity now dispatches on (Step 2, below) instead of working through packages one at a time.
Prerequisites
docs/architecture/SAO.mdexists and is current- EST-05 complete (Rough Estimates available as cross-check)
- Requirements stability ≥ 80% (McConnell prerequisite)
Gating Condition
If SAO.MD does not exist, skip this activity. Return here after SAO.MD is produced (typically after ESM workflow completes). Record this as a gate condition in ESTIMATION_STRATEGY.md.
Step 1: Enumerate Work Packages
List every undecomposed work package from the sprint plan (EST-05 output). For each, identify the three inputs it will need:
- The scenario file —
docs/features/{act}/{feature}.feature - The screen — the matching node in the dialogue map (
docs/architecture/screen-flow.drawio) - SAO.md — the authoritative architecture and stack description (shared by every package — read-only, not a conflict)
This list is the dispatch unit for Step 2.
Step 2: Dispatch Estimation Workers (parallel)
Apply rule do-fan-out-independent-work. The item list is every work package enumerated in Step 1. Each worker does the following for its one package, and only its own package:
a) Run BPE-01 in Estimation Mode. Execute BPE-01 (Plan Feature) for this work package, treating it as if starting from scratch. BPE-01 will produce an Implementation Plan that lists every artifact needed:
→ Input: feature file + screen name + SAO.md
→ Output: Implementation Plan listing every artifact:
- Django Model + Admin (if new data shape)
- Repository methods (which ones, for what queries)
- Service layer (what business logic)
- Django View + URL pattern (which views, GET/POST)
- Unit + Integration tests (what to test)
- Django Template + HTMX (which fragments/pages)
- Feature Acceptance Tests (from scenario steps)
- Journey Certification Tests (if cross-feature flow)
- DoD checklist
- E2E Playwright tests + PR
For each artifact, BPE-01 will also output its reuse flag based on codebase assessment:
- NEW — doesn't exist yet, build from scratch
- EXTEND — exists but needs significant modification
- REUSE — exists, minimal touch needed
Estimation mode means: produce the plan but do not write any code. Stop after BPE-01 Plan and record the artifact list.
b) Assign PERT Triplets. For each artifact in the Implementation Plan, assign PERT triplets (min / expected / max tokens) from the Reference Table K ranges:
| Artifact | Small (K) | Medium (K) | Large (K) |
|---|---|---|---|
| Django Model + Admin | 8 / 15 / 28 | ||
| Repository methods | 5 / 10 / 20 | ||
| Service layer | 8 / 18 / 35 | ||
| Django View + URL | 6 / 12 / 22 | ||
| Unit + Integration Tests | 10 / 20 / 40 | ||
| Django Template + HTMX | 8 / 16 / 30 | ||
| Template partials (reusable) | 4 / 8 / 15 | ||
| Feature Acceptance Tests | 8 / 15 / 28 | ||
| Journey Certification Tests | 5 / 10 / 18 | ||
| DoD checklist | 3 / 6 / 12 | ||
| E2E Playwright tests + PR | 6 / 12 / 22 | ||
| Implementation Plan (BPE-01) | 5 / 8 / 15 |
Apply reuse multipliers based on BPE-01 codebase assessment:
- NEW: 1.0× (full token range)
- EXTEND: 0.6× (reading + modifying existing code)
- REUSE: 0.3× (trivial wiring or config change)
c) Return the work package record. Each worker's footprint is read-only (its own feature file, screen, and SAO.md) plus a write of exactly one row-group in the WBS Features tab — packages never contend for the same row, so there is nothing to serialize. Return:
Scenario ID: {ACT}-{ENTITY}-{OPERATION}-{NN}
Feature: {Feature name from .feature file}
Screen: {Screen name from dialogue map}
Sprint: {Sprint number}
L1 Size: M (2 SP)
BPE-01 run: YES / ESTIMATION MODE
Artifacts from BPE-01 Plan:
WP-01 Django Model (Widget) NEW min=12K exp=16K max=25K
WP-02 Repository (WidgetRepo) NEW min=8K exp=11K max=18K
WP-03 Service (WidgetService) EXTEND min=8K exp=11K max=19K [×0.6]
WP-04 View + URL NEW min=10K exp=14K max=22K
WP-05 Unit + Integration Tests NEW min=16K exp=22K max=38K
WP-06 Template + HTMX REUSE min=2K exp=4K max=8K [×0.3]
WP-07 Feature Acceptance Test NEW min=10K exp=14K max=22K
WP-08 DoD checklist NEW min=4K exp=6K max=10K
WP-09 E2E test + PR NEW min=8K exp=11K max=18K
────────────────────────────────────────────────────────────────────────
TOTAL: min=78K exp=109K max=180K
Step 3: Record All Work Packages
Collect every worker's report from Step 2 and enter each into the WBS Features tab. Since each worker wrote a distinct row-group, this is a mechanical merge — no conflict resolution needed.
Step 4: Cross-Check Against Level 1 Rough Estimate
For each work package, compare its Level 2 total to its Level 1 estimate from EST-05:
- Within ±30% → consistent, proceed
- L2 > 30% higher than L1 → which artifact is driving the gap? Document it.
- L2 > 30% lower than L1 → check for missing artifacts. Common omissions: tests, DoD, E2E.
Record delta and rationale in the WBS Features tab notes column, per package.
Step 5: Sprint-Level Rollup
After all work packages in a sprint are recorded (Steps 2-4 complete for the whole sprint), sum L2 totals and compare against the Monte Carlo seed in EST-07. If cumulative L2 is >25% outside L1 project total, update the Rough Estimates tab before proceeding. Repeat Steps 1-5 for the next sprint's packages, highest priority first.
Rules to Follow
I. BPE-01 Is the Decomposition Engine
Do not substitute a generic artifact checklist for BPE-01 Plan. The whole point of Level 2 is that you have the actual feature, screen, and architecture — use them. BPE-01 will produce a more accurate artifact list than any template can.
II. DoD Is Fixed Overhead
The DoD checklist (BPE-06) applies to every work package. Never omit it. It is not optional.
III. Tests Are Not Optional
Unit, integration, feature acceptance, and E2E tests are separate work packages. Omitting them produces a false low — the work still happens, it just becomes unplanned rework.
IV. Decompose Before Estimating
Assigning a PERT triplet to a scenario as a whole without running BPE-01 first is a Level 1 estimate masquerading as Level 2. If you skip the BPE-01 step, mark confidence as LOW and document why.
V. Reuse Is Not Free
Extending an existing component still consumes tokens for reading, understanding, and modifying existing code. Use 0.3× for trivial reuse, 0.6× for significant extension, 1.0× for new.
VI. Fan Out, Don't Queue
Work packages don't depend on each other's plans — dispatch them in one wave per rule do-fan-out-independent-work rather than working through the sprint's packages one at a time. The only genuinely sequential parts are Step 4 (needs a package's own Step 2-3 output) and Step 5 (needs every package in the sprint recorded).
Success Criteria
- BPE-01 Plan executed (estimation mode) for every Level 2 work package, dispatched in parallel per sprint
- Each work package has a full artifact list with reuse flags
- PERT triplets assigned to every artifact
- L1/L2 cross-check performed and delta documented, per package
- WBS Features and Detailed Estimates tabs complete
Inputs
Read these before starting this activity. They are produced earlier in the playbook and are authoritative — raise a drift event instead of deviating.
- User Journey (Document, Required) — produced by Define User Journey (#36).
- Screen Flow / Dialogue Map (Diagram, Required) — produced by Create Dialogue Maps (#38).
- Feature Files (Document, Required) — produced by Write Feature Files (#39).
- HTML Mockups (Code, Optional) — produced by Create Mockups (#40).
- Estimation Reference Table (Document, Required) — produced by Calibrate Reference Stories (#67).
- Estimation Template (Excel) (Document, Required) — produced by Size Scenarios (Level 1 SWAG) (#68).
Details
- Order:
- #6
- Phase:
- Predecessor:
- EST-5 Produce Rough Estimates + AFP
- Created:
- Apr 12, 2026
- Last Updated:
- Sep 21, 2026
Workflow
Estimate the Project
Two-level estimation workflow for AI-assisted software development. Level 1 produces T-shirt-sized SWAG from BDD scenarios. Level 2 (Function Point decomposition) …
View WorkflowAssigned Agent
No agent assigned
Required Skills
No skills linked
Rules
-
Fan Out Independent Work
fan-out-independent-work
Input Artifacts 6
-
Estimation Reference Table
Document
Required
Produced by: Calibrate Reference Stories -
Estimation Template (Excel)
Document
Required
Produced by: Size Scenarios (Level 1 SWAG) -
Feature Files
Document
Required
Produced by: Write Feature Files -
HTML Mockups
Code
Produced by: Create Mockups -
Screen Flow / Dialogue Map
Diagram
Required
Produced by: Create Dialogue Maps -
User Journey
Document
Required
Produced by: Define User Journey
Output Artifacts
No output artifacts