ident
All repositories: gitoria
3.7 KB
# Mission 005 (old 009) — ident: UUID keys and storage/mpackdb/ (ticket ident.worldapi.org #10, formerly #39)One-shot worker. The architect (Claude Code on Byrodin) verifies your report, then the creator tests.## Read first1. Ticket: `GET http://100.77.141.84:8350/api/tickets/39` (old number; read only).2. `loreana:/media/STORAGE/projects/ident.worldapi.org/CONCEPT.md`, `README.md`, `STATUS.md`.3. `/CONTAINERS/projects/antcolony/README.md` — "Conventions for all apps", "Lessons learned".4. The same migration done for tickets: `loreana:/media/STORAGE/projects/tickets.worldapi.org/missions/004-tickets-numbers-uuid.md`and `loreana:/media/STORAGE/projects/tickets.worldapi.org` (`tools/migrate-008.hl`, README "migration",`.scratch/deploy-008.sh`) — reuse its approach.## Hybriel (standard block)Read `/CONTAINERS/projects/antcolony/docs/hybriel-for-app-workers.md` first — which docs to trust,known pitfalls with workarounds (**#40: opening an mpackdb table rewrites its files — only ever openCOPIES**), the conventions, and the open hybriel tickets. Report new Hybriel findings under"Hybriel issues"; do not edit that guide.## Scope1. Every ident table (accounts, identities, otp, sends, apps, connections, requests, grants, and anyother) gets `primaryKey = '@id'`; files move to `storage/mpackdb/`. Nothing may rely on key order(e.g. "default identity = oldest" must use a stored `created` time).2. **What apps already hold must not change**: API keys, app secrets (hashes), and the per-app identityids handed out by the exchange (`connections.appIdentity`) stay byte-identical. The creator'sregistered apps and the test app (key/secret in `testapp/storage/`, its users keyed by those ids)must keep working without re-registering.3. **Sessions**: `.sessions/*` hold `user: {id: <old numeric account id>}`. Migrate them to the newaccount ids so the creator stays signed in (rehearse on a copy). If that is not safely possible,invalidate them and say so — the creator then logs in again (real mail).4. Selector pick ids may change (they are derived per request); say whether they do.5. One-off, idempotent migration tool, rehearsed twice on a copy; old tables kept as backup(not deleted). Before/after comparison of all accounts, identities, apps, connections.## Mail — IMPORTANT (unchanged)The dev server on :8351 sends **real mail**. Never trigger an OTP on :8351. Gates use their ownservers with `IDENT_MAIL_SINK`. **Do not read, print, copy or edit any `.env`.**## DeployDevelop in `.scratch/dev`. Back up `storage/`, `.sessions/`, `testapp/storage/`. Stop only the PIDs in`server.pid` and `testapp/testapp.pid`; migrate from COPIES; restart both; check 200 on :8351 `/`,`/apps`, `/selector.js` and :8354 `/` without logging in. Verify the migrated store on a COPY.## Rules- No git. Don't touch other project folders (read tickets only). Only kill your own PIDs or the namedpid files. Clean up headless Chromes (`--disable-gpu`). Scratch in `.scratch/` of ident (not thearchitect's scratchpad on Byrodin).- Do NOT POST to the live tickets server (:8350).- If any action is refused by the permission system, don't retry or work around it; report it.- A test is the whole process: all three gates (`tests/browser.mjs`, `tests/apps.mjs`,`tests/selector.mjs`) green on the new store, plus a migration fixture (old-format store → migrate →an app's stored id still exchanges to the same identity; a migrated session is still signed in).- Update `README.md` 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
- 74235815ident mission 009 (4/4): docs (README files map + same-output test, STATUS, LOG), report, tests/letcount.py + realdata-baseline/comparemre
- fe183516ident mission 009 (3/4): let only where reassigned — 293 never-reassigned lets are plain declarations; kept: reassigned, loop bodies, names of a file member, a name declared twice in one function; same outputmre
- d2e7f91bident mission 009 (2/4): one lib file per topic (login, accounts, identities, apps, invites, selector, notify + helpers, util), function routes as thin wrappers in lib/api.hl, project.hl = the map; same outputmre
- 91017164ident mission 009 (1/4): file moves — the root .hl files into lib/ (api.hl → lib/api-helpers.hl), styles.hl → components/styles.hl; imports adjusted, no other changemre
- 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