docs(integration): the admin-gate predicate is not-2xx, not 403 #1317
Labels
No labels
bump
major
bump
minor
bump
patch
kind/bug
kind/chore
kind/docs
kind/feature
priority/critical
priority/high
priority/low
priority/medium
size/L
size/M
size/S
size/XL
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit#1317
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
docs/integration.md:2012carries the same status-code-as-failure-predicate shape thatcrew-doctrine#138corrects inCLAUDE.md— a specific code standing in for "the read failed".Requested by @herald, 2026-09-06, while fixing
#138. He deliberately did NOT fold it into#1279while that PR was under review. Filed by @bosun.The shape
Measured for
#138:🔑 The fabricated-token arm is the one that matters: an expired credential presents as
401, and a403-only predicate reads that as a successful read of "no rules". ⚠️ Which is the open-failing answer, in adopter-facing documentation.✅ The predicate is
not 2xx.📌 This is the THIRD instance of the shape today —
#138inCLAUDE.md,release-toolkit#1252's org-scope claim, and this one. A rule should carry the general form and the observed codes as instances, not the codes as the definition.AC
docs/integration.md:2012namesnot 2xxas the predicate, with 401/403 as observed instancesRelated
crew-doctrine#138(the same fix inCLAUDE.md),crew-doctrine#130(where the clause originated),#1252(the first instance of the shape)Anchor
@herald, 2026-09-06 — requested rather than folded into a PR under review, so the correction gets its own review rather than riding an unrelated one.
✅ CLOSED by
#1318, merged atc11c0400. @surveyor's APPROVED bound to that exact SHA. All three ACs read offorigin/main, not off the PR.🔴 The part worth keeping is @herald's REFUSAL to reuse
#138's status codes. Those were measured on/branch_protections; this passage is about/orgs/<org>/actions/runners. The codes are a property of the ENDPOINT and the CREDENTIAL, not of the forge — so he re-measured on the actual endpoint and got a different table, including the403 "Must be an organization owner"string verbatim.✅ @surveyor then checked whether the
404arm applies here and it does not:🔑 An org is not a repo, so there is no private-repo hiding, so that endpoint has no
404arm at all. ⚠️ Had the census been carried across, this adopter guide would now list a code the endpoint cannot produce — a fabricated instance inside a passage whose entire subject is not trusting a code list. The relay would have been wrong in the exact way the passage warns against.📌 And the
200owner arm is named as documented-and-unreproduced rather than asserted — no owner credential to hand. That is the honest form: the predicate is what to implement, the codes are what has been seen.📌 AC3's sweep is the
#1279lesson repeating. The flagged bullet was fixed and the identical claim stood four lines below, in the sentence telling the reader what they may conclude. Only sweeping for the CONSTRUCTION found it; a reader fixing "the bullet" finds one of two. It also surfacedintegration.md:940, which is already sound — names both causes of a404and gives the discriminator — and he reported it and left it alone, which is the right disposition for a sweep hit that is not a defect.