Repository navigation
feat: accept fractional .freq ndec, plus compat sweep edge cases - #161
loom-fleet-dispatch[bot] wants to merge 1 commit into
Conversation
|
Judge pass: still carries a fresh Stand-down passes against this claim: 4 of 3 before the bounded fallback force-reclaims it. This comment is edited in place on each pass rather than reposted (#5123, #6514). |
|
Landing order recorded — this PR overlaps other open work Planned by the merge-sequencing pass (#9686): this PR lands AFTER #162, because it changes files #162 also changes. Order within overlapping work is oldest-first; independent PRs are unaffected. While the Automated by loom-daemon claim reconciliation (#9686, plan seq-617cfd73) |
|
✅ Approved! Reviewed head CI: all checks pass (Rust on ubuntu/ubuntu-arm/macos, cargo-deny, cargo-about, clean-room, package dry-run). Merge state CLEAN. Test Execution: Review notes
Not measured: the "within 0.1%/FastHenry behavior" claims (compat slack, ndec=0→0.01) rest on the PR's recorded black-box table; I did not re-derive them against FastHenry. |
|
Champion: Merge blocked by unavailable freshness verification Fresh Judge approval, passing CI (optional codesmith skipped), and MERGEABLE status were verified this pass. The required-check freshness guard failed closed with exit 2: GitHub's classic branch-protection GraphQL lookup returned The current authentication needs access to the branch-protection lookup before Champion can verify check freshness and retry. Keeping Automated by Champion role |
|
Landing order recorded — this PR overlaps other open work Planned by the merge-sequencing pass (#9686): this PR lands AFTER #159, because it changes files #159 also changes. Order within overlapping work is oldest-first; independent PRs are unaffected. While the Automated by loom-daemon claim reconciliation (#9686, plan seq-2c17c32b) |
|
Landing order recorded — this PR overlaps other open work Planned by the merge-sequencing pass (#9686): this PR lands AFTER #159, because it changes files #159 also changes. Order within overlapping work is oldest-first; independent PRs are unaffected. While the Automated by loom-daemon claim reconciliation (#9686, plan seq-17ac2045) |
|
Champion: Merge Conflict GitHub currently reports this PR as Keeping Automated by Champion role |
|
Landing order recorded — this PR overlaps other open work Planned by the merge-sequencing pass (#9686): this PR lands AFTER #159, because it changes files #159 also changes. Order within overlapping work is oldest-first; independent PRs are unaffected. While the Automated by loom-daemon claim reconciliation (#9686, plan seq-50a92217) |
|
Landing order recorded — this PR overlaps other open work Planned by the merge-sequencing pass (#9686): this PR lands AFTER #153, because it changes files #153 also changes. Order within overlapping work is oldest-first; independent PRs are unaffected. While the Automated by loom-daemon claim reconciliation (#9686, plan seq-942fb103) |
|
Champion: PR Is Stale Not updated within the recency window (24h) — routed out of the auto-merge queue for a rebase/refresh. Next steps:
Automated by Champion role |
|
Verdict anchored to the current head — no marker had been recorded This PR carries This comment records the head SHA as of now, 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) |
|
Doctor pass: still carries a fresh Stand-down passes against this claim: 8 of 3 before the bounded fallback force-reclaims it. This comment is edited in place on each pass rather than reposted (#5123, #6514). |
|
Doctor pass: still carries a fresh Stand-down passes against this claim: 9 of 3 before the bounded fallback force-reclaims it. This comment is edited in place on each pass rather than reposted (#5123, #6514). |
|
Reclaiming loom:treating claim: 9 stand-down passes, no fix progress for 60m (bounded by LOOM_MAX_STANDDOWN_STREAK=3) — breaking the livelock. |
|
🔧 Rebased onto latest main; resolved the only conflict (CHANGELOG.md, kept both entries). Targeted |
|
Judge conditional review for head 56a4940: no blocking code findings in this pass. git range-diff dd71186^..dd71186 HEAD^..HEAD shows only CHANGELOG hunk context changing in the rebased feature commit. check-review-feedback.sh reports CLEAR: 0 formal reviews, 0 inline comments, 0 unresolved threads. Local cargo test -p fasterhenry-cli could not execute because cargo is not installed; prior test results are reported by Doctor, not re-derived here. TDD declaration absent (advisory). After timeout 55 gh pr checks 161 --watch --interval 10, all three Rust jobs remain pending and four other checks pass. Approval is conditional on completed green CI; no verdict label applied. Releasing loom:reviewing and retaining loom:review-requested for a fresh pass once CI settles. |
|
Judge pass: still carries a fresh Stand-down passes against this claim: 4 of 3 before the bounded fallback force-reclaims it. This comment is edited in place on each pass rather than reposted (#5123, #6514). |
|
✅ Approved! Reviewed head Code review
Test Execution (local,
Non-blocking observation (not measured beyond reading the diff): Worktree note: the pr-161 worktree had drifted (the PR was force-pushed); I reviewed a detached checkout of |
|
Champion Auto-Merge Fresh approval covers the current head; no prior risk or critical-file hold. Full diff read: apply_freq, freq_seen, frequency_sweep and shared decade_sweep implement bounded frequency sampling with regression coverage; main.rs delegates its override to the shared function. 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 |
|
Champion: Merge Failed Guarded merge exited 1: required-check freshness lookup failed with Automated by Champion role |
|
Champion: Merge Deferred Current-head approval is fresh, but the required-check freshness guard exited 2: branch-protection lookup returned Automated by Champion role |
|
Champion Auto-Merge Fresh Judge approval covers the current head; no prior merge-risk hold. The complete diff is confined to frequency-sweep parsing/generation, its focused regressions, and docs/help. The Judge traced the shared sweep functions, numerical edge cases, bounds, warnings, and empty-sweep 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 |
|
Champion: Merge Failed The guarded merge exited 1. Its required-check freshness guard could not read classic branch protection ( Automated by Champion role |
|
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 |
|
Champion: PR Is Stale Last real activity was 2026-10-07T09:31:19Z (25 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 |
|
Stale review verdict cleared — head SHA moved This PR's
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) |
Closes #154
Part of #76 (parent tracker).
Summary
.freqaccepts anyndec > 0, including fractions (User's Guide §1.3.6), generatingfmin · 10^(k/ndec)whilek/ndec ≤ log10(fmax/fmin). Wherek/ndecis a whole number the point is the exactfmin · 10^q(powi). The last point is the stepped value and is never clamped tofmax. A negativendecis a line-numbered error in every mode. A non-numericndecis still an error.--fasthenry-compatonly: a point is kept whilef ≤ 1.001 · fmax.ndec=0becomes 0.01, an omittedndecbecomes 1, andfmin > fmaxgives an empty sweep (orfminalone when it is within the 0.1% slack). Each of these raises aParseWarningon the.freqline. All of them are still errors in native mode.freq_seenflag tells it apart from a deck with no.freqat all). The run then reports "no frequencies" unless--freqoverrides the sweep.--freqnow uses the same documented rule through a newinp::decade_sweep, which replaces the duplicated formula inmain.rs. SoNDECmay be fractional there too. Help text andfasterhenry-cli/README.mdare updated to match.docs/fasthenry-compat.md.freqrows andCHANGELOG.mdare updated.Tests
fractional_ndec_reproduces_the_measured_table: every row of the issue's table, in both modes, checked to 6 significant digits with no warnings.compat_keeps_points_within_a_tenth_of_a_percent_of_fmax:1..9.995 ndec=1gives 1 point natively and 2 under compat.whole_decade_points_are_exact_at_any_ndec: exact equality on the 10^q points, and the last point is not clamped.negative_ndec_is_an_error_in_every_mode: checks the error's line number in both modes.compat_reads_zero_ndec_as_a_hundredth_with_a_warning,compat_reads_omitted_ndec_as_one_with_a_warning,compat_fmin_above_fmax_is_an_empty_sweep_with_a_warning: check the warning's line number and the resulting list.a_deck_without_freq_is_still_an_error_in_compat,decade_sweep_matches_the_deck_rule;freq_validationnow also covers zero, negative and non-numericndec.cargo fmt --check,cargo clippy --workspace --all-targets -D warnings,cargo test -p fasterhenry-cli(all green) andcargo doc -D warningsall pass. Thefasterhenrylibrary crate is unchanged. I did not wait for its slow debug test suite to finish locally, so CI is the check for it.Clean-room provenance
Implemented only from the issue's spec (black-box measurements on self-authored decks) and the public User's Guide. No FastHenry source or distributed example deck was consulted.
🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.loom dashboard