gitoriaLog in with ident

tickets

All repositories: gitoria

ReadmeCodePull requestsReleasesTicketsSettings
Commite9d5c618e9d5c618mission 010 (code order) 2/4: one lib/ file per topic — store.hl split into projects / tickets (+ relations) / events / tickets-helpers, util.hl shared helpers (env, storage dir, URLs, sorts, Vienna time), the function routes out of project.hl into lib/api.hl (thin; auth/filters/Accept in api-helpers.hl), invite + member-removal logic out of the faces/routes into invites.hl / tickets.hl; project.hl is the map. /login/callback gets req + the session store by reference. gate 249/0, connect 60/0, real-data reads identicalmree9d5c618/missions/001-tickets-mvp.md

4.5 KB

  1. # Mission 001 — tickets.worldapi.org MVP (ticket 0001)
  2. You are a one-shot worker. The architect session (Claude Code on Byrodin) wrote this brief and
  3. will verify your report. Read first: `/CONTAINERS/projects/antcolony/README.md`, `STATUS.md`,
  4. `/CONTAINERS/projects/antcolony/tickets/0001-tickets-app.md`.
  5. ## Where
  6. - Host: **Loreana** (`ssh loreana`, user mre; login shell is fish → always `ssh loreana "bash -c '…'"`,
  7. or write scripts to a file and run them with bash).
  8. - App folder (new, you create it): `/media/STORAGE/projects/tickets.worldapi.org`
  9. - Hybriel repo (READ ONLY for you): `/media/STORAGE/projects/hybriel`. Language: `SPEC.md`,
  10. web framework: `COMPONENTS.md` + `plugins/webex/`. Reference app: `projects/demo-social-network`
  11. (read its README, project.hl, store.hl, components, tests/browser.mjs).
  12. - Binary: `native/zig-out/bin/hybriel` (built 2026-09-19 22:46, repo HEAD e565176b). **Vendor** it:
  13. copy the binary + the plugins it needs into the app folder (`bin/`, `plugins/`), like
  14. `/CONTAINERS/projects/landscape.ai.einicher.net` does on Byrodin. Record the source commit and
  15. that the hybriel working tree had uncommitted plugin .so files at copy time.
  16. - Dev port: **8350** (checked free on 2026-09-23). Bind 0.0.0.0 so it is reachable on the LAN/tailnet.
  17. ## Scope (MVP — keep it small)
  18. 1. Data: projects, tickets (`id`, `project`, `subject`, `summary`, `state`, created/updated),
  19. and an append-only event history per ticket (created, comment, state change). Comments are events.
  20. States: `open`, `in progress`, `awaiting creator`, `confirmed`, `rejected`, `on hold`.
  21. No users/login yet (ident comes later) — but keep an `author` field on events (free string for now).
  22. 2. Web UI (hl:webex, SSR + live push like the social app):
  23. - `/` — list of tickets, filter by project and state
  24. - `/tickets/:id` — ticket with its event history, comment form, state change
  25. - `/inbox` — all tickets in state `awaiting creator`, across projects
  26. - Live: a new comment/state change appears in other open browsers without reload.
  27. 3. JSON API for the future scheduler/CLI: list/get tickets, create ticket, add comment, change state.
  28. 4. Import: a command that imports the ticket files in `/CONTAINERS/projects/antcolony/tickets/*.md`
  29. (on Byrodin — copy them over with scp first). Format: `project:` and `subject:` header lines,
  30. blank line, summary. Import must be idempotent (re-running does not duplicate).
  31. 5. Styles: dark palette from `/CONTAINERS/projects/layouts.worldapi.org/css/foundation/tokens.css`
  32. (on Byrodin), with **`--color-accent: #c586c0`** (purple) and `--color-danger: #f44747`.
  33. Markup/CSS rules: `/CONTAINERS/projects/layouts.worldapi.org/docs/conventions.md` (domain tags,
  34. mobile first, no div soup, tabs). Must work on a phone width (390px) and desktop.
  35. Do NOT edit files on Byrodin; only read them.
  36. Out of scope: login, deploy to Byrodin, Docker, the scheduler.
  37. ## Rules
  38. - **No git** anywhere. Do not touch the hybriel repo (read only). Do not touch other projects.
  39. - Never kill processes by name pattern; only PIDs you started. Clean up every headless Chrome and
  40. server you start (the machine is the creator's desktop; leaked Chromes caused an OOM there before).
  41. The GPU is currently wedged — run Chrome with `--disable-gpu`.
  42. - Scratch files go into the app folder's `.scratch/` or /tmp/antcolony-001/, not elsewhere.
  43. - **A test is the whole process**: start the server, drive it in a real headless browser
  44. (write `tests/browser.mjs` in the style of the social app's gate: CDP, two browsers for the live
  45. push check), and verify the outcome. `curl` 200 alone proves nothing. Also verify the page at
  46. 390px and 1280px widths (screenshots into `.scratch/`, look at them).
  47. - When you hit a Hybriel/webex bug: do NOT fix it in the hybriel repo. Work around it if possible,
  48. write it down precisely (minimal repro, file, observed vs expected) in your report under
  49. "Hybriel issues". These become hybriel tickets.
  50. - Leave the dev server RUNNING on port 8350 at the end (started with nohup/setsid, log in the app
  51. folder), so the architect can verify. Report its PID.
  52. ## Deliverables in the app folder
  53. - `README.md` — what it is, how to run, how to test (exact commands), how to import.
  54. - `STATUS.md` — current state, concise.
  55. - `tests/browser.mjs` — the gate.
  56. ## Report (your final answer — this exact structure)
  57. ```
  58. ## Done
  59. ## Verified (each: command run + observed output)
  60. ## Not verified / open
  61. ## Hybriel issues (repro, observed, expected)
  62. ## Questions for the creator
  63. ## Running (URL, PID, log path)
  64. ```

Branches

Latest commits

  • e9d5c618mission 010 (code order) 2/4: one lib/ file per topic — store.hl split into projects / tickets (+ relations) / events / tickets-helpers, util.hl shared helpers (env, storage dir, URLs, sorts, Vienna time), the function routes out of project.hl into lib/api.hl (thin; auth/filters/Accept in api-helpers.hl), invite + member-removal logic out of the faces/routes into invites.hl / tickets.hl; project.hl is the map. /login/callback gets req + the session store by reference. gate 249/0, connect 60/0, real-data reads identicalmre
  • 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