merge main: cgroup accounting supersedes #121's pid sampling
Brings the branch onto main 934414c and resolves the collision with the pid-sampled exec-instance metrics (#118/#121) per the exec-child accounting spec, which explicitly rejected /proc sampling: - AwakeExecPids, childProc.Pid, pidparse.go and execInstanceReadings/ mergeUnitReadings are retired; exec children are accounted by their delegated carlos-exec@<host> cgroups instead. The #118 spec doc is marked superseded, kept for its problem statement. - sweepBox keeps main's already-live concurrent implementation (metricsSweepBoxes x metricsSweepReads, from the app-pages branch); this branch's errgroup variant and its constant are dropped, and x/sync returns to indirect. The stale-while-revalidate cache, the derived 8-minute fresh window, and the owner allowlist's second key survive unchanged on top of it. - Old chunks keyed carlos-app@<host>.service by the pid sampler still render for their 48h retention: the owner allowlist accepts both key forms. go build/vet, GOOS=darwin build, gofmt, and go test ./... (21 packages) all green on the merged tree.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
.github/workflows/ci.yml+107 −0CLAUDE.md+42 −3README.md+8 −0accounts.go+37 −30apimode.go+192 −5apimode_test.go+191 −24appconfig_cli.go+24 −25apps.go+15 −13auth.go+17 −14cli.go+605 −78cli_test.go+493 −8cmd/console/main.go+34 −13color.go+222 −0color_test.go+128 −0deploy.go+475 −0deploy_e2e_test.go+439 −0deploy_test.go+400 −0docs/superpowers/plans/2026-08-06-issues-69-70-db-path.md+380 −0docs/superpowers/plans/2026-08-08-carlos-deploy.md+894 −0docs/superpowers/plans/2026-08-08-release-versioning.md+1592 −0docs/superpowers/specs/2026-08-04-instance-provisioning-design.md+33 −0docs/superpowers/specs/2026-08-07-console-app-pages-design.md+144 −0docs/superpowers/specs/2026-08-08-carlos-deploy-design.md+310 −0docs/superpowers/specs/2026-08-08-exec-instance-metrics-design.md+163 −0docs/superpowers/specs/2026-08-08-instance-socket-consumers-design.md+161 −0docs/superpowers/specs/2026-08-08-release-versioning-design.md+130 −0e2e_test.go+133 −1go.mod+2 −2instances_cli.go+15 −14internal/activator/activator_test.go+198 −1internal/activator/backend_exec.go+28 −0internal/appconfig/sync.go+7 −7internal/caps/converge.go+1 −1internal/console/apicli.go+205 −9internal/console/apicli_test.go+218 −0internal/console/apiconfig.go+12 −0internal/console/apiinstances.go+86 −4internal/console/apiinstances_test.go+83 −0internal/console/apirestart_test.go+177 −0internal/console/apiversion.go+230 −0internal/console/apiversion_test.go+339 −0internal/console/appsettings.go+450 −0internal/console/appsettings_test.go+657 −0internal/console/attachhint_test.go+132 −0internal/console/authcli.go+14 −0internal/console/bakecontrols_test.go+6 −6internal/console/confirm.go+233 −0internal/console/confirm_test.go+314 −0internal/console/deletion_test.go+8 −0internal/console/icons.go+13 −0internal/console/ladder_test.go+44 −32internal/console/metricsview.go+112 −61internal/console/metricsview_test.go+132 −114internal/console/overview.go+192 −0internal/console/overview_test.go+317 −0internal/console/ownership.go+15 −0internal/console/serialbump.go+40 −0internal/console/serialbump_test.go+506 −0internal/console/server.go+339 −12internal/console/server_account_test.go+19 −5internal/console/server_test.go+364 −37internal/console/store.go+91 −0internal/console/templates/app_instances.html+32 −38internal/console/templates/app_overview.html+66 −12internal/console/templates/app_releases.html+37 −18internal/console/templates/app_settings.html+69 −0internal/console/templates/confirm_action.html+23 −0internal/console/templates/ladder.html+14 −26internal/console/templates/layout.html+46 −0internal/console/view.go+72 −1internal/edge/edge.go+45 −0internal/edge/edge_test.go+63 −0internal/edge/static.go+39 −13internal/edge/static_test.go+222 −0internal/host/agent.go+687 −68internal/host/agent_test.go+812 −0internal/host/bootstrap.go+151 −37internal/host/host_test.go+144 −7internal/host/probes.go+20 −1internal/host/restart.go+650 −0internal/host/restart_test.go+706 −0internal/host/stage_relay_test.go+79 −0internal/host/units/carlos-restart.path+27 −0internal/host/units/carlos-restart.service+53 −0internal/host/units/carlos-stage.path+26 −0internal/host/units/carlos-stage.service+52 −0internal/lease/endpoint.go+130 −0internal/lease/endpoint_test.go+263 −0internal/lease/lease.go+19 −19internal/lease/lease_test.go+7 −3internal/registry/registry.go+167 −31internal/registry/registry_test.go+293 −1internal/release/adopt.go+185 −47internal/release/adopt_test.go+135 −5internal/release/golden_test.go+201 −0internal/release/ladder_test.go+284 −0internal/release/materialize.go+66 −0internal/release/materialize_test.go+181 −0internal/release/release.go+72 −0internal/release/release_test.go+51 −0internal/release/restartgen.go+107 −0internal/release/restartgen_test.go+135 −0internal/release/semver.go+105 −0internal/release/semver_test.go+57 −0internal/release/serial.go+74 −0internal/release/serial_test.go+56 −0internal/release/stage_blocked_test.go+60 −0internal/release/store.go+12 −9internal/release/store_rgw_test.go+169 −0internal/release/tag.go+187 −0internal/release/tag_test.go+202 −0internal/release/target.go+151 −0internal/release/target_test.go+153 −0internal/release/versions.go+22 −0internal/release/versions_test.go+41 −0internal/s3compat/s3compat.go+181 −0internal/s3compat/s3compat_test.go+235 −0internal/status/contract_test.go+43 −15internal/status/dryrun.go+71 −14internal/status/fleet.go+14 −8internal/status/snapshot.go+60 −16internal/status/status_test.go+113 −0main.go+77 −76restart.go+86 −0restart_test.go+153 −0testdata/echoapp/main.go+21 −0
.github/workflows/ci.ymlLoading diff…
CLAUDE.mdLoading diff…
README.mdLoading diff…
accounts.goLoading diff…
apimode.goLoading diff…
apimode_test.goLoading diff…
appconfig_cli.goLoading diff…
apps.goLoading diff…
auth.goLoading diff…
cli.goLoading diff…
cli_test.goLoading diff…
cmd/console/main.goLoading diff…
color.goLoading diff…
color_test.goLoading diff…
deploy.goLoading diff…
deploy_e2e_test.goLoading diff…
deploy_test.goLoading diff…
docs/superpowers/plans/2026-08-06-issues-69-70-db-path.mdLoading diff…
docs/superpowers/plans/2026-08-08-carlos-deploy.mdLoading diff…
docs/superpowers/plans/2026-08-08-release-versioning.mdLoading diff…
docs/superpowers/specs/2026-08-04-instance-provisioning-design.mdLoading diff…
docs/superpowers/specs/2026-08-07-console-app-pages-design.mdLoading diff…
docs/superpowers/specs/2026-08-08-carlos-deploy-design.mdLoading diff…
docs/superpowers/specs/2026-08-08-exec-instance-metrics-design.mdLoading diff…
docs/superpowers/specs/2026-08-08-instance-socket-consumers-design.mdLoading diff…
docs/superpowers/specs/2026-08-08-release-versioning-design.mdLoading diff…
e2e_test.goLoading diff…
go.modLoading diff…
instances_cli.goLoading diff…
internal/activator/activator_test.goLoading diff…
internal/activator/backend_exec.goLoading diff…
internal/appconfig/sync.goLoading diff…
internal/caps/converge.goLoading diff…
internal/console/apicli.goLoading diff…
internal/console/apicli_test.goLoading diff…
internal/console/apiconfig.goLoading diff…
internal/console/apiinstances.goLoading diff…
internal/console/apiinstances_test.goLoading diff…
internal/console/apirestart_test.goLoading diff…
internal/console/apiversion.goLoading diff…
internal/console/apiversion_test.goLoading diff…
internal/console/appsettings.goLoading diff…
internal/console/appsettings_test.goLoading diff…
internal/console/attachhint_test.goLoading diff…
internal/console/authcli.goLoading diff…
internal/console/bakecontrols_test.goLoading diff…
internal/console/confirm.goLoading diff…
internal/console/confirm_test.goLoading diff…
internal/console/deletion_test.goLoading diff…
internal/console/icons.goLoading diff…
internal/console/ladder_test.goLoading diff…
internal/console/metricsview.goLoading diff…
internal/console/metricsview_test.goLoading diff…
internal/console/overview.goLoading diff…
internal/console/overview_test.goLoading diff…
internal/console/ownership.goLoading diff…
internal/console/serialbump.goLoading diff…
internal/console/serialbump_test.goLoading diff…
internal/console/server.goLoading diff…
internal/console/server_account_test.goLoading diff…
internal/console/server_test.goLoading diff…
internal/console/store.goLoading diff…
internal/console/templates/app_instances.htmlLoading diff…
internal/console/templates/app_overview.htmlLoading diff…
internal/console/templates/app_releases.htmlLoading diff…
internal/console/templates/app_settings.htmlLoading diff…
internal/console/templates/confirm_action.htmlLoading diff…
internal/console/templates/ladder.htmlLoading diff…
internal/console/templates/layout.htmlLoading diff…
internal/console/view.goLoading diff…
internal/edge/edge.goLoading diff…
internal/edge/edge_test.goLoading diff…
internal/edge/static.goLoading diff…
internal/edge/static_test.goLoading diff…
internal/host/agent.goLoading diff…
internal/host/agent_test.goLoading diff…
internal/host/bootstrap.goLoading diff…
internal/host/host_test.goLoading diff…
internal/host/probes.goLoading diff…
internal/host/restart.goLoading diff…
internal/host/restart_test.goLoading diff…
internal/host/stage_relay_test.goLoading diff…
internal/host/units/carlos-restart.pathLoading diff…
internal/host/units/carlos-restart.serviceLoading diff…
internal/host/units/carlos-stage.pathLoading diff…
internal/host/units/carlos-stage.serviceLoading diff…
internal/lease/endpoint.goLoading diff…
internal/lease/endpoint_test.goLoading diff…
internal/lease/lease.goLoading diff…
internal/lease/lease_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/golden_test.goLoading diff…
internal/release/ladder_test.goLoading diff…
internal/release/materialize.goLoading diff…
internal/release/materialize_test.goLoading diff…
internal/release/release.goLoading diff…
internal/release/release_test.goLoading diff…
internal/release/restartgen.goLoading diff…
internal/release/restartgen_test.goLoading diff…
internal/release/semver.goLoading diff…
internal/release/semver_test.goLoading diff…
internal/release/serial.goLoading diff…
internal/release/serial_test.goLoading diff…
internal/release/stage_blocked_test.goLoading diff…
internal/release/store.goLoading diff…
internal/release/store_rgw_test.goLoading diff…
internal/release/tag.goLoading diff…
internal/release/tag_test.goLoading diff…
internal/release/target.goLoading diff…
internal/release/target_test.goLoading diff…
internal/release/versions.goLoading diff…
internal/release/versions_test.goLoading diff…
internal/s3compat/s3compat.goLoading diff…
internal/s3compat/s3compat_test.goLoading 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…
main.goLoading diff…
restart.goLoading diff…
restart_test.goLoading diff…
testdata/echoapp/main.goLoading diff…