diff --git a/docs/pr-discussions/PR-3616-chore-bg-b-0502-launchd-plist-and-docs-for-backlog-ready-not.md b/docs/pr-discussions/PR-3616-chore-bg-b-0502-launchd-plist-and-docs-for-backlog-ready-not.md
new file mode 100644
index 000000000..70eaddf28
--- /dev/null
+++ b/docs/pr-discussions/PR-3616-chore-bg-b-0502-launchd-plist-and-docs-for-backlog-ready-not.md
@@ -0,0 +1,102 @@
+---
+pr_number: 3616
+title: "chore(bg): B-0502 launchd plist and docs for backlog-ready-notifier"
+author: "AceHack"
+state: "MERGED"
+created_at: "2026-05-15T22:58:14Z"
+merged_at: "2026-05-15T23:30:51Z"
+closed_at: "2026-05-15T23:30:51Z"
+head_ref: "feat/b0502-launchd-plist"
+base_ref: "main"
+archived_at: "2026-05-16T00:14:11Z"
+archive_tool: "tools/pr-preservation/archive-pr.ts"
+---
+
+# PR #3616: chore(bg): B-0502 launchd plist and docs for backlog-ready-notifier
+
+## PR description
+
+Implements backlog row **B-0502** (Slice 6 of B-0441). Wires up the launchd plist for the background service and updates the architecture documentation. Also updates the backlog row status tables to reflect that slices 3 and 5a have shipped.
+
+## Reviews
+
+### COMMENTED โ @copilot-pull-request-reviewer (2026-05-15T22:59:41Z)
+
+## Pull request overview
+
+Wires up slice 6 of B-0441 (launchd plist + AUTONOMOUS-LOOP.md update for the backlog-ready-notifier background service) and brings backlog row status tables in line with what has now shipped (slices 3, 5a, and 6).
+
+**Changes:**
+- Adjust the maintainer comment in the new `com.zeta.backlog-ready-notifier.plist` to drop a reference to a non-existent `install-launchd-services.sh` and replace with manual path-update instructions.
+- Update `tools/bg/README.md` "Current services" table to reflect newly-live slices for the backlog-ready notifier.
+- Mark B-0502 as shipped (acceptance criteria boxes + frontmatter) and update B-0441's slice-status table to reflect 5a and 6 shipped.
+
+### Reviewed changes
+
+Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.
+
+| File | Description |
+| ---- | ----------- |
+| `.gemini/launchd/com.zeta.backlog-ready-notifier.plist` | Replaces reference to a non-existent install script with manual maintenance instructions. |
+| `tools/bg/README.md` | Bumps backlog-ready-notifier slice-status entry. |
+| `docs/backlog/P1/B-0502-...md` | Flips status to shipped and ticks acceptance boxes. |
+| `docs/backlog/P1/B-0441-...md` | Marks slices 5a (B-0501) and 6 (B-0502) as shipped in the parent row. |
+
+### COMMENTED โ @chatgpt-codex-connector (2026-05-15T22:59:52Z)
+
+
+### ๐ก Codex Review
+
+Here are some automated review suggestions for this pull request.
+
+**Reviewed commit:** `76177bc375`
+
+
+ โน๏ธ About Codex in GitHub
+
+
+[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you
+- Open a pull request for review
+- Mark a draft as ready
+- Comment "@codex review".
+
+If Codex has suggestions, it will comment; otherwise it will react with ๐.
+
+
+Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
+
+
+
+### COMMENTED โ @AceHack (2026-05-15T23:28:31Z)
+
+_(no body)_
+
+### COMMENTED โ @AceHack (2026-05-15T23:28:32Z)
+
+_(no body)_
+
+## Review threads
+
+### Thread 1: tools/bg/README.md:32 (resolved)
+
+**@copilot-pull-request-reviewer** (2026-05-15T22:59:41Z):
+
+The slice status here reads "1+2+3+4+5+6 live", but per the B-0441 status table updated in this same PR, slice 5 for the backlog-ready-notifier is split: 5a (assignment-history dedup, B-0501) is shipped, but 5.2 (agent-side `work-assignment` subscriber handler, B-0460) is still โ open. The shorthand "5" here implies the whole slice is live, which contradicts B-0441 and the "What's still pending" section below (lines 88-92) that lists "Slice 5 for all three โ subscriber agents that react to bus envelopes" as pending. Consider writing this as `1+2+3+4+5a+6 live (5.2 pending B-0460)` to match B-0441's substrate-honest framing.
+
+**@AceHack** (2026-05-15T23:28:31Z):
+
+Fixed in 6ef1b491 โ line now reads `1+2+3+4+5a+6 live (5.2 pending B-0460)` per your suggested phrasing. Matches B-0441's substrate-honest framing (5a = assignment-history dedup B-0501 shipped; 5.2 = `work-assignment` subscriber handler B-0460 still โ) and stays consistent with the "What's still pending" section below.
+
+### Thread 2: tools/bg/README.md:32 (resolved)
+
+**@chatgpt-codex-connector** (2026-05-15T22:59:52Z):
+
+** Keep backlog-ready slice status aligned with pending 5.2**
+
+Update this status to avoid overclaiming slice 5 as fully landed: this row now says `1+2+3+4+5+6 live`, but the same commit still records `5.2` (`work-assignment` subscriber handler) as open in `docs/backlog/P1/B-0441-backlog-row-ready-to-grind-notifier-background-service-2026-05-13.md` (table row for slice 5.2). Marking full `+5` here can mislead operators into thinking the subscriber path is shipped and suppress follow-up on B-0460.
+
+Useful? React with ๐ย / ๐.
+
+**@AceHack** (2026-05-15T23:28:32Z):
+
+Fixed in 6ef1b491 โ slice-5 status updated to `1+2+3+4+5a+6 live (5.2 pending B-0460)` so it no longer suggests the subscriber path is shipped. Keeps follow-up on B-0460 visible.
diff --git a/docs/pr-discussions/PR-3617-docs-shadow-lior-antigravity-check-23-05z-drift-report.md b/docs/pr-discussions/PR-3617-docs-shadow-lior-antigravity-check-23-05z-drift-report.md
new file mode 100644
index 000000000..a68abb7de
--- /dev/null
+++ b/docs/pr-discussions/PR-3617-docs-shadow-lior-antigravity-check-23-05z-drift-report.md
@@ -0,0 +1,40 @@
+---
+pr_number: 3617
+title: "docs(shadow): Lior antigravity check 23:05Z - drift report"
+author: "AceHack"
+state: "MERGED"
+created_at: "2026-05-15T22:58:34Z"
+merged_at: "2026-05-15T23:01:04Z"
+closed_at: "2026-05-15T23:01:04Z"
+head_ref: "lior/shadow-drift-0515"
+base_ref: "main"
+archived_at: "2026-05-16T00:14:11Z"
+archive_tool: "tools/pr-preservation/archive-pr.ts"
+---
+
+# PR #3617: docs(shadow): Lior antigravity check 23:05Z - drift report
+
+## PR description
+
+Shadow lesson log for 23:05Z antigravity check and PR preservation. Otto is stale, Vera/Riven stuck on dirty trees. Array requires fresh worktrees.
+
+## Reviews
+
+### COMMENTED โ @copilot-pull-request-reviewer (2026-05-15T23:00:24Z)
+
+## Pull request overview
+
+Adds a shadow lesson log and preserves a merged PR discussion archive for the current autonomous-loop/shadow drift cycle.
+
+**Changes:**
+- Adds a new Lior shadow lesson log describing drift observations and corrective actions.
+- Adds archived PR discussion metadata and review-thread history for PR #3607.
+
+### Reviewed changes
+
+Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
+
+| File | Description |
+| ---- | ----------- |
+| `docs/research/2026-05-15-shadow-lesson-log-lior-drift-2305Z.md` | Records the 23:05Z shadow drift report and corrective actions. |
+| `docs/pr-discussions/PR-3607-shard-tick-2220z-null-arm-sweep-prior-tick-prs-landing.md` | Preserves PR #3607 metadata, description, and review threads. |
diff --git a/docs/pr-discussions/PR-3619-backlog-b-0545-b-0498-id-collision-renumber-sweep-riven-curs.md b/docs/pr-discussions/PR-3619-backlog-b-0545-b-0498-id-collision-renumber-sweep-riven-curs.md
new file mode 100644
index 000000000..feeb3de5d
--- /dev/null
+++ b/docs/pr-discussions/PR-3619-backlog-b-0545-b-0498-id-collision-renumber-sweep-riven-curs.md
@@ -0,0 +1,131 @@
+---
+pr_number: 3619
+title: "backlog(B-0545): B-0498 ID collision \u2014 renumber sweep (Riven cursor-terminal \u2192 next ID)"
+author: "AceHack"
+state: "MERGED"
+created_at: "2026-05-15T22:59:52Z"
+merged_at: "2026-05-15T23:01:41Z"
+closed_at: "2026-05-15T23:01:41Z"
+head_ref: "backlog/b0545-b0498-collision-renumber-sweep-otto-cli-2026-05-15"
+base_ref: "main"
+archived_at: "2026-05-16T00:14:10Z"
+archive_tool: "tools/pr-preservation/archive-pr.ts"
+---
+
+# PR #3619: backlog(B-0545): B-0498 ID collision โ renumber sweep (Riven cursor-terminal โ next ID)
+
+## PR description
+
+## Summary
+
+- **Real ID collision** caught by `copilot-pull-request-reviewer` on PR #3604 (tick shard 2217Z thread):
+ - `docs/backlog/P1/B-0498-riven-cursor-terminal-*-2026-05-15.md` (from merged #3603)
+ - `docs/backlog/P2/B-0498-substrate-evolution-algebra-*-2026-05-14.md` (pre-existing)
+- Per `b0451_per_collision_renumber_procedure`: first-merged-wins โ P2 (2026-05-14) keeps B-0498; P1 (2026-05-15) renumbers to next free (B-0546).
+- This row IS the filed-correction surface; implementation in a follow-up PR.
+- P2 priority โ collision exists but no active break; address within 1-2 weeks.
+
+## Test plan
+
+- [x] Verified via `git ls-tree origin/main -- docs/backlog/` โ both files exist
+- [x] Rule discipline confirmed via memory file lookup
+- [x] B-0545 ID allocated via on-disk + in-flight check (B-0543/0544 in #3614; B-0545 free)
+- [ ] Implementation PR (renumber sweep) to follow
+
+๐ค Generated with [Claude Code](https://claude.com/claude-code)
+
+## Reviews
+
+### COMMENTED โ @chatgpt-codex-connector (2026-05-15T23:02:31Z)
+
+
+### ๐ก Codex Review
+
+Here are some automated review suggestions for this pull request.
+
+**Reviewed commit:** `b0bcac6436`
+
+
+ โน๏ธ About Codex in GitHub
+
+
+[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you
+- Open a pull request for review
+- Mark a draft as ready
+- Comment "@codex review".
+
+If Codex has suggestions, it will comment; otherwise it will react with ๐.
+
+
+Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
+
+
+
+### COMMENTED โ @copilot-pull-request-reviewer (2026-05-15T23:03:16Z)
+
+## Pull request overview
+
+Adds a new P2 backlog row (B-0545) to document and track the discovered B-0498 ID collision, and to define the intended renumber target/sweep scope for a follow-up implementation PR.
+
+**Changes:**
+- Introduces backlog row B-0545 describing the B-0498 collision (P1 vs P2 rows) and the โfirst-merged-winsโ renumber procedure reference.
+- Captures proposed renumber target (B-0546) and a checklist of cross-reference updates to perform in the implementation sweep.
+- Records rationale for P2 priority and scope-bounds (filed-correction surface only).
+
+
+
+Comments suppressed due to low confidence (3)
+
+**docs/backlog/P2/B-0545-b0498-collision-renumber-sweep-2026-05-15.md:47**
+* P1: The example command `gh pr list --search "B-NNNN" --state all` wonโt actually enumerate the in-flight IDs you list below (it searches for the literal string `B-NNNN`). Use a concrete search term/pattern that matches real PR titles (e.g., the specific IDs, or a prefix like `B-054`), or reword this to describe the check without giving a non-functional command.
+```
+## Next free ID
+
+At time of filing (2026-05-15T22:55Z), `git ls-tree origin/main` plus `gh pr list --search "B-NNNN" --state all` shows:
+
+- B-0542 last on main
+- B-0543/B-0544 taken in flight (PR #3614, OPEN)
+- B-0545 โ THIS ROW, claimed
+- **B-0546** โ next free for the renumber target
+```
+**docs/backlog/P2/B-0545-b0498-collision-renumber-sweep-2026-05-15.md:70**
+* P1: `tick-shards-are-immutable` is referenced as if itโs a named rule, but thereโs no such rule/doc in the repo; this reads like a dead xref. Consider linking to an existing authority that states shard immutability (e.g., `docs/hygiene-history/ticks/README.md`, which describes shards as immutable events) or rename this to the actual rule/document name.
+```
+- Update `id:` frontmatter inside the moved file
+- Update any `depends_on:` / `composes_with:` fields in OTHER backlog rows that pointed at B-0498 in the Riven sense
+- Update tick shards that QUOTE the Riven B-0498: PER `tick-shards-are-immutable` discipline, do NOT in-place-edit; instead, append a correction note in a new shard OR add a glossary entry in the renumber row
+- Update any tools/scripts: rename references via `grep -rln "B-0498-riven\|B-0498.*riven" memory/ docs/ .claude/ tools/`
+```
+**docs/backlog/P2/B-0545-b0498-collision-renumber-sweep-2026-05-15.md:88**
+* P2: In the โComposes withโ section, `claim-acquire-before-worktree-work.md` and `refresh-before-decide.md` are referenced as bare filenames, but the canonical paths are under `.claude/rules/โฆ`. Consider linking them with their full repo paths (as other backlog rows do) so readers can navigate unambiguously.
+```
+## Composes with
+
+- The `b0451_per_collision_renumber_procedure` memory (2026-05-14) โ same shape, second instance
+- The `claim-acquire-before-worktree-work.md` rule's "ID allocation discipline" section โ this collision is an instance the discipline is meant to prevent
+- `refresh-before-decide.md` invariant at ID-allocation scope โ both surfaces (merged + in-flight) must be checked; the Riven-cursor row at 2026-05-15 likely skipped the on-disk B-0498 P2 check
+```
+
+
+## Review threads
+
+### Thread 1: docs/backlog/P2/B-0545-b0498-collision-renumber-sweep-2026-05-15.md:66 (unresolved)
+
+**@chatgpt-codex-connector** (2026-05-15T23:02:31Z):
+
+** Replace wildcard destination in rename command**
+
+The documented sweep command uses a wildcard in the destination (`git mv ... B-0546-riven-*`), which is unsafe in Bash because unmatched destination globs are passed literally; running this as written can rename the file to a path containing a `*` character instead of the intended concrete filename. In the renumber workflow, that would leave the backlog row under an invalid/unexpected name and likely break follow-up references/indexing, so the command should name the exact target file (or compute it programmatically) rather than using a wildcard destination.
+
+Useful? React with ๐ย / ๐.
+
+### Thread 2: docs/backlog/P2/B-0545-b0498-collision-renumber-sweep-2026-05-15.md:7 (unresolved)
+
+**@copilot-pull-request-reviewer** (2026-05-15T23:03:16Z):
+
+P1: This backlog row frontmatter is missing the required `last_updated` field (the backlog schema requires it and it should be updated on every content edit). Add `last_updated: 2026-05-15` (or the correct date) to the YAML frontmatter to keep the row schema-compliant.
+
+This issue also appears in the following locations of the same file:
+- line 40
+- line 67
+- line 84
diff --git a/docs/pr-discussions/PR-3620-shard-tick-2300z-arm-sweep-3617-merged-3618-armed-lior-threa.md b/docs/pr-discussions/PR-3620-shard-tick-2300z-arm-sweep-3617-merged-3618-armed-lior-threa.md
new file mode 100644
index 000000000..3fc280be5
--- /dev/null
+++ b/docs/pr-discussions/PR-3620-shard-tick-2300z-arm-sweep-3617-merged-3618-armed-lior-threa.md
@@ -0,0 +1,64 @@
+---
+pr_number: 3620
+title: "shard(tick): 2300Z \u2014 arm-sweep #3617 (merged) + #3618 (armed); Lior-thread PRs left"
+author: "AceHack"
+state: "MERGED"
+created_at: "2026-05-15T23:02:37Z"
+merged_at: "2026-05-15T23:04:11Z"
+closed_at: "2026-05-15T23:04:11Z"
+head_ref: "shard/tick-2300z-otto-cli-2026-05-15"
+base_ref: "main"
+archived_at: "2026-05-16T00:14:09Z"
+archive_tool: "tools/pr-preservation/archive-pr.ts"
+---
+
+# PR #3620: shard(tick): 2300Z โ arm-sweep #3617 (merged) + #3618 (armed); Lior-thread PRs left
+
+## PR description
+
+## Summary
+
+- **Cheap-survey discipline**: used `gh pr list --json mergeStateStatus,autoMergeRequest` (single call) instead of `poll-pr-gate-batch --all-open` (37 calls). Composes with `memory/feedback_gh_graphql_rate_limit_cascade_cost_*.md` cost-awareness.
+- **2 thread-free arms**: #3618 (B-0544 research) + #3617 (Lior 23:05Z drift; MERGED immediately).
+- **2 thread-laden LEFT alone**: #3610 (codex P2 archive-naming) + #3609 (copilot threads on Lior content) โ Lior-payload threads pending peer-Lior cycle; respects `honor-those-that-came-before` discipline.
+
+## Test plan
+
+- [x] Budget verified before/after: 4177 โ 4151 (26 units this tick โ sustainable)
+- [x] #3617 confirmed MERGED via gh pr view
+- [x] #3618 confirmed armed via gh pr view
+- [x] Cron `d97cdace` still listed
+
+๐ค Generated with [Claude Code](https://claude.com/claude-code)
+
+## Reviews
+
+### COMMENTED โ @copilot-pull-request-reviewer (2026-05-15T23:05:08Z)
+
+## Pull request overview
+
+Adds a new hygiene-history tick shard (2300Z, 2026-05-15) documenting an arm-sweep decision, GitHub rate-limit budgeting, and which PRs were armed vs intentionally left due to thread ownership.
+
+**Changes:**
+- Add `2300Z.md` tick shard with frontmatter + narrative sections (refresh, per-PR filter table, budget accounting, CronList check, visibility signal).
+- Document โcheap surveyโ approach (`gh pr list --json ...`) vs batch polling to reduce GraphQL unit burn.
+
+## Review threads
+
+### Thread 1: docs/hygiene-history/ticks/2026/05/15/2300Z.md:27 (unresolved)
+
+**@copilot-pull-request-reviewer** (2026-05-15T23:05:08Z):
+
+Line 27 references the rule as a bare filename (`honor-those-that-came-before.md`). In recent tick shards these rule refs are linked to their canonical `.claude/rules/...` path (so readers can click through and so renames donโt silently break references). Please convert this to a markdown link to `.claude/rules/honor-those-that-came-before.md` using the appropriate relative path from this file.
+
+### Thread 2: docs/hygiene-history/ticks/2026/05/15/2300Z.md:28 (unresolved)
+
+**@copilot-pull-request-reviewer** (2026-05-15T23:05:08Z):
+
+`PR-3607.md` is mentioned as if it were an on-repo archive file, but that filename doesnโt exist anywhere in the current tree. If this is a proposed/canonical name thatโs missing, consider clarifying that itโs not yet present (or link directly to the relevant preservation doc/PR where the naming question lives) to avoid sending readers on a dead-end search.
+
+## General comments
+
+### @chatgpt-codex-connector (2026-05-15T23:02:42Z)
+
+You have reached your Codex usage limits for code reviews. You can see your limits in the [Codex usage dashboard](https://chatgpt.com/codex/cloud/settings/usage).
diff --git a/docs/pr-discussions/PR-3624-feat-b-0170-4-seed-existence-drift-fixture-regression-test.md b/docs/pr-discussions/PR-3624-feat-b-0170-4-seed-existence-drift-fixture-regression-test.md
new file mode 100644
index 000000000..0016615b2
--- /dev/null
+++ b/docs/pr-discussions/PR-3624-feat-b-0170-4-seed-existence-drift-fixture-regression-test.md
@@ -0,0 +1,82 @@
+---
+pr_number: 3624
+title: "feat(B-0170.4): seed existence-drift fixture + regression test"
+author: "AceHack"
+state: "MERGED"
+created_at: "2026-05-16T00:01:18Z"
+merged_at: "2026-05-16T00:04:09Z"
+closed_at: "2026-05-16T00:04:09Z"
+head_ref: "otto/b0170-4-existence-drift-fixture-2026-05-15-v2"
+base_ref: "main"
+archived_at: "2026-05-16T00:14:08Z"
+archive_tool: "tools/pr-preservation/archive-pr.ts"
+---
+
+# PR #3624: feat(B-0170.4): seed existence-drift fixture + regression test
+
+## PR description
+
+## Summary
+
+Smallest safe slice of B-0170.4 (fixture-tests + eval-set coverage). Extends [PR #3611](https://github.com/Lucent-Financial-Group/Zeta/pull/3611)'s count-drift seed to the existence-drift sub-class โ the second of the 5 shipped check-types now has empirical-axis regression coverage.
+
+- New `tools/substrate-claim-checker/fixtures/existence-drift-missing-doc.md` fixture modeling the verify-then-claim memo's body-table instance #8 (PR #1252 โ future-domain memo referenced a `docs/` markdown file that didn't actually exist).
+- New describe block in `fixtures.test.ts` asserting `check-existence.ts` emits exactly one drift finding at line 24 with severity `"drift"`.
+- `fixtures/README.md` index gains the new fixture row.
+
+## Why the fixture path is synthetic
+
+The fixture cites `docs/_fixture_existence_drift_target_b0170_2026_05_15.md` โ a clearly synthetic path no human or agent would create accidentally. This tests the empirical detection pattern, not a frozen substrate snapshot โ substrate evolution can't break the regression by creating an unrelated file at the historical path.
+
+## Discipline carried forward from PR #3611 review threads
+
+`chatgpt-codex-connector` + `copilot-pull-request-reviewer` flagged a hazard on the count-drift fixture: restating the claim inside the HTML provenance comment let the test pass via the comment match alone, masking regressions in body-claim detection. Same discipline applied here:
+
+- HTML provenance comment intentionally does NOT backtick-quote the exact fixture path
+- Test asserts `findings.length === 1` (exact, not `>= 1`)
+- Test pins `finding.line === 24` so a regression that stops detecting the body claim can't be masked
+
+## Test plan
+
+- [x] `bun tools/substrate-claim-checker/check-existence.ts ` โ 1 drift finding at line 24, severity `"drift"`, exit 1
+- [x] `bun test tools/substrate-claim-checker/fixtures.test.ts` โ 2 pass, 12 expect() calls, exit 0
+- [x] `bun test tools/substrate-claim-checker/` (full suite) โ 114 pass, 0 fail, 256 expect() calls (negative-path stderr lines are intentional error-handling cases per PR #3611 convention)
+- [x] Commit-tree integrity per `.claude/rules/codeql-no-source-on-docs-only-pr-is-broken-commit-canary.md` โ `tools/substrate-claim-checker/` tree size 13 at both `HEAD~1` and `HEAD`
+
+## Composes with
+
+- B-0170.4 done-criteria ("fixture-tests + eval-set coverage for all shipped + new check-types") โ incremental progress, one sub-class per slice per the `fixtures/README.md` procedure
+- B-0170 (parent row, `decomposed`)
+- [PR #3611](https://github.com/Lucent-Financial-Group/Zeta/pull/3611) (count-drift seed; same scaffolding extended here)
+- `memory/feedback_verify_then_claim_discipline_dominant_failure_mode_substrate_authoring_otto_2026_05_03.md` โ body-table instance #8 is the empirical anchor for this fixture
+
+## Claim
+
+`6c253d24-3ed0-4e89-8f3a-563b13f933cc` (otto-cli, B-0170)
+
+operative-authorization: aaron 2026-05-14: "- **Devil-pole** (edge-runner drive): keep pushing, discover, go hard, never-be-idle"
+
+๐ค Generated with [Claude Code](https://claude.com/claude-code)
+
+## Reviews
+
+### COMMENTED โ @copilot-pull-request-reviewer (2026-05-16T00:02:51Z)
+
+## Pull request overview
+
+Extends the substrate-claim-checker eval-set (started in PR #3611) with the second drift sub-class โ existence drift. Adds a synthetic-path fixture, a regression test asserting `check-existence.ts` emits exactly one drift finding at the expected line, and an index row in the fixtures README.
+
+**Changes:**
+- New `existence-drift-missing-doc.md` fixture using a clearly synthetic `docs/_fixture_existence_drift_target_b0170_2026_05_15.md` path, with HTML provenance comment that deliberately avoids backtick-quoting the path
+- New `describe` block in `fixtures.test.ts` asserting exactly one finding at line 24 with severity `"drift"`
+- `fixtures/README.md` index gains a row for the new fixture
+
+### Reviewed changes
+
+Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.
+
+| File | Description |
+| ---- | ----------- |
+| tools/substrate-claim-checker/fixtures/README.md | Adds index row for the new existence-drift fixture |
+| tools/substrate-claim-checker/fixtures/existence-drift-missing-doc.md | New fixture modeling PR #1252 existence-drift instance #8 with synthetic path |
+| tools/substrate-claim-checker/fixtures.test.ts | Adds regression test for `check-existence.ts` against the new fixture |