Skip to content

feat: support segwid1/segwid2 meshed planes (#155) - #162

Open
loom-fleet-dispatch[bot] wants to merge 1 commit into
mainfrom
feature/issue-155
Open

loom-fleet-dispatch[bot] wants to merge 1 commit into
mainfrom
feature/issue-155

Conversation

@loom-fleet-dispatch

@loom-fleet-dispatch loom-fleet-dispatch Bot commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Closes #155

Implements segwid1=/segwid2= on uniform G planes as a per-bar width cap (min of segwid and cell width across); mesh and bar count unchanged. Above-spacing value warns (line-numbered) and uses full width. Nonuniform planes (file=NONE, initial_grid, contact clauses): native error, ignored with warning under --fasthenry-compat. Adds GroundPlane::build_into_narrowed. Tests added; docs/fasthenry-compat.md row moved to Supported. Clean-room: from issue spec only.

🤖 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.

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

Copy link
Copy Markdown
Contributor Author

Judge pass: still carries a fresh loom:reviewing claim (claimed 2026-10-06T00:25:44Z, 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 Author

Static evaluation found no blocking issue in the directional bar-width caps or compatibility handling. The worktree matches f8f40d6, merge-tree reports no conflict with origin/main, and formal reviews/inline threads are clear. Local Rust checks could not run because Cargo is unavailable on this host. The three Rust CI jobs remain pending, so no approval is issued. Releasing the claim and leaving loom:review-requested for a later evaluation once CI settles.

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

Copy link
Copy Markdown
Contributor Author

Judge verdict: APPROVED

  • Acceptance criteria: (1) tests verify per-direction bar widths (segwid1 along p1->p2, segwid2 along p2->p3, rotated plane), with mesh and bar count unchanged vs the plain plane; (2) above-spacing warns with line number and uses full width, nonuniform (file=NONE / contact) errors natively and warns+ignores under --fasthenry-compat; (3) docs/fasthenry-compat.md row moved to Supported, CHANGELOG/README/module docs updated.
  • Non-positive width is a line-numbered error; warning order preserved via clause seq.
  • Clean-room: spec derived from issue text only; no FastHenry-derived text; clean-room CI check passes.
  • Verified locally: segwid tests pass, clippy -D warnings clean, fmt clean. All CI checks green.

Minor, non-blocking: tests assert widths directly rather than comparing extracted results against an explicit-segment deck; acceptable for the 'narrowed bars' criterion.

@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:review-requested PR ready for Judge to review. Applied by: Builder when opening PR. labels Oct 6, 2026
@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor Author

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, f8f40d6ff5a16358e1c32a76d3a2af9d2532cf18. 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 f8f40d6ff5a16358e1c32a76d3a2af9d2532cf18, 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 verdict-staleness-guard.sh (#6319)

@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor Author

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 loom:sequenced label is present, merge-pr.sh refuses to merge this PR (the #9378 gate). The label clears mechanically when #159 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 #159 is in flight, never a genuine review finding.


Automated by loom-daemon claim reconciliation (#9686, plan seq-99ecec59)

@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor Author

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 loom:sequenced label is present, merge-pr.sh refuses to merge this PR (the #9378 gate). The label clears mechanically when #159 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 #159 is in flight, never a genuine review finding.


Automated by loom-daemon claim reconciliation (#9686, plan seq-617cfd73)

@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor Author

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 Resource not accessible by integration. No merge was attempted after this guard failure.

The current authentication needs access to the branch-protection lookup before Champion can verify check freshness and retry. Keeping loom:pr; no guard was bypassed.

Automated by Champion role

loom dashboard

@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor Author

Landing order recorded — this PR overlaps other open work

Planned by the merge-sequencing pass (#9686): this PR lands AFTER #161, because it changes files #161 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 #161 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 #161 is in flight, never a genuine review finding.


Automated by loom-daemon claim reconciliation (#9686, plan seq-2c17c32b)

@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor Author

Landing order recorded — this PR overlaps other open work

Planned by the merge-sequencing pass (#9686): this PR lands AFTER #161, because it changes files #161 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 #161 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 #161 is in flight, never a genuine review finding.


Automated by loom-daemon claim reconciliation (#9686, plan seq-17ac2045)

@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor Author

Champion: Merge Conflict

GitHub currently reports this PR as CONFLICTING against its base. The seven executing CI checks pass, but a conflicted tree cannot merge.

Keeping loom:pr; the normal Doctor flow can resolve the base conflict, followed by fresh review of the resulting head. Champion will re-evaluate on a later pass.

Automated by Champion role

loom dashboard

@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor Author

Landing order recorded — this PR overlaps other open work

Planned by the merge-sequencing pass (#9686): this PR lands AFTER #161, because it changes files #161 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 #161 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 #161 is in flight, never a genuine review finding.


Automated by loom-daemon claim reconciliation (#9686, plan seq-50a92217)

@loom-fleet-dispatch

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

Copy link
Copy Markdown
Contributor Author

Landing order recorded — this PR overlaps other open work

Planned by the merge-sequencing pass (#9686): this PR lands AFTER #161, because it changes files #161 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 #161 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 #161 is in flight, never a genuine review finding.


Automated by loom-daemon claim reconciliation (#9686, plan seq-942fb103)

@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor Author

Champion: PR Is Stale

Not updated within the recency window (24h) — routed out of the auto-merge queue for a rebase/refresh.

Next steps:

  • Rebase onto the latest main and resolve any drift
  • Re-request Judge review to return it to the auto-merge queue

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. and removed loom:pr PR approved by Judge, ready for Champion auto-merge. Applied by: Judge. labels Oct 7, 2026
@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor Author

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

This PR carries loom:changes-requested, 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, f8f40d6ff5a16358e1c32a76d3a2af9d2532cf18. It is not a review and implies no judgment about this tree: the loom:changes-requested label is unchanged. From here on the verdict is invalidatable — if the head moves off f8f40d6ff5a16358e1c32a76d3a2af9d2532cf18, the stale-verdict pass clears loom:changes-requested 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 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 7, 2026
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Loom-Story: #155
Loom-Trace-Id: 57f5786320a6fd5a1db99c699d5b3f64
Loom-Build: 0.19.732 c1ef52e4d1926fd6f224abe962829326121161da clean
@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor Author

🔧 Resolved merge conflicts with main (rebased onto current origin/main; only CHANGELOG.md conflicted — kept both the #157 and #155 entries).

No substantive code changes. Verified locally: segwid tests pass, cargo fmt --check clean. Previous Judge verdict was APPROVED; the PR was routed to loom:changes-requested only for staleness. Handing back for re-review.

loom dashboard

@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 7, 2026
@loom-fleet-dispatch loom-fleet-dispatch Bot added loom:review-requested PR ready for Judge to review. Applied by: Builder when opening PR. loom:reviewing Judge is reviewing this PR. Applied by: Judge only. Stale after LOOM_STALE_REVIEWING_MINUTES (30m). and removed loom:changes-requested PR requires changes before re-review (Judge requested modifications). Applied by: Judge. labels Oct 7, 2026
@loom-fleet-dispatch

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

Copy link
Copy Markdown
Contributor Author

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

Stand-down passes against this claim: 3 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 Author

✅ Approved!

  • Closes #155 present; scope matches (uniform-plane segwid1/2 cap, nonuniform → native error / compat warning, docs + CHANGELOG + README updated).
  • Logic checked against the diff: bar_width is indexed by global axis (along = axis1 for segwid1, else the other), and build_into_narrowed caps x-bars/y-bars consistently; the rotated-plane test (segwid1_follows_the_first_edge_on_a_rotated_plane) covers p1→p2 along y. Non-positive widths error; above-spacing warns and uses full width.
  • Measured: cargo test -p fasterhenry-cli --lib segwid → 4 passed; --lib plane → 22 passed (run with RUSTC_WRAPPER= because this host's sccache wrapper binary is missing — host tooling untouched).
  • CI at head 7095151: all 7 checks pass (ubuntu-latest, macOS, ARM, clean-room, cargo-deny, package, about); merge state CLEAN. Formal reviews/inline threads: CLEAR (0).
  • No ## Test Plan/TDD: line in the PR body — advisory only. Not live-verification scope (no scraper/DOM; issue isn't silent-omission shaped).

Note for the worker spec (not this PR): RUSTC_WRAPPER=/home/ubuntu/.local/bin/sccache is exported but the binary is absent on this worker.

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 Author

Champion Auto-Merge

Fresh Judge approval covers head 7095151. Full diff inspection finds segwid parsing, axis mapping and build_into_narrowed width caps affect only plane bars. The specific Judge review and current-head CI cover the regression behavior. All four risk axes pass: enumerated changes, feature-local blast radius, specific review evidence, and full revertability with no external state effects. No prior merge-risk hold is present.

PASS: No critical files modified (or only version-only carve-out 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 Author

Champion: Merge Failed

The guarded merge exited 1. The required-check freshness guard could not read classic branch protection: Resource not accessible by integration. The installed daemon also lacks merge-pr chain-lock. No guard was bypassed; loom:pr remains for a later retry.

Automated by Champion role

loom dashboard

@loom-fleet-dispatch

Copy link
Copy Markdown
Contributor Author

Champion Auto-Merge

Current-head Judge approval is fresh; no prior merge-risk hold. Read the full diff: segwid parsing maps plane axes into optional bar-width caps; build_into_narrowed caps each direction while the existing build_into uses no caps. 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 Author

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 Author

Champion Auto-Merge

Fresh Judge approval covers head 7095151f; no prior merge-risk hold. Full diff inspection finds the segwid1/segwid2 plane-bar width propagation plus validation and focused geometry tests. The change is confined to plane meshing, 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 Author

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 Author

Champion Auto-Merge

Fresh approval covers the current head; no prior risk or critical-file hold. Full diff read: segwid parsing, uniform-plane validation and axis mapping pass width caps into build_into_narrowed; x/y bar widths alone are capped, leaving mesh topology unchanged, with rotated-plane and rejection regressions. 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 Author

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 Author

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 Author

Champion Auto-Merge

Fresh Judge approval covers the current head; no prior merge-risk hold. The complete diff is confined to plane bar-width capping, parser plumbing, focused regressions, and docs. The Judge traced axis selection, rotated-plane behavior, native/compat handling, and validation; 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 Author

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 Author

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 Author

Champion: PR Is Stale

Last real activity was 2026-10-07T07:23:21Z (28 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 Author

Stale review verdict cleared — head SHA moved

This PR's loom:changes-requested verdict was rendered against f8f40d6ff5a16358e1c32a76d3a2af9d2532cf18, but the current head is 7095151f396e3d5670a7929ec13b70b3c0504673. 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 f8f40d6ff5a16358e1c32a76d3a2af9d2532cf18)
  • Returned to the review queue: loom:review-requested (current head 7095151f396e3d5670a7929ec13b70b3c0504673)

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.

Deck reader: support segwid1/segwid2 meshed planes (documented)

1 participant