Skip to content

[Feature]: cost-preview refinements (per-unit clause, greenfield-effective counts) and a first unattended-gate story #530

Description

@apackeer

AI-DLC Version

v2 branch, HEAD 7c02d48 (2.2.6). Items 1-2 are follow-ups to the open scope-cost-preview PR (#508, 2.2.11) and land after it merges; item 3 is independent of it.

AI-DLC Phase

Initialization (the scope routing ask) for items 1-2; any gated stage for item 3.

Summary

Three small, related gaps around "the human at the decision point sees an accurate picture". The first two are the known non-blocking refinements already listed in #508's body; this issue makes them trackable so they do not evaporate when that PR merges. The third is a verified absence in the gate mechanics.

1. The per-unit clause shows on scopes that SKIP units-generation. The cost line appends a per-unit ceremony clause ("N stage(s) repeat per unit of work in Construction") computed from the grid's EXECUTE stages, but bugfix/poc/refactor/security-patch/infra SKIP units-generation, where code-generation degrades to a single pass on a cold start. The clause overstates ceremony in the safe direction for consent, but a preview that is knowably wrong for 5 of 9 stock scopes invites distrust of the numbers that ARE right. Fix: suppress (or annotate) the clause when the grid's units-generation entry is not EXECUTE; ScopeCostSummary already carries perUnitStages separately from gates, so this is presentation-layer only.

2. The cold-start confirm shows nominal, not effective, counts for greenfield. Greenfield projects drop reverse-engineering at birth, so effective counts run 1 stage / 1 gate lower for the 8 scopes that mark it EXECUTE. Project type is unknown at confirm time today, but the detect scan (2.2.0) is cheap and read-only; running it before the confirm (or annotating "32 stages, 31 on greenfield") would make the two numbers agree. The scope-change surface already uses the adjusted grid, so the cold-start ask is the only surface showing the stale number.

3. There is no unattended-gate story. A workflow that reaches an approval gate simply stops until the human returns: verified absent from core/ on HEAD - no idle-time awareness, no notification seam, no nudge, and the one adjacent mechanism (aidlc-state.ts park, the WORKFLOW_PARKED audit event) is manual-only. Long runs routinely cross a human absence (overnight, meetings), and today that reads as a hung run: the statusline shows the same stage for hours and nothing distinguishes "waiting for you" from "stuck". Smallest useful increment, in order of ambition:

  • a Waiting since <timestamp> field on the statusline / --status when the engine is at a gate (the gate presentation time is already in the audit ledger);
  • a doctor advisory when a gate has been pending longer than a threshold;
  • optionally, harness-level notification hooks (each harness has some bell/notify seam) fired on gate presentation.

Auto-park on idle is deliberately NOT proposed: parking is a human judgement (the framework's own three-mechanisms rule), and a run that auto-parked overnight would surprise the returning human more than one that waited.

Related

Origin

Follow-up triage of the scope-cost-preview work plus code inspection of the gate-wait mechanics.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions