1.7 KiB
Cross-project filing (file-don't-fix)
When work surfaces that belongs to a DIFFERENT project than the one this session is working in, do not edit that project — file the work on ITS tracker and continue. The owning project's own session picks it up with full context.
Finding the target's tracker
Query the global project index (derived from every config-write, at
~/.cc-os/projects.json):
os-backlog projects # full index as JSON
os-backlog projects <substring> # filter by project name
Each row: canonical repo path -> {name, tracker, remote, updated_at}. If the target
project has no row, it hasn't been routed yet — tell the user rather than guessing.
Filing mechanics by tracker kind
forgejo:<owner>/<repo>—tea issues create --repo <owner>/<repo> --title "..." --description "..."github:<owner>/<repo>—gh issue create --repo <owner>/<repo> --title "..." --body "..."planka:<board>(planka-only targets) —os-backlog card-add --board <board> --title "..." [--description "..."]
Routing inside the target project still follows ITS boundary rule (ADR-0033: Planka is state, git issues are specs) — a durable spec goes to the git-issue tracker even if the project also has a board.
Discoverer block (append verbatim to the issue/card description)
--------
**Discoverer:** <filing repo or path>, session <claude-code-session-id>, <YYYY-MM-DD>. <one-line motivation>
Session id source: the SessionStart hook receives it as the session_id field of its
stdin JSON; a live session can also find it in its transcript filename. If it is
genuinely unavailable, write session id unavailable — never fabricate one.