- migration 0002: unique index on works (parent_id, position) - matchWork retries the whole transaction on a unique violation (3 attempts) - addMissingExternalIds uses ON CONFLICT DO NOTHING - ID matches only return shared works or the user's own; private works cannot carry external ids - adminMergeWorks requires shared works and repoints non-colliding children - draft is computed for the aliased work id Co-Authored-By: Claude Opus 5.5 <[email protected]>
1.4 KiB
1.4 KiB
TODO
Durable backlog. Agents append here instead of leaving TODO comments in source.
Small, specific, independently actionable. Remove only when actually done.
Now
- Choose a linter/formatter (e.g. Biome), then add
linttopackage.json,AGENTS.mdanddocs/PERMISSIONS.md. - Add CI on Gitea Actions: install, typecheck, and test on SQLite and Postgres. Add a guard that fails if
AGENTS.mdis over 150 lines.
Next
- Phase 2 and Phase 3 plans (spec §12).
Someday
Recurring
- Maintain
AGENTS.md:- Add a rule only in response to a real failure. When an agent repeatedly gets something wrong, that is a gap; add one line, ideally with a code example. Do not pre-empt hypothetical mistakes.
- Update in the same PR as the convention change. A stale rules file is worse than none, because it actively misleads.
- Prune quarterly. Delete rules whose convention has changed or whose mistake no longer occurs.
- Optional, cheap validation: run the same task twice in clean sessions, with and without the file, and compare steps and token use.
Known issues
- Matching: a shared parent resolved without external IDs or position (title/year reuse in
packages/core/src/matching.ts) has no unique key, so concurrent matches can create it twice. bun run typecheckfails with TS18003 until source files exist underapps/,packages/orplugins/.