Skip to content

ci(auth): own products may only sign in via OrangeCat — enforced, not just written - #139

Open
catomean wants to merge 1 commit into
mainfrom
ci/own-products-sign-in-via-orangecat
Open

catomean wants to merge 1 commit into
mainfrom
ci/own-products-sign-in-via-orangecat

Conversation

@catomean

Copy link
Copy Markdown
Contributor

STACK.md decided on 2026-09-01 that our own products federate to OrangeCat and keep no users, passwords or reset flows. The rule lived in prose. Measured 2026-09-24 from each product's live /api/auth/providers:

product sign-in besides OrangeCat
loki email-password, github, google, local, user-password, x-1a
datacat credentials
evig credentials
petvity credentials, google
surf-your-life credentials, google
solon, heidi, substrata — (pass)

What it reads: the same public endpoint the origin audit already probes — so it judges what is deployed. No source parsing, no secret. Ownership from loki's /api/fleet/map (owner = org, live, not a demo, not OrangeCat itself). The first draft read apps.conf and could not see Loki — apps.conf omits the handcrafted services. Client apps are never judged.

Ratchet (own-product-signin.baseline): HELD rows print every run; a new provider fails even beside a baselined one; a baselined provider that's gone fails until its row is deleted.

Stated blind spot: non-next-auth products SKIP and say so (revamp-info, wild-spirit today).

Runs daily in nextauth-origin.yml (if: !cancelled(), so a red origin audit can't hide it); self-test also in ci.yml. 17 checks, no network, proved by mutation. check-workflows.sh: 25 workflows parse.

🤖 Generated with Claude Code

… just written

STACK.md decided on 2026-09-01 that our own products federate to
OrangeCat and keep no users, passwords or reset flows. The rule lived in
prose, and prose does not stop drift. Measured 2026-09-24 from each
product's live /api/auth/providers:

  loki            OrangeCat + email-password, github, google, local,
                  user-password, x-1a  (seven ways in)
  datacat         + credentials
  evig            + credentials
  petvity         + credentials, google
  surf-your-life  + credentials, google
  solon, heidi, substrata   OrangeCat only

Each extra path is a second identity for the same person, a second reset
flow to secure, and a second place for a sign-out to miss.

own-product-signin-audit.mjs reads the same public endpoint the origin
audit already probes, so it judges what is DEPLOYED — no source parsing,
no secret, no quota. Who counts as ours comes from loki's /api/fleet/map
(owner = org, live, not a demo, not OrangeCat itself). The first draft
read apps.conf and could not see Loki at all: apps.conf omits the
handcrafted services, which is the same reason product-identity-audit
moved to the map. Client apps are never judged — their users belong to
the client, and STACK.md gives them their own auth.

Today's deviations are a RATCHET (own-product-signin.baseline):
- HELD rows print on every run, never read as a pass;
- a NEW provider fails even beside a baselined one;
- a baselined provider that is gone fails until its row is deleted;
- a row for something no longer an own product fails too.

Non-next-auth products SKIP and say this check cannot see them (today:
revamp-info, wild-spirit) — a stated blind spot, not a pass. A 5xx SKIPs
here because nextauth-origin-audit already fails it; paging twice for one
fault teaches people to ignore one of the two.

Runs daily as two steps in nextauth-origin.yml (if: !cancelled(), so a
red origin audit cannot hide it); its self-test also runs in ci.yml.
The Telegram alert text now names both findings.

Self-test: 17 checks, no network. Proved by mutation — tolerating every
extra provider turns three of them red. check-workflows.sh: 25 workflows
parse, 105 run blocks are shell.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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