Merge forge main (8e16153) into worktree-password-gate
The one conflict was in edge.go's ServeHTTP: main rewrote the usage meter's comment for the unconditional observing writer (errors spec §3.3) where this branch inserts the login-POST re-resolve block. Both kept; the gate step still sits after the wrapper and before the upgrade, cache and activator branches.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
apimode.go+52 −0docs/site/cli.md+17 −0docs/superpowers/plans/2026-09-07-errors-step1-log-and-edge.md+3287 −0docs/superpowers/specs/2026-09-07-errors-and-analytics-design.md+842 −0docs/superpowers/specs/2026-09-07-media-platform-roadmap-design.md+1000 −0docs/superpowers/specs/2026-09-07-relay-stun-turn-design.md+725 −0docs/superpowers/specs/CODEX-FINDINGS-MEDIA-R2.md+169 −0docs/superpowers/specs/CODEX-FINDINGS-MEDIA-R3.md+106 −0docs/superpowers/specs/CODEX-FINDINGS-MEDIA-R4.md+96 −0docs/superpowers/specs/CODEX-FINDINGS-MEDIA-R5.md+36 −0docs/superpowers/specs/CODEX-FINDINGS-MEDIA.md+196 −0docs/superpowers/specs/CODEX-FINDINGS-RELAY-R2.md+205 −0docs/superpowers/specs/CODEX-FINDINGS-RELAY-R3.md+156 −0docs/superpowers/specs/CODEX-FINDINGS-RELAY-R4.md+61 −0docs/superpowers/specs/CODEX-FINDINGS-RELAY-R5.md+31 −0docs/superpowers/specs/CODEX-FINDINGS-RELAY-R6.md+15 −0docs/superpowers/specs/CODEX-FINDINGS-RELAY.md+237 −0docs/superpowers/specs/CODEX-REVIEW-BRIEF-MEDIA.md+96 −0docs/superpowers/specs/CODEX-REVIEW-BRIEF-RELAY.md+69 −0errors_cmd.go+146 −0errors_cmd_test.go+25 −0internal/activator/activator.go+14 −2internal/appconfig/appconfig.go+1 −1internal/appconfig/syncexec.go+6 −3internal/appconfig/syncexec_test.go+46 −0internal/apperr/fingerprint.go+76 −0internal/apperr/fingerprint_test.go+62 −0internal/apperr/group.go+80 −0internal/apperr/group_test.go+33 −0internal/apperr/read.go+122 −0internal/apperr/read_test.go+87 −0internal/apperr/record.go+77 −0internal/apperr/sanitize.go+130 −0internal/apperr/sanitize_test.go+53 −0internal/apperr/sink.go+158 −0internal/apperr/sink_test.go+172 −0internal/applog/chunk.go+57 −16internal/applog/chunk_test.go+58 −0internal/applog/read.go+35 −19internal/applog/read_test.go+29 −0internal/console/apierrors.go+99 −0internal/console/apierrors_test.go+242 −0internal/console/authcli.go+10 −0internal/console/errorsview.go+301 −0internal/console/server.go+60 −0internal/console/svcroutes_test.go+11 −1internal/console/templates/account_settings.html+21 −0internal/console/templates/app_errors.html+79 −0internal/console/templates/app_settings.html+24 −0internal/console/templates/appnav.html+1 −0internal/edge/answered.go+37 −0internal/edge/answered_test.go+19 −0internal/edge/edge.go+77 −13internal/edge/edgeerrors_test.go+172 −0internal/edge/storedoor.go+25 −19internal/edge/storedoor_test.go+12 −0internal/edge/usagemeter.go+34 −5internal/edge/usagemeter_test.go+26 −0internal/host/agent.go+13 −0internal/host/errship.go+109 −0internal/host/errship_test.go+37 −0internal/host/logship.go+7 −22internal/host/logship_test.go+2 −9internal/telemetry/telemetry.go+139 −0internal/telemetry/telemetry_test.go+47 −0main.go+4 −0
CI passed — run details
apimode.goLoading diff…
docs/site/cli.mdLoading diff…
docs/superpowers/plans/2026-09-07-errors-step1-log-and-edge.mdLoading diff…
docs/superpowers/specs/2026-09-07-errors-and-analytics-design.mdLoading diff…
docs/superpowers/specs/2026-09-07-media-platform-roadmap-design.mdLoading diff…
docs/superpowers/specs/2026-09-07-relay-stun-turn-design.mdLoading diff…
docs/superpowers/specs/CODEX-FINDINGS-MEDIA-R2.mdLoading diff…
docs/superpowers/specs/CODEX-FINDINGS-MEDIA-R3.mdLoading diff…
docs/superpowers/specs/CODEX-FINDINGS-MEDIA-R4.mdLoading diff…
docs/superpowers/specs/CODEX-FINDINGS-MEDIA-R5.mdLoading diff…
docs/superpowers/specs/CODEX-FINDINGS-MEDIA.mdLoading diff…
docs/superpowers/specs/CODEX-FINDINGS-RELAY-R2.mdLoading diff…
docs/superpowers/specs/CODEX-FINDINGS-RELAY-R3.mdLoading diff…
docs/superpowers/specs/CODEX-FINDINGS-RELAY-R4.mdLoading diff…
docs/superpowers/specs/CODEX-FINDINGS-RELAY-R5.mdLoading diff…
docs/superpowers/specs/CODEX-FINDINGS-RELAY-R6.mdLoading diff…
docs/superpowers/specs/CODEX-FINDINGS-RELAY.mdLoading diff…
docs/superpowers/specs/CODEX-REVIEW-BRIEF-MEDIA.mdLoading diff…
docs/superpowers/specs/CODEX-REVIEW-BRIEF-RELAY.mdLoading diff…
errors_cmd.goLoading diff…
errors_cmd_test.goLoading diff…
internal/activator/activator.goLoading diff…
internal/appconfig/appconfig.goLoading diff…
internal/appconfig/syncexec.goLoading diff…
internal/appconfig/syncexec_test.goLoading diff…
internal/apperr/fingerprint.goLoading diff…
internal/apperr/fingerprint_test.goLoading diff…
internal/apperr/group.goLoading diff…
internal/apperr/group_test.goLoading diff…
internal/apperr/read.goLoading diff…
internal/apperr/read_test.goLoading diff…
internal/apperr/record.goLoading diff…
internal/apperr/sanitize.goLoading diff…
internal/apperr/sanitize_test.goLoading diff…
internal/apperr/sink.goLoading diff…
internal/apperr/sink_test.goLoading diff…
internal/applog/chunk.goLoading diff…
internal/applog/chunk_test.goLoading diff…
internal/applog/read.goLoading diff…
internal/applog/read_test.goLoading diff…
internal/console/apierrors.goLoading diff…
internal/console/apierrors_test.goLoading diff…
internal/console/authcli.goLoading diff…
internal/console/errorsview.goLoading diff…
internal/console/server.goLoading diff…
internal/console/svcroutes_test.goLoading diff…
internal/console/templates/account_settings.htmlLoading diff…
internal/console/templates/app_errors.htmlLoading diff…
internal/console/templates/app_settings.htmlLoading diff…
internal/console/templates/appnav.htmlLoading diff…
internal/edge/answered.goLoading diff…
internal/edge/answered_test.goLoading diff…
internal/edge/edge.goLoading diff…
internal/edge/edgeerrors_test.goLoading diff…
internal/edge/storedoor.goLoading diff…
internal/edge/storedoor_test.goLoading diff…
internal/edge/usagemeter.goLoading diff…
internal/edge/usagemeter_test.goLoading diff…
internal/host/agent.goLoading diff…
internal/host/errship.goLoading diff…
internal/host/errship_test.goLoading diff…
internal/host/logship.goLoading diff…
internal/host/logship_test.goLoading diff…
internal/telemetry/telemetry.goLoading diff…
internal/telemetry/telemetry_test.goLoading diff…
main.goLoading diff…