Merge main: the gate caught four undocumented commands
259 commits landed on main while this branch was written, and merging them made TestCLICommandsAreDocumented fail by name on `email`, `pipeline`, `schedule` and `steering`. That is the gate's first encounter with real drift rather than a rehearsal, and it worked: four commands had shipped with no docs and nothing else would have noticed. All four are now documented from their source, not from guesses. Three conflicts, resolved toward main: AGENTS.md — main had already made AGENTS.md canonical independently, so this branch's version of that move is dropped and main's kept, with only the docs-corpus rule re-applied onto it. Main's newer rules survive. .github/workflows/ci.yml — deleted on main, which retired the GitHub workflow in favour of amadan CI. The deletion is accepted, and the docs-corpus rule now says "the gate" rather than naming a workflow that no longer exists. The Go comment sweep from CLAUDE.md to AGENTS.md was already done on main; those files take main's version.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
.amadan/README.md+78 −0.amadan/ci.d/10-gate+51 −0.amadan/ci.d/20-cross@5+55 −0.amadan/ci.d/30-minio-contract+323 −0.github/workflows/ci.yml+0 −186.gitignore+5 −0AGENTS.md+38 −23Makefile+8 −2apimode.go+500 −21apimode_test.go+239 −8auth_e2e_test.go+16 −1cli.go+33 −13cli_test.go+15 −0cmd/console/mailbackends_test.go+128 −0cmd/console/main.go+215 −1color.go+12 −0deploy.go+186 −41deploy_e2e_test.go+167 −0deploy_test.go+323 −15deploy_wizard_test.go+4 −4docs/site/cli.md+98 −0docs/superpowers/plans/2026-08-16-woodstar-cutover-runbook.md+37 −6docs/superpowers/plans/2026-08-19-tenant-email.md+5505 −0docs/superpowers/plans/2026-08-20-multi-region-writer-map-and-certs.md+777 −0docs/superpowers/plans/2026-08-20-release-pipelines-v2.md+974 −0docs/superpowers/plans/2026-08-22-multi-region-backhaul.md+843 −0docs/superpowers/plans/2026-08-23-multi-region-steering.md+763 −0docs/superpowers/plans/2026-08-23-record-channel-change.md+601 −0docs/superpowers/plans/2026-08-23-scheduled-work.md+3164 −0docs/superpowers/plans/2026-08-23-static-platform-host.md+558 −0docs/superpowers/specs/2026-08-03-cli-console-api-design.md+27 −4docs/superpowers/specs/2026-08-19-tenant-email-design.md+773 −0docs/superpowers/specs/2026-08-20-bucket-writer-audit.md+399 −0docs/superpowers/specs/2026-08-20-multi-region-ingress-design.md+702 −0docs/superpowers/specs/2026-08-20-release-pipelines-v2-design.md+238 −0docs/superpowers/specs/2026-08-23-record-channel-change-design.md+179 −0docs/superpowers/specs/2026-08-23-scheduled-work-design.md+652 −0docs/superpowers/specs/2026-08-23-static-platform-host-design.md+201 −0go.mod+9 −8go.sum+18 −16infra/modules/README.md+3 −0infra/modules/region-host/main.tf+91 −0infra/modules/region-host/variables.tf+20 −0instances_cli.go+175 −3instances_e2e_test.go+75 −0internal/activator/activator_test.go+335 −18internal/activator/admintoken.go+214 −0internal/activator/admintoken_test.go+266 −0internal/activator/backend_exec.go+131 −53internal/activator/logsink.go+6 −3internal/console/apicli.go+235 −31internal/console/apicli_test.go+188 −16internal/console/apidomains.go+1 −1internal/console/apiinstances.go+89 −19internal/console/apiinstances_test.go+334 −0internal/console/apimail.go+1148 −0internal/console/apimail_test.go+1085 −0internal/console/apipipeline.go+340 −0internal/console/apipipeline_test.go+399 −0internal/console/apischedule.go+322 −0internal/console/apischedule_test.go+468 −0internal/console/appsettings.go+131 −1internal/console/appsettings_test.go+364 −0internal/console/authcli.go+113 −15internal/console/authcli_test.go+49 −0internal/console/channelmove.go+229 −0internal/console/channelmove_test.go+343 −0internal/console/confirm.go+19 −4internal/console/confirm_test.go+45 −1internal/console/deletion_test.go+104 −0internal/console/flow.go+61 −15internal/console/ladder.go+113 −2internal/console/ladder_test.go+1 −1internal/console/mailcounts.go+275 −0internal/console/mailcounts_test.go+458 −0internal/console/ownership.go+62 −0internal/console/pending.go+335 −0internal/console/pending_test.go+185 −0internal/console/pendingflow_test.go+943 −0internal/console/pendinghandlers.go+655 −0internal/console/pipelinepage.go+331 −0internal/console/pipelinepage_test.go+446 −0internal/console/server.go+415 −55internal/console/server_test.go+159 −7internal/console/sesevents.go+694 −0internal/console/sesevents_test.go+677 −0internal/console/store.go+22 −1internal/console/svcprincipal.go+14 −3internal/console/svcroutes_test.go+44 −4internal/console/templates/app_overview.html+8 −0internal/console/templates/app_releases.html+10 −3internal/console/templates/app_settings.html+66 −0internal/console/templates/ladder.html+8 −1internal/console/templates/pending.html+22 −0internal/console/templates/pipeline.html+60 −0internal/console/view.go+127 −25internal/console/view_test.go+9 −9internal/dnsrec/dnsrec.go+90 −0internal/dnsrec/dnsrec_test.go+75 −0internal/dnsrec/route53.go+165 −0internal/dnsrec/route53_test.go+35 −0internal/edge/backhaul_e2e_test.go+920 −0internal/edge/certbackfill_test.go+506 −0internal/edge/certcache.go+8 −0internal/edge/certsync.go+1667 −0internal/edge/certsync_e2e_test.go+1298 −0internal/edge/certsync_test.go+1853 −0internal/edge/edge.go+671 −29internal/edge/homemap.go+799 −0internal/edge/homemap_test.go+1551 −0internal/edge/mesh.go+303 −0internal/edge/mesh_test.go+389 −0internal/edge/purge.go+83 −25internal/edge/purge_listen_windows.go+5 −3internal/edge/steeringprobe.go+120 −0internal/edge/steeringprobe_test.go+231 −0internal/edge/storedoor_test.go+101 −0internal/edge/usagemeter.go+12 −2internal/edge/usagemeter_test.go+30 −4internal/edge/wildcard.go+213 −45internal/edge/wildcard_parents_test.go+252 −0internal/edge/wildcard_test.go+33 −12internal/host/agent.go+232 −29internal/host/domains_duty_test.go+54 −0internal/host/edgesfile.go+258 −0internal/host/edgesfile_test.go+614 −0internal/host/housekeeper.go+472 −0internal/host/housekeeper_test.go+562 −0internal/host/schedule_wake_test.go+532 −0internal/host/schedule_wiring.go+436 −0internal/host/schedule_wiring_test.go+160 −0internal/host/snapshot_loop.go+51 −36internal/host/snapshot_loop_test.go+112 −27internal/host/statfs_unix.go+1 −1internal/host/steering_loop.go+246 −0internal/host/steering_loop_test.go+525 −0internal/mail/aws.go+470 −0internal/mail/aws_test.go+351 −0internal/mail/dnsrecords.go+93 −0internal/mail/dnsrecords_test.go+107 −0internal/mail/domain.go+203 −0internal/mail/domain_test.go+107 −0internal/mail/domainclaim.go+209 −0internal/mail/events.go+128 −0internal/mail/events_test.go+163 −0internal/mail/mail.go+162 −0internal/mail/mail_test.go+105 −0internal/mail/memprovisioner.go+300 −0internal/mail/memprovisioner_test.go+133 −0internal/mail/policy.go+181 −0internal/mail/policy_test.go+320 −0internal/mail/provisioner.go+77 −0internal/mail/smtppass.go+43 −0internal/mail/smtppass_test.go+55 −0internal/mail/walk.go+1169 −0internal/mail/walk_domain_test.go+372 −0internal/mail/walk_domainclaim_test.go+624 −0internal/mail/walk_enable_test.go+482 −0internal/mail/walk_grant_test.go+86 −0internal/mail/walk_lifecycle_test.go+539 −0internal/mail/walk_verify_test.go+129 −0internal/objstore/contract_test.go+6 −5internal/provision/provision.go+37 −0internal/provision/provision_test.go+57 −1internal/provision/reconcile.go+290 −13internal/provision/reconcile_test.go+375 −0internal/registry/registry.go+134 −7internal/registry/registry_test.go+146 −0internal/registry/timers.go+216 −0internal/registry/timers_test.go+251 −0internal/release/adopt.go+222 −32internal/release/adopt_test.go+476 −0internal/release/bake.go+266 −0internal/release/bake_test.go+333 −0internal/release/pipeline.go+356 −0internal/release/pipeline_test.go+234 −0internal/release/release.go+24 −2internal/schedule/control.go+171 −0internal/schedule/control_test.go+195 −0internal/schedule/converge.go+334 −0internal/schedule/converge_test.go+543 −0internal/schedule/cron.go+169 −0internal/schedule/cron_test.go+85 −0internal/schedule/declaration.go+303 −0internal/schedule/declaration_test.go+181 −0internal/schedule/envfile.go+32 −0internal/schedule/runner.go+469 −0internal/schedule/runner_test.go+674 −0internal/schedule/spec.go+134 −0internal/schedule/spec_test.go+86 −0internal/schedule/status.go+116 −0internal/schedule/status_test.go+37 −0internal/steering/deployment.go+73 −0internal/steering/deployment_test.go+151 −0internal/steering/route53.go+965 −0internal/steering/route53_test.go+1241 −0internal/steering/steering.go+364 −0internal/steering/steering_test.go+424 −0internal/usage/edge.go+16 −0internal/usage/edge_test.go+76 −0internal/usage/usage.go+7 −0mail_cli.go+1331 −0mail_cli_test.go+1110 −0main.go+16 −1pipeline.go+470 −0pipeline_test.go+549 −0schedule.go+367 −0schedule_test.go+402 −0
.amadan/README.mdLoading diff…
.amadan/ci.d/10-gateLoading diff…
.amadan/ci.d/20-cross@5Loading diff…
.amadan/ci.d/30-minio-contractLoading diff…
.github/workflows/ci.ymlLoading diff…
.gitignoreLoading diff…
AGENTS.mdLoading diff…
MakefileLoading diff…
apimode.goLoading diff…
apimode_test.goLoading diff…
auth_e2e_test.goLoading diff…
cli.goLoading diff…
cli_test.goLoading diff…
cmd/console/mailbackends_test.goLoading diff…
cmd/console/main.goLoading diff…
color.goLoading diff…
deploy.goLoading diff…
deploy_e2e_test.goLoading diff…
deploy_test.goLoading diff…
deploy_wizard_test.goLoading diff…
docs/site/cli.mdLoading diff…
docs/superpowers/plans/2026-08-16-woodstar-cutover-runbook.mdLoading diff…
docs/superpowers/plans/2026-08-19-tenant-email.mdLoading diff…
docs/superpowers/plans/2026-08-20-multi-region-writer-map-and-certs.mdLoading diff…
docs/superpowers/plans/2026-08-20-release-pipelines-v2.mdLoading diff…
docs/superpowers/plans/2026-08-22-multi-region-backhaul.mdLoading diff…
docs/superpowers/plans/2026-08-23-multi-region-steering.mdLoading diff…
docs/superpowers/plans/2026-08-23-record-channel-change.mdLoading diff…
docs/superpowers/plans/2026-08-23-scheduled-work.mdLoading diff…
docs/superpowers/plans/2026-08-23-static-platform-host.mdLoading diff…
docs/superpowers/specs/2026-08-03-cli-console-api-design.mdLoading diff…
docs/superpowers/specs/2026-08-19-tenant-email-design.mdLoading diff…
docs/superpowers/specs/2026-08-20-bucket-writer-audit.mdLoading diff…
docs/superpowers/specs/2026-08-20-multi-region-ingress-design.mdLoading diff…
docs/superpowers/specs/2026-08-20-release-pipelines-v2-design.mdLoading diff…
docs/superpowers/specs/2026-08-23-record-channel-change-design.mdLoading diff…
docs/superpowers/specs/2026-08-23-scheduled-work-design.mdLoading diff…
docs/superpowers/specs/2026-08-23-static-platform-host-design.mdLoading diff…
go.modLoading diff…
go.sumLoading diff…
infra/modules/README.mdLoading diff…
infra/modules/region-host/main.tfLoading diff…
infra/modules/region-host/variables.tfLoading diff…
instances_cli.goLoading diff…
instances_e2e_test.goLoading diff…
internal/activator/activator_test.goLoading diff…
internal/activator/admintoken.goLoading diff…
internal/activator/admintoken_test.goLoading diff…
internal/activator/backend_exec.goLoading diff…
internal/activator/logsink.goLoading diff…
internal/console/apicli.goLoading diff…
internal/console/apicli_test.goLoading diff…
internal/console/apidomains.goLoading diff…
internal/console/apiinstances.goLoading diff…
internal/console/apiinstances_test.goLoading diff…
internal/console/apimail.goLoading diff…
internal/console/apimail_test.goLoading diff…
internal/console/apipipeline.goLoading diff…
internal/console/apipipeline_test.goLoading diff…
internal/console/apischedule.goLoading diff…
internal/console/apischedule_test.goLoading diff…
internal/console/appsettings.goLoading diff…
internal/console/appsettings_test.goLoading diff…
internal/console/authcli.goLoading diff…
internal/console/authcli_test.goLoading diff…
internal/console/channelmove.goLoading diff…
internal/console/channelmove_test.goLoading diff…
internal/console/confirm.goLoading diff…
internal/console/confirm_test.goLoading diff…
internal/console/deletion_test.goLoading diff…
internal/console/flow.goLoading diff…
internal/console/ladder.goLoading diff…
internal/console/ladder_test.goLoading diff…
internal/console/mailcounts.goLoading diff…
internal/console/mailcounts_test.goLoading diff…
internal/console/ownership.goLoading diff…
internal/console/pending.goLoading diff…
internal/console/pending_test.goLoading diff…
internal/console/pendingflow_test.goLoading diff…
internal/console/pendinghandlers.goLoading diff…
internal/console/pipelinepage.goLoading diff…
internal/console/pipelinepage_test.goLoading diff…
internal/console/server.goLoading diff…
internal/console/server_test.goLoading diff…
internal/console/sesevents.goLoading diff…
internal/console/sesevents_test.goLoading diff…
internal/console/store.goLoading diff…
internal/console/svcprincipal.goLoading diff…
internal/console/svcroutes_test.goLoading 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/ladder.htmlLoading diff…
internal/console/templates/pending.htmlLoading diff…
internal/console/templates/pipeline.htmlLoading diff…
internal/console/view.goLoading diff…
internal/console/view_test.goLoading diff…
internal/dnsrec/dnsrec.goLoading diff…
internal/dnsrec/dnsrec_test.goLoading diff…
internal/dnsrec/route53.goLoading diff…
internal/dnsrec/route53_test.goLoading diff…
internal/edge/backhaul_e2e_test.goLoading diff…
internal/edge/certbackfill_test.goLoading diff…
internal/edge/certcache.goLoading diff…
internal/edge/certsync.goLoading diff…
internal/edge/certsync_e2e_test.goLoading diff…
internal/edge/certsync_test.goLoading diff…
internal/edge/edge.goLoading diff…
internal/edge/homemap.goLoading diff…
internal/edge/homemap_test.goLoading diff…
internal/edge/mesh.goLoading diff…
internal/edge/mesh_test.goLoading diff…
internal/edge/purge.goLoading diff…
internal/edge/purge_listen_windows.goLoading diff…
internal/edge/steeringprobe.goLoading diff…
internal/edge/steeringprobe_test.goLoading diff…
internal/edge/storedoor_test.goLoading diff…
internal/edge/usagemeter.goLoading diff…
internal/edge/usagemeter_test.goLoading diff…
internal/edge/wildcard.goLoading diff…
internal/edge/wildcard_parents_test.goLoading diff…
internal/edge/wildcard_test.goLoading diff…
internal/host/agent.goLoading diff…
internal/host/domains_duty_test.goLoading diff…
internal/host/edgesfile.goLoading diff…
internal/host/edgesfile_test.goLoading diff…
internal/host/housekeeper.goLoading diff…
internal/host/housekeeper_test.goLoading diff…
internal/host/schedule_wake_test.goLoading diff…
internal/host/schedule_wiring.goLoading diff…
internal/host/schedule_wiring_test.goLoading diff…
internal/host/snapshot_loop.goLoading diff…
internal/host/snapshot_loop_test.goLoading diff…
internal/host/statfs_unix.goLoading diff…
internal/host/steering_loop.goLoading diff…
internal/host/steering_loop_test.goLoading diff…
internal/mail/aws.goLoading diff…
internal/mail/aws_test.goLoading diff…
internal/mail/dnsrecords.goLoading diff…
internal/mail/dnsrecords_test.goLoading diff…
internal/mail/domain.goLoading diff…
internal/mail/domain_test.goLoading diff…
internal/mail/domainclaim.goLoading diff…
internal/mail/events.goLoading diff…
internal/mail/events_test.goLoading diff…
internal/mail/mail.goLoading diff…
internal/mail/mail_test.goLoading diff…
internal/mail/memprovisioner.goLoading diff…
internal/mail/memprovisioner_test.goLoading diff…
internal/mail/policy.goLoading diff…
internal/mail/policy_test.goLoading diff…
internal/mail/provisioner.goLoading diff…
internal/mail/smtppass.goLoading diff…
internal/mail/smtppass_test.goLoading diff…
internal/mail/walk.goLoading diff…
internal/mail/walk_domain_test.goLoading diff…
internal/mail/walk_domainclaim_test.goLoading diff…
internal/mail/walk_enable_test.goLoading diff…
internal/mail/walk_grant_test.goLoading diff…
internal/mail/walk_lifecycle_test.goLoading diff…
internal/mail/walk_verify_test.goLoading diff…
internal/objstore/contract_test.goLoading diff…
internal/provision/provision.goLoading diff…
internal/provision/provision_test.goLoading diff…
internal/provision/reconcile.goLoading diff…
internal/provision/reconcile_test.goLoading diff…
internal/registry/registry.goLoading diff…
internal/registry/registry_test.goLoading diff…
internal/registry/timers.goLoading diff…
internal/registry/timers_test.goLoading diff…
internal/release/adopt.goLoading diff…
internal/release/adopt_test.goLoading diff…
internal/release/bake.goLoading diff…
internal/release/bake_test.goLoading diff…
internal/release/pipeline.goLoading diff…
internal/release/pipeline_test.goLoading diff…
internal/release/release.goLoading diff…
internal/schedule/control.goLoading diff…
internal/schedule/control_test.goLoading diff…
internal/schedule/converge.goLoading diff…
internal/schedule/converge_test.goLoading diff…
internal/schedule/cron.goLoading diff…
internal/schedule/cron_test.goLoading diff…
internal/schedule/declaration.goLoading diff…
internal/schedule/declaration_test.goLoading diff…
internal/schedule/envfile.goLoading diff…
internal/schedule/runner.goLoading diff…
internal/schedule/runner_test.goLoading diff…
internal/schedule/spec.goLoading diff…
internal/schedule/spec_test.goLoading diff…
internal/schedule/status.goLoading diff…
internal/schedule/status_test.goLoading diff…
internal/steering/deployment.goLoading diff…
internal/steering/deployment_test.goLoading diff…
internal/steering/route53.goLoading diff…
internal/steering/route53_test.goLoading diff…
internal/steering/steering.goLoading diff…
internal/steering/steering_test.goLoading diff…
internal/usage/edge.goLoading diff…
internal/usage/edge_test.goLoading diff…
internal/usage/usage.goLoading diff…
mail_cli.goLoading diff…
mail_cli_test.goLoading diff…
main.goLoading diff…
pipeline.goLoading diff…
pipeline_test.goLoading diff…
schedule.goLoading diff…
schedule_test.goLoading diff…