BOHICA-LABS / BOHICA-LABS/vsdd-factory

enhancement(planning): BC-version-bumps during convergence as a stronger story-sizing signal than pre-delivery AC ratio

Open
#286 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
2
Forks
1
Avg merge
6h 43m
Merged PRs (30d)
29

Description

## Summary

Issue #281 proposed a pre-delivery `story_ac_count / bc_item_count` ratio as a story-sizing signal. Empirically this catches **some** under-sized stories, but misses architecture-driven cases where the spec itself evolves during convergence due to adversary findings.

A stronger signal is the **count of BC version bumps during adversarial convergence**: stories that drive their BC through multiple amendments (because the adversary surfaces spec gaps or contradictions that require BC rewording) are structurally bigger than their estimates suggest.

## Observed empirical pattern

Across 3 recently-delivered stories I observed:

| Story (anonymized) | Pre-delivery AC ratio | BC version evolution | Convergence passes | Story estimate |
|---|---|---|---|---|
| X1 | 4.2x | v1.0 → v1.5 (5 bumps) | 9 | 3pt (small) |
| X2 | 1.4x | v1.0 → v1.7 (7 bumps) | 9 | 5pt (medium) |
| X3 | 2.0x | v1.0 → v1.3 (3 bumps) | 5 | 3pt (small) |

**X2 is the key case:** the pre-delivery AC ratio was the **lowest** of the three (1.4x — would NOT trigger the #281 check), yet it had the **most** BC amendments (7) and tied X1 for longest convergence (9 passes). The story had a sound BC-AC ratio but an under-estimated architectural cost: the adversary discovered that canonical state ownership was wrong in the implementation (the story put global state on a class that should have been on a singleton autoload per architecture). That structural finding drove 7 spec amendments to align BC, story body, sibling specs, ADRs, and holdout scenarios.

**Insight:** pre-delivery checks catch shape mismatches. Convergence-driven checks catch architectural mismatches. They are complementary.

## Suggested mitigation

Add a `convergence_cost_telemetry` skill (or extend `/vsdd-factory:check-state-health`) that emits a per-story dashboard:

```
Story X
AC ratio (pre-delivery): 1.4x (safe per #281)
BC version bumps during convergence: 7 ⚠ HIGH
Convergence pass count: 9 ⚠ HIGH
Predicted next-similar story cost: 9-pass adversarial loop
Recommendation: consider splitting BC, or accept the elevated cost upfront
```

When `bumps + passes` exceed some threshold (e.g., 3+3), the orchestrator surfaces this to the human as part of post-merge retrospective. This is a *learning* signal that informs future story estimates without retroactively blocking convergence.

## Why not just refine #281

#281 is necessary but not sufficient. Combining them (AC ratio pre-flight + BC-bump trajectory during convergence) gives complementary signals: structural and architectural respectively. The proposal here is additive, not replacement.

## Related

- #281 (AC-count ratio pre-flight)
- #283 (convergence-loop hardening — Gap 2 "convergence trajectory observability") — direct sibling

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.