diff --git a/skills/implementing/references/spike-worker-protocol.md b/skills/implementing/references/spike-worker-protocol.md
index 1bbbe3207f..1f719dd572 100644
--- a/skills/implementing/references/spike-worker-protocol.md
+++ b/skills/implementing/references/spike-worker-protocol.md
@@ -37,7 +37,9 @@ with your best guess at what was meant.
Scope check: the exploration must fit one session. A question too big forks
the same way implement decompose does — register narrower spikes
({{BOARD_SCRIPTS}}/board-register.sh "
" spike
---parent {{ISSUE_NUMBER}}, honest notes) and end your turn — the
+--parent {{ISSUE_NUMBER}}, honest notes; the ticket contract's
+pre-registration seam search runs before EVERY registration, this
+decomposition path included) and end your turn — the
registered children, not a half-answer, are this turn's deliverable.
VERDICT IS YOUR FIRST BOARD WRITE. Dispatch wrote nothing.
diff --git a/skills/issue-tracker/SKILL.md b/skills/issue-tracker/SKILL.md
index c246508f05..873f7cf464 100644
--- a/skills/issue-tracker/SKILL.md
+++ b/skills/issue-tracker/SKILL.md
@@ -329,22 +329,34 @@ SEAM: the identifiers your ticket touches (file paths, function/RPC
names, table names). Title-keyword search may not be enough — different
authors word the same work differently. GitHub issue search hits
bodies, so query each seam identifier
-(`gh issue list --state open --search ""`).
-Then triage the hits:
+(`gh issue list --state open --limit 200 --search ""`
+— the explicit `--limit` matters: the default caps at 30 and truncates
+silently). This search is a gh-binding route; an API-bound repo has no
+client search verb yet — rely on the server's registration-time dedupe
+until one lands (the arkho#7 route family). Then triage the hits:
- **Same defect or scope** → comment your evidence on the existing
ticket instead of registering a duplicate — parallel workers hit the
same base regressions blind.
- **Same seam, different defect** → register, but in the same breath
- `board-relate.sh` your new ticket to every open ticket on that seam.
-- **Cluster tripwire**: if your registration would put a THIRD open
- non-park ticket onto the same function or contract body, that seam
- has outgrown patch-wise work — parallel rewrites of one body revert
- each other silently (different files, zero git conflicts).
- Register your finding, then raise consolidation: a
- ticket born `ready-for-architect` that names every member and owns
- the unified contract, with the members related (and, where they are
- still undispatched, `--blocked-by` the consolidation ticket).
+ `board-relate.sh` your new ticket to every open ticket on that seam
+ (gh binding — board-relate.sh has no API route; there, name the
+ seam-mates in your ticket body instead and move on).
+- **Cluster tripwire**: if your registration would put a THIRD
+ non-terminal ticket onto the same function or contract body, that
+ seam has outgrown patch-wise work — parallel rewrites of one body
+ revert each other silently (different files, zero git conflicts).
+ Parks COUNT: a needs-human/needs-info rewrite resumes into its lane
+ without re-running this search; only `deferred` and closed tickets
+ are out of the race. Register your finding, then raise consolidation:
+ a ticket born `ready-for-architect` that names every member and owns
+ the unified contract, with the members related. Member disposition
+ belongs to the consolidation ticket itself — each member is re-cut as
+ a slice of the unified contract or closed with a reason. Do not reach
+ for `--blocked-by` on the existing members: re-cutting other tickets'
+ edges is not a worker's write, and a block merely defers the
+ collision — the moment the consolidation lands, the unblock sweep
+ frees the stale rewrites to overwrite it.
Whoever registers a ticket authors
its body AT REGISTER TIME — write the sections to a temp file and pass
diff --git a/skills/reviewing-prs/SKILL.md b/skills/reviewing-prs/SKILL.md
index 72aebd1002..1322623934 100644
--- a/skills/reviewing-prs/SKILL.md
+++ b/skills/reviewing-prs/SKILL.md
@@ -324,8 +324,13 @@ substance and route.
Birth classification applies: the default is `ready-for-implementer`;
a finding that is missing DESIGN (not just missing work) passes
`--state ready-for-architect`.
+ A seam-search hit that says the finding IS an existing open ticket:
+ comment your evidence on that ticket instead of registering — the one
+ sanctioned cross-ticket write in this protocol (an explicit exception
+ to "board writes target the primary ticket").
NEVER wave it. On a ticketless PR, post a structured PR comment
- describing the scope fork instead — board writes are skipped.
+ describing the scope fork instead — board writes are skipped, the
+ cross-ticket exception included.
- LOG — valid non-blocker: append a
structured comment to the standing tech-debt issue
({{BOARD_SCRIPTS}}/board-comment.sh {{TECH_DEBT_ISSUE}}) — finding,