Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion skills/implementing/references/spike-worker-protocol.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 "<title>" spike <P0..P3>
--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.
Expand Down
34 changes: 23 additions & 11 deletions skills/issue-tracker/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 "<function-or-file-name>"`).
Then triage the hits:
(`gh issue list --state open --limit 200 --search "<function-or-file-name>"`
— 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:
Comment on lines +334 to +336

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Add a real seam-search fallback for API boards

In an API-bound repo, these lines remove the only operation that discovers open tickets on the same seam and replace it with registration-time deduplication. That dedupe can reject the same defect, but a successful registration does not return different-defect tickets touching the same function, so the following relate and third-ticket branches have no hits to triage; the worker therefore cannot name seam-mates or detect the cluster that this policy is meant to prevent. Provide a binding-neutral search/list route, or otherwise preserve discovery before allowing API-mode registration.

Useful? React with 👍 / 👎.


- **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
Comment on lines +345 to +346

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Exclude spike tickets from the rewrite tripwire

When a large spike is decomposed into several narrower spikes on the same function, the newly required search on that decomposition path counts all of them as non-terminal and mandates an architect consolidation. Spikes explicitly deliver information rather than merged code, so parallel spike tickets cannot cause the silent rewrite collision used to justify this gate. Restrict the count to tickets capable of entering the implementation/write lane while retaining parked work tickets that can later resume.

Useful? React with 👍 / 👎.

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
Comment on lines +353 to +355

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Define an authorized route for member disposition

When this tripwire creates a consolidation ticket, its dispatched Architect cannot perform the promised disposition: skills/architecting/SKILL.md:154-161 permits transitions only on the Architect's own ticket and explicitly forbids changing other tickets' states. It can register replacement slices, but it cannot close or repurpose the existing member tickets, leaving those stale rewrites eligible to run after the consolidated implementation lands—the exact collision described below. Assign this disposition to an authorized actor or add a sanctioned mechanism that the consolidation workflow can actually execute.

Useful? React with 👍 / 👎.

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
Expand Down
7 changes: 6 additions & 1 deletion skills/reviewing-prs/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -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").
Comment on lines +327 to +330

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Route duplicate evidence through an API-authorized actor

For an API-dispatched reviewer, BOARD_RUN_TOKEN always wins credential selection and the server scopes that token to the run's own ticket, so this newly sanctioned comment on a different ticket is refused even if a seam-search route supplies the hit. In that context the reviewer can neither register the duplicate finding nor record its evidence, and the protocol provides no fallback. Route this write through an authorized principal or record an own-ticket proposal that an authorized reconciler can apply.

Useful? React with 👍 / 👎.

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,
Expand Down