Skip to content

seed-repo-template.sh strips the commercial-support sections from repo-template on every run — its README and BOOTSTRAP baseline predates the commercial-support standard, and stale seed PRs pile up #2233

Closed

Description

@don-petry

Problem

scripts/seed-repo-template.sh generates README.md and BOOTSTRAP.md for petry-projects/repo-template without the commercial-support content that the repository now carries on purpose. Every seed run therefore opens a PR that deletes it.

  • petry-projects/repo-template PR petry-projects — workflow failures detected 2026-05-18 #229 (merged 2026-10-05, "chore: add commercial support section and clarify contributing inheritance") added a ## Commercial Support & Integration section to README.md and a ## 4. Contributing & Commercial Support section to BOOTSTRAP.md.
  • petry-projects/.github has standards/commercial-support-standard.md, which defines the canonical README section.
  • The seed script has no mention of either (grep -ci 'commercial\|combsmith' scripts/seed-repo-template.sh → 0).

Evidence (2026-10-10)

bash scripts/seed-repo-template.sh --emit-baseline README.md differs from repo-template main by exactly that section (13 lines removed). --emit-baseline BOOTSTRAP.md removes the four-line section 4.

Seed PRs opened since PR #229 carry the deletion:

repo-template PR Opened Change
#233 2026-10-09 README.md −13, BOOTSTRAP.md −4, auto-merge on
#235 2026-10-10 the same, plus a stub change from a stale standards channel

A seed PR is opened almost daily and they accumulate at review-required; six were open on 2026-10-10.

Change

  1. Make the seed emit the commercial-support section in README.md, taking the text from standards/commercial-support-standard.md at the standards ref the seed already resolves, not from a copy in this script.
  2. Make the seed emit the Contributing & Commercial Support section in BOOTSTRAP.md as it stands on repo-template main.
  3. Do not open a new seed PR while an older seed-scaffold/* PR is still open for the same repo: update or supersede it (see seed-repo-template.sh: seed PRs record no standards ref, never supersede each other, and can regress repo-template (5 stale regressing PRs found) #1925).

Acceptance criteria

  • --emit-baseline README.md and --emit-baseline BOOTSTRAP.md produce files whose git blob equals the file on petry-projects/repo-template main (as of commit bb43b0db), when run against standards/v1.2.0.
  • The README section text is read from the standards ref, and a test fails if the standard's section and the emitted section differ.
  • A seed run with an open seed-scaffold/* PR on the target repo does not open a second one.
  • Covered by tests in the seed script's existing test file; every existing test passes unmodified.

Activity

  1. github-actions commented on Oct 10, 2026

    @github-actions
    Contributor

    Thanks for the detailed report and evidence, including the PR numbers and the baseline diff. This is a clear regression against the commercial-support standard. One question before we start: for the BOOTSTRAP.md section 4, should the seed read the text from repo-template main, or from a source in the standards repo like the README section? There's no standards file for it today, so we need to know where the canonical text should live.

  2. don-petry commented on Oct 11, 2026

    @don-petry
    CollaboratorAuthor

    Dev-Lead Implementation Plan

    Issue: #2233 — seed-repo-template.sh strips the commercial-support sections from repo-template

    Scope

    Make the seed emit the commercial-support README section (read from standards/commercial-support-standard.md at the resolved standards ref) and the ## 4. Contributing & Commercial Support BOOTSTRAP section, and make a live seed update an already-open seed-scaffold/* PR instead of opening another.

    ⚠️ Conflict in the acceptance criteria (README)

    At standards/v1.2.0, the standard's canonical block is ## 💼 Commercial Support & Enterprise Services (pricing tiers etc.). The section on repo-template@bb43b0db is a different hand-written text (## Commercial Support & Integration). So AC #1 (README blob == repo-template main) and AC #2 / Change 1 (section read from the standard, test fails if they differ) cannot both hold. I'm following Change 1 / AC #2 and AGENTS.md ("read the standard, then copy the template"): the emitted README keeps main's preamble and --- separator byte-for-byte and appends the standard's canonical block. The next seed PR will therefore replace the repo-template section with the canonical one once, not delete it, and later runs will make no change. BOOTSTRAP.md will match main's blob exactly.

    Implementation Checklist

    • scripts/seed-repo-template.sh: _commercial_support_section extracts the fenced ```markdown block under ## Canonical README Section from the standard fetched via `_fetch_standard` (same resolved ref as everything else)
    • README.md generator: static preamble + --- + extracted section; fails loud (distinct exit code) if the section can't be read
    • _seed_all_files: if README's standard is unavailable, warn and leave README untouched (never write a README without the section)
    • BOOTSTRAP.md generator: add ## 4. Contributing & Commercial Support verbatim from repo-template main
    • _seed_repo (live): find an open seed-scaffold/* PR; if there is one, reuse its branch, bring each manifest file on that branch in line with the fresh emission (which also undoes stale edits there), and don't run gh pr create

    Tests to Write (tests/test_seed_repo_template.bats; existing tests left unchanged)

    • BOOTSTRAP.md emission git blob == repo-template@bb43b0db blob (fixture + pinned blob SHA)
    • README.md emission: preamble identical to repo-template main; section == standard v1.2.0 canonical block (fixture)
    • README section follows the standard: changing the standard fixture changes the emitted section; test fails if they differ
    • README emission fails loud when the standard / canonical block is missing
    • Live seed with an open seed-scaffold/<older-date> PR: no pr create, writes go to the existing branch, no new branch created

    Test Command

    bats tests/test_seed_repo_template.bats + bash .dev-lead/scripts/dev-lead-lint.sh

  3. don-petry commented on Oct 11, 2026

    @don-petry
    CollaboratorAuthor

    Dev-Lead: Progress (in progress — not yet durable)

    Provisional. Nothing is pushed yet; the automation posts the authoritative
    completion record (with PR number + head SHA) after the push. Treat the notes
    below as intent, not delivered results.

    Plan Execution (intended)

    • README.md generator appends the canonical block from standards/commercial-support-standard.md (the ```markdown fence under ## Canonical README Section), fetched through `_fetch_standard` at the resolved standards ref. It fails loud if the standard or the block is missing.
    • A full seed run that can't read that standard skips README.md with a warning instead of writing it without the section.
    • BOOTSTRAP.md generator gains ## 4. Contributing & Commercial Support, copied verbatim from repo-template main.
    • A live seed run checks for an open seed-scaffold/* PR (newest wins). If it finds one, it reuses that PR's branch instead of creating a new dated branch and PR. Each manifest file on that branch is brought in line with the fresh emission, which also undoes stale edits left by older runs.

    ⚠️ README acceptance-criterion conflict (needs a maintainer decision)

    Checked against the live repos with STANDARDS_REF=standards/v1.2.0:

    • BOOTSTRAP.md: emitted blob b0d2f016… matches repo-template main@bb43b0db.
    • README.md: everything up to the section, including the --- separator, matches byte-for-byte. The section body does not match, because repo-template's ## Commercial Support & Integration text is not the standard's canonical ## 💼 Commercial Support & Enterprise Services block. AC test issue from agent #1 and AC Go-live improvements for PR review agent #2 can't both hold. I followed Change 1 / AC Go-live improvements for PR review agent #2 (and AGENTS.md "copy the template"). As a result, the next seed PR will replace repo-template's section with the canonical one, once. It will not delete it. If the repo-template wording is the one you want, the fix belongs in the standard in petry-projects/.github; the seed will then follow it with no script change.
    • Related: the BOOTSTRAP section 4 text (kept verbatim per AC test issue from agent #1) refers to the section as "Commercial Support & Integration", which doesn't match the standard's heading.

    Files touched (this workspace, not yet pushed)

    • scripts/seed-repo-template.sh: added _commercial_support_section, changed the README/BOOTSTRAP generators, and made _seed_file, _seed_all_files and _seed_repo reuse an open seed PR's branch
    • tests/test_seed_repo_template.bats: 8 new #2233 tests; existing tests not changed
    • tests/fixtures/seed-repo-template/: the standard at v1.2.0, plus repo-template README/BOOTSTRAP at bb43b0db. The tests also pin the blob SHAs.

    Notes

  4. don-petry commented on Oct 11, 2026

    @don-petry
    CollaboratorAuthor

    Dev-Lead: Implementation Complete — PR #2234

    The implementation for issue #2233 is durable: commits are pushed and a pull request is open. This record is backed by verifiable artifacts you can confirm in one click.

    Review happens on the PR. Acceptance criteria and test results are evidenced by the PR's diff and CI checks — not asserted here. If a later stage fails, this claim is retracted in place.

  5. added a commit that references this issue on Oct 11, 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

    bugBug reportsdev-leadFor dev-lead agent pickup

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions