fix(006,007): remove-gate confirm attributes, DELETE query encoding, self-serve install entry#60
Merged
Merged
Conversation
…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.
This was referenced Jul 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Three defects surfaced by spec 011's live acceptance walk (items 1, 2, 4, 6, 7 verified live at app.statecraft.ing this session):
Fleet remove was gate-broken in production. The
removeendpoint'sgateOrDenycall never forwarded the typed confirmation, and governance-native'sconfirm-name-requiredcheck (gate.v1, active on actionremove) denies whenconfirm_name/subject_nameare absent. Verified live: an operator remove with a correct typed confirm gotpermission_denied: fleet remove requires confirm_name to match subject_name. The gate attributes now carrysubject_name(app name) andconfirm_name(caller's typed confirm).SPA DELETE calls were transport-broken. Encore decodes DELETE payloads from the query string;
apiSendsent 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.The §5.6 self-serve entry had no UI affordance.
installUrlForUserexisted 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).