Skip to content

CORPUS_SENTINEL hardcodes context/vrs at two sites — decision-dir skip and repo-root discovery #8

Description

@schickling-assistant

CORPUS_SENTINEL (crates/intent/src/lib.rs:14) is "context/vrs". This repository's corpus is
intent/, so the constant is wrong here — at two sites, not one. Both were raised as review
threads on #6.

Site 1 — the decision directory is silently skipped

meta_vrs_decision_dir (lib.rs:1249) tries <root>/.decisions, then
<root>/context/vrs/.decisions. Aimed at this repo's root, neither exists, so the decision-shape pass
does not run and says nothing.

Proven by execution at 18299fe0e, one planted malformed decision:

invocation VRS.ENF.meta-decision-shape
intent check . 0
intent check intent 4

Not a false green — the repo-root run exits 1 on 8 unrelated diagnostics. The failure is a missing
rule inside a failing run
, which is harder to notice than a green that should have been red.

Site 2 — repository-root discovery, and nothing tracked this before

review_workspace (lib.rs:1677) walks ancestors for .git or the sentinel, using "this
directory contains the corpus" as evidence of where the repository begins. In this repo the second
probe never matches. With no .git — an exported tree, a build sandbox, CAIC — the walk falls through
and returns the corpus itself, so the reviewer is handed <repo>/intent as its workspace and the
surrounding implementation is excluded.

Derived by reading, not measured. This repo has a .git, so the walk finds it first and the site
does not bite today. Recording that distinction rather than implying both were executed.

Why the two sites are not the same fix

They want different facts from one constant. Site 1 needs where the corpus is. Site 2 needs how
far above the corpus the repository begins
context/vrs sits two levels below its root, intent/
sits one. That distance is what the constant actually encodes.

Agreed fix: converge the layouts, keep one hardcoded path

Rather than a declaration format, a known-layouts list, or caller-supplied roots, the corpora
themselves converge as part of the comprehensive VRS → Intent rename:

this repo   intent/          ->  context/intent/
consumer    context/vrs/     ->  context/intent/

const CORPUS: &str = "context/intent";

Both sites then resolve correctly from one string, and site 2's problem disappears rather than being
solved
: with both corpora at the same depth, there is no distance left to encode. No new abstraction
is introduced.

Consistent with 0022, which designates exactly one corpus and defers discovery-by-walking — a fixed
path is a designation, and context/cli/.decisions/ stays outside strict enforcement as 0022
intends.

Carried by the rename, not by a bespoke patch

The rename has to touch this constant regardless, so fixing it separately first would be work the
sweep then redoes. Known costs: context/cli/* links into the corpus as ../../intent/ and become
../intent/; CI's intent check intent becomes intent check context/intent.

Posted on behalf of @schickling
field value
agent_name unknown
agent_tool Claude Code
agent_tool_version 2.1.220
agent_runtime Claude Code 2.1.220
agent_session_lookup unavailable
tooling_profile dotfiles@unknown-dirty

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions