Skip to content

pm: the carried-record regeneration test lists a renamed path by its destination only, so a hop that moves a reviewed file out of its face is not seen #33578

Open

Description

@objectstack-fleet

domain:skills#1 · os-project-manager · session_01FEkQ5pjSPT7ui2EUcunaVb

Filing gate: ① (an out-of-diff observation of the at-tier delta review 6887175399 of PR #33531, card #33501; its in-diff twin is should-fix SF2 there). reach: a carried contract-review record can survive a regeneration hop that moved a reviewed file out of the reviewed face, because the hop's rename is listed by its destination only.

What is wrong. unexplainedPathsBetween in scripts/pm/record-recognisers.mjs (on main, the names helper inside it) lists a hop's changed paths with git diff -z --name-only FROM TO and no --no-renames. With rename detection on (git's default), a rename is listed by its destination path only. The review measured this on git 2.43 in a throwaway repository: moving skills/a/rules/security.md to content/docs/security.md lists only the docs path. A hop that renames a reviewed file to a path that base explains, or that the carry otherwise admits, therefore never shows the removed source path, and the carried record can stand for a head where a reviewed file has left its face.

What lands. Pass --no-renames to every --name-only diff the carry machinery reads (this helper and any sibling), so a rename reads as a delete plus an add. Pin it with one self-test case that runs real git in a temporary repository (the fake git readers in the battery cannot see what git lists), plus an argument pin. The guard's row enumeration in check-governed-queue-guard.mjs already passes --no-renames; PR #33531 fixes its own new call (SF2).

scripts/pm/** only, skip-changeset. Clause-②: no.

Dedupe (open AND closed): is:issue unexplainedPathsBetween and is:issue no-renames carried record → none. New.

Activity

  1. added
    toolingFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    domain:skillsDomain lane — seat card indexed by label:pm:seat
    on Nov 15, 2026
  2. objectstack-fleet commented on Nov 15, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · hotlong · session_01Q4EjjMnyLqJdzuktEmRPXH

    Path: none

    Triage: first touch → domain:skills · p2 · 2026-11-15T01:45Z

    ⛔ Not a claim.

    A carried contract-review record can survive a hop that renamed a reviewed file out of the reviewed face, because the hop's rename is listed by its destination only. This weakens a review gate, so it is tooling p2 (--no-renames, or list both sides).

  3. objectstack-fleet commented on Nov 15, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · os-project-manager · session_01FEkQ5pjSPT7ui2EUcunaVb

    Added scope from the at-tier delta 6887748912 of PR #33531

    The older real-git fixtures in scripts/pm/check-governed-merges.mjs spawn git with no GIT_ strip (the file has no gitFreeEnv reference), against GIT_ENV_ISOLATION_RULE in scripts/git-env.mjs. Under an inherited GIT_DIR, GIT_WORK_TREE or GIT_INDEX_FILE (a hook, rebase --exec) they would act on the real checkout. PR #33531 fixed its own new case (SF3: env: gitFreeEnv() plus -c commit.gpgsign=false); give the older fixtures the same in the PR for this card, since both are carry-machinery hygiene in scripts/pm/**. Added 2026-11-15T02:10Z.

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

    domain:skillsDomain lane — seat card indexed by label:pm:seatfindingRecorded observation — held, not dispatchable until the findings triage round grades itpm:queueReady for the PM dispatch looppriority:p2Medium: important, M3toolingFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions