forked from bots-garden/ori
| 🛟 Updated. | 1 | # 2026-09-18 — Ticket 0005 task format |
| 2 | ||
| 3 | ## Done | |
| 4 | ||
| 5 | `.tickets/issues/0005-create-a-native-ui-to-connect-the-webapp.yaml` tasks rewritten from a hand-made `text/done` shape to IssueSpec's task schema. Verified with IssueSpec's own parser (all 15 tickets parse). Ticket stays `open`: task 8 (launch the window with the GUI toolchain and confirm the iframe embed) is still open — see `summary.md` "Not yet established". | |
| 6 | ||
| 7 | ## How to validate a ticket file (recipe) | |
| 8 | ||
| 9 | ```bash | |
| 10 | cat > /tmp/v.mjs <<'EOF2' | |
| 11 | import { parseIssueDocument } from '/Users/k33g/CodeBerg/issuespec/src/core/yaml.ts'; | |
| 12 | import { readFileSync } from 'node:fs'; | |
| 13 | const f = process.argv[2]; try { const r = parseIssueDocument(readFileSync(f,'utf8'), f); console.log('OK', r.tasks.length, 'tasks'); } catch (e) { console.log('INVALID:', e.message); process.exitCode = 1; } | |
| 14 | EOF2 | |
| 15 | (cd ~/CodeBerg/issuespec && npx --no-install esbuild /tmp/v.mjs --bundle --platform=node --format=cjs --outfile=/tmp/v.cjs) | |
| 16 | for f in .tickets/issues/*.yaml; do printf '%s: ' "$f"; node /tmp/v.cjs "$f"; done | |
| 17 | ``` | |
| 18 | `--format=esm` fails ("Dynamic require of process") because of the `yaml` package; use cjs. | |
| 19 | ||
| 20 | ## Trap | |
| 21 | ||
| 22 | When closing a ticket's checklist by hand, copy the shape from a tool-written task (e.g. ticket 0001) — `priority` is always written (`none`), `closedAt` only while `state: closed`. Reference: `~/CodeBerg/issuespec/docs/en/reference/ticket-files.md` § Task. |