ident
All repositories: gitoria
4.9 KB
# Mission 003 (old 006) — ident 2/6: apps and login button (ticket #25)One-shot worker. The architect (Claude Code on Byrodin) verifies your report, then the creator tests.## Read first — in this order1. **`loreana:/media/STORAGE/projects/ident.worldapi.org/CONCEPT.md`** — the creator's concept. Sourceof truth. Do not add features it does not describe; where it is silent, make the smallest choiceand list it under "Questions for the creator".2. The app's `README.md` and `STATUS.md` (piece 1, mission 002 (old 005), confirmed by the creator).Note `.scratch/removed-mission003/`: the old redirect + one-time-code exchange from mission 001 (old 003) —reuse its mechanics where they fit the concept, not its data model.3. `/CONTAINERS/projects/antcolony/README.md` (section "Lessons learned").4. Ticket: `GET http://100.77.141.84:8350/api/tickets/25`.## Hybriel (standard block)Read `/CONTAINERS/projects/antcolony/docs/hybriel-for-app-workers.md` first — it lists which docs totrust, the known pitfalls with workarounds (note #31: forged face sessions), and the open hybrieltickets. Report new Hybriel findings under "Hybriel issues"; do not edit that guide.## Where- Host Loreana (`ssh loreana`, fish login shell → `bash -c '…'` or script files).- App: `/media/STORAGE/projects/ident.worldapi.org`, dev port **8351**. Hybriel repo READ ONLY.## Scope (piece 2 of 6 only)1. **Apps**: any signed-in ident user can register apps in ident (name + the origin(s) it runs on,used to validate return URLs). Each app gets a **public API key** and a **secret** (shown once orre-viewable — your choice, list it). The user sees and manages their apps (list, edit, regeneratesecret, delete).2. **One identity id per app**: when an identity logs in to an app for the first time, ident createsthe connection with a new, app-specific identity id (not derivable from other apps' ids) andstores when it was created ("when they registered in it" — needed later for the per-app page).3. **Login button flow**: app sends the browser to ident with its API key and a return URL (returnorigin must be one of the app's registered origins, else an error page and no redirect). Notsigned in → ident login first. Signed in → the user chooses one of their identities (with only oneidentity: still show which one is used, one click). Then ident redirects back with a one-time code(short-lived, single use).4. **Exchange**: the app's server posts the code with its API key + secret and gets back **only theapp-specific identity id** — no email, no names (concept: apps ask for extra data themselves).Wrong secret, other app's code, reused/expired code → 400/401.5. A **minimal test app** (separate tiny hybriel app in `testapp/`, own port) that registers as an appand proves the whole flow, incl. that a second app gets a different id for the same identity.**Out of scope**: selector (#26), notifications (#27+), client-only apps.## Mail — IMPORTANTThe dev server on :8351 now sends **real mail** (SMTP via mail.byrod.in, set by the creator).- **Never trigger an OTP on the :8351 dev server.** Do not run `tests/dev-smoke.mjs` against it.- Your gate starts its own servers with `IDENT_MAIL_SINK` set (as the current gate does).- **Do not read, print, copy or edit `.env`** (it holds the SMTP password). If you need other settings,pass them as environment variables to your own test servers.- At the end restart the dev server (kill only the PID in `server.pid`, `setsid nohup ./bin/hybrielproject.hl >> server.log`, update `server.pid`) and check it answers 200 on `/` — without logging in.Leave your test app running on its port so the creator can try the flow; report its URL/PID.## DataThe dev store holds the creator's real account now. Back up `storage/` to `.scratch/storage-backup-<ts>/`before the restart; migrate, never wipe. After the restart verify (read-only, e.g. with a small hybrielscript against the store copy) that the account and its identities are still there.## Rules- No git. Don't touch other project folders. Only kill your own PIDs or the ones in ident's pid files.Clean up headless Chromes (`--disable-gpu`). Scratch in `.scratch/`.- Do NOT POST to the live tickets server (:8350).- A test is the whole process: real headless browser drives register app → login button → identlogin → choose identity → back → exchange → test app shows the id; plus negatives (foreign origin,wrong secret, reused/expired code, other app's code, face-session forging per #31).- Strict API: unknown/missing fields → 400 naming the field; invalid JSON → 400.- Screenshots at 390px and 1280px, look at them. Update `README.md` ("How apps use ident") and`STATUS.md`. Do NOT edit `CONCEPT.md`.## Report (final answer, this structure)```## Done## Verified (each: command run + observed output)## Not verified / open## Hybriel issues (repro, observed, expected)## Questions for the creator## Running (URL, PID, log path)```
Branches
- mainmain branch
Latest commits
- f8bdcbc2ident: Hybriel master 06617221 (plugin allocators 3a781359 + 413f60e4, mpackdb 2cb7ae5e, http1 773de63e); all gates greenmre
- ff78726cident: Hybriel master 190aa11d (fc838894 GC correctness, #127, #126 closure scopes); gates all greenmre
- a3a7d21aident: Hybriel master 8efba065 (#126 GC by bytes, #48 lambda params copy); session-writing lambdas take &sessionmre
- 98226b41antcolony#40: mission references point to the moved missionsmre
- ff805b9aantcolony#40: history (LOG.md), worker briefs (missions/) and reports moved here from antcolony, numbered per project; old numbers in antcolony docs/mission-map.mdmre
- 51a7bcdfident: Hybriel master 73267707 (#122); /code uses the new page() signature; pending address passed as parameter; once-checksmre
- 836f644fident#24: installable app (manifest, service worker, data-free offline /start), own iconmre
- 8bebbbf2deploy.sh: back up live storage/.sessions/.env before every deploy (newest 5 kept)mre
- cc063ea2deploy.sh: never send .git or .gitignore to Byrodinmre
- 81b15b7bState of 2026-09-27, before the move to gitoriamre