Repository navigation
Epic: Promote persona-mention to the fleet (reach incubator + auto-detect new repos) #781
Description
Scope
"Reach incubator + new repos" with the ideation/analysis capability. Three parallel
tracks that converge on incubator:
- Router (persona-mention) → the shared mention runtime BA rides. [promote persona-mention 1/3] Soak through the rings (next → ring0 → ring1 → stable) #783→[promote persona-mention 2/3] Wire into ring-pins + deploy + bootstrap #784→[promote persona-mention 3/3] Deploy sweep — reach incubator + all repos #785.
- business-analyst persona → rides the router; has its own prereqs. business-analyst persona: register in canary-rings.json + promote past draft (incubator prereq) #814.
- feature-ideation workflow → standalone scheduled pipeline; independent stub. feature-ideation → incubator: add caller stub (@v1-stable) + project_context + Discussions/Ideas #813.
Tracked stories (DAG)
Persona-mention router:
- [promote persona-mention 1/3] Soak through the rings (next → ring0 → ring1 → stable) #783 — SOAK (gate)
- [promote persona-mention 2/3] Wire into ring-pins + deploy + bootstrap #784 — WIRE (blocked by [promote persona-mention 1/3] Soak through the rings (next → ring0 → ring1 → stable) #783)
- [promote persona-mention 3/3] Deploy sweep — reach incubator + all repos #785 — SWEEP → incubator + all repos (blocked by [promote persona-mention 2/3] Wire into ring-pins + deploy + bootstrap #784)
business-analyst → incubator (rides the router):
- business-analyst persona: register in canary-rings.json + promote past draft (incubator prereq) #814 — register business-analyst in canary-rings.json + promote past draft (independent of [promote persona-mention 1/3] Soak through the rings (next → ring0 → ring1 → stable) #783; BA can't route in incubator until BOTH business-analyst persona: register in canary-rings.json + promote past draft (incubator prereq) #814 AND [promote persona-mention 3/3] Deploy sweep — reach incubator + all repos #785 land)
feature-ideation → incubator (standalone, parallel — NOT blocked by the router DAG):
- feature-ideation → incubator: add caller stub (@v1-stable) + project_context + Discussions/Ideas #813 — add feature-ideation caller stub @v1-stable + project_context + Discussions/Ideas
Today the persona mention framework is live ONLY in the next ring (.github-private). incubator and any new repo are outside it — a @petry-projects/<role> mention there does nothing (no stub → no dispatch). This Epic reaches the whole fleet and makes new repos auto-onboard.
Verified gap: persona-mention.yml exists in only .github-private; it is in neither deploy-standard-workflows.sh nor bootstrap-new-repo.sh (grep = 0 in both).
The DAG
#1 SOAK ── prove persona-mention through the rings (next → ring0 → ring1 → stable)
cut/move the channel tags; watch each ring before advancing. [GATE]
│
#2 WIRE ── add persona-mention to: ring-pins.sh RING_REUSABLES +
deploy-standard-workflows.sh + bootstrap-new-repo.sh. Makes compliance enforce
the pin and the deploy sweep carry the stub. (blocked by #1 cutting the tier tags)
│
#3 SWEEP ── run deploy-standard-workflows.sh across the fleet → every repo (incl.
incubator) gets persona-mention.yml at its ring pin; new repos get it
at creation via bootstrap. (after #2)
Stories
#1 — Soak persona-mention through the rings (GATE)
nextsoak DONE + proven (qa-lead advisory,.github-private#1300; recursion guard held).- Advance
persona-mention/v1-ring0→v1-ring1→v1-stableviacut-release.sh persona-mention <ver> --channel <tier> [--promote], watching each ring before advancing (ring0=.github, ring1=TalkTerm/bmad-bgreat-suite, stable="*" perring-pins.sh). Do NOT skip to stable.
#2 — Wire persona-mention into the fleet mechanisms (dev-lead-implementable)
scripts/lib/ring-pins.sh— addpersona-mentiontoRING_REUSABLES(compliance enforces@persona-mention/v1-<tier>per repo; deploy knows the tier). Only after Addressing PR comments #1 cuts the tier tags, else compliance demands a pin to a nonexistent tag.scripts/deploy-standard-workflows.sh— addpersona-mention.ymlto the deployed set, pinned perring_tier_for_repo.- New repos auto-onboard through
petry-projects/repo-template(carriespersona-mention.yml) and the weekly standards sweep;scripts/bootstrap-new-repo.shseeds no workflow stubs and is not changed (reworded 2026-10-11). - Acceptance: dry-run deploy shows
incubatorwould getpersona-mention.yml@persona-mention/v1-stable;repo-templatecarries the stub and the sweep keeps it current.
#3 — Deploy sweep (session/gated)
- Run the fleet apply so every repo — including incubator — gets the stub at its ring pin.
- Verify:
incubator/.github/workflows/persona-mention.ymlpresent; a smoke-test mention in incubator routes end-to-end. - Note: deploy can't direct-push to ruleset-protected repos → PR + admin-merge / SKIP_OVERRIDES (add-to-project precedent).
Rubber-duck findings
stable's"*"resolves ring MEMBERSHIP, not deployment — the stub file is only placed by the Add coding standards & principles section to AGENTS.md #3 sweep. "Auto-detect new repos" is met byrepo-templateplus the weekly sweep, not bybootstrap-new-repo.sh(corrected 2026-10-11).- Order in Add multi-agent isolation strategy using git worktrees #2: ring-pins needs the tier tags first (Addressing PR comments #1), or compliance demands a pin to nothing.
- The runner is single-homed and already fleet-ready — Add multi-agent isolation strategy using git worktrees #2/Add coding standards & principles section to AGENTS.md #3 fan out only the ROUTER stub, not the runner. No runner change.
- Secrets: stub needs
GH_PAT_WORKFLOWS(org secret, fleet-wide already). - Blast radius: stable makes every repo's comments hit the router. Guards are proven, but hold stable for explicit go.
Acceptance criteria
- Addressing PR comments #1:
v1-stablereached via healthy ring soak (not skipped). - Add multi-agent isolation strategy using git worktrees #2: ring-pins + deploy carry persona-mention; tests green; incubator and new-repo coverage shown.
- Add coding standards & principles section to AGENTS.md #3: sweep run; incubator has the stub; a mention there routes end-to-end.
- New-repo:
repo-templatecarriespersona-mention.ymland the weekly sweep keeps it current (reworded 2026-10-11 — the bootstrap dry-run seeds no workflow stubs). - BA→incubator (business-analyst persona: register in canary-rings.json + promote past draft (incubator prereq) #814 + [promote persona-mention 3/3] Deploy sweep — reach incubator + all repos #785):
business-analystregistered in canary-rings.json; persona pastdraft; an@petry-projects/business-analystmention in incubator routes end-to-end (advisory posted). (Closed 2026-10-11 as re-scoped: routing is proven on Wire the decision-brief agent stage (Mary → brief.md at "Ripe") incubator#3; ADR-0006 forbids the registry entry; "persona pastdraft" moved to Nine of nine persona manifests are still status: draft — decide and record what advances business-analyst (and the rest) now that the router reaches a stable-ring repo .github-private#2258.) - feature-ideation→incubator (feature-ideation → incubator: add caller stub (@v1-stable) + project_context + Discussions/Ideas #813): stub present at
@feature-ideation/v1-stable; a dispatch run publishes to the incubator "Ideas" discussion. (Delivered 2026-07-21. Regressed fleet-wide on 2026-10-09 — the reusable's defaulttooling_ref: v1lacks the requirements file; tracked in feature-ideation v1-next: pip step fails — tooling_ref default 'v1' skews from reusable (blocks .github-private, will break fleet on promotion) #839, outside this epic.)
Delivery uses the agreed approach: dev-lead implements the scoped stories, I define/monitor/validate; ring/stable promotion gated on explicit go. The canary promoter that moves the persona-mention tier tags now works (#807 fixed .github tag moves); gate reliability is being hardened in #810/#811.
Gated on your go for stable — fleet-wide activation, separate from the delivered persona onboarding.
Activity
don-petry commentedon Jul 21, 2026
Added story: #836 — three workflows → standard deployable shims
Promotes initiative-driver, pr-auto-review, and feature-ideation into
DEPLOYABLE_WORKFLOWSso the sweep carries them fleet-wide (the mechanism half; the actual sweep stays with the #2/#3 sweep stories).deploy-standard-workflows.sh+ migrate their bareGH_PAT_WORKFLOWSrefs to theGH_PAT_DON_PETRY || …fallback chain.Two notes:
project_context(the original exclusion reason). feature-ideation → incubator: add caller stub (@v1-stable) + project_context + Discussions/Ideas #813's incubator-specific content (project_context text + Discussions/Ideas category setup) is still its own concern; Make initiative-driver / pr-auto-review / feature-ideation standard deployable shims (+ canonical-PAT migration) #836 only makes the delivery mechanism carry the stub.GH_PAT_WORKFLOWSretirement (.github-private#1326): initiative-driver + pr-auto-review consumers converge on the sweep; feature-ideation's tuned copies are deferred to initiative-driver template omits issue labels from the rate-limit gate #1326's per-repo pass (they keep their body).don-petry commentedon Oct 11, 2026
Status, 2026-10-11 14:30 UTC
incubatoris proven; "status past draft" moved to combsmith/.github-private#2258persona-mention/v1-stablemoved tofd430b58at 06:17Z today by the scheduled canary run38117600727(next → ring0 → ring1 → stable; ring 1's sample came from TalkTerm once it carried the stub). That build has thepull_requestsurface (#1167) and not the marker-quoting fix (#1287, now onv1-ring0). The epic said to hold stable for an explicit go; the promotion was automatic. Awaiting a maintainer decision to accept or roll back.ring-pins.sh, the deploy list andcanary-rings.jsoncarry persona-mention.bootstrap-new-repo.shdoes not seed stubs; new repos get it fromrepo-templateand the weekly sweep. The bootstrap dry-run this story asks for has not been run.autofixjob reformats any synced stub not listed in.prettierignore)..githubis exempt.Smoke test (the epic's end-to-end criterion): a
@petry-projects/business-analystmention on combsmith/incubator#3 routed (router run38105287114:Routing to 'business-analyst'), passed the authorization preflight forincubator, and posted an advisory: combsmith/incubator#3 (comment)How the five missing repos were handled. Their sync PRs from 10-03/10-05 predated the template's
pull_requesttrigger and had been edited in place by later passes (NOSONAR markers moved, comments reflowed, one ring pin changed). They were closed and replaced withpersona-mention.yml-only syncs from the current template, each compared with the template before merge: TalkTerm#536, ContentTwin#484, markets#522 merged.Gaps found and filed: #1296 (the sweep reuses a same-date branch as-is), #1297 (stub headers name
v1-stableabove a ring pin), combsmith/TalkTerm#533 and combsmith/bmad-bgreat-suite#501 (repo-local guards the currentpr-review.ymltemplate breaks), combsmith/google-app-scripts#618.Note for Monday's sweep (08:16 UTC, 2026-10-12):
repo-template,broodly,incubator,broodminder-dataandempower-personal-dashboardstill carry the 66-line stub with nopull_requesttrigger; the content-aware sweep (#1277) will open sync PRs adding it. Withv1-stableon the PR-surface build, each of those merges switches on qa-lead PR advisories in that repo.don-petry commentedon Oct 11, 2026
Status, 2026-10-11 15:05 UTC
fd430b58; Don accepted the unasked auto-promotion and left auto-promotion on.repo-templateand the weekly sweep. The bootstrap dry-run seeds no workflow stubs.What #785 is waiting for:
f5a8bd6c, identical to the template apart from the ring-1 pin, required checks green, no open threads) and needs Don's admin merge..prettierignoreentry is in feat: implement issue #618 — Add persona-mention.yml to .prettierignore before the stub sync google-app-scripts#619 (one file, required checks green, no open threads), also waiting for an admin merge. The first dev-lead run on issue 618 had failed on commitlint (commit header 178 characters; dev-lead issue runs fail in repos with commitlint when the issue title is long — the commit header is the full title and exceeds 100 characters .github-private#2273); a shorter issue title and a retry produced the PR. After it merges, the stub sync can be dispatched once the UTC date has rolled, because today's branchstandards-sync/workflows-20261011still exists there (Standards sweep reuses a same-date sync branch as-is — a narrower second run opens a PR carrying the first run's commits #1296), or it comes with the sweep on 2026-10-12 08:16 UTC.Also from today: #1308 (bootstrap passes
owner/repoto the settings script, which prepends the org again).don-petry commentedon Oct 11, 2026
Closing, 2026-10-11 (Don's decision). persona-mention reaches the fleet: every target repository carries the caller stub at its ring pin, and a mention in incubator routes end to end.
persona-mention/v1-stable=fd430b58. Promoted by the scheduled canary run, not on an explicit go; Don accepted it and left auto-promotion on.repo-templateand the weekly sweep (criterion reworded).Left open on purpose, each tracked elsewhere:
tooling_ref: v1lacks the requirements file): feature-ideation v1-next: pip step fails — tooling_ref default 'v1' skews from reusable (blocks .github-private, will break fleet on promotion) #839. This breaks the feature-ideation criterion above after it was met; it is a defect in a different agent and affects every repository.pull_requesttrigger (repo-template, broodly, incubator, broodminder-data, empower-personal-dashboard). The sweep on 2026-10-12 08:16 UTC should open the sync PRs; each merge turns on qa-lead pull-request advisories there.88405160), not yet on stable. It follows after the 12-hour dwell.owner/repoto the settings script: bootstrap-new-repo.sh passes owner/repo to apply-repo-settings.sh #1308.status: draft: Nine of nine persona manifests are still status: draft — decide and record what advances business-analyst (and the rest) now that the router reaches a stable-ring repo .github-private#2258.v1-stableabove a ring pin: Synced stubs in ring repos carry a header naming v1-stable above a uses: line pinned to their ring — bots flag it and agents edit the stub to match #1297 (PR feat: implement issue #1297 — Synced stubs in ring repos carry a header naming v1-stable above a uses: line pinned to their ring — bots flag it and agents edit the stub to match #1298, in progress). Same-date sync branch reuse: Standards sweep reuses a same-date sync branch as-is — a narrower second run opens a PR carrying the first run's commits #1296 (PR feat: implement issue #1296 — Standards sweep reuses a same-date sync branch as-is — a narrower second run opens a PR carrying the first run's commits #1299, held).