Heimdall/docs
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Meta Vens d989860163 Refresh classification: revoke only on a 400 invalid_grant; any other answer keeps the tokens
A grant verdict is read from a 400 body by exact code, never from a 401, a
5xx or a 2xx. A 2xx that is not an object with a non-empty string
access_token and no error is refused as provider_body_not_token_set, so a
malformed success keeps the tokens and surfaces as the typed 502 for every
provider, rotating or not. A refresh answer without expires_in stores the
expiry as unknown rather than keeping the already-due one; an unknown expiry
is never due, so the next resolve does not refresh again.

Pins Soul's three surviving mutants: substring code match, the dropped
expiry rule, and the snapshot refresh token on a non-rotating provider.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 12:34:17 +02:00
..
app-profiles OAuth start: the profile's role lists decide which provider a mode may use 2026-10-19 12:31:59 +02:00
architecture.md Docs and .env.example teach secrets as NAME_FILE credential files 2026-09-30 13:52:11 +02:00
eve-access-plugin.md Add Eve access plugin and private auth plane 2026-08-22 00:44:57 +02:00
implementation-plan.md Record Odin-discovered access deployment 2026-08-22 04:08:36 +02:00
service-contract.md Refresh classification: revoke only on a 400 invalid_grant; any other answer keeps the tokens 2026-10-19 12:34:17 +02:00
verse-service-contract.md Add Eve access plugin and private auth plane 2026-08-22 00:44:57 +02:00