merge: main — monitoring meets the console-API CLI and environments
Conflicts were all both-sides-additive: RouteView carries Account (ours) and Environment (main's); the console Server carries the alert watcher + metrics cache (ours) and the ship semaphore (main's); the agent arms metricsLoop and configSyncLoop; host_test keeps the status-privacy tripwire beside main's canary-TTL pipeline tests. fallback_test.go goes with the legacy read-fallback it tested (deleted on main) — its Delete stub moves to the store doubles main added meanwhile (erroringStore, trapStore), which now implement the Store interface our branch widened.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
README.md+46 −11accounts.go+55 −18apimode.go+438 −0apimode_test.go+1243 −0appconfig_cli.go+235 −31auth.go+66 −0auth_e2e_test.go+298 −0cli.go+642 −129cmd/console/main.go+9 −0docs/superpowers/plans/2026-08-02-exec-config-delivery.md+945 −0docs/superpowers/plans/2026-08-02-rastrillo-icon-vendoring.md+227 −0docs/superpowers/plans/2026-08-02-rastrillo-ui-component-library.md+2410 −0docs/superpowers/plans/2026-08-03-cli-console-api.md+315 −0docs/superpowers/plans/2026-08-03-rastrillo-blog-example.md+3331 −0docs/superpowers/specs/2026-08-01-carlos-framework-design.md+20 −0docs/superpowers/specs/2026-08-02-app-config-secrets-design.md+3 −0docs/superpowers/specs/2026-08-02-exec-config-delivery-design.md+200 −0docs/superpowers/specs/2026-08-02-multi-account-design.md+124 −1docs/superpowers/specs/2026-08-02-rastrillo-ui-addendum-design.md+207 −0docs/superpowers/specs/2026-08-02-rastrillo-ui-component-library-design.md+416 −0docs/superpowers/specs/2026-08-03-cli-console-api-design.md+182 −0docs/superpowers/specs/2026-08-03-rastrillo-blog-example-design.md+936 −0docs/superpowers/specs/2026-08-03-scoped-signing-keys-design.md+165 −0docs/superpowers/specs/2026-08-03-unit-tenant-purge-channel.md+901 −0e2e_test.go+859 −20internal/activator/activator.go+32 −7internal/activator/activator_test.go+339 −2internal/activator/backend_exec.go+68 −3internal/appconfig/appconfig.go+39 −0internal/appconfig/environments.go+195 −0internal/appconfig/environments_test.go+333 −0internal/appconfig/store.go+135 −32internal/appconfig/store_test.go+138 −1internal/appconfig/sync.go+217 −35internal/appconfig/sync_test.go+588 −2internal/appconfig/syncexec.go+579 −0internal/appconfig/syncexec_test.go+1332 −0internal/console/apicli.go+679 −0internal/console/apicli_test.go+1134 −0internal/console/authcli.go+25 −1internal/console/icons.go+22 −1internal/console/ladder.go+115 −33internal/console/ladder_test.go+313 −16internal/console/server.go+28 −5internal/console/templates/ladder.html+2 −0internal/console/templates/layout.html+8 −0internal/console/view.go+29 −9internal/domains/reconcile.go+59 −29internal/domains/reconcile_test.go+113 −4internal/edge/cache.go+213 −84internal/edge/cache_test.go+346 −32internal/edge/edge.go+119 −23internal/edge/edge_test.go+114 −4internal/edge/purge.go+75 −5internal/edge/purge_header.go+657 −0internal/edge/purge_header_test.go+1957 −0internal/edge/purge_test.go+78 −2internal/edge/static.go+1 −3internal/edge/static_test.go+76 −0internal/host/adopt_advice.go+43 −0internal/host/adopt_advice_test.go+25 −0internal/host/agent.go+148 −6internal/host/host_test.go+207 −0internal/registry/registry.go+149 −6internal/registry/registry_test.go+226 −1internal/release/adopt.go+120 −9internal/release/adopt_test.go+252 −0internal/release/canary_ttl.go+85 −0internal/release/canary_ttl_test.go+116 −0internal/release/fallback.go+0 −99internal/release/fallback_test.go+0 −191internal/release/golden_test.go+143 −0internal/release/grant.go+308 −0internal/release/grant_test.go+419 −0internal/release/laddercheck_test.go+68 −1internal/release/qualified.go+184 −0internal/release/qualified_test.go+551 −0internal/release/release.go+178 −47internal/release/release_test.go+1 −1internal/release/scopedpromote_test.go+229 −0internal/release/scopedverify_test.go+404 −0internal/release/signer.go+85 −0internal/status/assets/index.html+18 −0internal/status/contract_test.go+7 −3internal/status/dryrun.go+9 −7internal/status/fleet.go+36 −0internal/status/snapshot.go+16 −0internal/status/status_test.go+107 −0internal/vet/vet.go+1 −3main.go+15 −5scopedkeys_e2e_test.go+170 −0
README.mdLoading diff…
accounts.goLoading diff…
apimode.goLoading diff…
apimode_test.goLoading diff…
appconfig_cli.goLoading diff…
auth.goLoading diff…
auth_e2e_test.goLoading diff…
cli.goLoading diff…
cmd/console/main.goLoading diff…
docs/superpowers/plans/2026-08-02-exec-config-delivery.mdLoading diff…
docs/superpowers/plans/2026-08-02-rastrillo-icon-vendoring.mdLoading diff…
docs/superpowers/plans/2026-08-02-rastrillo-ui-component-library.mdLoading diff…
docs/superpowers/plans/2026-08-03-cli-console-api.mdLoading diff…
docs/superpowers/plans/2026-08-03-rastrillo-blog-example.mdLoading diff…
docs/superpowers/specs/2026-08-01-carlos-framework-design.mdLoading diff…
docs/superpowers/specs/2026-08-02-app-config-secrets-design.mdLoading diff…
docs/superpowers/specs/2026-08-02-exec-config-delivery-design.mdLoading diff…
docs/superpowers/specs/2026-08-02-multi-account-design.mdLoading diff…
docs/superpowers/specs/2026-08-02-rastrillo-ui-addendum-design.mdLoading diff…
docs/superpowers/specs/2026-08-02-rastrillo-ui-component-library-design.mdLoading diff…
docs/superpowers/specs/2026-08-03-cli-console-api-design.mdLoading diff…
docs/superpowers/specs/2026-08-03-rastrillo-blog-example-design.mdLoading diff…
docs/superpowers/specs/2026-08-03-scoped-signing-keys-design.mdLoading diff…
docs/superpowers/specs/2026-08-03-unit-tenant-purge-channel.mdLoading diff…
e2e_test.goLoading diff…
internal/activator/activator.goLoading diff…
internal/activator/activator_test.goLoading diff…
internal/activator/backend_exec.goLoading diff…
internal/appconfig/appconfig.goLoading diff…
internal/appconfig/environments.goLoading diff…
internal/appconfig/environments_test.goLoading diff…
internal/appconfig/store.goLoading diff…
internal/appconfig/store_test.goLoading diff…
internal/appconfig/sync.goLoading diff…
internal/appconfig/sync_test.goLoading diff…
internal/appconfig/syncexec.goLoading diff…
internal/appconfig/syncexec_test.goLoading diff…
internal/console/apicli.goLoading diff…
internal/console/apicli_test.goLoading diff…
internal/console/authcli.goLoading diff…
internal/console/icons.goLoading diff…
internal/console/ladder.goLoading diff…
internal/console/ladder_test.goLoading diff…
internal/console/server.goLoading diff…
internal/console/templates/ladder.htmlLoading diff…
internal/console/templates/layout.htmlLoading diff…
internal/console/view.goLoading diff…
internal/domains/reconcile.goLoading diff…
internal/domains/reconcile_test.goLoading diff…
internal/edge/cache.goLoading diff…
internal/edge/cache_test.goLoading diff…
internal/edge/edge.goLoading diff…
internal/edge/edge_test.goLoading diff…
internal/edge/purge.goLoading diff…
internal/edge/purge_header.goLoading diff…
internal/edge/purge_header_test.goLoading diff…
internal/edge/purge_test.goLoading diff…
internal/edge/static.goLoading diff…
internal/edge/static_test.goLoading diff…
internal/host/adopt_advice.goLoading diff…
internal/host/adopt_advice_test.goLoading diff…
internal/host/agent.goLoading diff…
internal/host/host_test.goLoading diff…
internal/registry/registry.goLoading diff…
internal/registry/registry_test.goLoading diff…
internal/release/adopt.goLoading diff…
internal/release/adopt_test.goLoading diff…
internal/release/canary_ttl.goLoading diff…
internal/release/canary_ttl_test.goLoading diff…
internal/release/fallback.goLoading diff…
internal/release/fallback_test.goLoading diff…
internal/release/golden_test.goLoading diff…
internal/release/grant.goLoading diff…
internal/release/grant_test.goLoading diff…
internal/release/laddercheck_test.goLoading diff…
internal/release/qualified.goLoading diff…
internal/release/qualified_test.goLoading diff…
internal/release/release.goLoading diff…
internal/release/release_test.goLoading diff…
internal/release/scopedpromote_test.goLoading diff…
internal/release/scopedverify_test.goLoading diff…
internal/release/signer.goLoading diff…
internal/status/assets/index.htmlLoading diff…
internal/status/contract_test.goLoading diff…
internal/status/dryrun.goLoading diff…
internal/status/fleet.goLoading diff…
internal/status/snapshot.goLoading diff…
internal/status/status_test.goLoading diff…
internal/vet/vet.goLoading diff…
main.goLoading diff…
scopedkeys_e2e_test.goLoading diff…