Skip to content

Retire the Review Environment Measurement and Land the Tree-Source Root Fix - #1463

Merged
ptr727 merged 2 commits into
mainfrom
develop
Sep 9, 2026
Merged

ptr727 merged 2 commits into
mainfrom
develop

Conversation

@ptr727

@ptr727 ptr727 commented Sep 9, 2026

Copy link
Copy Markdown
Owner

Promotes two commits and closes out the measurement series for #1321.

2f85123 removes the Copilot review environment workflow. Its question is answered and the evidence
is recorded on that issue, so the extra setup job it added to every review in this repository goes
with it. This is the revert the promotion that landed it committed to.

bcc06e3 fixes #1445: spec/validate.py compared a tree source against "." as a raw string, so
"./" and ".///." passed the validator and were then refused by scripts/carry.py. The comparison
is normalized in a named helper, with a test that fails when the helper is implemented the old way.

Two defects of the same class in the same check are filed as #1452 rather than fixed here, since each
is an escape rather than a root reduction.

Closes #1445

ptr727 and others added 2 commits September 8, 2026 17:24
…wered (#1461)

The measurement is done. Its result is recorded on #1321, and this
removes the workflow that carried
it along with the extra setup job it added to every Copilot review in
this repository.

## What it established, in one line each

- A setup step **can** place content where the Copilot reviewer reads
it. The reviewer returned a
value generated at run time from `/dev/urandom` and never printed, and
the value hashes to the
  digest in the run log.
- A Copilot code review setup environment receives **no repository
secret**. Measured on a run whose
  step failed saying so.
- Copilot invokes the setup job directly, so the workflow's `on:`
triggers play no part in it.
- Copilot's **incremental** re-review does not honour custom review-body
instructions.

## Also here

The runner plan keeps the `ubuntu-latest` correction and loses the note
that its workflow path was
occupied, which it is not any more.

Its two mentions of that workflow now name the file rather than its full
path. The path has been
tracked once, and the prose gate reads a mention of a once-tracked path
the tree no longer holds as a
stale reference, which is exactly what it should do: the plan proposes a
file it has not created, so
the mention now says so rather than asserting a path that resolves to
nothing.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
…lled (#1462)

Addresses #1445.

`spec/validate.py` compared a tree source against `"."` as a raw string,
so `"./"` and `".///."`
passed the validator and were then refused by `scripts/carry.py`, which
compares `PurePosixPath`
objects. The validator is the gate a manifest author runs first, so the
failure surfaced late and in
a different tool.

The comparison is now normalized in a named helper beside
`escapes_repo_root`. The helper is scoped
to POSIX path rules and says so, since backslash and drive-letter
spellings are the neighbouring
function's subject.

## On the test

It asserts the helper for five spellings of the root and seven ordinary
sources, three of them
carrying a redundant separator or a `./` prefix, so an over-eager
normalizer that refused `./docs`
fails rather than passes.

It does not assert the validator's own refusal of a manifest. The tree
check sits inside `main()`,
which this module has no fixture for, so reverting the call site while
leaving the helper intact
would leave every test green. That gap is stated rather than papered
over.

## Left for #1452

Two defects of the same class remain in the same check, each an escape
rather than a root reduction:
a backslash spelling passes here and is refused by the carrier on
Windows, and a symlinked source
passes `is_dir()` here and is refused by the carrier everywhere. Both
exist because this check
hand-rolls a weaker subset of this file's own `escapes_repo_root`, and
the fix is to call that
function rather than restate part of it, which is a wider change than
this one.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings September 9, 2026 00:24
@coderabbitai

coderabbitai Bot commented Sep 9, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: a1e7ec48-6a78-42cc-b3ff-f0f844b5b089


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟢 Approval recommended

The validator fix is narrowly scoped, covered by a regression test, and the workflow/documentation cleanup is consistent with the stated retirement.

Pull request overview

Retires the temporary Copilot review-environment measurement workflow and fixes spec/validate.py so tree sources that reduce to the repository root (e.g., "./", ".///.") are rejected consistently with scripts/carry.py.

Changes:

  • Remove the .github/workflows/copilot-code-review.yml measurement workflow introduced for issue #1321.
  • Add reduces_to_repo_root() and use it in the tree source/target validation rule to normalize "."-equivalent spellings.
  • Add focused unit coverage for the new normalization helper and update the homelab runner plan to reflect the workflow’s absence.
File summaries
File Description
spec/validate.py Normalizes the “tree path must be below repo root” check via reduces_to_repo_root().
scripts/tests/test_spec_validate.py Adds unit tests covering root-reducing vs non-root tree-source spellings.
docs/homelab-runner-selection-plan.md Removes now-stale references to the retired measurement workflow and keeps the plan consistent.
.github/workflows/copilot-code-review.yml Deletes the temporary measurement workflow for #1321.
Review details
  • Files reviewed: 4/4 changed files
  • Comments generated: 0
  • Review effort level: Lite

💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@ptr727
ptr727 merged commit 8195c43 into main Sep 9, 2026
9 checks passed
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.

spec/validate.py accepts a tree source that carry.py refuses, comparing "." as a raw string

2 participants