Skip to content

feature-ideation enhancement backfill + dry-run + marker continuity (restore idea-enhancer parity before deprecation) #934

Closed
3 of 3 issues completed

Description

@github-actions

Restore the two idea-enhancer capabilities the #872 consolidation dropped — the existing-backlog sweep and the enhancement dry-run — and guarantee idempotency-marker continuity across the cutover, so .github-private's open, never-ideated human Ideas can be enhanced safely and repeatably before idea-enhancer is deprecated (#876). Planned from idea discussion #933 (companion to consolidation epic #872).

Scope split (critical — mirrors #872)

The enhancement capability lives in the central reusable petry-projects/.github/.github/workflows/feature-ideation-reusable.yml; .github-private's feature-ideation.yml is a thin caller stub pinned to the @feature-ideation/next (dogfood) ring. dev-lead works on this repo's checkout, so the E1/E2/E3 logic changes are out of this repo's direct reach and are listed as untracked prerequisites (central repo). The stories below are the .github-private-local slice: sync the stub to expose the backfill input, document the new modes + operator runbook in the pipeline doc, and validate the backfill (dry-run then live) on the real .github-private backlog.

Success metrics (how we'll know it worked)

  • Backfill completeness: after one live backfill run, every open, human-authored, not-yet-enhanced .github-private Ideas Discussion carries exactly one structured enhancement comment — the un-enhanced backlog count drops to 0.
  • Idempotency / no re-enhancement: a second backfill run is a no-op (0 new comments); zero ideas are double-enhanced, including ideas already carrying the legacy <!-- idea-enhancer:enhanced --> marker.
  • Dry-run fidelity: the dry-run JSONL artifact lists one entry per candidate Discussion and posts nothing — artifact entry count equals an independent count of candidates.
  • Marker continuity: no idea enhanced by the old idea-enhancer is re-enhanced after cutover (the check honors BOTH markers).

Cost bound

Net cost-neutral-to-reducing: introduces no new cron and reuses feature-ideation's existing model budget and 20-minute timeout. Validation is bounded to one dry-run + one live backfill run over the .github-private backlog (the dry-run is free of model spend beyond candidate gathering). The backfill is operator-triggered (workflow_dispatch), not scheduled, so it adds no recurring spend.

Sequencing into the consolidation

References: discussion #933; consolidation epic #872; validation #875; deprecation #876. Inert until a maintainer adds initiative:auto.

Untracked prerequisites

  • [petry-projects/.github] feature-ideation-reusable.yml E1 (marker continuity): the enhancement idempotency check recognizes BOTH <!-- idea-enhancer:enhanced --> and <!-- feature-ideation:enhanced --> as already-enhanced, and new enhancement comments emit a single canonical marker — so no idea is re-enhanced across the idea-enhancer -> feature-ideation cutover.
  • [petry-projects/.github] feature-ideation-reusable.yml E2 (backfill sweep mode): an enhance_backlog workflow_call input makes the reusable sweep the target repo's open, human-authored, not-yet-enhanced Ideas and post exactly ONE structured enhancement comment each (idempotent via the marker; bot-authored + already-enhanced skipped) — porting the scripts/idea-enhancer/{gather-candidates,post-enhancement}.sh logic into the central repo.
  • [petry-projects/.github] feature-ideation-reusable.yml E3 (backfill dry-run): dry_run=true + enhance_backlog logs the intended per-Discussion enhancement comments to the JSONL artifact and posts nothing (one entry per candidate Discussion).
  • [petry-projects/.github] standards/workflows/feature-ideation.yml: the canonical stub template gains the enhance_backlog workflow_dispatch input (and its with: forward) so .github-private's stub can sync to it verbatim without drift (AGENTS.md: workflow changes 'must use templates from standards/workflows/ verbatim').
  • [petry-projects/.github] ci-standards (the feature-ideation standard section) documents the backfill + dry-run modes — the central half of the docs requirement; the .github-private pipeline doc (Story 2) is the local half.

Planned from idea discussion #933 by the BMAD Scrum Master initiative-planner. Inert until a maintainer adds initiative:auto.

Activity

  1. don-petry commented on Jun 25, 2026

    @don-petry
    Collaborator

    Dev-Lead Implementation Plan

    Issue: #934 — feature-ideation enhancement backfill + dry-run + marker continuity (restore idea-enhancer parity before deprecation)

    Scope

    This is the .github-private-local slice of #934 (mirrors the #872 scope split): expose the operator-triggered backfill input on the thin feature-ideation.yml caller stub and document the new backfill + dry-run modes and operator runbook in the pipeline doc. The enhancement logic itself (E1 marker continuity, E2 backfill sweep, E3 backfill dry-run) lives in the central petry-projects/.github reusable and is an untracked prerequisite out of this repo's reach.

    Implementation Checklist

    • .github/workflows/feature-ideation.yml — add the enhance_backlog (boolean, default false) workflow_dispatch input and forward it in the with: block (enhance_backlog: ${{ inputs.enhance_backlog || false }}), matching the canonical stub-template shape so the verbatim sync lands without drift. Operator-triggered only (no new cron), pairs with the existing dry_run input.
    • docs/initiatives/idea-to-initiative-pipeline.md — document the folded backfill sweep + dry-run modes and an operator runbook (dry-run-then-live) for the .github-private backlog.

    Tests to Write

    • tests/test_feature_ideation.bats — assert the stub declares the enhance_backlog workflow_dispatch input and forwards it to the reusable in with:.

    Test Command

    scripts/run-bats.sh tests/test_feature_ideation.bats (full suite via the bats job in lint.yml); repo lint via bash .dev-lead/scripts/dev-lead-lint.sh.

    Out of reach (noted for sequencing)

  2. don-petry commented on Jun 25, 2026

    @don-petry
    Collaborator

    Dev-Lead: Implementation Complete

    Implemented the .github-private-local slice of #934 (the scope split mirrors #872): expose the operator-triggered backfill input on the thin feature-ideation.yml caller stub, and document the backfill + dry-run modes and an operator runbook in the pipeline doc. The enhancement logic (E1 marker continuity, E2 sweep, E3 dry-run) lives in the central petry-projects/.github reusable and remains an untracked prerequisite out of this repo's reach.

    Plan Execution

    • Added the enhance_backlog (boolean, default false) workflow_dispatch input to the stub and forwarded it (enhance_backlog: ${{ inputs.enhance_backlog || false }}), matching the canonical stub-template shape (same pattern as the existing dry_run) so the eventual verbatim sync lands drift-free. Operator-triggered only — no new cron.
    • Documented the folded backfill sweep + dry-run modes, marker continuity (honors BOTH markers), the cost bound, and a 3-step dry-run→live→idempotency operator runbook in docs/initiatives/idea-to-initiative-pipeline.md.
    • Added a regression test asserting the stub declares and forwards enhance_backlog.

    Test Results

    # bats tests/test_feature_ideation.bats
    1..5
    ok 1 feature-ideation.yml exists
    ok 2 feature-ideation.yml calls the org reusable workflow
    ok 3 feature-ideation.yml pins the reusable to the configured channel tag
    ok 4 feature-ideation.yml exposes the enhance_backlog backfill-sweep input
    ok 5 feature-ideation.yml forwards enhance_backlog to the reusable workflow
    
    # Full CI bats list (lint.yml `bats` job): 813 tests
    ok ... (813 ok / 0 not ok)
    
    # bash .dev-lead/scripts/dev-lead-lint.sh
    [lint] shellcheck on 79 file(s)... OK
    [lint] validating 4 agent profile(s)... OK
    [lint] validating .github/CODEOWNERS... OK
    [lint] all checks passed
    
    # markdownlint-cli2 docs/initiatives/idea-to-initiative-pipeline.md
    Summary: 0 error(s)
    

    Files Changed

    Notes — out of reach / sequencing (no code possible from this checkout)

    • E1/E2/E3 enhancement logic lives in petry-projects/.github (feature-ideation-reusable.yml) — untracked prerequisites. The stub forward assumes the @feature-ideation/next reusable already accepts enhance_backlog as a workflow_call input; per the issue's sequencing those land in the central repo before this stub sync, so the dispatch won't error on an unknown input.
    • Live validation (one dry-run + one live backfill over the real .github-private backlog, then a no-op re-run) is operator-triggered workflow_dispatch and depends on E2/E3 being live; it cannot be exercised from this repo's checkout. Flagged as the follow-up that must complete before [Phase 3] Deprecate idea-enhancer in .github-private: remove workflow + scripts + test, update the pipeline doc #876 (deprecate idea-enhancer) starts.
    • Marker continuity for the local scripts/idea-enhancer/*.sh was intentionally not modified — the bidirectional both-markers check is E1, scoped to the central reusable per the issue's scope split. The local enhancer's own marker is unchanged.
    • Phase 2 (TDD): the doc change is documentation-only (exception); the stub change is covered red→green by the two new bats tests.
  3. added a commit that references this issue on Jun 25, 2026
  4. added
    initiative:autoDriver may auto-release this epic's ready sub-issues to dev-lead
    on Jun 26, 2026
  5. added 9 commits that reference this issue on Aug 2, 2026
  6. added a commit that references this issue on Aug 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    dev-leadFor dev-lead agent pickupinitiativeEpic / initiative tracking issueinitiative:autoDriver may auto-release this epic's ready sub-issues to dev-lead

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions