carlos / platform Public

merge: origin/main — unify subprocess isolation into carlosTestEnv

Main's carlosTestEnv (CARLOS_CREDENTIALS masking, from the 40-account
production incident) meets this branch's HOME/CARLOS_CONSOLE/cmd.Dir
isolation (the binary now reads ~/.carlos/config and walks cwd for
.carlos/config). The helper now masks all three vars; cmd.Dir stays
per-site. CLAUDE.md's rule widened to match.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KxXEWoRXU8WVTXjTJypuJ5
Paul Campbell 4da328657d585fe68f67cf8d4261b68ce6bd964e parent e6956d5parent 088358d
48 files changed, +7103 −348
  • CLAUDE.md +6 −0
  • accounts.go +133 −47
  • accounts_resolve_test.go +115 −0
  • apimode.go +52 −21
  • apimode_test.go +87 −42
  • appconfig_cli.go +8 −8
  • auth_e2e_test.go +74 −6
  • cli.go +80 −53
  • docs/superpowers/plans/2026-08-04-account-slugs.md +916 −0
  • docs/superpowers/plans/2026-08-04-console-bake-controls.md +1761 −0
  • docs/superpowers/specs/2026-08-04-account-slugs-design.md +187 −0
  • docs/superpowers/specs/2026-08-04-console-bake-controls-design.md +277 −0
  • e2e_test.go +239 −59
  • internal/console/apicli.go +36 −30
  • internal/console/apicli_test.go +83 −11
  • internal/console/authcli.go +5 −2
  • internal/console/authcli_test.go +8 −2
  • internal/console/authowner_test.go +1 −1
  • internal/console/bakecontrols_test.go +354 −0
  • internal/console/ladder.go +5 −0
  • internal/console/ladder_test.go +206 −0
  • internal/console/resolve.go +47 −0
  • internal/console/resolve_test.go +92 −0
  • internal/console/server.go +237 −22
  • internal/console/server_account_test.go +208 −8
  • internal/console/server_test.go +38 −8
  • internal/console/store.go +4 −0
  • internal/console/templates/app.html +1 −1
  • internal/console/templates/apps.html +1 −1
  • internal/console/templates/ladder.html +65 −1
  • internal/console/templates/layout.html +2 −2
  • internal/console/templates/newaccount.html +8 −6
  • internal/console/templates/picker.html +22 −0
  • internal/console/view.go +91 −0
  • internal/console/view_test.go +8 −1
  • internal/domains/slugname.go +16 −0
  • internal/domains/slugname_test.go +23 −0
  • internal/domains/sqid.go +36 −0
  • internal/domains/sqid_test.go +56 −0
  • internal/release/adopt.go +109 −5
  • internal/release/adopt_test.go +320 −0
  • internal/release/bake.go +178 −5
  • internal/release/bake_test.go +251 −0
  • internal/release/production.go +177 −0
  • internal/release/production_test.go +240 −0
  • internal/release/release.go +69 −2
  • internal/release/release_test.go +143 −0
  • scopedkeys_e2e_test.go +28 −4
CLAUDE.md

Loading diff…

accounts.go

Loading diff…

accounts_resolve_test.go

Loading diff…

apimode.go

Loading diff…

apimode_test.go

Loading diff…

appconfig_cli.go

Loading diff…

auth_e2e_test.go

Loading diff…

cli.go

Loading diff…

docs/superpowers/plans/2026-08-04-account-slugs.md

Loading diff…

docs/superpowers/plans/2026-08-04-console-bake-controls.md

Loading diff…

docs/superpowers/specs/2026-08-04-account-slugs-design.md

Loading diff…

docs/superpowers/specs/2026-08-04-console-bake-controls-design.md

Loading diff…

e2e_test.go

Loading diff…

internal/console/apicli.go

Loading diff…

internal/console/apicli_test.go

Loading diff…

internal/console/authcli.go

Loading diff…

internal/console/authcli_test.go

Loading diff…

internal/console/authowner_test.go

Loading diff…

internal/console/bakecontrols_test.go

Loading diff…

internal/console/ladder.go

Loading diff…

internal/console/ladder_test.go

Loading diff…

internal/console/resolve.go

Loading diff…

internal/console/resolve_test.go

Loading diff…

internal/console/server.go

Loading diff…

internal/console/server_account_test.go

Loading diff…

internal/console/server_test.go

Loading diff…

internal/console/store.go

Loading diff…

internal/console/templates/app.html

Loading diff…

internal/console/templates/apps.html

Loading diff…

internal/console/templates/ladder.html

Loading diff…

internal/console/templates/layout.html

Loading diff…

internal/console/templates/newaccount.html

Loading diff…

internal/console/templates/picker.html

Loading diff…

internal/console/view.go

Loading diff…

internal/console/view_test.go

Loading diff…

internal/domains/slugname.go

Loading diff…

internal/domains/slugname_test.go

Loading diff…

internal/domains/sqid.go

Loading diff…

internal/domains/sqid_test.go

Loading diff…

internal/release/adopt.go

Loading diff…

internal/release/adopt_test.go

Loading diff…

internal/release/bake.go

Loading diff…

internal/release/bake_test.go

Loading diff…

internal/release/production.go

Loading diff…

internal/release/production_test.go

Loading diff…

internal/release/release.go

Loading diff…

internal/release/release_test.go

Loading diff…

scopedkeys_e2e_test.go

Loading diff…