tickets
All repositories: gitoria
3.8 KB
# Mission 004 (old 008) — tickets: per-project numbers, UUID keys, storage/mpackdb/ (ticket #38)One-shot worker. The architect (Claude Code on Byrodin) verifies your report, then the creator tests.## Read first1. Ticket #38 and its comment: `GET http://100.77.141.84:8350/api/tickets/38` (read only).2. The app's `README.md` and `STATUS.md` in `loreana:/media/STORAGE/projects/tickets.worldapi.org`.3. `/CONTAINERS/projects/antcolony/README.md` — sections "Conventions for all apps" and "Lessons learned".## Hybriel (standard block)Read `/CONTAINERS/projects/antcolony/docs/hybriel-for-app-workers.md` first — which docs to trust,known pitfalls with workarounds (no list sort #6, no string ordering #7, forged face sessions #31,global face names #36), the conventions, and the open hybriel tickets. Report new Hybriel findingsunder "Hybriel issues"; do not edit that guide.## Scope1. **Ticket numbers per project**, starting at 1 (creator's ticket). URL of a ticket:`/projects/<project-slug>/<number>`. Choose the slug rule (e.g. the project name as is, since namesare already restricted) and list it. The list, inbox, ticket page, live pushes and links all use it.2. **Creator conventions**: every table's primary key becomes the mpackdb UUID (`primaryKey = '@id'`),no `*id`. DB files move to `storage/mpackdb/`. Ordering ("newest first", history order) comes fromstored times / the per-project number, not from key order.3. **Old global numbers stay resolvable**: many docs and comments reference tickets as `#1`…`#39`.Keep the old global number as a field on migrated tickets; `/tickets/<n>` redirects to the new URL;the API keeps answering for it (see 4). New tickets don't need a global number.4. **API**: keep the existing endpoints working with the old global numbers during the transition(the architect's scripts use `/api/tickets/<n>`, `/api/tickets/<n>/comments`, `/api/tickets/<n>/state`,`POST /api/tickets`, `GET /api/tickets?project=&state=`) AND add the per-project form(`/api/projects/<slug>/tickets/<number>…`). Responses carry `project`, `number`, the new `href`, andthe old number where it exists. Strict validation as before; `author` required.5. **Migration of the LIVE data** (the creator uses it; 39 tickets with histories): a one-off, idempotentmigration tool, rehearsed on a copy first. Per-project numbers by creation order. Nothing lost: everyticket, every event, every author/time. Keep the old db files as a backup (don't delete them).## The running serverLIVE data. Develop in `.scratch/dev`. Before deploying: back up `storage/` to`.scratch/storage-backup-<ts>/`, dump every ticket with its events via the API (GET) before and after,and compare: same count, same subjects/summaries/states/events. Restart only the PID in `server.pid`.## Rules- No git. Don't touch other project folders (another worker is changing ident right now — leave`/media/STORAGE/projects/ident.worldapi.org` alone). Only kill your own PIDs or the one in `server.pid`.Clean up headless Chromes (`--disable-gpu`). Scratch in `.scratch/`.- Do NOT POST to the live server (:8350) — GETs only for verification. The architect files tickets.- If any action is refused by the permission system, don't retry or work around it; report it.- A test is the whole process: the gate (`node tests/browser.mjs`, extend it) in real browsers:per-project numbering, new URLs, old URL redirect, old-number API, live push with the new hrefs,migration run twice on a copy (idempotent). Screenshots at 390px and 1280px, look at them.- Update `README.md` (URLs, API, storage layout, migration) and `STATUS.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
- 97e269b5mission 010 (code order) 1/4: .hl files out of the root — lib/ (store, users, connections, invites, migrate, markdown, mdview, import = ticketfile, util = localtime, jsoncheck, api-helpers = api), tools/import.hl, components/styles.hl; import paths only. gate 249/0, connect 60/0, real-data reads identicalmre
- 38f9d10ftickets: Hybriel master 06617221 (plugin allocators 3a781359 + 413f60e4, mpackdb 2cb7ae5e, http1 773de63e); gate 249/0, connect 60/0mre
- 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