Roadmap
This roadmap is intentionally short and execution-oriented.
GitHub issues are only reopened when a fresh repo-level slice needs one. The
longer docs/research/ notes are supporting detail, not the roadmap.
Snapshot date: 2026-05-29
Use Cleanup Program when you need the structured workstream and sequencing view behind this short roadmap.
Use the BCR/RBE/RustFS product reality review when you need the current stop/go view across cache-forward execution, BCR/Bzlmod package authority, Bazel remote execution, external input authority, and RustFS backend risk.
Use the May 10 RBE platform sprint plan for the current three-owner execution slice across runner control-plane hygiene, RustFS/backend authority, external input authority, target-scoped RBE, and BCR/Bzlmod package authority.
Use the 2026-05-24 RBE production-gate plan for the current default-RBE promotion route. That plan treats the 34 proved target classes as real evidence, but keeps broad/default RBE blocked on production authority: E2 action-cache trust, E3 external-input durability, E4 tenant enforcement, and E5 operator/developer visibility.
Now
The PoC-to-product framing. gf-reapi-cell is a real, in-house REAPI v2
implementation (all five services, plus instance_name routing, opt-in
OIDC/JWT authz, AC writer attestation + audit, digest verification, and
gf_reapi_* metrics — all landed code). Becoming an adoptable product means
closing four pillars, tracked by the RBE production-readiness gates:
- Durable storage (E1). The provider-neutral
BlobStoreseam landed 2026-05-29 with a dependency-free S3 backend. It does not select MinIO or any replacement provider. The live self-hosted object-store substrate is RustFS for existing cache/state paths; using RustFS for RBE CAS/AC still requires the TIN-1147 repair/proof gate and a dedicated CAS/action-cache namespace./readyzgates on backend reachability, age-based TTL garbage collection (W1.3) is wired for the local backend, and the first W1.4 local CAS size-bound primitive exists behindGF_REAPI_CAS_MAX_BYTES. That primitive is lease-protected, LRU- ordered, quota-reconciled, and observable; sharding/replication remains unbuilt. - Multi-tenancy + identity (E2/E4). Routing/authz/attestation, per-tenant
quotas (W4.4 — Execute concurrency + per-blob size; W4.6 — durable
CAS-byte/AC-entry limits surviving restart via startup scan + post-GC
reconcile), executor-pool admission (W4.3 —
Action.platformpool property checked before AC lookup/execution), an in-process scheduler/placement seam with queue metrics, bounded local worker-pool leases, and static worker inventory/provenance plus an opt-in in-memory worker heartbeat registry exist. A first Bazel credential-helper slice exists for projected-token and explicit-token authz callers. Open: token exchange, full IAM/OIDC tenant mapping, remote worker dispatch, and durable worker-pool placement. - Distributed worker pool. Execution still runs locally on the single-replica cell. Scheduler enqueue/start/completion/inflight/queue-time metrics and local worker-pool slot/inventory metrics exist by tenant and pool. Live heartbeat workers can now drive single-cell lease provenance, but there is no durable worker registry, heartbeat fanout, or remote executor fleet yet.
- Observability + fairness (E5). Counters exist, W5.3 now has a first
Grafana tenant-fairness dashboard contract, and W5.4 has an hourly
tinyland-nixTTFCH probe contract plus a Grafana dashboard JSON. Cache-hit and poison panels, alert routing, live sustained TTFCH evidence, and the runner-dashboard SvelteKit operator surface remain open.
Everything below is the detailed working state behind that framing.
- TIN-1012 must stay open after the strict HA reality check. PR #523 through
PR #526 improved the HA-state contract, scratch/disposable proof harness,
checkpoint verification, and cleanup path. The 2026-05-08 live evidence said
the RustFS state path was healthy for guarded interim use, but 2026-05-19
evidence reversed that assumption:
tofu-stateis again absent from S3list-bucketswhile disk bucket markers remain present, and both local guards plus PR #735Plan ARC Runnersstopped on the state-authority check. This is not strict HA, not a non-restart repair, and not a deploy/state authority completion path. Post-merge canary run26083251931later passed; that is renewed current coherence evidence, not proof that the recurrence class is repaired. - TIN-1043 is Done as the trusted-Attic-write quarantine/default-read-only
safety gate. Two one-path synthetic publication probes have passed, including
repeat run
25816771239on 2026-05-13 with a one-path closure, one-path Attic push delta, and clean pre/postatticplustofu-statebucket-index evidence. Both representative real-output profiles still reproduced RustFS/S3NoSuchBucketand HTTP 500 shaped failures while disk bucket markers existed:medium-checkwith thedeadnixcheck andsmall-checkwith thestatixcheck. Thesmall-checkrun proved the failure is not just large-closure pressure, and current-mainmedium-checkrun25817881900reproduced the same class again on 2026-05-13: one requesteddeadnixcheck output, a 22-path Attic push delta,InternalServerError, and post-failure loss of S3list-bucketsvisibility foratticandtofu-state. A controlled RustFS restart restored the S3 API view, includingatticscratch create/write/list/delete and requiredtofu-stateobject reads. Broadpush-cacheand strictrequire-cache-pushstay quarantined; TIN-1046 owns any future trusted publication ramp, and TIN-1147 is the explicit backend stop/go blocker for that ramp. It must prove a non-restart RustFS repair or reindex path, a RustFS upgrade/topology fix, or a replacement backend before broad trusted writes can be restored. The next source-owned upgrade/topology move isrustfs-upgrade-topology-proof-plan.json: a non-mutating proof plan that narrows the eventual upgrade-topology candidate attempt to therustfs_imagefield, requiresjust tofu-plan-guard attic, rejects Civo, and keeps TIN-1046 blocked until state, bucket-index, NAR integrity, and representative publication evidence clear the known failure classes. The saved plan must also passjust rustfs-upgrade-topology-plan-guard, which allows only the beta.1 -> upgrade-topology candidate RustFS image update on the live Deployment and drained legacy StatefulSet template while rejecting Secret, selector, PVC/storage, service, wrong-image, or delete/create drift. just ha-state-candidate-static-gate --contract <path>is now the static preflight for any future HA state contract. It must pass before a backend is treated as a migration candidate; it rejects the current RustFS singleton, Sting local-path storage, Attic/Bazel cache surfaces, andtofu-stateas a scratch/proof target.docs/contracts/ha-opentofu-state-managed-s3-candidate.jsonis the selected TIN-1016 candidate contract artifact. It chooses a managed/appliance S3-compatible OpenTofu state service as the next proof target and is checked byjust ha-state-selected-candidate-static-gate. The artifact does not prove a live endpoint. TIN-1026 is now the active blocker for the live endpoint package and state-onlyTOFU_HA_STATE_*proof credentials; TIN-1017 owns scratch and disposable OpenTofu proof after those exist. That disposable proof must include--use-lockfile, maintenance/failure-domain verification, and cleanup evidence before any protectedtofu-statemigration.just ha-state-candidate-inventoryis the read-only TIN-1012 candidate inventory surface. It classifies the current RustFS state path, staging S3-compatible test candidates, TCFS/SeaweedFS, Sting local-path classes, and Longhorn before a static contract is written. Use itsNO_LIVE_HA_STATE_CANDIDATEverdict as a hard reality check, not as evidence that RBE/BCR/CAS storage is blocked or proved. The latest 2026-05-28 inventory still reportsNO_LIVE_HA_STATE_CANDIDATE; the replacement path starts with TIN-1026, not another RustFS bucket-ensure or restart-only recovery loop. The Tinyland owner overlay also has no scopedTOFU_HA_STATE_*proof secrets yet, so ARC runner enrollment and package-runner proof remain blocked on the HA endpoint package plus TIN-1017 scratch/disposable OpenTofu proof.- the latest audited default-branch checkpoint is
42b06019609c04ae25a34f48df284aeaec661a0bafter PR #828. Current main has zero configured first-party hosted-runner exceptions; merge-blocking validation, security scanning, Bzlmod/Bazel canaries, RBE proof/status, publication, docs, and release metadata dogfood sharedtinyland-*capability-class lanes. Post-merge main provedValidate(26657097810),Secret Detection(26657097814),Platform Proof(26657097799),Source Bazel Proof(26657097846),Publish to FlakeHub(26657097788),Tranche Proof Status(26657097756),RustFS State Authority Canary(26657097748and later26657934610), andDeploy Docs(26657097770) on those lanes. PR #828 raised the W3.4 vendor-mode scratch preflight to match the observed full-scope proof footprint. This is runner/dogfood and external-input-canary hygiene, not RustFS repair, durable distdir authority, or CAS/action-cache authority promotion. The RBE target eligibility manifest records 34 proved target classes; E6 target breadth is now downstream of the production gates, not the next default-RBE blocker by itself. PR #605 published signed GF REAPI Cell image digestsha256:bb5455a038bdbff2560f22491c131c2163d3089ffafedee08f937d63f35fa848. PR #587 refreshed the BCR/RBE/RustFS truth surface without expanding RBE claims. PR #596 guarded the remote-test roadmap truth; PR #597 through PR #601 added the public pilot guide, exported workflow template, pilot workflow contract, guide/template sync check, and internal workflow-cache publication alignment; PR #602 synchronized cache publication reality docs with the current read-only PR, token-gated trusted publication, and RustFS-quarantined broad proof-workflow split; PR #604 added Stage 1 rust/c++/go cache-backed tests; PR #605 fixed gf-reapi-cell output inlining; PR #607 kept the Go test class pure; PR #608 promoted the pure-Go remote-test class; PR #611 reconciled the May 10 RBE truth; PR #624 promoted the trivial C++ REAPI proof; PR #628 added the browser-capable Playwright smoke target; PR #630 hardened Chromium’s scratch/home handling; PR #668 promoted the public omux standalone Vite build proof; PR #669 promoted the publicjesssullivan.github.ioVitest proof; PR #670 promoted the publicjesssullivan.github.ioPlaywright runtime proof; PR #671 recordedprivate-web-consumer-checkout-authorityafter private proof dispatches failed before checkout; PR #679 added the repo-scoped deploy-key checkout path, after which MassageIthaca run25928429263proved//:booking_operation_unit_testswith3319 remoteprocesses while tinyland.dev run25928429273moved to a privatetinyland-schemasv0.2.4external input blocker. PR #682 then moved that private input path to a verified codeload distdir handoff and forced the explicit proof lane remote-first. Run25933145419reached//packages/tinyland-grafana:test, produced4 remoteprocesses and remotetest-setupworker evidence, then failed on tinyland.dev Grafana test environment semantics rather than checkout or archive reachability. After tinyland.dev PR #401 fixed that test hermeticity issue, main proof25935041748passed the same target with4 remoteprocesses, remotetest-setup.sh packages/tinyland-grafana/test_/test, and verifiedtummycrypt_tinyland_schemas:0.2.4distdir evidence. Run25938855554then proved the next private MassageIthaca target class,//:svelte_check_test, with repo-scoped deploy-key checkout, forced execution, proof nonce20260515T200641Z-25938855554-1,3319 remoteprocesses, remotesveltekit_sync_bin_/sveltekit_sync_bin, remotetest-setup.sh svelte_check_test_/svelte_check_test, and remotegenerate-xml.shevidence. That is one private SvelteKit/svelte-check class, not broad MassageIthaca RBE. Run25948484331then proved//:tsc_noemit_testas a separate private TypeScript no-emit target class with repo-scoped deploy-key checkout, forced execution, proof nonce20260516T005553Z-25948484331-1,3319 remoteprocesses, remotesveltekit_sync_bin_/sveltekit_sync_bin, remotetest-setup.sh tsc_noemit_test_/tsc_noemit_test, remotegenerate-xml.sh, and a24.2spassing action. Run25953478878then proved//:playwright_tmd_smokeas a private Playwright TMD browser-smoke target class with repo-scoped deploy-key checkout, consumer commit08555e16b9ee0504b1b23e6373b5b6bbfb799f5f, forced execution, proof nonce20260516T050753Z-25953478878-1,3318 remoteprocesses, remotesveltekit_sync_bin_/sveltekit_sync_bin, remotevite_build_bin_/vite_build_bin, remotetest-setup.sh playwright_tmd_smoke_/playwright_tmd_smoke, remotegenerate-xml.sh, and a4.5spassing action. That is not broad MassageIthaca RBE. Run25970619559then provedtinyland-inc/tinyland.dev //:app_typecheckfrommainwith GitHub App checkout authority, verifiedtummycrypt_tinyland_schemas:0.2.4distdir staging, forced execution, proof nonce20260516T191944Z-25970619559-1,5578 processes: 1 action cache hit, 2567 remote cache hit, 2955 internal, 56 remote, remote TypeScripttsc, remote Svelte build tool, remote Vite build tool, remoteapp_typecheck_tool, proof verifier success, and Kubernetes restart evidence that stayed at0. That is one private tinyland.dev root app typecheck target class, not all tinyland.dev builds, all tinyland.dev tests, browser E2E, Vite production build RBE, durable private mirror/repository-cache authority, broad/default web RBE, or CAS/action-cache backend suitability. Run25978934708then provedtinyland-inc/tinyland.dev //:app_buildfrommainwith GitHub App checkout authority, verifiedtummycrypt_tinyland_schemas:0.2.4distdir staging, forced execution, proof nonce20260517T021820Z-25978934708-1,6146 processes: 3125 remote cache hit, 2959 internal, 62 remote, remote TypeScript package fanout, remoteJsRunBinary app_build.log, proof verifier success, and Kubernetes restart evidence that stayed at0. That is one private tinyland.dev root Vite/SvelteKit production-build target class, not all tinyland.dev builds/tests, browser E2E, deployed app behavior, durable private mirror/repository-cache authority, broad/default web RBE, or CAS/action-cache backend suitability. Run25981546207then provedtinyland-inc/tinyland.dev //packages/tinyland-activitypub:testfrommainwith GitHub App checkout authority,workspace_path=consumer-workspace, verifiedtummycrypt_tinyland_schemas:0.2.4distdir staging, forced execution, proof nonce20260517T044208Z-25981546207-1,728 processes: 1 action cache hit, 299 remote cache hit, 415 internal, 14 remote, remoteesbuildlifecycle-hook execution, remote TypeScripttscforpackages/tinyland-content-types, remotetest-setup.sh packages/tinyland-activitypub/test_/test, remotegenerate-xml.sh, proof verifier success, and Kubernetes restart evidence that stayed at0. That is one private tinyland.dev ActivityPub package Vitest target class, not all tinyland.dev package tests, browser E2E, deployed app behavior, durable private mirror/repository-cache authority, broad/default web RBE, or CAS/action-cache backend suitability. Run25984827370then provedtinyland-inc/tinyland.dev //packages/tinyland-a11y-engine:typecheckfrommainwith GitHub App checkout authority,workspace_path=consumer-workspace, consumer checkout commit3730c6966d5e069cff92abc7c606fca9db5b54af, verifiedtummycrypt_tinyland_schemas:0.2.4distdir staging, forced execution, proof nonce20260517T073751Z-25984827370-1,553 processes: 223 remote cache hit, 328 internal, 2 remote, remoteesbuildlifecycle-hook execution, remote TypeScripttscforpackages/tinyland-color-utils, proof verifier success, and Kubernetes restart evidence that stayed at0. That is one private tinyland.dev package TypeScript typecheck target class, not all package typechecks, all TypeScript, Vite/SvelteKit builds, durable private mirror/repository-cache authority, broad/default web RBE, or CAS/action-cache backend suitability. Run26001030662then provedtinyland-inc/tinyland.dev //:web_package_typecheck_fanoutfrommainafter tinyland.dev PR #445 added the finite target over//packages/tinyland-a11y-engine:typecheck,//packages/tinyland-color-utils:typecheck, and//packages/tinyland-security:typecheck. The proof used GitHub App checkout authority,workspace_path=consumer-workspace, consumer main commitdcc20d11b8919ae259ce8b3e9b982a37e2d6b56b, verifiedtummycrypt_tinyland_schemas:0.2.4distdir staging, forced execution, proof nonce20260517T195322Z-26001030662-1,789 processes: 321 remote cache hit, 465 internal, 3 remote, remoteesbuildlifecycle-hook execution, remote TypeScripttscforpackages/tinyland-color-utilsandpackages/tinyland-auth, proof verifier success, and Kubernetes restart evidence that stayed at0. That is one bounded private tinyland.dev package typecheck fanout class, not all package typechecks, all TypeScript, Vite/SvelteKit builds, Vitest, Playwright/Puppeteer, durable private mirror/repository-cache authority, broad/default web RBE, or CAS/action-cache backend suitability. Run26002645581then provedtinyland-inc/tinyland.dev //:web_package_vitest_fanoutfrom currentmainafter tinyland.dev PR #447 added the finite target and PR #449 removed thetest_suitetag filter that expanded the first proof attempt to zero tests. The proof used GitHub App checkout authority,workspace_path=consumer-workspace, consumer main commit8ee22a2a0130f7241a42c2e3666e310c89a5cfdf, verifiedtummycrypt_tinyland_schemas:0.2.4distdir staging, forced execution, proof nonce20260517T210344Z-26002645581-1,1102 processes: 1 action cache hit, 438 remote cache hit, 642 internal, 22 remote, remotetest-setup.shactions for the color-utils, forms, and security package Vitest targets, proof verifier success, and Kubernetes restart evidence that stayed at0. That is one bounded private tinyland.dev package Vitest fanout class, not all package tests, all Vitest, root app tests, Vite/SvelteKit builds, Playwright/Puppeteer, durable private mirror/repository-cache authority, broad/default web RBE, or CAS/action-cache backend suitability. Run25989829826then provedtinyland-inc/tinyland.dev //:playwright_local_route_smokefrommainwith GitHub App checkout authority,workspace_path=consumer-workspace, verifiedtummycrypt_tinyland_schemas:0.2.4distdir staging, forced execution, proof nonce20260517T114200Z-25989829826-1,6155 processes: 3139 remote cache hit, 2963 internal, 53 remote, remote TypeScripttsc, remote Vite build-tool execution, remotetest-setup.sh playwright_local_route_smoke_/playwright_local_route_smoke, remotegenerate-xml.sh, proof verifier success, and Kubernetes restart evidence that stayed at0. That is one private tinyland.dev local-server Playwright route-smoke target class, not all Playwright, all tinyland.dev routes, deployed E2E, full app behavior, durable private mirror/repository-cache authority, broad/default web RBE, or CAS/action-cache backend suitability. Run26051698671then provedtinyland-inc/tinyland.dev //:puppeteer_local_route_smokefrommainwith GitHub App checkout authority,workspace_path=consumer-workspace, verifiedtummycrypt_tinyland_schemas:0.2.4distdir staging, forced execution, proof nonce20260518T181314Z-26051698671-1,6319 processes: 1 action cache hit, 3135 remote cache hit, 3052 internal, 132 remote, remote npm lifecycle-hook execution for@tailwindcss/oxide,sharp, andesbuild, remote TypeScripttsc, remote Svelte and Vite build-tool execution, remotetest-setup.sh puppeteer_local_route_smoke_/puppeteer_local_route_smoke, remotegenerate-xml.sh, proof verifier success, and Kubernetes restart evidence that stayed at0. That is one private tinyland.dev local-server Puppeteer route-smoke target class, not all Puppeteer, all tinyland.dev routes, deployed E2E, full app behavior, durable private mirror/repository-cache authority, broad/default web RBE, or CAS/action-cache backend suitability. Run25983800544then provedJesssullivan/MassageIthaca //:sveltekit_node_buildfrommainwith repo-scoped deploy-key checkout authority, consumer commite06a70d12417f04568092a62e225b6c6595c3b39, forced execution, proof nonce20260517T064447Z-25983800544-1,7379 processes: 2 action cache hit, 4186 internal, 3193 remote, remote lifecycle-hook execution foresbuild,msw, andsharp, remotesveltekit_sync_bin_/sveltekit_sync_bin, remotevite_build_bin_/vite_build_bin, proof verifier success, and Kubernetes restart evidence that stayed at0. That is one private MassageIthaca SvelteKit/Vite production-build target class, not all MassageIthaca builds/tests, deployed booking E2E, image publication, durable private mirror/repository-cache authority, broad/default web RBE, or CAS/action-cache backend suitability. PR #690 then resolved the capacity regression exposed by the larger TypeScript fanout proof by making the enlargedgf-reapi-cellscale to zero between proof runs; PR #695 added the follow-on scarce-lane queue-pressure diagnostic after the PR #694tinyland-nix-heavycontention window. Both are runner capacity hygiene, not new RBE target-class claims. PR #574 added the checked RBE target eligibility manifest; PR #575 added optional backend-neutral ARC executor endpoint wiring without making executor-backed mode the default. The forced explicit GF REAPI proof run25581256308built//app:buildwithGF_RBE_PROOF_FORCE_EXECUTION=true,--remote_accept_cached=false,remote_executor=grpc://gf-reapi-cell.gf-rbe.svc.cluster.local:8980, worker imagesha256:be2832171ac69cc9a2d012b3c789e8b765afb7cae0df8f7e9677dd6d8542dbc0, and2308 processes: 1439 internal, 869 remote. PR #582 then made build/test proof mode explicit and default-branch run25601913985tested//app:unit_testswithbazel_command=test, forced execution, 20 Vitest files, 168 passing tests, and1249 processes: 722 internal, 527 remote. Main run25602726443then built//:deployment_bundlewithbazel_command=build, forced execution,7 processes: 6 internal, 1 remote, and worker evidence for therules_pkgbuild_taraction. PR #585 repaired the docs-site Bazel source shape, and main run25608601158built//docs-site:buildwithbazel_command=build, forced execution,2529 processes: 1483 internal, 1046 remote, and remoteJsRunBinaryevidence fordocs-site/.svelte-kitanddocs-site/build. Main run25634296833then proved pure-Go//examples/hello-go:hello_testwithbazel_command=test, forced execution,20 processes: 9 internal, 11 remote, remoteGoStdlib/ compile / link /test-setupevidence, and a passing Go test. The prior run25632300253remains cgo-backed Go worker/toolchain blocker evidence:runtime/cgofailed withcc: no such file or directory. After the worker image carried the C/C++ wrapper closure, run25649628233proved the separate cgo-backed//examples/hello-go-cgo:cgo_testtarget withbazel_command=test, forced execution,18 processes: 7 internal, 11 remote, remoteruntime/cgo,GoCompilePkg,GoLink,test-setupevidence, and one passing cgo-backed Go test. Broader cgo-backed Go remains unproved. Run25638930305is the next negative target-class proof: it forced the//examples/hello-cc:hello_testtest proof, reached the remote C++ compile action, then failed because the worker lacked/nix/store/zx71vq7s1v840wqsrw2m2ckmxn413a2b-gcc-wrapper-13.3.0/bin/gcc. Bazel reported6 processes: 6 internal. After the worker image carried the C/C++ wrapper closure, run25648975728proved the trivial C++ unit-test class withbazel_command=test, forced execution,8 processes: 4 internal, 4 remote, remote gcc compile/link andtest-setupevidence, and one passing C++ test. Run25712694947proved the first browser/web target class,//docs-site:playwright_chromium_smoke, withbazel_command=test, forced execution,2549 processes: 1489 internal, 1060 remote, remotesveltekit_sync, remotevite_build, remotetest-setup, and a passingplaywright-coresmoke with/bin/chromium. This is one Chromium static-site Vite/SvelteKit smoke class, not broad Playwright, Puppeteer, or deployed-environment E2E RBE. Run25826953857proved the first public consumer Puppeteer browser/web target class,tinyland-inc/omux.xoxd.ai //:puppeteer_chromium_smoke, withbazel_command=test, forced execution,137 remoteprocesses, remotesveltekit_sync, remotevite_build, remotetest-setup, and a passingpuppeteer-coresmoke with/bin/chromium. This is one Chromium static-output Vite/SvelteKit consumer smoke class, not broad Puppeteer or deployed-environment E2E RBE. Run25742782051proved the public omux Vitest target class,tinyland-inc/omux.xoxd.ai //:unit_tests, withbazel_command=test, forced execution,4 remoteprocesses, remotetest-setup.sh unit_tests_/unit_tests ... ./vitest.config.ts, and the same browser-capable worker image. This is one public Vite/SvelteKit Vitest unit-test class, not all omux tests or privatetinyland.devpackage RBE. Run25891956165then proved the public omux standalone build target class,tinyland-inc/omux.xoxd.ai //:build, withbazel_command=build, forced execution, non-secretGF_RBE_PROOF_NONCEaction-key perturbation,4 remoteprocesses, remote@tailwindcss/oxideandesbuildlifecycle-hook actions, remotesveltekit_sync, and remotevite_build. This is one public SvelteKit/Vite build class, not broad web build RBE or private package builds. Run25897326537proved the public omux Playwright static-output smoke class,tinyland-inc/omux.xoxd.ai //:playwright_chromium_smoke, withbazel_command=test, forced execution, proof nonce20260515T024138Z-25897326537-1,6 remoteprocesses, public main commitd3608a5a6325adee0a5e625cf7ad76b470e7b83f, remote@tailwindcss/oxideandesbuildlifecycle-hook actions, remotesveltekit_sync, remotevite_build, remotetest-setup.sh playwright_chromium_smoke_/playwright_chromium_smoke, remotegenerate-xml.sh, and a passing Playwright Chromium smoke with/bin/chromium. This is one public omux Playwright target class, not broad Playwright, Vitest browser mode, private package builds, or hosted E2E. Run26005817853then proved the public omux local-server Playwright route-smoke class,tinyland-inc/omux.xoxd.ai //:playwright_local_route_smoke, withbazel_command=test, forced execution, proof nonce20260517T232840Z-26005817853-1,13 remoteprocesses, public main commitcd730bdc432b6eb2af4cac7032c040e4ab734da7, GitHub App checkout authority, remote@tailwindcss/oxideandesbuildlifecycle-hook actions, remotesveltekit_sync, remotevite_build, remotetest-setup.sh playwright_local_route_smoke_/playwright_local_route_smoke, remotegenerate-xml.sh, and a passing/agent-snippetroute smoke using/bin/chromium. This is one public omux local-route target class, not all omux routes, hosted E2E, or broad Playwright. Run26037732121then proved the public omux local-server Puppeteer route-smoke class,tinyland-inc/omux.xoxd.ai //:puppeteer_local_route_smoke, withbazel_command=test, forced execution, proof nonce20260518T135044Z-26037732121-1,10 remoteprocesses, public main commit50e0b796cbc44bc82de67891b1999e7e48cff473, GitHub App checkout authority, remote@tailwindcss/oxideandesbuildlifecycle-hook actions, remotesveltekit_sync, remotevite_build, remotetest-setup.sh puppeteer_local_route_smoke_/puppeteer_local_route_smoke, remotegenerate-xml.sh, and a passing/agent-snippetroute smoke using/bin/chromium. This is one public omux local-route Puppeteer target class, not all omux routes, hosted E2E, broad Puppeteer, or Playwright. Run26051698671then proved the private tinyland.dev local-server Puppeteer route-smoke class,tinyland-inc/tinyland.dev //:puppeteer_local_route_smoke, withbazel_command=test, forced execution, proof nonce20260518T181314Z-26051698671-1,132 remoteprocesses, private main commitdcb859f658092dc2a6c0f33223cb9ec9a4055c18, GitHub App checkout authority, verifiedtummycrypt_tinyland_schemas:0.2.4distdir staging, remote@tailwindcss/oxide,sharp, andesbuildlifecycle-hook actions, remote TypeScripttsc, remote Svelte and Vite build-tool execution, remotetest-setup.sh puppeteer_local_route_smoke_/puppeteer_local_route_smoke, remotegenerate-xml.sh, and a passing/legal/privacyroute smoke using/bin/chromium. This is one private tinyland.dev local-route Puppeteer target class, not all tinyland.dev routes, hosted E2E, broad Puppeteer, or Playwright. Runs25777472760,25894297074, and25779597385then proved the publicJesssullivan/jesssullivan.github.io//:puppeteer_chromium_smoke,//:playwright_chromium_smoke, and//:sveltekit_vite_build_smokeclasses withbazel_command=test, forced execution,855 remoteprocesses each, remotetest-setup, and the same browser-capable worker image. The Playwright proof recorded proof nonce20260515T005745Z-25894297074-1and remotetest-setup.sh playwright_chromium_smoke_/playwright_chromium_smokewithexit_code=0. Those are public consumer target-class proofs, not repo-wide web RBE, publication, or hosted E2E. Run25938855554proves one privateJesssullivan/MassageIthaca //:svelte_check_testSvelteKit/svelte-check target class with forced execution, proof nonce20260515T200641Z-25938855554-1,3319 remoteprocesses, remotesveltekit_sync_bin_/sveltekit_sync_bin, remotetest-setup.sh svelte_check_test_/svelte_check_test, and remotegenerate-xml.sh; it does not prove all MassageIthaca tests, browser tests, or deployed flows. Run25948484331proves one privateJesssullivan/MassageIthaca //:tsc_noemit_testTypeScript no-emit target class with proof nonce20260516T005553Z-25948484331-1,3319 remoteprocesses, remotesveltekit_sync_bin_/sveltekit_sync_bin, remotetest-setup.sh tsc_noemit_test_/tsc_noemit_test, remotegenerate-xml.sh, and a24.2spassing action; it does not prove all MassageIthaca tests, browser tests, or deployed flows. Run25953478878proves one privateJesssullivan/MassageIthaca //:playwright_tmd_smokePlaywright TMD browser-smoke target class with proof nonce20260516T050753Z-25953478878-1,3318 remoteprocesses, remotesveltekit_sync_bin_/sveltekit_sync_bin, remotevite_build_bin_/vite_build_bin, remotetest-setup.sh playwright_tmd_smoke_/playwright_tmd_smoke, remotegenerate-xml.sh, and a4.5spassing action; it does not prove all MassageIthaca tests, all Playwright, hosted E2E, or deployed flows. Run25970619559proves one privatetinyland-inc/tinyland.dev //:app_typecheckroot typecheck target class with GitHub App checkout authority, verifiedtummycrypt_tinyland_schemas:0.2.4distdir staging, forced execution, proof nonce20260516T191944Z-25970619559-1,56 remoteprocesses, remote TypeScripttsc, remote Svelte build tool, remote Vite build tool, remoteapp_typecheck_tool, and Kubernetes restart evidence that stayed at0; it does not prove all tinyland.dev builds/tests, browser E2E, Vite production build RBE, durable private mirror/repository-cache authority, or broad/default web RBE. Run25978934708proves one privatetinyland-inc/tinyland.dev //:app_buildroot Vite/SvelteKit production-build target class with proof nonce20260517T021820Z-25978934708-1,62 remoteprocesses, remote TypeScript package fanout, remoteJsRunBinary app_build.log, and Kubernetes restart evidence that stayed at0; it does not prove all tinyland.dev builds/tests, browser E2E, deployed app behavior, durable private mirror/repository-cache authority, or broad/default web RBE. Run25981546207proves one privatetinyland-inc/tinyland.dev //packages/tinyland-activitypub:testpackage Vitest target class with proof nonce20260517T044208Z-25981546207-1,14 remoteprocesses, remoteesbuildlifecycle-hook execution, remote TypeScripttsc, remotetest-setup.sh packages/tinyland-activitypub/test_/test, remotegenerate-xml.sh, proof verifier success, and Kubernetes restart evidence that stayed at0; it does not prove all tinyland.dev package tests, browser E2E, deployed app behavior, durable private mirror/repository-cache authority, or broad/default web RBE. Run25984827370proves one privatetinyland-inc/tinyland.dev //packages/tinyland-a11y-engine:typecheckpackage TypeScript typecheck target class with proof nonce20260517T073751Z-25984827370-1,2 remoteprocesses, remoteesbuildlifecycle-hook execution, remote TypeScripttscforpackages/tinyland-color-utils, proof verifier success, and Kubernetes restart evidence that stayed at0; it does not prove all tinyland.dev package typechecks, all TypeScript, durable private mirror/repository-cache authority, or broad/default web RBE. Run26001030662proves one privatetinyland-inc/tinyland.dev //:web_package_typecheck_fanoutbounded package typecheck fanout target class with proof nonce20260517T195322Z-26001030662-1,3 remoteprocesses, remoteesbuildlifecycle-hook execution, remote TypeScripttscforpackages/tinyland-color-utilsandpackages/tinyland-auth, proof verifier success, and Kubernetes restart evidence that stayed at0; it does not prove all tinyland.dev package typechecks, all TypeScript, Vite/SvelteKit builds, durable private mirror/repository-cache authority, or broad/default web RBE. Run26002645581proves one privatetinyland-inc/tinyland.dev //:web_package_vitest_fanoutbounded package Vitest fanout target class with proof nonce20260517T210344Z-26002645581-1,22 remoteprocesses, remotetest-setup.shactions for the color-utils, forms, and security package Vitest targets, proof verifier success, and Kubernetes restart evidence that stayed at0; it does not prove all tinyland.dev package tests, all Vitest, root app tests, Vite/SvelteKit builds, durable private mirror/repository-cache authority, or broad/default web RBE. Run25989829826proves one privatetinyland-inc/tinyland.dev //:playwright_local_route_smokelocal-server Playwright route-smoke target class with proof nonce20260517T114200Z-25989829826-1,53 remoteprocesses, remote TypeScripttsc, remote Vite build-tool execution, remotetest-setup.sh playwright_local_route_smoke_/playwright_local_route_smoke, remotegenerate-xml.sh, proof verifier success, and Kubernetes restart evidence that stayed at0; it does not prove all Playwright, all tinyland.dev routes, deployed E2E, durable private mirror/repository-cache authority, or broad/default web RBE. Run26005817853proves one publictinyland-inc/omux.xoxd.ai //:playwright_local_route_smokelocal-server Playwright route-smoke target class with proof nonce20260517T232840Z-26005817853-1,13 remoteprocesses, remote@tailwindcss/oxideandesbuildlifecycle hooks, remotesveltekit_sync, remotevite_build, remotetest-setup.sh playwright_local_route_smoke_/playwright_local_route_smoke, remotegenerate-xml.sh, artifact id7047042599, artifact sha2569b4509a1095f707678d2e13a4f78861db74d55cb5af2538e8c277ec3bae1e4c4, and Kubernetes restart evidence that stayed at0; it does not prove all omux routes, deployed E2E, or broad/default web RBE. Run26037732121proves one publictinyland-inc/omux.xoxd.ai //:puppeteer_local_route_smokelocal-server Puppeteer route-smoke target class with proof nonce20260518T135044Z-26037732121-1,10 remoteprocesses, remote@tailwindcss/oxideandesbuildlifecycle hooks, remotesveltekit_sync, remotevite_build, remotetest-setup.sh puppeteer_local_route_smoke_/puppeteer_local_route_smoke, remotegenerate-xml.sh, artifact id7059740497, artifact sha256cf768f62b03f84e3246a2adc012fa14b6c7026ede1bcb2e0d8352f8221b1dd4c, and Kubernetes restart evidence that stayed at0; it does not prove all omux routes, deployed E2E, broad Puppeteer, or broad/default web RBE. Run26051698671proves one privatetinyland-inc/tinyland.dev //:puppeteer_local_route_smokelocal-server Puppeteer route-smoke target class with proof nonce20260518T181314Z-26051698671-1,132 remoteprocesses, remote@tailwindcss/oxide,sharp, andesbuildlifecycle hooks, remote TypeScripttsc, remote Svelte and Vite build-tool execution, remotetest-setup.sh puppeteer_local_route_smoke_/puppeteer_local_route_smoke, remotegenerate-xml.sh, artifact id7065881708, artifact sha256270bcb553348afb4ae8a77f2954bb4f9fa75c2570b6d2d26a6eef9dbc612ea99, and Kubernetes restart evidence that stayed at0; it does not prove all tinyland.dev routes, deployed E2E, broad Puppeteer, or broad/default web RBE. Run25983800544proves one privateJesssullivan/MassageIthaca //:sveltekit_node_buildSvelteKit/Vite production-build target class with proof nonce20260517T064447Z-25983800544-1,3193 remoteprocesses, remote lifecycle-hook execution foresbuild,msw, andsharp, remotesveltekit_sync_bin_/sveltekit_sync_bin, remotevite_build_bin_/vite_build_bin, proof verifier success, and Kubernetes restart evidence that stayed at0; it does not prove all MassageIthaca builds/tests, deployed booking E2E, image publication, durable private mirror/repository-cache authority, or broad/default web RBE. Run25892939448refreshed and promoted the publicJesssullivan/jesssullivan.github.io //:types_unit_testsVitest class withbazel_command=test, forced execution, proof nonce20260515T001050Z-25892939448-1,855 remoteprocesses, remote lifecycle-hook evidence foresbuild,sharp, andpuppeteer, and remotetest-setup.sh types_unit_tests_/types_unit_testswithexit_code=0. This is one public SvelteKit/Vite/Vitest unit-test class, not broad/default web RBE or private consumer package RBE. The earlier PR #491 checkpoint atc4544a65e536bac0576820ed04523e4a82d3701band PR #489 checkpoint at568fad179217251e8c9b4c3c7d80e49965f5fddcalso provedDeploy ARC RunnersandBuild Container Images; the earlier PR #477 checkpoint at734e27902e28f095160a67483de5c6eca1c57477remains a known-good cache proof package - PR #445 aligned the hygiene contract:
just checkis now the bounded local gate, heavyweight Nix/OpenTofu validation is explicit throughjust check-full/just nix-check, and the repo-ownedscripts/tofuwrapper keeps OpenTofu resolution on the flake-managed path - PR #444 records the current Docker placement boundary: stateless
tinyland-dockerwork can usestingas compute-expansion relief, but kube-API mutation workflows such as ARC plan/apply stay on a honey-bound capability lane untilstingcontrol-plane reachability is separately proved - The shared
tinyland-dindcapability now has a boundedtinyland-dind-compute-expansionoverflow lane onsting; the current shared envelope is 20 honey DinD slots plus 16 sting fast-local overflow slots. The overflow lane useslocal-path-sting-fast-ephemeralgeneric ephemeral PVCs for runner workspace (48Gi) and Docker graph (96Gi) scratch so container-build bursts consume sting fast-local SSD/NVMe storage instead of kubelet root ephemeral storage or bumble OpenEBS. Keep follow-on runner throughput work in the ARC capacity policy lane: source-owned additive overflow first, read-only storage/admission audits before mutation, and no active baseline scale-set cap widening under load as the default response. - May 13 adds the operator guardrail that was missing during the queue-pressure
loop:
just arc-burst-capacity-auditmust be the first read for shared-label bursts. It reports Honey pod-slot headroom, per-label owner/scale-set fanout, active runner job attribution, included runner placement reasons, runner namespace quota, kubelet root/imagefs summary data, and active Sting fast-local DinD PVC evidence in one place. This is AX/DX product work, not a new capacity bump. When a fanout strands pods onUnschedulable/Too many pods, the audit should show that as a placement-policy problem before anyone treats the cluster as raw CPU or memory exhausted. - May 15 adds the ARC managed-apply productionization gate: the deploy workflow
must run outside the labels it quiesces, max-freeze shared consumer scale sets
during apply, snapshot caps for restore on failure, give active shared jobs a
bounded 20-minute drain window, generate and guard a fresh post-quiesce apply
plan so successful applies reconcile manual cap freezes, restore caps from
source tfvars targets on success before listener proof, keep the snapshot only
as the failure rollback, keep best-effort failure restore in the workflow trap,
and prove listener caps afterward.
tinyland-nix-operatoris the dedicated control-plane lane; the existingtinyland-nix-heavypath is only a bootstrap fallback until that lane is live and selected throughARC_DEPLOY_RUNNER_LABEL. - the public-alpha export seed has landed: PR #419 merged at
cacc9497617f8c2f096afb5152d16e8774dd8d14, TIN-551 is Done, and the default-branch proof package is green - the implementation-overlay boundary repair has landed: PR #420 merged at
b120c99eddf0dbabfce8d07116ac8dfa7c1a7590, PR #422 merged the workstream tracking surface, and the follow-on work is now overlay authority, placement, capacity, and cache-key drift rather than core-boundary invention - the repo is public, but the executable consumer-facing alpha route is still
the scrubbed fresh-history export produced by
just public-alpha-exportuntil full-tree public API posture is separately accepted - repo-level GitHub work is intentionally narrow: #421 / TIN-568 is closed after the Honey overlay authority and Jess six-release state rehome; #433 and #426 are closed after the April 26 Attic authority and tubebrain placement cleanup; #438 / TIN-681 is closed after the Docker-capable MassageIthaca shared-runner proof; #417 is closed after the downstream lab package-canary cache proof; #487 and #493 are closed after the KVM pickup/signal-9 closeout. Open issues #413, #412, and #407 carry shared-lane reachability and compatibility-retirement follow-up
- keep the default-branch proof package green after the PR #404 / TIN-545 heavy-lane hardening
- treat
Platform ProofandSource Bazel Proofas required operating truth - keep the fixed Source Bazel Proof honest: the proof must pass the real
BAZEL_REMOTE_CACHEvalue to Bazel, not only assert that the environment variable exists - keep Source Bazel Proof cache-substrate failures visible: representative
Attic NAR read stalls should fail at the bounded canary before
nix develop, not masquerade as slow or flaky Bazel package failures. Rotate the canary only with live body-read evidence; a stale narinfo that redirects to a missing RustFS chunk is repair debt, not a green canary candidate. - retire repo-shaped runner taxonomy from config, docs, and planning surfaces
- retire local-heavy Bazel teaching from canonical product surfaces
- restate and prove the pooled GloriousFlywheel dev-plus-CI substrate contract
- make source-repo dogfooding the first proof point again
- keep Chapel, Nix, and Bazel-heavy workloads in the core product lane; they are not special exceptions
- treat native
aarch64,riscv, and Dawn dispatch as future lane research, not current platform contract surfaces - treat localized warm-cache guarantees for heavy Hackage, Chapel, GPU backends, and similar toolchain surfaces as future architecture work, not a present runner-level promise
- keep docs/admin surfaces explicit that repo-managed proof still depends on self-hosted cache injection, cluster-local reachability, and bounded runner capacity
- keep blocked downstream repos framed as shared-lane reachability debt rather than as justification for repo-shaped lanes
- keep the Tinyland and Jess implementation-overlay authority repos green, keep their least-privilege core-read/deploy-key paths working, refresh pins when the reusable stack contract changes, and keep owner-specific GitHub App installs, tfvars, and private anchors there
- keep the completed Jess state rehome honest: the six compatibility releases are now Jess-overlay-owned quarantine, not core residue and not retired
- keep the completed TIN-490 ARC lane retirement honest: the live stack removed repo-derived scale sets and the post-apply source/platform proofs passed
- keep current-state, roadmap, and Linear/admin surfaces synchronized after each default-branch proof package changes
- keep auth authority explicit without implying that tailnet access or GitLab compatibility mutation is already a forge-neutral control plane
- keep
just dogfood-contract-auditgreen so first-party hosted-runner usage, stale endpoint references, and raw-Bazel teaching cannot drift silently - keep overlay/capacity issues clear that owner-distinct ARC scale-set names are registration/auth identities, not repo-specific workflow labels or a global concurrency policy
- keep the worktree cleanup conservative: stale recovery/checkpoint worktrees should be pruned only after their unmerged commits or uncommitted diffs are classified as merged, superseded, or intentionally preserved elsewhere
Next
- close the public-alpha reopen decision around the scrubbed fresh-history
export/mirror route: secret scanning, public-docs scrub, README brevity,
dogfood contract audit, export, and post-merge
mainproof are green, while direct full-repo visibility stays blocked - do not directly flip the private repository public while
just public-alpha-visibility-reportstill reports history/current-tree blockers. The 2026-05-02 closeout decision is to use the scrubbed public mirror/export for alpha, not to rewrite history or accept internal history exposure as part of the alpha gate. - keep
just public-alpha-export-checkgreen and usejust public-alpha-exportas the short-term fresh-history mirror route - strengthen source-repo live substrate proof before expanding downstream consumer claims
- promote the next productionization slice through a fresh issue or project surface instead of continuing feature work inside the completed stability / substrate / cache / auth execution board
- tighten auth and enrollment reporting so blocked repos stay visible as control-plane debt instead of taxonomy drift
- keep
bumblerootfs/imagefs headroom visible as node hygiene after the 2026-04-25 ARC eviction follow-up; the node is storage-biased and currentlyDiskPressure=False, but raw ZFS capacity is not a substitute for kubelet root/image filesystem headroom. The April 29 read-only audit reported only 16.3% available rootfs/imagefs/containerfs headroom onbumble, so the node hygiene remains real even without active DiskPressure. The May 1 offline fixture guard now covers healthy, warning, and critical rootfs/imagefs/containerfs thresholds in CI, but does not replace live node remediation. The May 2 decision is to keep default ARC/GitLab runner placement offbumbleand guard that injust runner-scale-contract-check; TIN-613 is closed on that scheduling-avoidance and guard basis. Host-level RKE2/containerd or/nixreshaping remains a separate maintenance decision beforebumblecan become runner burst capacity again. - define the next proof so it exercises local-dev substrate attachment and CI cache reuse without teaching raw local Bazel or repo-shaped runner lanes
- keep the new runner IaC contract guards green:
just runner-cache-contract-check,just attic-public-key-contract-check,just runner-scale-contract-check,just runner-capacity-model-check,just tofu-tfvars-check,just tofu-image-pin-check,just tofu-provider-lock-check, andjust tofu-plan-guard-check - keep the first owner implementation overlays green after moving from
enrollment proof to live-state disposition; the current authorities are
tinyland-inc/tinyland-infraandJesssullivan/jesssullivan-infra - resolve the active operational follow-ons without taxonomy drift: the still-open GitHub issue mirrors #413, #412, and #407 carry shared-lane reachability and compatibility-lane retirement; #417, #487, #493, TIN-568, TIN-613, TIN-620, TIN-627, TIN-643, TIN-681, TIN-758, #421, and #438 are now closed and should remain historical proof, not active repo-shaped-lane prompts
- use
just arc-listener-queue-drift --repo tinyland-inc/GloriousFlywheel --run-id <run-id> --fail-on-driftwhen GitHub shows a queued ARC job but Kubernetes appears idle. The--repovalue is part of the diagnostic because owner-overlay scale sets may share workflow-facing labels; the check should prefer the matchinggithubConfigUrlbefore classifying listener/session drift. A scale set withmaxRunners > 0, a Running listener, and zero current/pending/running ARC runner activity is not a scale-set cap problem; it is a listener/session/broker symptom. Usejust arc-network-continuity-auditto classify API/CNI, eviction, and node-pressure evidence before blaming cache/auth/overlay code. For the May 10 sprint kickoff, usejust arc-runtime-audit --fail-on-listener-cap-drift --fail-on-runner-count-drift --fail-on-runner-session-driftas the live control-plane hygiene gate; the 2026-05-09 read-only run foundtinyland-nixinPendingwith no listener-config secret, two active stale runner pods, runner-count drift, and broker/socket retry logs. Deleting the staleEphemeralRunnerSet/tinyland-nix-xc9zxrestored thetinyland-nixlistener/config path and a strict post-remediation audit passed, so future recurrence should be handled with the same evidence flow rather than inferred from main being green or red. Usejust arc-runtime-audit --fail-on-stale-idle-listener-blockerwhen a post-apply dogfood lane hasmaxRunners > 0, no listener-config, and no-jobEphemeralRunnerobjects that appear to be blocking listener recreation; it requires GitHub runnerbusy=falseevidence before printing cleanup guidance. Usejust arc-diagnostic-self-teststo keep network-continuity classification, runtime audit session/cap/count drift, queue-drift, shared-label capacity, and burst-capacity fixtures covered offline while future ARC incidents stay classifiable and the TIN-627 capacity boundary stays guarded. Usejust kubelet-imagefs-capacity-audit-self-testto keep the TIN-613 kubelet root/image filesystem warning and critical boundaries repeatable. - keep TIN-650 and TIN-758 closed as proof/policy-complete:
just cache-contract-strictfails beforeBAZEL_REMOTE_CACHEis set, andjust developer-cache-attachment-proof //:deployment_bundle falsebuilds one wrapper-managed target through a Honeysvc/bazel-cachelocalhost port-forward when an operator supplies the endpoint. The supported developer-machine exposure policy is operator-provided endpoint only; tailnet-routable or public cache endpoints remain separate future infrastructure/auth decisions. GitHub #417 is closed after the downstream lab package-canary cache proof. This is still not a claim of Bazel remote execution. - advance TIN-643 from implicit failure mode to explicit proof surface:
Bazel external fetch authority
reports whether external repository archives are backed by repository-cache /
distdir authority or only by upstream retry mitigation, and the offline
just bazel-external-fetch-authority-self-testguard proves both the classifier and wrapper CLI wiring. This remains separate from Bazel remote action cache and from remote execution. - use
just bazel-external-input-manifestas the next external-input authority guard. It names the current lockfile inputs and makes the remaining default source-proof blocker concrete: BCR registry files and generated archive repositories are hash-recorded, but generated Node.js toolchain repositories still enter through version/template URLs without a lockfile hash. The repo-owneddocs/contracts/bazel-external-input-mirror-candidates.jsoncontract now records candidate integrity for those eight Node.js 22.13.1 archives, the generatedpybind11archive surfaced by the refreshed lockfile, four critical Bzlmod archives, and hermetic launcher stubs, but all entries remainmaterialized: false.Source Bazel Proofnow stages the Linux x64 Node archive plus the critical Bzlmod archives into an ephemeral verifiedBAZEL_DISTDIRbefore Bazel starts and validatesdocs/contracts/bazel-distdir-source-proof-coverage.json, which keeps the remaining generated Node and hermetic launcher candidates deferred. The next gate is still durable repository-cache, distdir, or approved mirror placement before the source path is product-grade against upstream fetch failure.docs/contracts/bazel-external-input-durable-authority.jsonnow makes that next gate executable: it isno-live-durable-authority, has emptycovered_inputs, keeps all 23 candidate inputs pending, and requires auth, retention, restore, provenance, and consumer exposure before any durable authority claim. The W3.5 source-local guard now addsjust bazel-http-archive-pins-checkand the Validate workflow check that rejects directhttp_archive/http_filecalls without non-emptysha256pins. That prevents new unpinned direct archive inputs from widening the external-input authority gap, but it does not yet prove durable mirror placement or vendor-mode completeness. The W3.3 wrapper switches are also present now:BAZEL_OUTPUT_BASEisolates a fresh output base, andGF_BAZEL_REPOSITORY_DISABLE_DOWNLOAD=truepasses--repository_disable_downloadso CI can prove a warm repository cache without bypassing the GloriousFlywheel wrapper contract.Source Bazel Proofnow provides a run-localBAZEL_REPOSITORY_CACHEnext to its verified distdir, packages the real Node Linux x64 archive through the provider-neutral mirror layout, restores a fresh distdir from that package, reruns//:deployment_bundlefrom a freshBAZEL_OUTPUT_BASEwithGF_BAZEL_REPOSITORY_DISABLE_DOWNLOAD=true, and uploadsbazel-repository-cache-evidence.jsonusingscripts/bazel-repository-cache-evidence.py. The remaining W3.3 work is live prepopulation and hit-rate evidence for the shared lane; the source proof package/restore and hermetic checks are still run-local warm-cache evidence, not durable authority. TIN-1468 now has a full candidate distdir package proof lane:scripts/bazel-distdir-full-package-proof.sh,.github/workflows/bazel-distdir-full-package-proof.yml, andjust bazel-distdir-full-package-proof-contract-check. This lane runs ontinyland-nix-heavy, materializes every current external-input mirror candidate, packages the verified bytes into the provider-neutral mirror layout, verifies--all-candidates, restores--all-candidates, and emitsbazel-distdir-full-package-proof-evidence.json. That is a stronger package-completeness signal than the one-archive source proof, but it still keepsdurable_authority=false: no durable endpoint, auth boundary, retention/restore drill, or consumer exposure proof is selected yet. The next TIN-1468 live-storage lane is now wired asscripts/bazel-distdir-mirror-live-proof.py,.github/workflows/bazel-distdir-mirror-live-proof.yml, andjust bazel-distdir-mirror-live-proof-contract-check.Bazel Distdir Mirror Live Proofis manual-only until a real non-secret authority package and scopedGF_EXTERNAL_INPUT_MIRROR_*credentials exist. The E3 status command now also reports the default non-secret authority package path separately, so a missing or non-proof_readypackage cannot be hidden behind green GitHub name readiness. When dispatched, it reruns the full package proof ontinyland-nix-heavy, uploads the verified mirror package to the selected S3-compatible bucket/prefix, downloads it into a fresh mirror root, verifies the package again, restores a localBAZEL_DISTDIR, and emits live evidence without promoting the durable contract by itself. Usejust bazel-distdir-mirror-github-readinessbefore dispatching; it currently reportsTIN-1468_GITHUB_AUTHORITY_NOT_READYuntil the GitHub variable/secret injection surface has the scoped mirror names, andTIN-1468_AUTHORITY_PACKAGE_MISSINGuntil the selected package exists. TIN-1470 now has a W3.4 vendor-mode canary rather than a design-only SLO:scripts/gf-bazel-vendor-mode-canary.sh,.github/workflows/gf-bazel-vendor-mode.yml, andjust bazel-vendor-mode-canary-contract-checkmake the lane nightly/on-demand with evidence artifacts, scratch-disk preflight, timeout bounds, and production/full scope selection. Current truth remains red, but the red has moved forward: local probes on 2026-05-19 reached thethird_party_local_repository_fixture_leakclassifier from the BCRrules_pkg@1.1.0MODULE’srules_pkg~~_repo_rules~mappings_test_external_repolocal test repository, plus a long-running Nix repository vendoring tail foropentofu/kubectl/yq-go. The 2026-05-21 scheduled run26223210487exposed the next resource-envelope truth: full-graph vendoring reached a Bazel Java heap OOM inrules_rusttoolchain extraction on the baselinetinyland-nixlane. The canary now belongs on the sharedtinyland-nix-heavycapability lane with an explicitGF_VENDOR_MODE_BAZEL_HOST_JVM_XMXenvelope, and that signature is classified asrules_rust_toolchain_extract_heap_oom. The follow-up branch canary26242395403moved to the heavy lane and exposed the next source-owned capacity bug: livetinyland-nix-heavystill had only a 16Gi ephemeral-storage limit against the canary’s 40Gi scratch requirement. A managed ARC apply then moved the lane to40Gi/64Gi, and follow-up canary26245482714proved that full-graph vendoring can exceed that envelope by growing the vendor temp tree to roughly53Gibefore kubelet eviction at the 64Gi container scratch limit. The next canary,26246609243, passed that old boundary and was later evicted at the 128Gi scratch limit. The ARC contract now raises the shared heavy lane to192Girequested and256Gilimited ephemeral storage, with a96Gimemory request and160Gimemory limit. Managed apply26247461740reconciled that envelope live, and canary26247715938reached the real external-input defect instead of runner eviction. PR #768 now bumpsrules_pkgto1.2.0, whose BCR MODULE removes the internal local test repository, and makes artifact upload best-effort so GitHub quota saturation cannot hide the actual canary result. Follow-up canary26350919668moved past that leak and exposed a second repository-rule authority gap:pybind11_bazelneeded an explicit local Python authority. PR #768 now addspkgs.python3to the CI devshell and passes--repo_env=PYTHON_BIN_PATH=...through vendor/build/test phases. Workflow-dispatch canary26351062144then passed the full-scope W3.4 lane on branch head27e40ce:bazel vendorcompleted, materialized a roughly170Givendor directory, and//:deployment_bundlebuilt successfully from that vendor directory. Live runner observation showed a141429174272byte memory peak with zero cgroup OOM/max events. Current-main canary26549932671repeated the full-scope proof with downloadable evidence and showed the target class is scratch-heavy rather than memory-heavy in practice: roughly170Giscratch, around14Gipod memory, and no OOM/eviction. The committed heavy lane therefore keeps the160Gimemory limit for bursts, lowers the memory request to64Gi, and preserves the192Gi/256Giscratch envelope somaxRunners = 2is a truthful honey-backed dogfood target under ordinary cluster load. This is W3.4 vendor-mode proof, not E3/TIN-1447 closure; E3 still needs a consecutive-nightly streak and durable external-input authority. Workflow-dispatch canary26587033690then repeated the full-scope proof on779c8fb1e60c3e026468fbcabeb72252d523af54, passed withclassifier=ok, built//:deployment_bundlefrom the vendored graph, and again reached roughly170Giscratch. The canary’s default scratch preflight is therefore192Gi, not the old placeholder40Gi. The 2026-05-31 scheduled canary26710742767exposed the next E3 authority gap after the resource envelope stopped being the blocker:bazel vendorattempted to fetchhermetic_launcher’srunfiles-stub-x86_64-macosfrom GitHub and hit a502. PR #855 then recorded the fullhermetic_launcherprebuilt stub set in the candidate manifest and stages those verified bytes inBAZEL_DISTDIRbefore invokingbazel vendor. Workflow-dispatch canary26717187299proved that fix on the dogfoodedtinyland-nix-heavylane:bazel vendorcompleted,//:deployment_bundlebuilt from the vendor directory, the evidence classifier wasok, and the branch was merged as3d68e10. Post-merge main canary26718312931then repeated the proof onmainat3d68e10, with the vendor step, evidence summary, and artifact upload all green. This is still candidate integrity and local distdir staging, not durable mirror authority. The E3 external-input authority status command is now the operator rollup:just e3-external-input-authority-statusreports the vendor-mode nightly streak, latest on-demand green proof, theBazel Distdir Full Package Proofnightly streak, theTIN-1468_GITHUB_AUTHORITY_*mirror-injection gate, and the manualBazel Distdir Mirror Live Proofresult. It keeps the next gate honest: current status is stillE3_EXTERNAL_INPUT_AUTHORITY_NOT_READYeven with a green on-demand main proof; E3 still needs the scheduled vendor-mode streak to restart onmainafter3d68e10and the remaining durable-authority surfaces to go green. - close the public WAS-110 pinned-input lane: the copied Bazel wrapper supports
GF_BAZEL_INJECT_REPOSITORIESfor verified generated local repositories, whileBAZEL_REPOSITORY_CACHEandBAZEL_DISTDIRcarry durable external-fetch authority. Main run25589377905promoted the generated public-community repository through the explicit REAPI proof lane with machine-verified remote execution evidence. Follow-on work must keep public pins distinct from private blobs and must not use RustFS as a trusted RBE CAS/action-cache authority. - keep the new May-Aug RBE scaffold proof-first: the GF REAPI cell now has
narrow explicit
//app:build,//app:unit_tests,//:deployment_bundle,//docs-site:build, and WAS-110 public-input workflow proofs. The first//docs-site:buildproof attempt found a package-boundary blocker rather than countable remote execution; PR #585 repaired the Bazel source shape and main run25608601158promoted it with1046 remoteprocesses. No broad/default RBE candidate is selected by that promotion. TIN-1027, TIN-665, TIN-671, TIN-672, and TIN-882 are closed; TIN-668 remains active as the target-class eligibility umbrella while new RBE classes are proved one by one. Executor-backed wrapper mode and ARC executor endpoint wiring remain opt-in and separate from the default cache-backed path. The W2 action-cache productionization slice now includes implemented primitives for writer attestation, platform-tagged AC entries, AC audit rows, surgical nuke-key/quarantine handling for one poisoned AC key, and a W2.5 non-attested writer chaos workflow. That is real RBE authority progress, but it is still not broad/default RBE until durable CAS/action-cache storage, tenant quota/fairness, retention/query/dashboard, worker lifecycle, and default-on rollout policy are proved. The first W5.3 fairness dashboard contract exists, but it is not yet the full tenant quota/fairness close condition. Buildbarn, Buildfarm, BuildBuddy, and NativeLink remain peer projects / possible spike targets, not GloriousFlywheel dependencies or selected backends. README and operator docs may cite the narrow target-scoped proof, but must not claim broad remote build until target eligibility, backend authority, and product wrapper posture are selected and CAS/action-cache authority, auth, worker lifecycle, benchmarks, and additional target eligibility are proved. - retire or intentionally preserve the Jess-overlay-owned compatibility lanes
tracked by #412. State rehome is complete; actual retirement still requires
an owner-boundary/shared-scope decision or explicit downstream blocked state.
The 2026-05-11 refresh shows scheduling-kit and scheduling-bridge already use
the shared
tinyland-nixworkflow label, so #412 closure is now the live compatibility-lane retirement decision, not another label migration. - keep GF #407 and #413 blocked until Dell-7810 and XoxdWM prove real
personal-repo reachability to shared
tinyland-nix. Both currently expose zero accessible repo-level self-hosted runners, so no canary should be counted or dispatched as proof yet. - keep the orgwide enrollment queue as the executable owner-boundary decision surface: #407, #413, and #412 entries must carry related issue, proof-dispatch policy, required assigned-job or post-retirement proof, and explicit non-proof evidence so operator pressure does not become repo-shaped ARC rescue work.
- advance the next infra hygiene sequence in this order:
TIN-617 for the honey/sting RKE2 quorum decision, TIN-1012 for the actual
HA OpenTofu state authority implementation beyond the bumble-local RustFS
singleton, and TIN-128 for the local-first Tofu deployment and tailnet-first
operator-plane contract. Do not run live
tofu plan/tofu applyas part of that planning work unless an explicit maintenance window is selected. - keep adjacent Tofu and cluster-authority repos under review while the overlay
work moves, especially
blahaj,tailnet-acl,elders.tinyland.dev,ci-templates,Dell-7810,XoxdWM, and package remote-cache consumers
Later
- return to broader cache-first dogfood and advanced-runner productization only after the current execution sequence is stable
- turn the RBE proof package into a backend/product decision before wiring
executor endpoints into default runners or public docs; keep wrapper executor
use behind explicit
executor-backedmode until then - revisit wider capability-class expansion only after the current proof floors have stronger product-owned downstream contracts
- revisit broader multi-forge and user-facing product claims only after the
GitHub +
honeycore has wider proved authority than the current bounded downstream proof set and Jess-owned shared-lane reachability debt - do not promote future arch-specific or language-specific lanes until they have a named proof surface, a bounded owner, and a real dispatch contract