gitoriaLog in with ident

tickets

All repositories: gitoria

ReadmeCodePull requestsReleasesTicketsSettings
Commitd3db6139d3db6139tickets: Hybriel master 190aa11d (fc838894 GC correctness, #126 closure scopes, #127); gate 249/0, connect 60/0mred3db6139/missions/004-tickets-numbers-uuid.md

3.8 KB

  1. # Mission 004 (old 008) — tickets: per-project numbers, UUID keys, storage/mpackdb/ (ticket #38)
  2. One-shot worker. The architect (Claude Code on Byrodin) verifies your report, then the creator tests.
  3. ## Read first
  4. 1. Ticket #38 and its comment: `GET http://100.77.141.84:8350/api/tickets/38` (read only).
  5. 2. The app's `README.md` and `STATUS.md` in `loreana:/media/STORAGE/projects/tickets.worldapi.org`.
  6. 3. `/CONTAINERS/projects/antcolony/README.md` — sections "Conventions for all apps" and "Lessons learned".
  7. ## Hybriel (standard block)
  8. Read `/CONTAINERS/projects/antcolony/docs/hybriel-for-app-workers.md` first — which docs to trust,
  9. known pitfalls with workarounds (no list sort #6, no string ordering #7, forged face sessions #31,
  10. global face names #36), the conventions, and the open hybriel tickets. Report new Hybriel findings
  11. under "Hybriel issues"; do not edit that guide.
  12. ## Scope
  13. 1. **Ticket numbers per project**, starting at 1 (creator's ticket). URL of a ticket:
  14. `/projects/<project-slug>/<number>`. Choose the slug rule (e.g. the project name as is, since names
  15. are already restricted) and list it. The list, inbox, ticket page, live pushes and links all use it.
  16. 2. **Creator conventions**: every table's primary key becomes the mpackdb UUID (`primaryKey = '@id'`),
  17. no `*id`. DB files move to `storage/mpackdb/`. Ordering ("newest first", history order) comes from
  18. stored times / the per-project number, not from key order.
  19. 3. **Old global numbers stay resolvable**: many docs and comments reference tickets as `#1`…`#39`.
  20. Keep the old global number as a field on migrated tickets; `/tickets/<n>` redirects to the new URL;
  21. the API keeps answering for it (see 4). New tickets don't need a global number.
  22. 4. **API**: keep the existing endpoints working with the old global numbers during the transition
  23. (the architect's scripts use `/api/tickets/<n>`, `/api/tickets/<n>/comments`, `/api/tickets/<n>/state`,
  24. `POST /api/tickets`, `GET /api/tickets?project=&state=`) AND add the per-project form
  25. (`/api/projects/<slug>/tickets/<number>…`). Responses carry `project`, `number`, the new `href`, and
  26. the old number where it exists. Strict validation as before; `author` required.
  27. 5. **Migration of the LIVE data** (the creator uses it; 39 tickets with histories): a one-off, idempotent
  28. migration tool, rehearsed on a copy first. Per-project numbers by creation order. Nothing lost: every
  29. ticket, every event, every author/time. Keep the old db files as a backup (don't delete them).
  30. ## The running server
  31. LIVE data. Develop in `.scratch/dev`. Before deploying: back up `storage/` to
  32. `.scratch/storage-backup-<ts>/`, dump every ticket with its events via the API (GET) before and after,
  33. and compare: same count, same subjects/summaries/states/events. Restart only the PID in `server.pid`.
  34. ## Rules
  35. - No git. Don't touch other project folders (another worker is changing ident right now — leave
  36. `/media/STORAGE/projects/ident.worldapi.org` alone). Only kill your own PIDs or the one in `server.pid`.
  37. Clean up headless Chromes (`--disable-gpu`). Scratch in `.scratch/`.
  38. - Do NOT POST to the live server (:8350) — GETs only for verification. The architect files tickets.
  39. - If any action is refused by the permission system, don't retry or work around it; report it.
  40. - A test is the whole process: the gate (`node tests/browser.mjs`, extend it) in real browsers:
  41. per-project numbering, new URLs, old URL redirect, old-number API, live push with the new hrefs,
  42. migration run twice on a copy (idempotent). Screenshots at 390px and 1280px, look at them.
  43. - Update `README.md` (URLs, API, storage layout, migration) and `STATUS.md`.
  44. ## Report (final answer, this structure)
  45. ```
  46. ## Done
  47. ## Verified (each: command run + observed output)
  48. ## Not verified / open
  49. ## Hybriel issues (repro, observed, expected)
  50. ## Questions for the creator
  51. ## Running (URL, PID, log path)
  52. ```

Branches

Latest commits

  • d3db6139tickets: Hybriel master 190aa11d (fc838894 GC correctness, #126 closure scopes, #127); gate 249/0, connect 60/0mre
  • bce182e3tickets: Hybriel master 7eea0d32 (#126 memory, #48 lambda copies its argument); migrate.hl lambdas take &logmre
  • 4137be0fantcolony#40: mission references point to the moved missionsmre
  • 9bfba36aantcolony#40: history (LOG.md), worker briefs (missions/) and reports moved here from antcolony, numbered per project; old numbers in antcolony docs/mission-map.mdmre
  • c7bd2645tickets: Hybriel master 73267707 (#122 fixed); compactNow workaround removed (#110 covered)mre
  • 2ab91ee9tickets: gate checks rows appear once (session sync); re-vendor to ff51cf46 stopped on hybriel#122, stays 837fe120mre
  • e01c2b1dtickets#24: installable app (manifest, service worker, offline list), own icon; gate waits for the hello's pongmre
  • 752fbb7fdeploy.sh: back up live storage/.sessions/.env before every deploy (newest 5 kept)mre
  • 38bdd5e4deploy.sh: never send .git or .gitignore to Byrodinmre
  • f12fa1bcState of 2026-09-27, before the move to gitoriamre