Skip to content

fix(006,007): remove-gate confirm attributes, DELETE query encoding, self-serve install entry#60

Merged
bartekus merged 1 commit into
mainfrom
011-walk-fixes
Jul 22, 2026
Merged

fix(006,007): remove-gate confirm attributes, DELETE query encoding, self-serve install entry#60
bartekus merged 1 commit into
mainfrom
011-walk-fixes

Conversation

@bartekus

Copy link
Copy Markdown
Contributor

Three defects surfaced by spec 011's live acceptance walk (items 1, 2, 4, 6, 7 verified live at app.statecraft.ing this session):

  1. Fleet remove was gate-broken in production. The remove endpoint's gateOrDeny call never forwarded the typed confirmation, and governance-native's confirm-name-required check (gate.v1, active on action remove) denies when confirm_name/subject_name are absent. Verified live: an operator remove with a correct typed confirm got permission_denied: fleet remove requires confirm_name to match subject_name. The gate attributes now carry subject_name (app name) and confirm_name (caller's typed confirm).

  2. SPA DELETE calls were transport-broken. Encore decodes DELETE payloads from the query string; apiSend sent a JSON body ("unable to decode query string: missing field confirm" live on tenant delete). DELETE payloads now encode as query parameters, fixing tenant delete, fleet remove, and operator membership revoke from the UI.

  3. The §5.6 self-serve entry had no UI affordance. installUrlForUser existed in the API client but nothing rendered it; a tenant-less user only saw the manual create-tenant path. The dashboard empty state now leads with "Install the GitHub App" (GitHub's own picker selects the org) and the header offers "Install into a new org".

Dated pointer amendments in specs 006 and 007; regenerated .derived shards included. Local gates green: spec-spine compile/index/lint/index check/couple, backend + frontend typecheck and vitest.

After merge: image workflow dispatch + digest pin PR, then the walk's item 5 completes on the rolled deploy (fleet remove of the probe app, gated tenant delete with ledger verification).

…self-serve install entry

Three defects surfaced by spec 011's live acceptance walk:

- fleet remove never forwarded the typed confirmation into the gate's
  ActionContext, so governance-native's confirm-name-required check
  denied every remove in production; the gate attributes now echo
  subject_name and confirm_name alongside the existing endpoint guard.
- Encore decodes DELETE payloads from the query string; apiSend sent a
  JSON body, breaking tenant delete, fleet remove, and operator
  membership revoke from the SPA. DELETE payloads now encode as query
  parameters.
- The tenant-less install URL (011 §5.6) had no UI entry; the dashboard
  empty state now leads with Install the GitHub App and the header
  offers Install into a new org. GitHub's install picker does the org
  selection.

Paired with dated pointer amendments in specs 006 and 007; regenerated
.derived shards included.
@bartekus
bartekus merged commit 07a723f into main Jul 22, 2026
2 checks passed
@bartekus
bartekus deleted the 011-walk-fixes branch July 22, 2026 22:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant