Skip to content

Five UMS entries merged with a Needs-more-work verdict: 14 findings, several factual errors on main #2174

Description

@d-morrison

#2171 (commit e29d001f,
"ums: bank five process learnings from the 2026-08-24 session") merged while its
adversarial self-review was still running. That review returned Needs more
work
against the merged content, with 14 findings, several of them factual
errors now on main.

Filing rather than fixing inline because the content is merged and the
corrections span five files; they want their own reviewed PR.

How it happened

Two failures compounded, and both are already documented, which is why this
issue is about the artifacts rather than about the process:

  1. The Claude reviewer was quota-skipped on that PR (No CLAUDE_CODE_OAUTH_TOKEN or ANTHROPIC_API_KEY).
  2. check-pr-fully-clean.py nonetheless exited 0 with latest = clean,
    because it counted the authoring session's own self-review comment as the
    verdict. That is the false-clean the self-review-not-counted-by-checker
    memory entry records as falsified on 2026-08-20 (#1798):
    the comment loop admits on a body marker with no author check.

So the PR merged with no independent external verdict, and the checker said it
had one.

Findings to correct

shared/writing/semantic-line-breaks.md (the entry on ellipses as sentence
boundaries) --- four errors, three of them about the mechanism it asserts:

  • "Don't expect the reformatter to propose this split" is false; running the
    repo's own reformatter proposes it in both worked cases. The stated reason
    (it shares the regex branch) is a reason it would split.
  • "only when the next word is capitalized" is false. The lookahead class is
    [A-Z"'`*\[] --- five lowercase followers match, and the entry's own
    example matches on the ", never examining the capital.
  • The mechanism attribution is wrong in both halves: the match comes from the
    last . of an ellipsis, not the first, and in ... " And the " is
    matched by the lookahead rather than consumed by the closing class.
  • "at the pinned SHA" is ambiguous between two SHAs whose regex differs in
    exactly the class being quoted; the quoted form is right for only one.

memories/github-actions.md (the SHA-pin entry):

  • The composite action named as the fix does nest a uses:
    (actions/setup-python at line 61), so it is not the "terminal case" the
    entry defines, and the follow-on "removing the hop is what removes the
    question" inherits that --- the hop is pinned, not removed.
  • The audit command hard-codes contents/<path>/action.yml, so it cannot audit
    a reusable workflow, which is the artifact class the entry is about.
  • It cites verify-the-right-artifact's "one half of a mechanism for the whole"
    where #2165 assigns
    the tighter-fitting "a checkout for the run".
  • "It adds a second party who can move the tag" --- d-morrison/gha redirects
    to Morrison-Lab/gha; same repo, transferred, so no second party. The general
    claim stands; the word "here" does not.

shared/workflow/derive-dont-enumerate.md:

  • git log -S/-G cannot "reach a variant introduced under different wording";
    both take a string or regex you already supply, so they widen the time axis
    and not the wording axis --- the inference grep-is-not-coverage.md
    forbids. Also -S ... -- <path> does not follow renames without --follow,
    and the example omits --all.

shared/coding/fact-check-code-logic.md vs
shared/workflow/fixtures-are-not-evidence.md:

  • The two entries, added in the same commit, give opposite prescriptions for
    the same observation (a green suite over an unexercised clause): one says that
    argues for a test, the other for a deletion. Neither names the discriminator
    and neither links the other.
  • fixtures-are-not-evidence's "settled by reading the documentation, never by
    more fixtures" is insufficient for its own example, where reachability turns
    on a competing alternative's shape rather than on the API.
  • Its "Every section above treats a masking fixture as a defect in the test" is
    an unchecked scope claim; the fourth-direction section above it does not.
  • fact-check-code-logic mischaracterizes the bullet it cites (a mismatch, not
    an overstatement), and its heading claims "no mutation available" while its
    own first Do supplies the substitute measurement.

All five entries: four cite no source for the incident they record, against
the convention every neighbouring section in those files follows. That is how
the errors above survived --- an uncited claim is uncheckable by the next reader.

Suggested scope

One PR correcting the five entries, driven to a real external verdict rather
than a self-review. The semantic-line-breaks entry is the one to verify by
running the regex rather than by reasoning about it, since three of its four
errors are mechanism claims that a single run refutes.

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