Skip to content

Extraction changed three behaviours: whole-repo check returns a false green, review loses its workspace root, help loses its defaults #4

Description

@schickling-assistant

The extraction of the checker into crates/intent changed three behaviours relative to the
implementation it was lifted from. One of them makes a documented whole-repository invocation
return a false green. All three were found by an independent review of the consuming change and
re-derived at source; none is a regression introduced after the merge.

1. Whole-repository check silently stops enforcing meta-VRS decision shape (high)

The contract documents whole-repository scope for check [path]. The original resolved the
decision directory with a fallback:

let direct = root.join(".decisions");
if direct.is_dir() { direct } else { root.join("context/vrs/.decisions") }

crates/intent/src/lib.rs keeps only root.join(".decisions").

Repro: place a malformed decision at repo/context/vrs/.decisions/0001-bad.md and run
check repo --profile local --json. Expected a blocking VRS.ENF.meta-decision-shape
diagnostic; actual is that repo/.decisions is absent, the decision-shape pass is skipped, and
no other recursive Markdown pass performs the shape check. The result is a pass.

No test covers it: every helper on both sides passes repo/context/vrs directly, so the ported
tests cannot reach this path. A green port audit of those tests is not evidence about this
branch.

Either restore the fallback, or narrow the documented scope deliberately and say so in the
contract — but the current state documents one behaviour and implements another.

2. review_workspace loses its context/vrs sentinel (medium)

The original found the repository root from either a .git directory or the nearest ancestor
containing context/vrs. The extracted version keeps only the .git probe and otherwise falls
back to the corpus root — which is then passed as the review backend's --cwd and used as the
target-artifact escape boundary.

In a vendored or exported source tree with no .git, review is handed the corpus root instead
of the repository root, hiding repository context from the reviewer and rejecting target
artifacts elsewhere in the repository. Ordinary git worktrees mask this entirely, which is why
differential runs did not surface it.

3. Displayed defaults disappeared from --help and completions (medium)

To let the standalone tool and its embedding host carry different defaults, the arguments moved
from clap default_value to Option<PathBuf>, with defaults applied inside run_with.

Bare invocation still resolves correctly, but check|graph|review|review-fixtures --help no
longer advertises the documented defaults, and generated completion metadata no longer contains
them. No help or completion test covers this, so nothing fails.

Findings 2 and 3 are reported as described by the review and have not been independently
reproduced.

Related

The rename decision covering this corpus rules that the *.vN schema strings move along with
everything else. Those strings are emitted by the binary, so that is a code change here plus an
assertion change in the consumer — it is not a documentation-only pass, and it should not be
folded into an identifier-rename commit. Tracked separately from this issue.

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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