Skip to content

[Phase 2] Repin .github-private's feature-ideation.yml stub to the feature-ideation/next channel + update its compliance test #874

Closed

Description

@github-actions

Story

As a maintainer of .github-private (the next ring / dogfood-first repo),
I want repin this repo's feature-ideation.yml stub from the @v1 SHA to the feature-ideation/next channel tag and update test_feature_ideation.bats to assert the channel pin,
so that .github-private runs the candidate (folded-enhancement) version of feature-ideation first, exercising the unified capability before any other ring.

Acceptance Criteria

  1. .github/workflows/feature-ideation.yml uses: line points at petry-projects/.github/.github/workflows/feature-ideation-reusable.yml@feature-ideation/next (channel tag), replacing the @897e4de… # v1 SHA pin.
  2. No other part of the stub changes — trigger shape (schedule + workflow_dispatch + discussion:created), the ideas/non-Bot guard, the permissions block, the secrets block, the target_discussion input, and the project_context all stay as before except the single uses ref.
  3. tests/test_feature_ideation.bats is updated so it asserts the @feature-ideation/next channel pin (and the org reusable path) instead of the @v1 SHA / # v1 annotation, and the whole bats file passes.
  4. A comment in the stub records that the channel-tag pin is the sanctioned ring-release mechanism (an explicit, documented exception to the stub's 'do not edit the uses: line' guidance), citing the ring-release model.

Tasks / Subtasks

Dev Notes

  • The stub header in .github/workflows/feature-ideation.yml says 'You MUST NOT change … the uses: line'. The whole point of the canary/ring model is to pin once to a moving channel tag, so this repin is a SANCTIONED override of that guidance — precedent: AGENTS.md documents auto-rebase.yml deliberately pinning the reusable at @v2 ahead of the canonical @v1 stub. Note it in-stub so a future compliance pass doesn't 'fix' it back.
  • tests/test_feature_ideation.bats currently hardcodes V1_SHA=897e4de… and asserts both @<sha> and the trailing # v1 annotation, plus a 'not pinned to v2' guard (it exists to prevent re-filing Compliance: non-stub-feature-ideation.yml #629). After the repin those assertions are wrong — replace them with a channel-pin assertion: grep for uses: petry-projects/.github/.github/workflows/feature-ideation-reusable.yml@feature-ideation/next.
  • HARD GATE (untracked prerequisites): (a) the feature-ideation/next channel tag must already exist on petry-projects/.github, and (b) the org non-stub-feature-ideation.yml compliance audit must already accept a channel-tag pin — otherwise this repin breaks the uses: resolution and/or re-triggers the Compliance: non-stub-feature-ideation.yml #629 compliance finding. Both live in petry-projects/.github (see epic Untracked prerequisites and open questions). Confirm both are in place before merging.
  • feature-ideation.yml already carries the discussion:created enhancement trigger and the ideas/non-Bot guard, so repinning to /next changes WHICH reusable version runs (and thus gets the folded behavior) without touching triggers.

Project Structure Notes

Touches only .github/workflows/feature-ideation.yml and tests/test_feature_ideation.bats. The stub stays a thin caller; only its pinned ref changes.

References

  • .github/workflows/feature-ideation.yml#uses
  • tests/test_feature_ideation.bats
  • AGENTS.md (auto-rebase @v2 precedent for an intentional non-canonical pin)
  • docs/release/versioning.md#how-callers-select-a-version

Likely target surface

  • .github/workflows/feature-ideation.yml
  • tests/test_feature_ideation.bats

Story prepared by the BMAD Scrum Master (Bob) for epic #872. Status: ready-for-dev.

Activity

  1. don-petry commented on Jun 21, 2026

    @don-petry
    Collaborator

    Dev-Lead Implementation Plan

    Issue: #874 — [Phase 2] Repin .github-private's feature-ideation.yml stub to the feature-ideation/next channel + update its compliance test

    Scope

    Repin the feature-ideation.yml thin-caller stub from the @v1 SHA to the feature-ideation/next channel tag, document the repin as a sanctioned ring-release exception in-stub, and rewrite test_feature_ideation.bats to assert the channel pin.

    Implementation Checklist

    • .github/workflows/feature-ideation.yml — change the single uses: ref from ...feature-ideation-reusable.yml@897e4de… # v1 to ...@feature-ideation/next; nothing else in the stub changes (triggers, guard, permissions, secrets, target_discussion, project_context all stay)
    • .github/workflows/feature-ideation.yml — add a short comment recording the channel-tag pin as the sanctioned ring-release mechanism (explicit, documented override of the stub's "do not edit the uses: line" guidance), citing the ring-release model
    • tests/test_feature_ideation.bats — replace the V1_SHA / # v1 / "not pinned to v2" assertions with a channel-pin assertion (uses: petry-projects/.github/.github/workflows/feature-ideation-reusable.yml@feature-ideation/next); keep the "calls the org reusable" assertion

    Tests to Write

    • bats: stub pins the reusable to @feature-ideation/next (channel tag)
    • bats: keep "calls the org reusable workflow" assertion
    • bats: remove the now-wrong V1-SHA pin / # v1 annotation / v2-SHA-guard tests

    Test Command

    bats tests/test_feature_ideation.bats (full suite via scripts/run-bats.sh), plus bash .dev-lead/scripts/dev-lead-lint.sh

    Note — merge gate (untracked prerequisites, per Dev Notes / epic #872)

    This repin depends on two prerequisites that live in petry-projects/.github: (a) the feature-ideation/next channel tag existing there, and (b) the org non-stub-feature-ideation.yml audit accepting a channel-tag pin. Checked via git ls-remote: no feature-ideation/* tags currently exist on petry-projects/.github. Implementing the code change now, but this must be confirmed in place before merging or the uses: ref will not resolve / #629 re-triggers.

  2. don-petry commented on Jun 21, 2026

    @don-petry
    Collaborator

    Dev-Lead: Implementation Complete

    Plan Execution

    Test Results

    $ bats tests/test_feature_ideation.bats
    1..3
    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 feature-ideation/next channel tag
    
    $ bash .dev-lead/scripts/dev-lead-lint.sh
      [lint] shellcheck on 73 file(s)...
      [lint] validating 4 agent profile(s)...
      [lint] validating .github/CODEOWNERS...
      [lint] all checks passed
    
    # regression check — related suites still green
    $ bats tests/test_consumer_manifest.bats tests/test_downstream_impact_regression.bats
    ... all ok (manifest + downstream-impact golden fixtures unaffected)
    

    TDD: the channel-pin assertion failed (red) against the old @v1 SHA pin, then passed (green) after the repin.

    Files Changed

    • .github/workflows/feature-ideation.yml: single uses: ref repinned to @feature-ideation/next + a sanctioned-ring-release comment above it. No other part of the stub changed — triggers (schedule + workflow_dispatch + discussion:created), the ideas/non-Bot guard, permissions:, secrets:, target_discussion, and project_context are all byte-identical.
    • tests/test_feature_ideation.bats: asserts the @feature-ideation/next channel pin (and the org reusable path); dropped the now-wrong SHA/# v1/v2-guard tests. YAML validated; file passes.

    Notes — MERGE GATE (untracked prerequisites, per Dev Notes / epic #872)

    This repin depends on two prerequisites that live in petry-projects/.github, not this repo:

    1. The feature-ideation/next channel tag must exist on petry-projects/.github. I checked via git ls-remote --tags https://github.com/petry-projects/.github.git — no feature-ideation/* tags currently exist there. Until that tag is cut, this stub's uses: ref will not resolve and the workflow will fail to start.
    2. The org non-stub-feature-ideation.yml compliance audit must accept a channel-tag pin (otherwise the Compliance: non-stub-feature-ideation.yml #629 finding re-triggers on this repo).

    The code change is complete and self-consistent, but both prerequisites must be confirmed in place before this is merged. I cannot create cross-repo tags or merge, so flagging here for the maintainer.

  3. added a commit that references this issue on Jun 25, 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 issue

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions