Historical - GloriousFlywheel Implementation Gap Matrix 2026-04-15
Snapshot date: 2026-04-15
Status
Historical reset-era evidence note.
This matrix is still useful for understanding the original drift shape, but it is no longer the primary planning or execution surface.
Use these notes first for current execution:
- README.md
- gloriousflywheel-program-surface-2026-04-15.md
- gloriousflywheel-post-209-pr-slice-map-2026-04-16.md
Purpose
Translate the reset into repo-grounded evidence.
This document focuses on the actual GloriousFlywheel implementation surfaces and answers four questions:
- what core platform pieces already exist and should be preserved
- what is still encoded around old
attic-iac, GitLab, Civo, and stale cache assumptions - which operator and consumer flows are truly possible today
- which current GitHub and Linear work items those gaps should feed
Quantitative Drift Snapshot
These counts are grep-derived indicators, not semantic proofs, but they are good enough to prioritize the reset:
45files still carryattic-iacorattic-cacheidentity drift135files still carry GitLab coupling37files still carry cache/runtime contract terms17files still encode GitLab HTTP state backend semantics76refs still point at Civo-era assumptions44app files still carry direct GitLab coupling277runner-dashboard refs across stack/module/app still point at GitLab env vars or concepts0non-research refs mentionFlakeHub,flakehub, or clean derivations51non-research refs mention tailnet, Tailscale, or mTLS across11files
What Is Already Real
This repo is not just stale docs around a non-existent product. Several real primitives are already present:
- The ARC stack is usable now.
tofu/stacks/arc-runners/main.tf:85-207deploys first-classtinyland-nix,tinyland-docker, andtinyland-dindpools and already supportsextra_runner_sets. - The ARC runner module already injects cache env vars in the right place.
tofu/modules/arc-runner/locals.tf:43-60wiresATTIC_SERVER,ATTIC_CACHE,BAZEL_REMOTE_CACHE, andNIX_CONFIGinto runner pods. - The Attic stack already includes a Bazel remote cache deployment.
tofu/stacks/attic/main.tf:1293-1350instantiates thebazel-cachemodule, andtofu/stacks/attic/main.tf:1026-1043exports cache endpoints. - The composite GitHub Actions surface is real.
.github/actions/setup-flywheel/action.yml:21-40and.github/actions/nix-job/action.yml:33-49already give downstream repos a usable cache-aware runner workflow. - The dashboard already has reusable observability primitives.
app/src/routes/api/cache/+server.ts:10-70exposes cache health,app/src/lib/server/k8s/client.ts:14-208supports multi-namespace K8s inspection, andapp/src/hooks.server.ts:28-45already supports passkey-adjacent proxy auth via tailscale or mTLS headers. - Multi-org ARC scoping is already modeled.
tofu/stacks/arc-runners/variables.tf:299-321anddocs/guides/github-app-adoption.md:149-213show a real path for org-scoped and repo-scoped extra scale sets.
Gap Matrix
1. Identity And Product Story
Strongest current asset:
- the repo already has a coherent ARC, cache, and dashboard substrate
Deep mismatch:
- the main public surface still frames the repo as an
attic-iacupstream plus overlay system.README.md:15-16,README.md:20,README.md:82,README.md:99, andREADME.md:121-128are still explicit about that MODULE.bazel:1-12still declares the module name asattic-iacflake.nix:1-2,flake.nix:182-183,flake.nix:215-216, andflake.nix:245-246still carry old descriptions and source labels.github/workflows/build-image.yml:45-51and.github/workflows/build-image.yml:76-82still publish image metadata againstJesssullivan/attic-iacapp/src/lib/config/app-config.json:2-8still points the dashboard source repo at a GitLabattic-cacheproject
Impact:
- the repo reads like an attic-era overlay toolkit even where the code already behaves more like a GitHub ARC and cache platform
Backlog mapping:
#168TIN-124
2. Cache, Publication, And Runtime Truth
Strongest current asset:
- the repo already has ARC-side cache injection and a MinIO-backed Bazel remote cache implementation
Deep mismatch:
.github/actions/setup-flywheel/action.yml:21-37assumes cluster-DNS cache access for self-hosted runners, which is directionally correct- but the broader repo still encodes stale or conflicting cache coordinates:
flake.nix:289,flake.nix:386,docs/runners/cache-integration.md:9-24,docs/runners/cache-integration.md:63-109,docs/runners/github-actions.md:80-93, anddocs/runners/project-onboarding.md:99 docs/architecture/cache-architecture.md:88-93still presents public cache ingress in an older generic form rather than current runtime truth- there are
0non-research references to FlakeHub or clean derivations
Impact:
- downstream consumers have real cache wiring available, but the publication and authority story is still folklore
- the repo cannot yet explain when a build result belongs in Attic, Bazel remote cache, FlakeHub, or a future clean-derivation flow
Backlog mapping:
#167#171TIN-125TIN-127
3. Deployment And State Contract
Strongest current asset:
- every stack is already organized as a real OpenTofu deployment target
Deep mismatch:
- all stack backends still encode GitLab managed HTTP state:
tofu/stacks/arc-runners/backend.tf:1-8,tofu/stacks/gitlab-runners/backend.tf:1-8,tofu/stacks/runner-dashboard/backend.tf:1-8,tofu/stacks/attic/backend.tf:1-42 .github/workflows/deploy-arc-runners.yml:37-76and.github/workflows/deploy-arc-runners.yml:126-177still depend onubuntu-latest, Civo CLI kubeconfig generation, and a GitLab PAT-backed state flowtofu/stacks/attic/main.tf:47-76andtofu/stacks/attic/variables.tf:7-24still frame Kubernetes access around GitLab Agent semanticstofu/stacks/attic/variables.tf:202-234still carries Civo backup assumptionsdocs/infrastructure/proxy-and-access.md:8-42still leads with SOCKS proxy and treats Tailscale as optional instead of primary operator posture
Impact:
- GloriousFlywheel cannot yet honestly claim a local-first deployment contract against Tinyland cluster truth while its own workflows and backend docs remain GitLab-state and Civo-first
Backlog mapping:
#169TIN-128#167TIN-125
4. Runner Topology And Lifecycle
Strongest current asset:
- the GitHub ARC topology is already more advanced than the repo narrative
Deep mismatch:
tofu/stacks/arc-runners/main.tf:82-207andtofu/stacks/arc-runners/variables.tf:299-321already support a clear multi-pool ARC model, including repo- and org-scoped extra scale sets- but
README.md:34-38still presents GitLab runners as a first-class core platform component next to ARC, anddocs/runners/README.md:16-29still centers a six-runner cross-forge matrix docs/runners/self-service-enrollment.md:1-169is still mostly a GitLab HPA enrollment guide.github/workflows/validate.yml:31-45and.github/workflows/validate.yml:63-69still validate the legacy GitLab runner stack as a peer primary surface- the closed PR
#166exposed design pressure because the repo has not yet written down the post-Liqo lifecycle model for ARC growth; that decision now lives in issue#170
Impact:
- the platform has a decent ARC substrate, but not a first-class ARC lifecycle story
- org-level and repo-level GitHub enrollment is technically possible, but it is not yet the dominant documented or operational path
Backlog mapping:
#170#172TIN-126TIN-129
5. Dashboard And Operator Plane
Strongest current asset:
- the dashboard already spans cache, K8s, monitoring, passkeys, and proxy-aware access hooks
Deep mismatch:
- the runner dashboard stack and module are still fundamentally GitLab-backed:
tofu/stacks/runner-dashboard/main.tf:40-125,tofu/stacks/runner-dashboard/variables.tf:38-130,tofu/modules/runner-dashboard/main.tf:125-186,tofu/modules/runner-dashboard/variables.tf:45-136 - the app follows the same pattern:
app/src/routes/api/runners/+server.ts:8-19,app/src/routes/api/runners/[name]/+server.ts:8-27,app/src/routes/api/runners/[name]/pause/+server.ts:7-24, andapp/src/routes/api/runners/[name]/resume/+server.ts:7-24all call GitLab APIs or fall back to mocks - GitOps submission is GitLab MR-based:
app/src/lib/server/gitops/repository.ts:7-82andapp/src/lib/server/gitops/pipeline.ts:62-129 app/src/lib/config/environments.json:2-32still hardcodes Beehive, Rigel, and Tinyland examples from older GitLab-shaped environmentsapp/src/hooks.server.ts:28-45shows tailscale and mTLS only as proxy-header auth helpers, not as the primary operator contractapp/src/hooks.server.ts:87-96still allows outboundconnect-srconly tohttps://gitlab.com
Impact:
- the dashboard is useful as a monitoring shell, but it is not yet a native GitHub ARC and tailnet-first operator plane
- the repo currently has monitoring parity across forges faster than it has control-plane parity across forges
Backlog mapping:
#172#173TIN-128TIN-129TIN-130
6. Builder Contract And FOSS Surface
Strongest current asset:
- the repo already has a real Bazel module, Nix shell, and image build workflow
Deep mismatch:
MODULE.bazel:139-162shows the intended Bazel and Nix split clearly enoughtofu/modules/bazel-cache/main.tf:1-257gives the repo a real remote build cache implementation- but
README.md:15-16,README.md:121-128, and many architecture docs still frame the build story around private overlays, not a first-class FOSS product .github/workflows/build-image.yml:45-46and.github/workflows/build-image.yml:76-77still publish user-scoped images rather than a stable org-facing contract- there are
0non-research refs to FlakeHub or clean derivations, so the repo currently has no first-class story for those capabilities even in docs
Impact:
- the build substrate is real, but the repo still under-describes how external consumers should trust, consume, and extend it
Backlog mapping:
#171#173TIN-127TIN-130
Flow Readout
These are the main user and operator flows that appear from the current code.
Platform Maintainer Deploys Or Updates A Stack
Current reality:
- the stack layout is usable
- the actual execution path is still GitLab HTTP state plus Civo or GitLab Agent-shaped kube access
Implication:
- this flow needs to be rewritten before GloriousFlywheel can present itself as a local-first Tinyland-native deployment system
Org Admin Enrolls A New GitHub Org Or Repo
Current reality:
- technically possible today via
extra_runner_sets, extra secrets, and ARC scale-set registration
Implication:
- this is a strong hidden capability that needs first-class docs, lifecycle ownership, and likely a safer operator experience
Repo Consumer Runs Nix Or Bazel On ARC
Current reality:
- this is the strongest ready-now user flow
- ARC labels, cache injection, and composite actions already exist
Implication:
- this should become the primary proof path for GloriousFlywheel rather than sitting beneath GitLab-era docs
Operator Monitors And Controls The Fleet
Current reality:
- cache health and K8s monitoring are partially forge-agnostic
- runner list, pause, resume, and GitOps change submission are still GitLab-only
Implication:
- the dashboard should be treated as a partial control-plane shell, not a finished operator product
Security-Conscious Operator Accesses The Dashboard
Current reality:
- passkeys, tailscale, and mTLS are present
- GitLab OAuth is still the primary login and policy center
Implication:
- the security model is already drifting toward tailnet-native access, but the repo still documents and configures it as secondary
Immediate Research Implications
- preserve the ARC stack, cache injection, bazel-cache module, and dashboard observability shell
- stop treating the repo as if it needs a total rewrite; the deeper issue is mismatched truth and ownership surfaces
- make the Attic vs Bazel vs FlakeHub vs clean-derivation contract explicit before more downstream guidance is written
- decide the state-backend and deployment authority model before doing broad Tofu cleanup
- separate GitLab legacy-support surfaces from the primary GloriousFlywheel product story
Backlog Use
This document should act as the evidence layer for the current reset backlog:
#168/TIN-124should use the identity and product-story evidence above#167and#171/TIN-125andTIN-127should use the cache and builder evidence, especially the absence of any non-research FlakeHub contract#169/TIN-128should use the deployment and state-contract evidence#170/TIN-126should use the ARC-versus-legacy topology evidence#172/TIN-129should use the operator-plane and multi-org enrollment evidence#173/TIN-130should use the flow readout as the starting storyboard surface