Skip to content

feat(specs): generate Allure-ready YAML metadata for progress dashboards #76

Description

@danielvm-git

Problem

Bigpowers generates rich YAML specs (epics, stories, tasks, metrics, bugs) but downstream Allure progress dashboards only consume ~30% of the available data. The gap is in how skills write YAML outputs — key metadata (risk, security, WSJF, cycle times, task-level status) exists in the bigpowers schema but is either not consistently written or not structured for downstream consumption.

Current Data Flow

scope-work → slice-tasks → plan-work → build-epic → develop-tdd → release-branch
    ↓            ↓             ↓            ↓              ↓              ↓
SCOPE_      epic.yaml     eNNsYY-      execution-     tasks.yaml    cycle-times.yaml
LATEST.yaml  stories[]    tasks.yaml    status.yaml    status:       + OKF metrics
                         risk: P0-P3                   failing→passing

What Bigpowers Has But Dashboards Cannot See

Data Location Why Missing
risk: P0/P1/P2/P3 tasks[].risk Generator ignores it
security: none/low/medium/high tasks[].security Generator ignores it
wsjf release-plan.yaml Not read by generator
tier release-plan.yaml Not read by generator
wave release-plan.yaml Not read by generator
depends_on epic.yaml stories Not read by generator
delta: ADDED/MODIFIED/REMOVED epic.yaml stories Not read by generator
total_bcps epic.yaml Not read by generator
start/end timestamps cycle-times.yaml Not read by generator
effort_hours OKF bundle Not read by generator
DORA metrics OKF bundle Not read by generator
Bug registry specs/bugs/registry.yaml Not read by generator
status: failing/passing per task tasks[].status Only story-level status checked

Root Cause: Three Disconnects

1. Task-Level Status Not Surfaced

plan-work writes status: failing on each task. develop-tdd flips to status: passing. But sync-status-from-epics.sh only reads story-level status from epic.yaml — it never reads per-task status from eNNsYY-tasks.yaml. Dashboards see all-or-nothing at the story level.

2. Rich Metadata Written But Not Indexed

plan-release writes wsjf, tier, wave, depends_on to release-plan.yaml. plan-work writes risk, security to task YAML. But sync-status-from-epics.sh produces a flat key: status dict — all metadata is lost in aggregation.

3. Cycle Times Siloed

record-cycle-time.sh produces rich OKF bundles with DORA metrics, agent telemetry, and effort data in specs/metrics/cycle-times.yaml — completely separate from the execution-status pipeline.

Proposed Changes

A. sync-status-from-epics.sh — Emit Richer Metadata

Current output:

epics:
  e01: done
stories:
  e01s01: done

Proposed output:

epics:
  e01:
    status: done
    title: "CLI — BigBase Breathes"
    wsjf: 1.0
    tier: 1
    total_bcps: 5
stories:
  e01s01:
    status: done
    title: "Login"
    bcps: 3
    epic: e01
    tasks_total: 4
    tasks_passing: 4
    tasks_failing: 0
    risk_max: P1
    security_max: none

B. plan-work — Write allure_categories in Task YAML

tasks:
  - id: 1
    description: "Add login form"
    verify: "npm test -- login.test.tsx"
    risk: P1
    security: none
    status: failing
    allure:
      severity: critical  # P0→critical, P1→high, P2→normal, P3→minor
      categories:
        - "Security Review"
        - "Wave 1"

C. build-epic — Record Story Start/End in Execution Status

On story complete, also write timestamps:

stories:
  e01s01:
    status: done
    started_at: "2026-07-12T16:00:00-03:00"
    completed_at: "2026-07-12T18:45:00-03:00"

D. record-cycle-time.sh — Write to Execution Status

Also update execution-status.yaml with cycle time data:

stories:
  e01s01:
    status: done
    effort_hours: 1.5
    lead_time_minutes: 90
    bcp_per_hour: 2.0

E. plan-release — Write Bug Registry Summary

Add to release-plan.yaml:

bugs:
  total: 42
  fixed: 38
  deferred: 2
  wontfix: 2
  registry: specs/bugs/registry.yaml

F. New Skill: generate-allure-report (Bigpowers Native)

Ship a built-in skill that:

  1. Reads execution-status.yaml, release-plan.yaml, epic capsules, task YAMLs, cycle-times.yaml, and bugs/registry.yaml
  2. Produces allure-results/junit-results.xml with <properties> for risk, security, WSJF, tier, wave
  3. Produces allure-results/categories.json for custom Allure categories
  4. Produces allure-results/executor.json with build metadata from state.yaml

What Already Works (No Changes Needed)

  • Epic/Story/Task hierarchy in epic.yaml
  • WSJF scoring in release-plan.yaml
  • Risk classification (tasks[].risk: P0-P3)
  • Security annotations (tasks[].security)
  • Dependency graph (depends_on, blocks)
  • Delta tracking (delta: ADDED/MODIFIED/REMOVED)
  • Cycle time metrics in specs/metrics/cycle-times.yaml
  • Bug registry in specs/bugs/registry.yaml
  • Task status lifecycle (failingpassing)

Impact

  • All proposed additions are backward-compatible — existing consumers of execution-status.yaml continue to work with flat key: status format
  • No schema breaking changes — richer structure is additive
  • Eliminates per-project Allure glue code — projects stop writing their own generate-allure-report.py

Suggested Milestone

v2.80.0 or next minor release

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions