GloriousFlywheel Pooled Substrate Dogfood Reset Implementation Plan
For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: Aggressively reset GloriousFlywheel back to a pooled, capability-class, cache-first dogfood substrate and remove repo-shaped runner falsehoods from config, docs, and management surfaces.
Architecture: Execute the reset as a subtractive cleanup program with clear tranche boundaries. First retire the wrong planning frame and remove repo-specific runner config drift. Then rewrite canon docs and developer-contract surfaces so the repo once again teaches pooled dev-plus-CI substrate usage. Finish by resetting GitHub and Linear/admin surfaces so they stop steering future work back into repo-shaped runner patterns. Downstream consumers may benefit later, but they are not the proof criterion for whether the source repo still dogfoods the substrate honestly.
Tech Stack: Markdown, OpenTofu, Just, Bazel, Nix flakes, direnv, Bash, GitHub CLI, Linear
Progress Checkpoint: 2026-04-25
The reset route has moved from architecture cleanup into status parity and routine proof keeping.
- PR #400 merged the GitOps compatibility dashboard slice to
mainasaec1a10edd55eb1c92f7edc3d37ba67224a0a67a - PR #401 merged the current-state/admin parity refresh to
mainas2d2a15280a34a392be620f09ca55dec86e4ebf98 - PR #402 merged the parity-loop close to
mainasd5bc77780bb2bf9e91802c301a483a5e4104eeee - PR #400 review blockers were resolved through the GitHub review-thread API after fixing the stale-preview gate, raw pipeline error exposure, and preview diff rendering
- post-merge
mainhas passedValidate,Secret Detection,Source Bazel Proof,Platform Proof,Tranche Proof Status,Deploy Docs,Publish to FlakeHub, andBuild Container Images - the post-PR-401 default-branch proof package passed:
Source Bazel Proof24921220511,Platform Proof24921220518,Validate24921220516,Secret Detection24921220517,Deploy Docs24921220512,Publish to FlakeHub24921220522, andTranche Proof Status24921220519 - the post-PR-402 default-branch proof package passed after rerunning the failed
tinyland-nix-heavyjob inPlatform Proofrun24921370509; the initial signal-9 failure is tracked as TIN-545 rather than attributed to the docs-only parity diff - PR #404 merged the TIN-545 hardening slice to
mainasc48869d16eec6cda3f83894c8edad3a03d47554f - the post-PR-404 default-branch proof package passed:
Platform Proof24921935297,Source Bazel Proof24921935299,Validate24921935307,Secret Detection24921935309, andPublish to FlakeHub24921935301 - the post-PR-404
tinyland-nix-heavylane passedrunner-dashboardon attempt 1, so the new signal-9 retry path did not mask the proof Build Container Imagesrun24920942761passed on the sharedtinyland-dindlane across dashboard, Caddy Tailscale proxy, Nix runner, and browser runner image jobs- the canonical human checkout is
/Users/jess/git/GloriousFlywheel;/tmpworktrees are recovery sandboxes only /Users/jess/git/GloriousFlywheelis clean onmainand aligned withorigin/mainbefore this TIN-543 parity-loop branch
Immediate route:
- treat the PR #400 / PR #401 / PR #402 / PR #404 status-parity and heavy-lane hardening loop as closed
- keep downstream consumer cleanup separate from source-repo dogfood integrity
- promote the next product slice through a fresh issue or project surface
- use the next product slice to strengthen source-repo live substrate proof: local-dev substrate attachment, CI cache reuse, and truthful boundaries around shared cache acceleration versus full remote offload
Progress Checkpoint: 2026-04-24
This plan remains the active reset route, but the detailed checkbox body below is the original execution recipe. The current repo truth is:
- PR #387 landed the pooled-substrate dogfood reconciliation and sprawl
cleanup on
main - PR #388 landed the Source Bazel Proof integrity fix on
main - PR #389 landed the post-proof consolidation on
main mainis green at merge commit7820baa940e4262dabc54d46d770b0cf0c286c2cSource Bazel Proofrun24912686706passed in 1m26s and usedscripts/bazel-cache-backed.shwithBAZEL_REMOTE_CACHE=grpc://bazel-cache.nix-cache.svc.cluster.local:9092Platform Proofrun24912686712passed in 2m8s- Linear
TIN-494is done and no longer blocksTIN-490 - Linear
TIN-490is done: operator-approved ARC apply run24913839623completed with0 added, 1 changed, 10 destroyed - post-apply
Source Bazel Proofrun24913926497passed - post-apply
Platform Proofrun24913926480passed acrosstinyland-docker,tinyland-nix, andtinyland-nix-heavy TIN-495triaged the separatebumbleimage-GC/free-disk node-hygiene follow-up:bumbleisReady,DiskPressure=False, has no current node events, and the image/container filesystem is not the dominant rootfs consumer; rootfs headroom remains a monitor item, not a source-proof blocker
Immediate next route:
- keep this plan/current-state/Linear surface consolidated after #387/#388/#389 and the completed TIN-490 live ARC apply
- treat the repo-derived ARC lane retirement as complete unless a future plan or audit shows new live drift
- keep any future destructive ARC apply operator-gated
- do not re-couple downstream consumer debt to source-repo dogfood integrity
Historical local authority note from before TIN-496/TIN-542:
/Users/jess/git/GloriousFlywheelis currently a dirty, non-authoritative worktree oncodex/sprawl-reconcilegithub/mainis the merged authority for this checkpoint- cleanup should preserve or explicitly retire the dirty shared worktree state before making it authoritative again
That note is no longer current. The canonical human checkout is again
/Users/jess/git/GloriousFlywheel, and it was clean on main before this
status-refresh branch started.
File Structure
Planning and supersession surfaces
| File | Responsibility |
|---|---|
docs/superpowers/specs/2026-04-23-gloriousflywheel-pooled-substrate-dogfood-reset-design.md |
new authoritative reset spec |
docs/superpowers/specs/2026-04-23-gloriousflywheel-runner-authority-design.md |
older spec to mark superseded where it encodes repo-shaped runner thinking |
docs/superpowers/plans/2026-04-23-gloriousflywheel-runner-authority.md |
older implementation plan to mark superseded where it encodes repo-shaped runner thinking |
docs/research/gloriousflywheel-massageithaca-dogfood-playbook-2026-04-17.md |
historical note to mark corrected where it still drives wrong architecture |
docs/research/gloriousflywheel-massageithaca-branch-authority-decision-2026-04-18.md |
historical note to mark corrected where it still drives wrong architecture |
ARC config and runner-taxonomy cleanup
| File | Responsibility |
|---|---|
tofu/stacks/arc-runners/honey.tfvars |
committed ARC lane contract; must contain only pooled capability classes in normal design |
docs/guides/github-app-adoption.md |
operator guidance for GitHub App + ARC enrollment; must stop teaching repo-shaped lanes as the normal answer |
config/orgwide-enrollment-queue.json |
explicit blocked/debt queue; should describe control-plane visibility problems without normalizing repo-shaped runner taxonomy |
Canonical repo contract surfaces
| File | Responsibility |
|---|---|
README.md |
top-level product definition and operator/developer entry |
docs/index.md |
internal docs entrypoint |
docs/current-state.md |
current canonical repo and operating truth |
docs/roadmap.md |
short active route |
docs/runners/README.md |
runner taxonomy and operator model |
docs/architecture/enrollment-model.md |
enrollment model and multi-owner scope framing |
docs/architecture/cache-and-state-roles.md |
cache/state roles and current honest boundaries |
Developer contract surfaces
| File | Responsibility |
|---|---|
AGENTS.md |
repo-local execution guardrails for future agents |
Justfile |
top-level local operator/developer commands |
.bazelrc |
default Bazel contract for local and CI usage |
.envrc |
devshell/direnv environment contract |
docs/infrastructure/quick-start.md |
current internal bootstrap path |
docs/reference/justfile-commands.md |
canonical just reference |
Admin and tracker surfaces
| Surface | Responsibility |
|---|---|
GitHub PR #381 |
current Dell repo-shaped lane draft to close or restate |
| Linear project / issue surfaces for the former runner-authority lane | must be reset to the pooled-substrate framing |
| initiative/project status update | should record the reset and the false turns retired |
Task 1: Supersede The Repo-Shaped Runner Framing
Files:
-
Modify:
docs/superpowers/specs/2026-04-23-gloriousflywheel-runner-authority-design.md -
Modify:
docs/superpowers/plans/2026-04-23-gloriousflywheel-runner-authority.md -
Modify:
docs/research/gloriousflywheel-massageithaca-dogfood-playbook-2026-04-17.md -
Modify:
docs/research/gloriousflywheel-massageithaca-branch-authority-decision-2026-04-18.md -
Step 1: Confirm the exact false-turn phrases
Run:
cd /private/tmp/gf-pooled-substrate-reset
rg -n "repo-owned canary|repo-owned canaries|dell-7810-nix|massageithaca|repo_runner_enrollments|repo convergence|runner authority" \
docs/superpowers/specs/2026-04-23-gloriousflywheel-runner-authority-design.md \
docs/superpowers/plans/2026-04-23-gloriousflywheel-runner-authority.md \
docs/research/gloriousflywheel-massageithaca-dogfood-playbook-2026-04-17.md \
docs/research/gloriousflywheel-massageithaca-branch-authority-decision-2026-04-18.md
Expected: hits that prove these files would still steer future work toward repo-shaped runner thinking.
- Step 2: Add explicit superseded notices to the older spec and plan
Apply these top-of-file notes:
> Superseded on 2026-04-23 by
> `docs/superpowers/specs/2026-04-23-gloriousflywheel-pooled-substrate-dogfood-reset-design.md`.
> This note remains useful as history for proof recovery and surface truthing,
> but its repo-shaped runner framing is no longer the active architecture.
> In particular, repo-specific runner labels and "repo-owned canary" framing
> are now treated as false turns to retire, not as the product direction.
Place that block directly below each title in:
-
docs/superpowers/specs/2026-04-23-gloriousflywheel-runner-authority-design.md -
docs/superpowers/plans/2026-04-23-gloriousflywheel-runner-authority.md -
Step 3: Correct the two historical MassageIthaca notes
Add or tighten correction language so both notes say the same thing:
> Correction on 2026-04-23:
> Repo-specific runner labels such as `massageithaca-*` are not the intended
> GloriousFlywheel architecture. Treat earlier repo-shaped lane language in this
> note as historical drift, not as the active platform direction.
Use that correction in:
-
docs/research/gloriousflywheel-massageithaca-dogfood-playbook-2026-04-17.md -
docs/research/gloriousflywheel-massageithaca-branch-authority-decision-2026-04-18.md -
Step 4: Validate the supersession tranche
Run:
cd /private/tmp/gf-pooled-substrate-reset
pnpm dlx markdownlint-cli2 \
docs/superpowers/specs/2026-04-23-gloriousflywheel-runner-authority-design.md \
docs/superpowers/plans/2026-04-23-gloriousflywheel-runner-authority.md \
docs/research/gloriousflywheel-massageithaca-dogfood-playbook-2026-04-17.md \
docs/research/gloriousflywheel-massageithaca-branch-authority-decision-2026-04-18.md
git diff --check
Expected: both commands exit 0.
- Step 5: Commit the supersession tranche
cd /private/tmp/gf-pooled-substrate-reset
git add \
docs/superpowers/specs/2026-04-23-gloriousflywheel-runner-authority-design.md \
docs/superpowers/plans/2026-04-23-gloriousflywheel-runner-authority.md \
docs/research/gloriousflywheel-massageithaca-dogfood-playbook-2026-04-17.md \
docs/research/gloriousflywheel-massageithaca-branch-authority-decision-2026-04-18.md
git commit --no-gpg-sign -m "docs: supersede repo-shaped runner framing"
Task 2: Remove Repo-Shaped Runner Config Drift
Files:
-
Modify:
tofu/stacks/arc-runners/honey.tfvars -
Modify:
docs/guides/github-app-adoption.md -
Modify:
config/orgwide-enrollment-queue.json -
Step 1: Remove the stale MassageIthaca DinD enrollment
Delete this block from tofu/stacks/arc-runners/honey.tfvars:
massageithaca = {
github_config_url = "https://github.com/Jesssullivan/MassageIthaca"
github_config_secret = "github-personal-secret"
lanes = ["dind"]
max_runners = 1
}
The surrounding comment should be removed with it.
- Step 2: Replace repo-shaped enrollment examples with shared-capability guidance
In docs/guides/github-app-adoption.md, remove guidance that teaches:
repo_runner_enrollmentsas the normal answer for user repos- repo-specific labels such as
chapel-nix - compatibility-preserving repo lanes as a product pattern
Replace that section with a shorter contract like:
By default, GloriousFlywheel should expose shared capability-class lanes such
as `tinyland-nix`, `tinyland-docker`, `tinyland-dind`, and explicitly bounded
additive capability lanes such as `tinyland-nix-heavy` or `tinyland-nix-kvm`.
If a repo cannot currently reach the shared lane because of GitHub App
installation scope or account visibility, treat that as enrollment/control-plane
debt to fix. Do not mint a repo-shaped runner label as the normal answer.
And keep one additive capability example only:
extra_runner_sets = {
tinyland-nix-heavy = {
github_config_url = "https://github.com/tinyland-inc"
github_config_secret = "github-app-secret"
runner_label = "tinyland-nix-heavy"
runner_labels = ["self-hosted", "nix", "linux"]
runner_type = "nix"
max_runners = 2
cpu_limit = "8"
memory_limit = "16Gi"
}
}
- Step 3: Rewrite the enrollment queue entry so Dell stays blocked, not repo-shaped
In config/orgwide-enrollment-queue.json, make the Dell entry say:
{
"repo": "Jesssullivan/Dell-7810",
"action": "keep the repo blocked from counted shared authority until the Jess-owned installation can truthfully reach the shared tinyland-nix capability class",
"exit_condition": "a branch or default-branch self-hosted Chapel or kernel job starts on the shared capability-class lane instead of queueing without assignment",
"reason": "the workload belongs on the pooled GloriousFlywheel substrate, but the current GitHub App and enrollment scope does not yet expose the shared lane to this repo"
}
- Step 4: Prove the config no longer wants repo-shaped ARC adds
Run:
cd /private/tmp/gf-pooled-substrate-reset
jq empty config/orgwide-enrollment-queue.json
tofu fmt -check tofu/stacks/arc-runners/honey.tfvars
TOFU_BACKEND_CONFIG_FILE=$PWD/config/backends/arc-runners-dev.hcl \
tofu -chdir=tofu/stacks/arc-runners plan -refresh=false \
-var-file=honey.tfvars \
-var='cluster_context=honey' \
-var='k8s_config_path=/Users/jess/.kube/kubeconfig-honey.yaml'
Expected:
-
jqandtofu fmt -checkexit0 -
the plan no longer includes
massageithaca-dind -
the plan does not introduce
dell-7810-nix -
if the plan still shows unrelated drift, capture it explicitly before proceeding
-
Step 5: Commit the config cleanup
cd /private/tmp/gf-pooled-substrate-reset
git add tofu/stacks/arc-runners/honey.tfvars docs/guides/github-app-adoption.md config/orgwide-enrollment-queue.json
git commit --no-gpg-sign -m "runners: remove repo-shaped lane drift"
Task 3: Rewrite The Canonical Product Surfaces
Files:
-
Modify:
README.md -
Modify:
docs/index.md -
Modify:
docs/current-state.md -
Modify:
docs/roadmap.md -
Modify:
docs/runners/README.md -
Modify:
docs/architecture/enrollment-model.md -
Modify:
docs/architecture/cache-and-state-roles.md -
Step 1: Replace the top-level product definition in
README.md
Rewrite the opening section so it leads with:
# Glorious Flywheel
Pooled, cache-first build and runner substrate for GloriousFlywheel-backed
development and CI.
## What This Repo Is
GloriousFlywheel is the internal source repo for:
- shared capability-class runner lanes
- Attic-backed Nix acceleration
- Bazel remote-cache acceleration
- shared developer and CI substrate tooling
- operator and control-plane surfaces on `honey`
And add an explicit boundary:
GloriousFlywheel is not a repo-specific runner enrollment catalog.
Repo identity is not runner taxonomy.
- Step 2: Reset
docs/index.mdanddocs/current-state.md
Update both files so they explicitly teach:
- GloriousFlywheel is a pooled build/cache/running substrate
- shared capability classes are the normal contract
- local dev and CI are meant to use the same substrate
- repo-shaped lanes are debt, not a product feature
In docs/current-state.md, replace the runner-authority/repo-owned-canary framing with language like:
- the active reset lane is pooled substrate dogfood reset
- current falsehood retirement includes repo-shaped runner taxonomy and local-heavy Bazel teaching
- downstream repos like `Dell-7810` remain blocked on shared-lane reachability, not candidates for repo-shaped lanes
- Step 3: Rewrite
docs/roadmap.mdaround the reset
The Now section should say:
- retire repo-shaped runner taxonomy from config, docs, and planning surfaces
- restate and prove the pooled GloriousFlywheel dev-plus-CI substrate contract
- make source-repo dogfooding the first proof point again
- keep Dell and other blocked repos framed as shared-lane reachability problems
- Step 4: Rewrite
docs/runners/README.mdanddocs/architecture/enrollment-model.md
In docs/runners/README.md, replace repo/forge-centric framing with capability-class framing:
Runner types are capability classes, not project identities.
Examples: `tinyland-nix`, `tinyland-docker`, `tinyland-dind`, bounded additive
lanes like `tinyland-nix-heavy`, and true hardware/runtime distinctions such as
KVM or GPU lanes.
In docs/architecture/enrollment-model.md, add an explicit guardrail:
Control-plane enrollment scope is not workload taxonomy.
Per-owner or per-installation visibility constraints must be solved underneath
the shared capability-class contract and must not be normalized into repo-shaped
runner labels.
- Step 5: Tighten the cache-and-state doc to match the pooled-substrate story
In docs/architecture/cache-and-state-roles.md, add an explicit statement:
Attic and Bazel remote cache are shared acceleration layers for both CI and
developer workflows. They are part of the pooled substrate contract, not
CI-only decorations.
Also add the honest current caveat:
Current `main` proves shared cache acceleration. It does not yet by itself prove
full remote-execution or full remote-builder offload for every developer
workload.
- Step 6: Validate the canon-doc tranche
Run:
cd /private/tmp/gf-pooled-substrate-reset
pnpm dlx markdownlint-cli2 \
README.md \
docs/index.md \
docs/current-state.md \
docs/roadmap.md \
docs/runners/README.md \
docs/architecture/enrollment-model.md \
docs/architecture/cache-and-state-roles.md
just check-links
git diff --check
Expected: all commands exit 0.
- Step 7: Commit the canonical docs reset
cd /private/tmp/gf-pooled-substrate-reset
git add \
README.md \
docs/index.md \
docs/current-state.md \
docs/roadmap.md \
docs/runners/README.md \
docs/architecture/enrollment-model.md \
docs/architecture/cache-and-state-roles.md
git commit --no-gpg-sign -m "docs: restate pooled substrate contract"
Task 4: Reset The Developer Contract Surfaces
Files:
-
Create:
AGENTS.md -
Modify:
Justfile -
Modify:
.bazelrc -
Modify:
.envrc -
Modify:
docs/infrastructure/quick-start.md -
Modify:
docs/reference/justfile-commands.md -
Step 1: Add a repo-root
AGENTS.md
Create AGENTS.md with this minimum content:
# GloriousFlywheel Agent Guidance
GloriousFlywheel is a pooled build and runner substrate.
Hard rules:
- do not introduce repo-specific runner labels as normal product structure
- capability classes may encode runtime, architecture, privilege, or bounded
resource envelopes, not project identity
- do not teach or normalize heavy local Bazel or toolchain work as the default
product story
- local flake/devshell/direnv workflows should be described as attaching to the
same shared substrate that CI uses
- if current implementation only proves cache-backed local execution rather than
full remote offload, say that explicitly
- Step 2: Remove raw local Bazel recipes as the implied default
In Justfile, replace:
bazel-build:
bazel build //...
bazel-test:
bazel test //...
bazel-build-ci:
@echo "GloriousFlywheel does not provide a normal Just wrapper for uncached local Bazel."
@echo "Use raw bazel --config=ci only for explicit compatibility/debug sessions after entering the dev environment intentionally."
@exit 1
bazel-build-cached:
bash ./scripts/cache-attachment-contract.sh --strict
bash ./scripts/bazel-cache-backed.sh build //...
with recipes that make the contract explicit:
bazel-build:
@echo "GloriousFlywheel does not treat raw local Bazel as the normal contract."
@echo "Use: just bazel-build-cached, or scripts/bazel-cache-backed.sh build //..., only after entering the dev environment with direnv/nix develop and confirming shared cache settings."
@exit 1
bazel-test:
@echo "GloriousFlywheel does not treat raw local Bazel as the normal contract."
@echo "Use: scripts/bazel-cache-backed.sh test //..., only after entering the dev environment with direnv/nix develop and confirming shared cache settings."
@exit 1
bazel-build-ci:
bazel build --config=ci //...
bazel-build-cached:
bash ./scripts/bazel-cache-backed.sh build //...
And replace:
app-bazel-build:
bazel build //app:build
with:
app-bazel-build:
bash ./scripts/cache-attachment-contract.sh --strict
bash ./scripts/bazel-cache-backed.sh build //app:build
- Step 3: Tighten
.bazelrcand.envrc
In .bazelrc, replace the current optional wording with:
# GloriousFlywheel expects Bazel work to attach to the shared cache-backed
# substrate when the environment provides BAZEL_REMOTE_CACHE.
# Falling back to disk cache is a compatibility behavior, not the intended
# product story for heavy work.
In .envrc, add:
# GloriousFlywheel dev shells are meant to attach local development to the same
# shared substrate CI uses. Heavy Bazel and toolchain work should prefer the
# shared cache-backed path over raw machine-local assumptions.
export BAZEL_REMOTE_CACHE="${BAZEL_REMOTE_CACHE:-}"
Do not invent a remote execution variable that the repo does not already prove.
- Step 4: Rewrite quickstart and justfile reference
In docs/infrastructure/quick-start.md, add a short developer-contract section:
## Developer Contract
After `direnv allow` or `nix develop`, GloriousFlywheel development should use
the same shared cache-backed substrate as CI. Heavy Bazel, Nix, and toolchain
work should not be documented as "just run it locally and hope the cache helps."
Current `main` proves shared cache acceleration. It does not yet by itself
prove full remote execution for every developer workload, so keep that boundary
explicit.
In docs/reference/justfile-commands.md, replace plain local Bazel descriptions with:
| `just bazel-build-cached` | Build all Bazel targets against the shared cache-backed contract |
| `just bazel-build` | Guardrail recipe that points operators back to the intended dev contract |
| `just bazel-test` | Guardrail recipe that points operators back to the intended dev contract |
- Step 5: Validate the developer-contract tranche
Run:
cd /private/tmp/gf-pooled-substrate-reset
pnpm dlx markdownlint-cli2 AGENTS.md docs/infrastructure/quick-start.md docs/reference/justfile-commands.md
git diff --check
just check-links
Expected: all commands exit 0.
- Step 6: Commit the developer-contract reset
cd /private/tmp/gf-pooled-substrate-reset
git add AGENTS.md Justfile .bazelrc .envrc docs/infrastructure/quick-start.md docs/reference/justfile-commands.md
git commit --no-gpg-sign -m "docs: reset developer substrate contract"
Task 5: Reset Admin And Tracker Surfaces
Files / Surfaces:
-
Modify:
docs/current-state.mdonly if Task 3 did not already fully cover reset wording -
Update: GitHub PR
#381 -
Update: Linear project and issue surfaces for the former runner-authority lane
-
Update: initiative or project status update text
-
Step 1: Close or restate the Dell PR so it stops teaching the wrong answer
Run:
cd /private/tmp/gf-pooled-substrate-reset
gh pr view 381 --json number,title,body,state,isDraft,url
Expected: draft PR still exists and still encodes the dell-7810-nix direction.
If so, replace the PR body with:
Superseded by the pooled substrate dogfood reset.
This PR encoded a repo-shaped ARC lane (`dell-7810-nix`) to work around
GitHub App / owner-scope visibility. That is no longer the intended
GloriousFlywheel architecture.
The correct next question is how Jess-owned repos truthfully reach the shared
`tinyland-nix` capability class and shared cache/build substrate without
turning repo identity into runner taxonomy.
This downstream question is separate from source-repo dogfood integrity.
And close the PR:
gh pr close 381 --comment "Superseded by pooled substrate dogfood reset; repo-shaped runner lanes are being retired."
- Step 2: Reset the active Linear phrasing
Update the current project/issue naming and descriptions so they stop teaching “runner authority” as repo convergence. The new framing should use language like:
Pooled substrate dogfood reset
- retire repo-shaped runner taxonomy
- restate the shared capability-class contract
- restore source-repo dogfooding of the pooled dev-plus-CI substrate
- solve downstream owner-scope access underneath the shared contract
At minimum, update:
-
the active project summary
-
the active milestone summary
-
the active issue body formerly centered on runner authority
-
Step 3: Post one honest status update
Create one short project or initiative update with this shape:
Reseting GloriousFlywheel back to its intended architecture:
- pooled capability-class lanes, not repo-shaped runner labels
- shared dev and CI substrate, not CI-only runner framing
- explicit retirement of recent false turns in docs, plans, and ARC config
Current cleanup removes repo-shaped lane drift first, then rewrites the canon
and developer contract surfaces before resuming downstream consumer work.
- Step 4: Record the reset in git if any repo files changed
If Task 5 changed repo files beyond PR/Linear/admin surfaces, commit them:
cd /private/tmp/gf-pooled-substrate-reset
git add <changed-files>
git commit --no-gpg-sign -m "docs: reset substrate dogfood admin framing"
If Task 5 is admin-only, do not create a no-op commit.
Final Verification And Handoff
Files / Surfaces:
-
Verify entire branch in
/private/tmp/gf-pooled-substrate-reset -
Step 1: Run repo verification
Run:
cd /private/tmp/gf-pooled-substrate-reset
git diff --check
pnpm dlx markdownlint-cli2 \
README.md \
AGENTS.md \
docs/index.md \
docs/current-state.md \
docs/roadmap.md \
docs/runners/README.md \
docs/architecture/enrollment-model.md \
docs/architecture/cache-and-state-roles.md \
docs/guides/github-app-adoption.md \
docs/infrastructure/quick-start.md \
docs/reference/justfile-commands.md \
docs/superpowers/specs/2026-04-23-gloriousflywheel-runner-authority-design.md \
docs/superpowers/specs/2026-04-23-gloriousflywheel-pooled-substrate-dogfood-reset-design.md \
docs/superpowers/plans/2026-04-23-gloriousflywheel-runner-authority.md \
docs/research/gloriousflywheel-massageithaca-dogfood-playbook-2026-04-17.md \
docs/research/gloriousflywheel-massageithaca-branch-authority-decision-2026-04-18.md
just check-links
Expected: all commands exit 0.
- Step 2: Re-run the truthful ARC plan
Run:
cd /private/tmp/gf-pooled-substrate-reset
TOFU_BACKEND_CONFIG_FILE=$PWD/config/backends/arc-runners-dev.hcl \
tofu -chdir=tofu/stacks/arc-runners plan -refresh=false \
-var-file=honey.tfvars \
-var='cluster_context=honey' \
-var='k8s_config_path=/Users/jess/.kube/kubeconfig-honey.yaml'
Expected:
-
no
massageithaca-dind -
no
dell-7810-nix -
if any plan diff remains, it is explicitly documented in the final handoff
-
Step 3: Summarize the reset outcome
The final execution summary should state, plainly:
- which false runner surfaces were removed
- which docs now teach the pooled substrate contract
- whether the repo now still only proves cache-backed local execution or also proves stronger offload behavior
- what the next downstream consumer question is after the reset