Skip to content

Configuration

Project settings live in sdlc-studio/.config.yaml. Defaults ship with the skill; you override only what you want changed.

Key Default What changing it does
two_backlog.enforce false The one exception. Deliberately off, so an upgrading project keeps its old flow until it opts in. Set true and sprint plan refuses a discovery item, a CR demands a T-shirt size, and terminal status derives from children. See the two-backlog model
sprint.breakdown enforce enforce: sprint plan refuses a batch holding a unit with no Affects or no Points:, and prints no plan at all. judgement: the lane reports and does not block
engagement_floor floor floor: work becomes a sized unit with acceptance criteria before it becomes a diff. judgement: the model decides when the process applies - which is measurably the same as no process at all
lessons.loop enforce enforce: the retro’s content is checked and every finding takes a disposition. judgement: reports, never blocks
Key Default Notes
sprint.points_split_above 8 The Points: value above which a unit is refused and must be split. A point is a stable unit of cost up to here and breaks beyond it. Tighten to 5 for smaller units
story_quality.sizing.max_points 13 A story is flagged as too large above this
story_quality.sizing.max_ac 10 A story is flagged as too large above this many acceptance criteria
story_quality.sizing.recommended_ac.min / .max 3 / 5 Suggest more criteria below the minimum; the optimal upper bound
coverage.unit 90 Coverage targets the TSD and the status dashboard read
coverage.integration 85
coverage.e2e 100 Feature-file coverage target
lessons.validity_days 90 Days before a lesson must be revalidated or closed
personas.staleness_days 90 Days without a touch before a persona is flagged stale
capacity:
tokens: 500000 # forecast ceiling for the batch - a warning, never a gate
minutes: 240 # wall-clock ceiling for the run
units: 8 # unit-count ceiling
appetite:
minutes: 0 # 0 = inherit capacity.minutes
units: 0 # 0 = inherit capacity.units

The appetite is the circuit breaker. It is resolved once at plan time and stamped on the run, never auto-extended, and zero on an axis means unbounded. See sprint planning.

Key Default Notes
review.policy block carry-forward files a REJECT’s findings and ships instead of holding until clean - every finding must still be filed or explicitly waived
review.max_rounds 2 Review rounds per unit. Round two re-checks the fixes, from the reviewer who rejected; a unit still rejected at the cap is carried as a known issue, not reviewed again
review.line_coverage off report measures the lines a unit added when it reaches Done or Fixed; block refuses the transition until they are covered. Off measures nothing

One independent APPROVE per unit decides it, and the operator signs the run once at sprint.py sign; no review key moves either. The v5 review cutoffs are retired and read by nothing - migrate --apply removes them.

Opt-in. With routing.enabled, the plan stamps each unit with an advisory tier so cheap units run on your smaller model and hard ones on your bigger one.

Key Default Notes
routing.enabled false
routing.models {} Map abstract tiers (tiny/small/medium/large/xlarge) to your own model identifiers. An undeclared tier degrades upward to the nearest declared larger tier, never downward
routing.floor {bug: small, security: medium} Minimum tier per unit kind
routing.critic_tier match The critic’s tier relative to the author. Never smaller than the author; above puts it one step up
routing.escalation.max_same_tier 2 Failed attempts before escalating a tier, within the unchanged total attempt cap

The skill is gate-and-verify only until you give it a command. Leave these empty and it never deploys anything.

Key Notes
deploy.command your own deploy command. Invoked only after the pre-deploy gate is green, and only on an interactive deploy - never by a sprint
deploy.smoke a post-deploy check as a verify_ac expression. Smoke green marks the deploy rolled out
deploy.soak_minutes minutes a rolled-out deploy must soak before it is verified. Smoke alone never means verified
deploy.rollback a documented rollback procedure. The agent never executes it; deploy surfaces it on a failed smoke

release_strategy picks the change gate.

Value Change gate
solo-dev commit straight to main. The PR ceremony is friction on a single-developer project; review happens through the amigos, verify and check
pr-required the default. gh pr create, review, merge
staged-rollout tag, deploy, soak, promote
Key Default Notes
skill_source_repo unset Path to the sdlc-studio checkout that lessons add --global writes into. Without it, promotion is refused rather than written into a copy the next update deletes
provenance.enforce off Gate on artefacts having been created by the tool, rather than reporting it