Skip to content

Compat: FastHenry .units spellings, missing .units, and repeated .units - #153

Open
rjwalters wants to merge 1 commit into
mainfrom
feature/issue-144
Open

rjwalters wants to merge 1 commit into
mainfrom
feature/issue-144

Conversation

@rjwalters

@rjwalters rjwalters commented Oct 5, 2026 •

Copy link
Copy Markdown
Member

Closes #144

Summary

Everything is under --fasthenry-compat (ParseOptions::fasthenry_compat); native mode is unchanged.

  • Long spellings FastHenry reads correctly — meter(s), metre(s), kilometer(s), kilometre(s), inch, inches (case-insensitive) — are accepted at the documented unit's factor, with a warning on the .units line naming the documented spelling. The documented seven (and mil) raise no warning.
  • Misread spellings are an error, not reproduced: millimeter*/millimetre*/milli* (FastHenry reads mils, 2.54e-5 m) and micron*/micrometer*/micrometre* (FastHenry reads metres). The message names the misreading and the documented spelling (mm / um). Anything else (centimeter, nm, ft, …) stays the ordinary unknown-unit error.
  • Missing .units means metres, with a warning on the first line that needs a unit (.default, N, E, G, .hole, .contact), pushed in deck order.
  • Repeated .units apply from their own line onward only. Every value read so far, .default fields included, is already stored in metres and S/m, so nothing earlier gets re-scaled. Compat: default an unspecified conductivity to copper (5.8e7 S/m), with a warning #148's copper default is a physical 5.8e7 S/m that ignores the unit, so it composes with this without any change.

Coordination

Docs

  • docs/fasthenry-compat.md, .units section: I updated the .units <unit> row and added rows for several .units, for long spellings, and for misread spellings. I also added a compat note to the .default row.
  • CHANGELOG.md has an Unreleased entry.

Test plan

  • cargo fmt --check
  • cargo clippy --all-targets --workspace -- -D warnings
  • cargo test -p fasterhenry-cli. This includes new tests for long spellings, misread spellings, missing .units, forward-only repeated .units (with a mm-era .default sigma), and native mode staying unchanged.

Clean-room: written only from the issue spec and the public docs; no FastHenry source or example decks were consulted.

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

@rjwalters rjwalters added the loom:review-requested PR ready for Judge to review. Applied by: Builder when opening PR. label Oct 5, 2026
@rjwalters

Copy link
Copy Markdown
Member Author

Judge review: approved (closes #144)

Checked the diff against each acceptance criterion in #144:

  • Long spellings: compat_unit_factor maps meter(s)/metre(s) → 1, kilometer(s)/kilometre(s) → 1e3, inch/inches → 0.0254, case-insensitively. Each one raises a line-numbered warning that names the documented spelling. The documented seven plus mil still go through unit_factor and warn about nothing. The test compares geometry with the documented unit's result and checks the length for inches.
  • Misread spellings: milli… (which covers millimeter/millimetre/milli) and micron…/micromet… are errors. The message names FastHenry's misreading (mils at 2.54e-5 m, or metres) and the documented spelling (mm/um). mil/mils resolve before the prefix check, so they are unaffected. centimeter, nm, ft, c, u and i still give the native unknown-unit error.
  • Missing .units: this only applies under compat. The first N/E/G/.default/.hole/.contact line sets the unit to metres and emits one warning, and finish() skips the missing-units error only when fasthenry_compat is set.
  • Forward-only .units: .default values go through parse_value with the factor in force on their own line and are stored scaled. So a .default sigma=5.8e4 written under .units mm stays 5.8e7 S/m after a later .units m. compat_repeated_units_apply_forward asserts this for .default w/sigma, for an explicit sigma after the switch, and for a third .units cm.
  • Native mode: native mode does not change. The same test checks that native mode still rejects a duplicate .units, a missing .units and meters. The compat-table rows are updated.
  • Changed test compat_mode_ignores_directive_like_first_line: the new expectation is correct under the spec, and the test is not weaker. Line 1 (.units m) is swallowed as the title, so the deck has no .units and must read in metres with a warning. The test now checks the title, exactly one warning and the warning text, so it asserts more than the old error check did.

Clean-room: the code, docs and CHANGELOG come from the issue spec and public-guide behaviour. I found nothing derived from FastHenry.

CI: all checks were still pending when I reviewed. I judged the code only, and merging must wait for CI to go green and for mergeStateStatus to be CLEAN (currently BLOCKED on pending checks).

@rjwalters rjwalters added loom:pr PR approved by Judge, ready for Champion auto-merge. Applied by: Judge. and removed loom:review-requested PR ready for Judge to review. Applied by: Builder when opening PR. labels Oct 5, 2026
@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor

Verdict anchored to the current head — no marker had been recorded

This PR carries loom:pr, but no verdict-SHA marker was ever written for that verdict, so it was unverifiable: nothing could tell whether it still described the tree in front of it, and it would have survived a force-push undetected — the exact pre-#5686 hazard.

This comment records the head SHA as of now, 02aafa9b25bd54d3e555eed636b07ab14fafae3a. It is not a review and implies no judgment about this tree: the loom:pr label is unchanged. From here on the verdict is invalidatable — if the head moves off 02aafa9b25bd54d3e555eed636b07ab14fafae3a, the stale-verdict pass clears loom:pr and returns the PR to loom:review-requested.

Anchoring bounds future exposure; it cannot reconstruct which tree was actually reviewed. If the head already moved before this comment, treat the verdict with corresponding suspicion.


Automated by loom-daemon claim reconciliation (#6319)

@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor

Landing order recorded — this PR overlaps other open work

Planned by the merge-sequencing pass (#9686): this PR lands AFTER #152, because it changes files #152 also changes. Order within overlapping work is oldest-first; independent PRs are unaffected.

While the loom:sequenced label is present, merge-pr.sh refuses to merge this PR (the #9378 gate). The label clears mechanically when #152 lands at the recorded head — or by re-evaluation if it closes or moves. This is a scheduling preference: it suppresses only redundant base-conflict repairs while #152 is in flight, never a genuine review finding.


Automated by loom-daemon claim reconciliation (#9686, plan seq-8c981698)

@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor

Landing order recorded — this PR overlaps other open work

Planned by the merge-sequencing pass (#9686): this PR lands AFTER #152, because it changes files #152 also changes. Order within overlapping work is oldest-first; independent PRs are unaffected.

While the loom:sequenced label is present, merge-pr.sh refuses to merge this PR (the #9378 gate). The label clears mechanically when #152 lands at the recorded head — or by re-evaluation if it closes or moves. This is a scheduling preference: it suppresses only redundant base-conflict repairs while #152 is in flight, never a genuine review finding.


Automated by loom-daemon claim reconciliation (#9686, plan seq-1d039e6e)

@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor

Landing order recorded — this PR overlaps other open work

Planned by the merge-sequencing pass (#9686): this PR lands AFTER #152, because it changes files #152 also changes. Order within overlapping work is oldest-first; independent PRs are unaffected.

While the loom:sequenced label is present, merge-pr.sh refuses to merge this PR (the #9378 gate). The label clears mechanically when #152 lands at the recorded head — or by re-evaluation if it closes or moves. This is a scheduling preference: it suppresses only redundant base-conflict repairs while #152 is in flight, never a genuine review finding.


Automated by loom-daemon claim reconciliation (#9686, plan seq-36cf2910)

@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor

Landing order recorded — this PR overlaps other open work

Planned by the merge-sequencing pass (#9686): this PR lands AFTER #152, because it changes files #152 also changes. Order within overlapping work is oldest-first; independent PRs are unaffected.

While the loom:sequenced label is present, merge-pr.sh refuses to merge this PR (the #9378 gate). The label clears mechanically when #152 lands at the recorded head — or by re-evaluation if it closes or moves. This is a scheduling preference: it suppresses only redundant base-conflict repairs while #152 is in flight, never a genuine review finding.


Automated by loom-daemon claim reconciliation (#9686, plan seq-52da1383)

@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor

Champion: Cannot Auto-Merge

Cannot auto-merge:

  • CI status (criterion 6): failing checks on head 02aafa9: Dependency licenses & sources (cargo-deny), Rust (macos-latest). Several of these ran the full 15m02s before failing, which looks like a runner timeout or stall rather than a code failure, but that is not confirmed.

Next steps:

  • Re-run the failed jobs (or push a fix if the failure is real) so all required checks go green.
  • Champion re-evaluates on the next tick; the Judge approval is fresh for the current head and unaffected.

Keeping loom:pr label. Champion will retry on the next tick once the blocking condition clears.


Automated by Champion role

loom dashboard

@loom-fleet-dispatch loom-fleet-dispatch Bot added the loom:treating Doctor is fixing this bug or PR. Applied by: Doctor. Stale after LOOM_STALE_TREATING_MINUTES (60m). label Oct 5, 2026
@loom-fleet-dispatch loom-fleet-dispatch Bot removed the loom:treating Doctor is fixing this bug or PR. Applied by: Doctor. Stale after LOOM_STALE_TREATING_MINUTES (60m). label Oct 5, 2026
@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor

🔧 Resolved merge conflicts with main branch (rebased onto origin/main).

Changes:

No substantive code changes. Verified locally: cargo fmt --check clean, cargo test -p fasterhenry-cli all passing, version-check gate clean. loom:pr approval left intact.

loom dashboard

@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor

Stale review verdict cleared — head SHA moved

This PR's loom:pr verdict was rendered against 02aafa9b25bd54d3e555eed636b07ab14fafae3a, but the current head is 0e0659026dc029465e02ce3ba3d48aece029ea96. A review verdict is a statement about a specific tree, so it does not survive a rebase, a force-push, or new commits.

  • Verdict cleared: loom:pr (recorded for 02aafa9b25bd54d3e555eed636b07ab14fafae3a)
  • Returned to the review queue: loom:review-requested (current head 0e0659026dc029465e02ce3ba3d48aece029ea96)

Judge will re-evaluate the tree that is actually here now. No judgment about the new tree is implied either way — the old verdict simply no longer describes it.


Automated by loom-daemon claim reconciliation (#5686)

@loom-fleet-dispatch loom-fleet-dispatch Bot added loom:review-requested PR ready for Judge to review. Applied by: Builder when opening PR. and removed loom:pr PR approved by Judge, ready for Champion auto-merge. Applied by: Judge. labels Oct 5, 2026
@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor

🩺 Doctor standing down: PR head moved to 0e06590 while I was resolving the conflicts, and the PR is now MERGEABLE and back on loom:review-requested. Discarding my duplicate rebase — no push made.

loom dashboard

@loom-fleet-dispatch loom-fleet-dispatch Bot added the loom:reviewing Judge is reviewing this PR. Applied by: Judge only. Stale after LOOM_STALE_REVIEWING_MINUTES (30m). label Oct 5, 2026
@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor

Static review of head 0e06590 found no blocking issue in the units parsing, forward-only scale changes, tests, or documentation. This is conditional review feedback, not approval.

Verification: check-review-feedback.sh reported CLEAR (0 formal reviews and 0 inline comments). git rev-list --count HEAD..origin/main returned 0. Local test-plan commands could not execute: timeout reported cargo: No such file or directory, so fmt, clippy, and CLI tests are unverified locally. The PR has no TDD claim (advisory only).

After a bounded foreground wait and another gh pr checks snapshot, Rust (macos-latest), Rust (ubuntu-24.04-arm), and Rust (ubuntu-latest) are still pending; the four other CI jobs passed. Releasing loom:reviewing and retaining loom:review-requested for a fresh review once CI settles.

@loom-fleet-dispatch loom-fleet-dispatch Bot added loom:reviewing Judge is reviewing this PR. Applied by: Judge only. Stale after LOOM_STALE_REVIEWING_MINUTES (30m). and removed loom:reviewing Judge is reviewing this PR. Applied by: Judge only. Stale after LOOM_STALE_REVIEWING_MINUTES (30m). labels Oct 5, 2026
@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor

✅ Approved!

Reviewed head 0e0659026dc029465e02ce3ba3d48aece029ea96 against #144. No blocking findings. Inspection of compat_unit_factor, apply_line, apply_units, and the existing parse_value/default storage confirms the requested opt-in unit spellings, diagnostic rejection of misread spellings, metre fallback, and forward-only scale changes. Native-mode guards remain in place; regression tests cover these behaviors and the documentation matches the implementation.

Verification:

  • gh pr checks 153: seven CI checks pass; optional codesmith check skipped. Merge state is CLEAN.
  • Ubuntu CI job 112005879785 logs show cargo fmt --all --check, cargo clippy --workspace --all-targets -- -D warnings, and cargo test --workspace succeeded. CLI unit tests: 124 passed, 0 failed, including all four new units tests.
  • Local test-plan execution was attempted but unavailable: cargo is not installed/on PATH. No local test result is claimed; validation above is from the fetched CI logs.
  • check-review-feedback.sh: CLEAR, zero formal reviews and zero inline comments/threads.
  • git rev-list --count HEAD..origin/main: 0.
  • No TDD declaration is present (advisory only).

loom dashboard

@loom-fleet-dispatch loom-fleet-dispatch Bot added loom:pr PR approved by Judge, ready for Champion auto-merge. Applied by: Judge. and removed loom:reviewing Judge is reviewing this PR. Applied by: Judge only. Stale after LOOM_STALE_REVIEWING_MINUTES (30m). loom:review-requested PR ready for Judge to review. Applied by: Builder when opening PR. labels Oct 5, 2026
@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor

Standing down: re-checked labels immediately before writing my verdict and found loom:reviewing removed and loom:pr already present — another Judge's approval of head 0e06590 raced mine. Discarding my review; not writing any label. My independent findings agree: no blocking issues; CI all green (incl. Rust ubuntu-latest/macos/arm), review-feedback gate CLEAR, cargo fmt --check ok, and the 13 compat unit tests in fasterhenry-cli pass locally (run with RUSTC_WRAPPER disabled because the host's sccache binary is missing — reported, host not modified).

@loom-fleet-dispatch loom-fleet-dispatch Bot added the loom:treating Doctor is fixing this bug or PR. Applied by: Doctor. Stale after LOOM_STALE_TREATING_MINUTES (60m). label Oct 5, 2026
@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor

🔧 Resolved merge conflicts with main branch.

Changes:

No substantive code changes made - only conflict resolution. Local: cargo fmt --check clean, cargo test -p fasterhenry-cli --lib inp 124 passed. loom:pr kept intact.

loom dashboard

@loom-fleet-dispatch loom-fleet-dispatch Bot added loom:reviewing Judge is reviewing this PR. Applied by: Judge only. Stale after LOOM_STALE_REVIEWING_MINUTES (30m). and removed loom:reviewing Judge is reviewing this PR. Applied by: Judge only. Stale after LOOM_STALE_REVIEWING_MINUTES (30m). labels Oct 7, 2026
@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor

Judge pass: still carries a fresh loom:reviewing claim (claimed 2026-10-07T07:30:10Z, idle 0m) — standing down without reclaiming. Not stomping.

Stand-down passes against this claim: 1 of 3 before the bounded fallback force-reclaims it. This comment is edited in place on each pass rather than reposted (#5123, #6514).

@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor

Judge code evaluation completed for 59011cf4d21796e17bccd93b198102a1baca0806: no blocking code findings in the parser, regression tests, compatibility documentation, or changelog diff. This is a conditional evaluation, not approval.

Validation:

  • git diff --check origin/main...HEAD: exit 0, no output. git rev-list --count HEAD..origin/main: 0.
  • check-review-feedback.sh --number 153 --head-sha 59011cf4d21796e17bccd93b198102a1baca0806: CLEAR, zero formal reviews and zero inline comments.
  • The PR test plan's local fmt, clippy, and CLI tests could not run: cargo: command not found. No local test pass is claimed. TDD declaration is absent (advisory only).
  • gh pr checks 153: six checks pass; Rust (ubuntu-latest) remains pending after a bounded 50-second watch. That prevents approval under the Judge CI gate.

Releasing loom:reviewing and retaining loom:review-requested so a later Judge pass can validate the completed CI results and evaluate the current head.

@loom-fleet-dispatch loom-fleet-dispatch Bot added loom:reviewing Judge is reviewing this PR. Applied by: Judge only. Stale after LOOM_STALE_REVIEWING_MINUTES (30m). and removed loom:reviewing Judge is reviewing this PR. Applied by: Judge only. Stale after LOOM_STALE_REVIEWING_MINUTES (30m). labels Oct 7, 2026
@loom-fleet-dispatch

loom-fleet-dispatch Bot commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

Judge pass: still carries a fresh loom:reviewing claim (claimed 2026-10-07T07:32:44Z, idle 3m) — standing down without reclaiming. Not stomping.

Stand-down passes against this claim: 2 of 3 before the bounded fallback force-reclaims it. This comment is edited in place on each pass rather than reposted (#5123, #6514).

@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor

✅ Approved!

Reviewed at head 59011cf (local worktree was on a stale pre-rebase copy of the commit, so I re-checked out the actual PR head before testing).

  • Closes Compat: FastHenry .units spellings, missing .units, and repeated .units #144 present; scope is confined to --fasthenry-compat — native path unchanged (covered by assertions in compat_repeated_units_apply_forward).
  • compat_unit_factor: long spellings accepted with warning; milli* / micron* / micromet* rejected with a message naming the misreading and documented unit; other spellings fall through to the ordinary unknown-unit error. Prefix ordering is correct (micromet* doesn't shadow meter).
  • Missing .units → metres with a single warning on the first unit-needing line; repeated .units is forward-only, consistent with values being stored in metres/S/m.
  • Docs and CHANGELOG updated.

Test Execution

  • cargo test -j2 -p fasterhenry-cli --lib compat — ✅ 16 passed
  • cargo test -j2 -p fasterhenry-cli --lib — ✅ 130 passed
  • fmt/clippy from the test plan: not re-run locally; CI green on all 7 checks (ubuntu, macos, arm, cargo-deny, cargo-about, clean-room, package).
  • Formal reviews / inline threads: CLEAR (0 reviews, 0 threads).

Note: the PR body's coordination note says it may conflict with #148 in DeckBuilder/ParseOptions docs — trivial, whichever merges second rebases.

loom dashboard

@loom-fleet-dispatch loom-fleet-dispatch Bot added loom:pr PR approved by Judge, ready for Champion auto-merge. Applied by: Judge. and removed loom:reviewing Judge is reviewing this PR. Applied by: Judge only. Stale after LOOM_STALE_REVIEWING_MINUTES (30m). loom:review-requested PR ready for Judge to review. Applied by: Builder when opening PR. labels Oct 7, 2026
@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor

Champion Auto-Merge

Current-head Judge approval is fresh; no prior merge-risk hold. Read the full diff: compat_unit_factor handles safe spellings and rejects misread prefixes; apply_units and the implicit metre default apply forward only. Changes are confined to deck parsing or plane bars plus tests/docs, the specific Judge review is backed by current-head CI, and reverting the commit undoes the change. All four risk axes pass.

PASS: No critical files modified (fresh paginated list inspected). MERGEABLE; last real activity 1h ago; all seven CI checks pass. Proceeding through the guarded merge script.

Automated by Champion role

@loom-fleet-dispatch

loom-fleet-dispatch Bot commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

Champion: Merge Failed

Guarded merge exited 1. The required-check freshness lookup returned Resource not accessible by integration; the guard failed closed. Nothing merged and loom:pr remains. Branch-protection read access must be restored before this merge can proceed.

Automated by Champion role

@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor

Champion Auto-Merge

Fresh Judge approval covers head 59011cf4; no prior merge-risk hold. Full diff inspection finds the units-token normalization, missing-units default, and repeated-units warning paths, backed by focused parser tests. The change is confined to deck unit parsing, the Judge review cites the exact behavior and current-head CI evidence, no external state is written, and a revert fully restores prior behavior. All four risk axes pass.

PASS: No critical files modified (fresh paginated file list inspected). Live mergeability is MERGEABLE, real activity is within 24 hours, and all required CI checks pass.

Proceeding through the guarded merge script.


Automated by Champion role

loom dashboard

@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor

Champion: Cannot Auto-Merge

The guarded merge failed closed because the required-check freshness lookup for classic branch protection returned Resource not accessible by integration. The installed daemon also lacks merge-pr chain-lock.

Nothing merged; keeping loom:pr for re-evaluation. Restore branch-protection read access and roll a compatible daemon before retrying.


Automated by Champion role

loom dashboard

@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor

Champion Auto-Merge

Fresh approval covers the current head; no prior risk or critical-file hold. Full diff read: compat_unit_factor, missing-unit initialization, repeatable apply_units and finish validation are bounded to deck units; geometry and conductivity regressions verify forward-only scaling. The specific Judge review cites code and test evidence. All four risk axes pass: enumerated feature-local changes, specific verification, and full revertability without external state effects.

PASS: No critical files modified (or only version-only carve-out files). Fresh paginated loop passed; MERGEABLE, real activity within 24 hours, and all executing CI checks pass. Proceeding through the guarded merge script.

Automated by Champion role

loom dashboard

@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor

Champion: Merge Failed

Guarded merge exited 1: required-check freshness lookup failed with Resource not accessible by integration. The installed daemon also lacks merge-pr chain-lock. Nothing merged; loom:pr remains. Restore branch-protection read access and a compatible daemon before retrying.

Automated by Champion role

loom dashboard

@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor

Champion: Merge Deferred

Current-head approval is fresh, but the required-check freshness guard exited 2: branch-protection lookup returned Resource not accessible by integration. This pass cannot establish merge eligibility. Nothing merged and labels remain unchanged. Restore integration access to the branch-protection lookup before retrying.

Automated by Champion role

loom dashboard

@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor

Champion Auto-Merge

Fresh Judge approval covers the current head; no prior merge-risk hold. The complete diff is confined to compatibility-mode unit parsing, its focused regression tests, and docs. The Judge traced unit spelling classification, missing-unit fallback, forward-only repeated directives, and native-mode behavior; current-head CI is green. All four risk axes pass: enumerated feature-local changes, specific verification, no external state effects, and full revertability.

PASS: Fresh paginated file inspection found no critical files. Live mergeability is MERGEABLE, real activity is within 24 hours, and all executing CI checks pass.

Proceeding through the guarded merge script.


Automated by Champion role

loom dashboard

@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor

Champion: Merge Failed

The guarded merge exited 1. Its required-check freshness guard could not read classic branch protection (Resource not accessible by integration), so it failed closed. Nothing merged and loom:pr remains. Restore branch-protection read access before retrying.


Automated by Champion role

loom dashboard

@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor

Champion: Merge Blocked

The live required branch-protection check lookup returns HTTP 403: Resource not accessible by integration. Guarded merging cannot proceed with the active credential. Current approval matches the head and CI is green; merge-risk evaluation is deferred because this environment blocker prevents merging. Keeping loom:pr for a later pass. Restore branch-protection read access before retrying.

Automated by Champion role

loom dashboard

@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor

Champion: PR Is Stale

Last real activity was 2026-10-07T07:42:56Z (27 hours ago), outside the 24-hour recency window. Champion comments do not reset this clock. Routed out of the auto-merge queue for a rebase/refresh.

Rebase onto the latest main, resolve any drift, and re-request Judge review.


Automated by Champion role

loom dashboard

@loom-fleet-dispatch loom-fleet-dispatch Bot added loom:changes-requested PR requires changes before re-review (Judge requested modifications). Applied by: Judge. loom:review-requested PR ready for Judge to review. Applied by: Builder when opening PR. and removed loom:pr PR approved by Judge, ready for Champion auto-merge. Applied by: Judge. loom:changes-requested PR requires changes before re-review (Judge requested modifications). Applied by: Judge. labels Oct 8, 2026
@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor

Stale review verdict cleared — head SHA moved

This PR's loom:changes-requested verdict was rendered against cb9926da7e836d02a0de4a55fd7bebf114215043, but the current head is 59011cf4d21796e17bccd93b198102a1baca0806. A review verdict is a statement about a specific tree, so it does not survive a rebase, a force-push, or new commits.

  • Verdict cleared: loom:changes-requested (recorded for cb9926da7e836d02a0de4a55fd7bebf114215043)
  • Returned to the review queue: loom:review-requested (current head 59011cf4d21796e17bccd93b198102a1baca0806)

Judge will re-evaluate the tree that is actually here now. No judgment about the new tree is implied either way — the old verdict simply no longer describes it.


Automated by verdict-staleness-guard.sh (#5686)

This branch has not been deployed

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

Labels

loom:review-requested PR ready for Judge to review. Applied by: Builder when opening PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Compat: FastHenry .units spellings, missing .units, and repeated .units

1 participant