# Which backlog verbs does the external tracker backend refuse or mark?
# Every registered backlog verb is classified exactly ONCE, here, against the
# LIVE registry (never a frozen count): tracker-owned verbs wrap their
# registered callback with the shared external refusal BEFORE any graph
# read/write, and footnote-owned verbs carry the read-side marker the
# consumer census pins (scripts/diagnostics/tracker-consumers.py --verbs).
# A verb missing from both main sections fails the import, and a listed verb
# the registry no longer carries fails it too (no tombstones, no renames
# smuggled past the classification). Misclassifying a read as tracker-owned
# only refuses it externally; misclassifying a mutation as footnote-owned is
# the dangerous direction, so unsure verbs sit tracker-owned.

[tracker]
# node lifecycle + creation (add, idea and the new word answer natively;
# intake and decompose ride their wheel forwards to the native door)
intake
decompose
note
supersede
# board and queue state
# stamps contained_in + parent under the lock
contain
queue
unqueue
# graph-state read: under an external backend the local graph is not
# the store, so the read must refuse with the rest
# orchestration that stamps nodes
reconcile-findings
lane-fill
# join spawns workers into a held worktree; the joiners, not join,
# write task rows ()
# footnote-owned DATA with a graph-resident write path (refused until the
# write moves to the sidecar seam)
# task rows + task claims write graph state (list materializes rows)

[footnote]
# seam reads / renders
get
next
worked
queued
provenance
undispatched
# replays the post-publish views after a native (mux) store write;
# renders only, never a graph write
# completion works on any backend by design (task 4.1)
done
# footnote-owned sidecar files, no graph write
# the triage route forwards at the native door; every action reads or
# applies through the classified engine
triage

[no-grain]
# Tracker-owned verbs whose refusal a caller must read as "no grain here",
# not as a stop. Under a non-graph backend there are no task rows at all, so
# a wave has nothing to guard and dispatches exactly as it did before.
