2026 04 23 Gloriousflywheel Pooled Substrate Dogfood Reset

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 main as aec1a10edd55eb1c92f7edc3d37ba67224a0a67a
  • PR #401 merged the current-state/admin parity refresh to main as 2d2a15280a34a392be620f09ca55dec86e4ebf98
  • PR #402 merged the parity-loop close to main as d5bc77780bb2bf9e91802c301a483a5e4104eeee
  • 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 main has passed Validate, Secret Detection, Source Bazel Proof, Platform Proof, Tranche Proof Status, Deploy Docs, Publish to FlakeHub, and Build Container Images
  • the post-PR-401 default-branch proof package passed: Source Bazel Proof 24921220511, Platform Proof 24921220518, Validate 24921220516, Secret Detection 24921220517, Deploy Docs 24921220512, Publish to FlakeHub 24921220522, and Tranche Proof Status 24921220519
  • the post-PR-402 default-branch proof package passed after rerunning the failed tinyland-nix-heavy job in Platform Proof run 24921370509; 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 main as c48869d16eec6cda3f83894c8edad3a03d47554f
  • the post-PR-404 default-branch proof package passed: Platform Proof 24921935297, Source Bazel Proof 24921935299, Validate 24921935307, Secret Detection 24921935309, and Publish to FlakeHub 24921935301
  • the post-PR-404 tinyland-nix-heavy lane passed runner-dashboard on attempt 1, so the new signal-9 retry path did not mask the proof
  • Build Container Images run 24920942761 passed on the shared tinyland-dind lane across dashboard, Caddy Tailscale proxy, Nix runner, and browser runner image jobs
  • the canonical human checkout is /Users/jess/git/GloriousFlywheel; /tmp worktrees are recovery sandboxes only
  • /Users/jess/git/GloriousFlywheel is clean on main and aligned with origin/main before 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
  • main is green at merge commit 7820baa940e4262dabc54d46d770b0cf0c286c2c
  • Source Bazel Proof run 24912686706 passed in 1m26s and used scripts/bazel-cache-backed.sh with BAZEL_REMOTE_CACHE=grpc://bazel-cache.nix-cache.svc.cluster.local:9092
  • Platform Proof run 24912686712 passed in 2m8s
  • Linear TIN-494 is done and no longer blocks TIN-490
  • Linear TIN-490 is done: operator-approved ARC apply run 24913839623 completed with 0 added, 1 changed, 10 destroyed
  • post-apply Source Bazel Proof run 24913926497 passed
  • post-apply Platform Proof run 24913926480 passed across tinyland-docker, tinyland-nix, and tinyland-nix-heavy
  • TIN-495 triaged the separate bumble image-GC/free-disk node-hygiene follow-up: bumble is Ready, 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/GloriousFlywheel is currently a dirty, non-authoritative worktree on codex/sprawl-reconcile
  • github/main is 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_enrollments as 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:

  • jq and tofu fmt -check exit 0

  • 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.md and docs/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.md around 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.md and docs/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 .bazelrc and .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.md only 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

GloriousFlywheel