feat(gatorwalk-factory): parent, blocked-by, related and duplicate relations in every tracker (swamp-club #2796) #403
Loading…
Reference in a new issue
No description provided.
Delete branch "cue/2796-gatorwalk-factory-parent"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fixes swamp-club #2796.
What
gatorwalk-factory trackers gain issue relations:
parent_of,blocked_by,related_toandduplicate_of.Contract:
relate(from, type, to)andunrelate(...)on every adapter. A fetched ticket'srelationseach come with a direction. Both calls can be repeated safely: already related, or already absent, writes nothing.Shared rules (
_lib/tracker/core/relations.ts): the Lab's rules are checked before every write, so all three trackers refuse the same relations:A missing ticket at either end is
not_found. A relation counts as existing when either ticket shows it.Methods: the three tracker models get
relateandunrelate, recorded in the delivery ledger. The key names the source, type and target, so one journal version can relate several tickets (for breakdown later).publishis unchanged.Built-in tracker: a relation is kept on both tickets' records. Finishing a half-written relation runs the rules again.
Lab: the relationship calls from issue-lifecycle's root client are ported into gatorwalk's copy:
unrelatedeletes by relationship id, and the empty 204 reply is accepted.authforblocked_byand for relations on another user's issues.Linear:
parent_ofuses the child'sparentId.blocked_byis Linear'sblocksread the other way,duplicate_ofisduplicateandrelated_toisrelated. Linear enforces none of the rules itself, so the fake doesn't either; that shows the shared check is what refuses.Conformance: the suite covers relate, unrelate, read-back on both ends, every refusal,
not_foundand the ledger, for all three backends against their fakes.Docs:
Also in this PR
scripts/build_attestation.tsnow ignoressensitiveFormatandwrittenReferencesat the top level of an evaluated workflow. The current swamp CLI writes them into every evaluated workflow, so every run was being refused. The fix is ported from swamp's own fix (swamp-club#2815). The same keys anywhere below the top level, and any other unexpected top-level key, are still refused.Verification
413d4c8dand verify-reviews248160aeboth passed ondb96806089(13/14 steps, idempotency skipped).2314d32cis posted.Known low-severity notes from the reviews, not addressed here:
relatedlink made from the other ticket isn't detected, so relating the other way adds a second link.🤖 Generated with Claude Code