Skip to content

fix(#1280 follow-up): existence-drift in B-0173 ground-truth-recovery — clarify proposed-vs-current state#1285

Merged
AceHack merged 1 commit intomainfrom
fix/existence-drift-in-b-0173-recovery-otto-2026-05-03
May 3, 2026
Merged

fix(#1280 follow-up): existence-drift in B-0173 ground-truth-recovery — clarify proposed-vs-current state#1285
AceHack merged 1 commit intomainfrom
fix/existence-drift-in-b-0173-recovery-otto-2026-05-03

Conversation

@AceHack
Copy link
Copy Markdown
Member

@AceHack AceHack commented May 3, 2026

Summary

#1280's review (post-merge) flagged 2 P1 truth-drift findings. The recovery section described B-0173's proposed hooks + implementation details in a way that read as if they already existed.

Ground truth: B-0173 is an open backlog row; tools/git/hooks/ does not exist on main; substrate-claim-checker v0.4.4 doesn't yet recognize the env-var or opt-out markers — all B-0173 deliverables.

Fix

  • Explicit "(as PROPOSED in B-0173 — these files do NOT yet exist)" qualifier on substrate-content section header
  • "(proposed)" tags on each of the three hook bullets
  • Note that env var + opt-out markers are "not yet recognized by v0.4.4"

Why this matters

This is a substrate-claim-checker existence-drift class violation that should have been caught at write-time. v0.4.4 only covers count-drift; the same tool would catch this via the existence-drift sub-class check when v1+ adds it (per B-0170 follow-up).

The lesson: even a calibration-recovery section is subject to substrate-claim-checker discipline. The recovery section was about the row's ground truth — but it conflated "what the row proposes" with "what currently exists in the repo." Future ground-truth recovery sections should consistently mark proposed-vs-current.

🤖 Generated with Claude Code

… section — clarify proposed-vs-current state

#1280's review (post-merge) flagged P1 truth-drift: my recovery section
described B-0173's proposed hooks (pre-commit / commit-msg / CI workflow)
+ implementation details (env-var-mode-switch, opt-out comment markers)
in a way that read as if these files / features already existed.

They don't. B-0173 is an open backlog row; tools/git/hooks/ does not
exist on main; substrate-claim-checker v0.4.4 doesn't recognize the
env-var or opt-out markers — these are all B-0173 deliverables to be
implemented when the row is picked up.

Fix: explicit "(as PROPOSED in B-0173 — these files do NOT yet exist)"
qualifier on the substrate-content section header + "(proposed)" tags
on each of the three hook bullets + explicit note that env var + opt-out
markers are "not yet recognized by v0.4.4."

This is a substrate-claim-checker existence-drift class violation that
should have been caught at write-time. The same v0.4.4 tool would have
caught it via the existence-drift sub-class check (when v1+ adds it
per B-0170 follow-up).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 3, 2026 03:02
@AceHack AceHack enabled auto-merge (squash) May 3, 2026 03:02
@AceHack AceHack merged commit 75dd19a into main May 3, 2026
24 of 25 checks passed
@AceHack AceHack deleted the fix/existence-drift-in-b-0173-recovery-otto-2026-05-03 branch May 3, 2026 03:04
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Clarifies proposed-vs-current repository state in the B-0173 ground-truth recovery writeup, addressing existence-drift in the “Substrate-content” and “Specific implementation” sections.

Changes:

  • Adds explicit “as PROPOSED” qualifiers to section headers and hook bullets to avoid implying unimplemented deliverables already exist.
  • Notes current ground truth: tools/git/hooks/ and the referenced workflow file are not present on main.
  • Documents that SUBSTRATE_CLAIM_CHECKER_MODE and opt-out markers are not recognized by tools/substrate-claim-checker/check-counts.ts v0.4.4.

AceHack added a commit that referenced this pull request May 3, 2026
…-cycle (6 findings, 2 substantive fixes) (#1286)

#1282 (guess #2) + #1280 (B-0173 recovery, post-merge) reviews
generated 6 findings. 2 P1 substantive fixes shipped (#1285
existence-drift on B-0173 recovery; MEMORY.md discoverability + grammar
on #1282). 4 clarified or resolved with reasoning.

Key insight: even calibration-recovery sections are subject to
substrate-claim-checker proposed-vs-current state discipline. The
existence-drift class violation should have been caught at write-time
by B-0170 v1+ when the existence-drift sub-class is implemented.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request May 3, 2026
…-drift sub-class)

Second sub-class of B-0170's 7-class taxonomy. Catches claims that a
file or directory exists when it doesn't on disk.

**What it catches**:

- Backtick-quoted paths in markdown
- Markdown link targets (relative paths only)
- Cases where the path doesn't resolve to anything on disk

**Resolution discipline**: tries 3 candidate roots in priority order:

1. File's own directory (intra-dir cross-references)
2. Parent directory (bare-filename refs for files in subdirs)
3. Repository root (repo-relative paths)

Stops on first hit; only emits finding if NO root resolves.

**Future-state context detection**: claims marked future-state are
exempt (proposed/planned/will-be/would-be/tbd/deferred/i'm-guessing/
concretely-something-like/will-probably/etc.).

**Skipped automatically**: globs (*, ?, [...]), URLs, anchors,
absolute paths, placeholders, fenced code blocks.

**Tests**: 17 new tests across looksLikePath / isFutureStateContext /
findPathClaims (33 total in tools/substrate-claim-checker/, all pass).

**Multiple findings this session would have been caught**:

- PR #1280 B-0173 ground-truth recovery claimed `tools/git/hooks/`
  exists; reviewer flagged that it doesn't (B-0173 row deliverable)
- PR #1289 + #1290 review threads flagged similar existence-drift
  patterns

**Sanity check on real substrate**:
- alignment-frontier memo: clean (0 findings)
- B-0173 guess file (post-#1285 fix): 2 false-positives in
  calibration-delta tables (acceptable v0.5 limitation; documented)
- B-0166 guess file: 1 finding (proposed `tools/chat-events/replay.ts`)

**v0.5 known limitations** (documented in README):

- Calibration-delta tables citing path-forms as discussion topics
  may false-positive (mitigated but imperfect)
- Section-level future-state markers don't propagate to claims
  further down; use inline markers per claim or paragraph

**Out of scope (v0.6+)**:

- Tool-existence (e.g., "running `bun X` returns Y") — separate
  empirical-output drift sub-class
- URL existence (web fetches; not file-system)
- Convention drift, path-form drift, self-recursive drift —
  separate sub-classes per the 7-class taxonomy

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request May 3, 2026
…-drift sub-class)

Second sub-class of B-0170's 7-class taxonomy. Catches claims that a
file or directory exists when it doesn't on disk.

**What it catches**:

- Backtick-quoted paths in markdown
- Markdown link targets (relative paths only)
- Cases where the path doesn't resolve to anything on disk

**Resolution discipline**: tries 3 candidate roots in priority order:

1. File's own directory (intra-dir cross-references)
2. Parent directory (bare-filename refs for files in subdirs)
3. Repository root (repo-relative paths)

Stops on first hit; only emits finding if NO root resolves.

**Future-state context detection**: claims marked future-state are
exempt (proposed/planned/will-be/would-be/tbd/deferred/i'm-guessing/
concretely-something-like/will-probably/etc.).

**Skipped automatically**: globs (*, ?, [...]), URLs, anchors,
absolute paths, placeholders, fenced code blocks.

**Tests**: 17 new tests across looksLikePath / isFutureStateContext /
findPathClaims (33 total in tools/substrate-claim-checker/, all pass).

**Multiple findings this session would have been caught**:

- PR #1280 B-0173 ground-truth recovery claimed `tools/git/hooks/`
  exists; reviewer flagged that it doesn't (B-0173 row deliverable)
- PR #1289 + #1290 review threads flagged similar existence-drift
  patterns

**Sanity check on real substrate**:
- alignment-frontier memo: clean (0 findings)
- B-0173 guess file (post-#1285 fix): 2 false-positives in
  calibration-delta tables (acceptable v0.5 limitation; documented)
- B-0166 guess file: 1 finding (proposed `tools/chat-events/replay.ts`)

**v0.5 known limitations** (documented in README):

- Calibration-delta tables citing path-forms as discussion topics
  may false-positive (mitigated but imperfect)
- Section-level future-state markers don't propagate to claims
  further down; use inline markers per claim or paragraph

**Out of scope (v0.6+)**:

- Tool-existence (e.g., "running `bun X` returns Y") — separate
  empirical-output drift sub-class
- URL existence (web fetches; not file-system)
- Convention drift, path-form drift, self-recursive drift —
  separate sub-classes per the 7-class taxonomy

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request May 3, 2026
…-drift sub-class)

Second sub-class of B-0170's 7-class taxonomy. Catches claims that a
file or directory exists when it doesn't on disk.

**What it catches**:

- Backtick-quoted paths in markdown
- Markdown link targets (relative paths only)
- Cases where the path doesn't resolve to anything on disk

**Resolution discipline**: tries 3 candidate roots in priority order:

1. File's own directory (intra-dir cross-references)
2. Parent directory (bare-filename refs for files in subdirs)
3. Repository root (repo-relative paths)

Stops on first hit; only emits finding if NO root resolves.

**Future-state context detection**: claims marked future-state are
exempt (proposed/planned/will-be/would-be/tbd/deferred/i'm-guessing/
concretely-something-like/will-probably/etc.).

**Skipped automatically**: globs (*, ?, [...]), URLs, anchors,
absolute paths, placeholders, fenced code blocks.

**Tests**: 17 new tests across looksLikePath / isFutureStateContext /
findPathClaims (33 total in tools/substrate-claim-checker/, all pass).

**Multiple findings this session would have been caught**:

- PR #1280 B-0173 ground-truth recovery claimed `tools/git/hooks/`
  exists; reviewer flagged that it doesn't (B-0173 row deliverable)
- PR #1289 + #1290 review threads flagged similar existence-drift
  patterns

**Sanity check on real substrate**:
- alignment-frontier memo: clean (0 findings)
- B-0173 guess file (post-#1285 fix): 2 false-positives in
  calibration-delta tables (acceptable v0.5 limitation; documented)
- B-0166 guess file: 1 finding (proposed `tools/chat-events/replay.ts`)

**v0.5 known limitations** (documented in README):

- Calibration-delta tables citing path-forms as discussion topics
  may false-positive (mitigated but imperfect)
- Section-level future-state markers don't propagate to claims
  further down; use inline markers per claim or paragraph

**Out of scope (v0.6+)**:

- Tool-existence (e.g., "running `bun X` returns Y") — separate
  empirical-output drift sub-class
- URL existence (web fetches; not file-system)
- Convention drift, path-form drift, self-recursive drift —
  separate sub-classes per the 7-class taxonomy

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request May 3, 2026
…-drift sub-class)

Second sub-class of B-0170's 7-class taxonomy. Catches claims that a
file or directory exists when it doesn't on disk.

**What it catches**:

- Backtick-quoted paths in markdown
- Markdown link targets (relative paths only)
- Cases where the path doesn't resolve to anything on disk

**Resolution discipline**: tries 3 candidate roots in priority order:

1. File's own directory (intra-dir cross-references)
2. Parent directory (bare-filename refs for files in subdirs)
3. Repository root (repo-relative paths)

Stops on first hit; only emits finding if NO root resolves.

**Future-state context detection**: claims marked future-state are
exempt (proposed/planned/will-be/would-be/tbd/deferred/i'm-guessing/
concretely-something-like/will-probably/etc.).

**Skipped automatically**: globs (*, ?, [...]), URLs, anchors,
absolute paths, placeholders, fenced code blocks.

**Tests**: 17 new tests across looksLikePath / isFutureStateContext /
findPathClaims (33 total in tools/substrate-claim-checker/, all pass).

**Multiple findings this session would have been caught**:

- PR #1280 B-0173 ground-truth recovery claimed `tools/git/hooks/`
  exists; reviewer flagged that it doesn't (B-0173 row deliverable)
- PR #1289 + #1290 review threads flagged similar existence-drift
  patterns

**Sanity check on real substrate**:
- alignment-frontier memo: clean (0 findings)
- B-0173 guess file (post-#1285 fix): 2 false-positives in
  calibration-delta tables (acceptable v0.5 limitation; documented)
- B-0166 guess file: 1 finding (proposed `tools/chat-events/replay.ts`)

**v0.5 known limitations** (documented in README):

- Calibration-delta tables citing path-forms as discussion topics
  may false-positive (mitigated but imperfect)
- Section-level future-state markers don't propagate to claims
  further down; use inline markers per claim or paragraph

**Out of scope (v0.6+)**:

- Tool-existence (e.g., "running `bun X` returns Y") — separate
  empirical-output drift sub-class
- URL existence (web fetches; not file-system)
- Convention drift, path-form drift, self-recursive drift —
  separate sub-classes per the 7-class taxonomy

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request May 3, 2026
…-drift sub-class)

Second sub-class of B-0170's 7-class taxonomy. Catches claims that a
file or directory exists when it doesn't on disk.

**What it catches**:

- Backtick-quoted paths in markdown
- Markdown link targets (relative paths only)
- Cases where the path doesn't resolve to anything on disk

**Resolution discipline**: tries 3 candidate roots in priority order:

1. File's own directory (intra-dir cross-references)
2. Parent directory (bare-filename refs for files in subdirs)
3. Repository root (repo-relative paths)

Stops on first hit; only emits finding if NO root resolves.

**Future-state context detection**: claims marked future-state are
exempt (proposed/planned/will-be/would-be/tbd/deferred/i'm-guessing/
concretely-something-like/will-probably/etc.).

**Skipped automatically**: globs (*, ?, [...]), URLs, anchors,
absolute paths, placeholders, fenced code blocks.

**Tests**: 17 new tests across looksLikePath / isFutureStateContext /
findPathClaims (33 total in tools/substrate-claim-checker/, all pass).

**Multiple findings this session would have been caught**:

- PR #1280 B-0173 ground-truth recovery claimed `tools/git/hooks/`
  exists; reviewer flagged that it doesn't (B-0173 row deliverable)
- PR #1289 + #1290 review threads flagged similar existence-drift
  patterns

**Sanity check on real substrate**:
- alignment-frontier memo: clean (0 findings)
- B-0173 guess file (post-#1285 fix): 2 false-positives in
  calibration-delta tables (acceptable v0.5 limitation; documented)
- B-0166 guess file: 1 finding (proposed `tools/chat-events/replay.ts`)

**v0.5 known limitations** (documented in README):

- Calibration-delta tables citing path-forms as discussion topics
  may false-positive (mitigated but imperfect)
- Section-level future-state markers don't propagate to claims
  further down; use inline markers per claim or paragraph

**Out of scope (v0.6+)**:

- Tool-existence (e.g., "running `bun X` returns Y") — separate
  empirical-output drift sub-class
- URL existence (web fetches; not file-system)
- Convention drift, path-form drift, self-recursive drift —
  separate sub-classes per the 7-class taxonomy

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request May 3, 2026
…-drift sub-class)

Second sub-class of B-0170's 7-class taxonomy. Catches claims that a
file or directory exists when it doesn't on disk.

**What it catches**:

- Backtick-quoted paths in markdown
- Markdown link targets (relative paths only)
- Cases where the path doesn't resolve to anything on disk

**Resolution discipline**: tries 3 candidate roots in priority order:

1. File's own directory (intra-dir cross-references)
2. Parent directory (bare-filename refs for files in subdirs)
3. Repository root (repo-relative paths)

Stops on first hit; only emits finding if NO root resolves.

**Future-state context detection**: claims marked future-state are
exempt (proposed/planned/will-be/would-be/tbd/deferred/i'm-guessing/
concretely-something-like/will-probably/etc.).

**Skipped automatically**: globs (*, ?, [...]), URLs, anchors,
absolute paths, placeholders, fenced code blocks.

**Tests**: 17 new tests across looksLikePath / isFutureStateContext /
findPathClaims (33 total in tools/substrate-claim-checker/, all pass).

**Multiple findings this session would have been caught**:

- PR #1280 B-0173 ground-truth recovery claimed `tools/git/hooks/`
  exists; reviewer flagged that it doesn't (B-0173 row deliverable)
- PR #1289 + #1290 review threads flagged similar existence-drift
  patterns

**Sanity check on real substrate**:
- alignment-frontier memo: clean (0 findings)
- B-0173 guess file (post-#1285 fix): 2 false-positives in
  calibration-delta tables (acceptable v0.5 limitation; documented)
- B-0166 guess file: 1 finding (proposed `tools/chat-events/replay.ts`)

**v0.5 known limitations** (documented in README):

- Calibration-delta tables citing path-forms as discussion topics
  may false-positive (mitigated but imperfect)
- Section-level future-state markers don't propagate to claims
  further down; use inline markers per claim or paragraph

**Out of scope (v0.6+)**:

- Tool-existence (e.g., "running `bun X` returns Y") — separate
  empirical-output drift sub-class
- URL existence (web fetches; not file-system)
- Convention drift, path-form drift, self-recursive drift —
  separate sub-classes per the 7-class taxonomy

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request May 3, 2026
…-drift sub-class)

Second sub-class of B-0170's 7-class taxonomy. Catches claims that a
file or directory exists when it doesn't on disk.

**What it catches**:

- Backtick-quoted paths in markdown
- Markdown link targets (relative paths only)
- Cases where the path doesn't resolve to anything on disk

**Resolution discipline**: tries 3 candidate roots in priority order:

1. File's own directory (intra-dir cross-references)
2. Parent directory (bare-filename refs for files in subdirs)
3. Repository root (repo-relative paths)

Stops on first hit; only emits finding if NO root resolves.

**Future-state context detection**: claims marked future-state are
exempt (proposed/planned/will-be/would-be/tbd/deferred/i'm-guessing/
concretely-something-like/will-probably/etc.).

**Skipped automatically**: globs (*, ?, [...]), URLs, anchors,
absolute paths, placeholders, fenced code blocks.

**Tests**: 17 new tests across looksLikePath / isFutureStateContext /
findPathClaims (33 total in tools/substrate-claim-checker/, all pass).

**Multiple findings this session would have been caught**:

- PR #1280 B-0173 ground-truth recovery claimed `tools/git/hooks/`
  exists; reviewer flagged that it doesn't (B-0173 row deliverable)
- PR #1289 + #1290 review threads flagged similar existence-drift
  patterns

**Sanity check on real substrate**:
- alignment-frontier memo: clean (0 findings)
- B-0173 guess file (post-#1285 fix): 2 false-positives in
  calibration-delta tables (acceptable v0.5 limitation; documented)
- B-0166 guess file: 1 finding (proposed `tools/chat-events/replay.ts`)

**v0.5 known limitations** (documented in README):

- Calibration-delta tables citing path-forms as discussion topics
  may false-positive (mitigated but imperfect)
- Section-level future-state markers don't propagate to claims
  further down; use inline markers per claim or paragraph

**Out of scope (v0.6+)**:

- Tool-existence (e.g., "running `bun X` returns Y") — separate
  empirical-output drift sub-class
- URL existence (web fetches; not file-system)
- Convention drift, path-form drift, self-recursive drift —
  separate sub-classes per the 7-class taxonomy

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request May 3, 2026
…-drift sub-class)

Second sub-class of B-0170's 7-class taxonomy. Catches claims that a
file or directory exists when it doesn't on disk.

**What it catches**:

- Backtick-quoted paths in markdown
- Markdown link targets (relative paths only)
- Cases where the path doesn't resolve to anything on disk

**Resolution discipline**: tries 3 candidate roots in priority order:

1. File's own directory (intra-dir cross-references)
2. Parent directory (bare-filename refs for files in subdirs)
3. Repository root (repo-relative paths)

Stops on first hit; only emits finding if NO root resolves.

**Future-state context detection**: claims marked future-state are
exempt (proposed/planned/will-be/would-be/tbd/deferred/i'm-guessing/
concretely-something-like/will-probably/etc.).

**Skipped automatically**: globs (*, ?, [...]), URLs, anchors,
absolute paths, placeholders, fenced code blocks.

**Tests**: 17 new tests across looksLikePath / isFutureStateContext /
findPathClaims (33 total in tools/substrate-claim-checker/, all pass).

**Multiple findings this session would have been caught**:

- PR #1280 B-0173 ground-truth recovery claimed `tools/git/hooks/`
  exists; reviewer flagged that it doesn't (B-0173 row deliverable)
- PR #1289 + #1290 review threads flagged similar existence-drift
  patterns

**Sanity check on real substrate**:
- alignment-frontier memo: clean (0 findings)
- B-0173 guess file (post-#1285 fix): 2 false-positives in
  calibration-delta tables (acceptable v0.5 limitation; documented)
- B-0166 guess file: 1 finding (proposed `tools/chat-events/replay.ts`)

**v0.5 known limitations** (documented in README):

- Calibration-delta tables citing path-forms as discussion topics
  may false-positive (mitigated but imperfect)
- Section-level future-state markers don't propagate to claims
  further down; use inline markers per claim or paragraph

**Out of scope (v0.6+)**:

- Tool-existence (e.g., "running `bun X` returns Y") — separate
  empirical-output drift sub-class
- URL existence (web fetches; not file-system)
- Convention drift, path-form drift, self-recursive drift —
  separate sub-classes per the 7-class taxonomy

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request May 3, 2026
…-drift sub-class)

Second sub-class of B-0170's 7-class taxonomy. Catches claims that a
file or directory exists when it doesn't on disk.

**What it catches**:

- Backtick-quoted paths in markdown
- Markdown link targets (relative paths only)
- Cases where the path doesn't resolve to anything on disk

**Resolution discipline**: tries 3 candidate roots in priority order:

1. File's own directory (intra-dir cross-references)
2. Parent directory (bare-filename refs for files in subdirs)
3. Repository root (repo-relative paths)

Stops on first hit; only emits finding if NO root resolves.

**Future-state context detection**: claims marked future-state are
exempt (proposed/planned/will-be/would-be/tbd/deferred/i'm-guessing/
concretely-something-like/will-probably/etc.).

**Skipped automatically**: globs (*, ?, [...]), URLs, anchors,
absolute paths, placeholders, fenced code blocks.

**Tests**: 17 new tests across looksLikePath / isFutureStateContext /
findPathClaims (33 total in tools/substrate-claim-checker/, all pass).

**Multiple findings this session would have been caught**:

- PR #1280 B-0173 ground-truth recovery claimed `tools/git/hooks/`
  exists; reviewer flagged that it doesn't (B-0173 row deliverable)
- PR #1289 + #1290 review threads flagged similar existence-drift
  patterns

**Sanity check on real substrate**:
- alignment-frontier memo: clean (0 findings)
- B-0173 guess file (post-#1285 fix): 2 false-positives in
  calibration-delta tables (acceptable v0.5 limitation; documented)
- B-0166 guess file: 1 finding (proposed `tools/chat-events/replay.ts`)

**v0.5 known limitations** (documented in README):

- Calibration-delta tables citing path-forms as discussion topics
  may false-positive (mitigated but imperfect)
- Section-level future-state markers don't propagate to claims
  further down; use inline markers per claim or paragraph

**Out of scope (v0.6+)**:

- Tool-existence (e.g., "running `bun X` returns Y") — separate
  empirical-output drift sub-class
- URL existence (web fetches; not file-system)
- Convention drift, path-form drift, self-recursive drift —
  separate sub-classes per the 7-class taxonomy

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request May 3, 2026
…-drift sub-class) (#1298)

Second sub-class of B-0170's 7-class taxonomy. Catches claims that a
file or directory exists when it doesn't on disk.

**What it catches**:

- Backtick-quoted paths in markdown
- Markdown link targets (relative paths only)
- Cases where the path doesn't resolve to anything on disk

**Resolution discipline**: tries 3 candidate roots in priority order:

1. File's own directory (intra-dir cross-references)
2. Parent directory (bare-filename refs for files in subdirs)
3. Repository root (repo-relative paths)

Stops on first hit; only emits finding if NO root resolves.

**Future-state context detection**: claims marked future-state are
exempt (proposed/planned/will-be/would-be/tbd/deferred/i'm-guessing/
concretely-something-like/will-probably/etc.).

**Skipped automatically**: globs (*, ?, [...]), URLs, anchors,
absolute paths, placeholders, fenced code blocks.

**Tests**: 17 new tests across looksLikePath / isFutureStateContext /
findPathClaims (33 total in tools/substrate-claim-checker/, all pass).

**Multiple findings this session would have been caught**:

- PR #1280 B-0173 ground-truth recovery claimed `tools/git/hooks/`
  exists; reviewer flagged that it doesn't (B-0173 row deliverable)
- PR #1289 + #1290 review threads flagged similar existence-drift
  patterns

**Sanity check on real substrate**:
- alignment-frontier memo: clean (0 findings)
- B-0173 guess file (post-#1285 fix): 2 false-positives in
  calibration-delta tables (acceptable v0.5 limitation; documented)
- B-0166 guess file: 1 finding (proposed `tools/chat-events/replay.ts`)

**v0.5 known limitations** (documented in README):

- Calibration-delta tables citing path-forms as discussion topics
  may false-positive (mitigated but imperfect)
- Section-level future-state markers don't propagate to claims
  further down; use inline markers per claim or paragraph

**Out of scope (v0.6+)**:

- Tool-existence (e.g., "running `bun X` returns Y") — separate
  empirical-output drift sub-class
- URL existence (web fetches; not file-system)
- Convention drift, path-form drift, self-recursive drift —
  separate sub-classes per the 7-class taxonomy

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants