Skip to content

Work plan: S8 phrase-boundary overlays (× S4) - #39

Merged
PhysShell merged 6 commits into
mainfrom
claude/project-work-plan-2-boundary-overlays
Jun 11, 2026
Merged

Work plan: S8 phrase-boundary overlays (× S4)#39
PhysShell merged 6 commits into
mainfrom
claude/project-work-plan-2-boundary-overlays

Conversation

@PhysShell

Copy link
Copy Markdown
Owner

One roadmap increment as a red → green → docs TDD cycle (the work-plan continuation after #38).

S8 — phrase-boundary overlays (× S4)

  • Analysis.boundaries surfaces the focus track's S4 phrase-boundary start ticks under the PPQN-scaled default config (the closure.rs referee precedent: snap grid 1/16, minimum gap two quarters).
  • The scene places a BoundaryMark column () for each visible boundary — over blank cells or gridlines, after the section marks so a section keeps precedence on a shared column (ADR-0016 layer 3: one home for the layout math).
  • The TUI maps the role to a dim amber; goldens re-blessed with the demo marker.
  • Boundary scores/reasons stay behind the view seam (ticks only) until an inspector surface wants them; candidate history remains open backlog.

Decision recorded in docs/decisions.log.md; S8 stage doc updated.

https://claude.ai/code/session_01NC6kB92Hn6Gcf9cMHjLt4b


Generated by Claude Code

claude added 3 commits June 11, 2026 15:47
Analysis surfaces the focus track's phrase-boundary start ticks under
the PPQN-scaled default config (the closure.rs referee precedent), and
the scene places a BoundaryMark column for each visible boundary tick.
References a field and a role that do not exist yet, so the crate
fails to compile until the green step.

https://claude.ai/code/session_01NC6kB92Hn6Gcf9cMHjLt4b
Analysis surfaces the focus track's phrase-boundary start ticks under
the PPQN-scaled default config (the closure.rs referee precedent: snap
grid 1/16, minimum gap two quarters), and the scene places a
BoundaryMark column ('┊') for each visible boundary — over blank cells
or gridlines, after the section marks so a section keeps precedence on
a shared column. The TUI maps the role to a dim amber; goldens
re-blessed with the demo marker.

https://claude.ai/code/session_01NC6kB92Hn6Gcf9cMHjLt4b

Copy link
Copy Markdown
Owner Author

@codex plz review changes

First increment after #38: S8 phrase-boundary overlays — Analysis.boundaries (S4 start ticks, PPQN-scaled config), BoundaryMark columns in the scene with section-mark precedence, dim-amber styling in the TUI, goldens re-blessed.


Generated by Claude Code

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: efc2551f45

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread preview/src/scene.rs Outdated
// after the section marks so a section keeps precedence when both land
// on one column.
for &tick in &analysis.boundaries {
if tick <= vp.scroll_tick {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Render boundaries at the viewport's left edge

When the user scrolls so a phrase boundary is exactly at vp.scroll_tick (for example, the fixture boundary at tick 480 after one right-scroll at 60 ticks/col), this <= check drops it even though visible_col would map it to the leftmost plot column. That makes otherwise visible boundary overlays disappear at the viewport edge; only ticks before the scroll origin should be skipped.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Confirmed and fixed in aebbd5a (red → green): the fixture boundary at tick 480 with scroll_tick = 480 reproduced the dropped marker. The guard was copied from the section-mark loop, where skipping the origin divider is deliberate (the band already names the section at the left edge); for boundaries the loop now has no guard at all — visible_col already filters ticks before the scroll origin, and a boundary at the edge is information the curator scrolled to see. Decision recorded in docs/decisions.log.md.


Generated by Claude Code

claude added 3 commits June 11, 2026 15:54
…renders

The boundary loop copied the section-mark guard (tick <= scroll_tick),
but a boundary scrolled exactly to the viewport's left edge maps to the
leftmost plot column and is visible; only ticks before the scroll
origin should be skipped — which visible_col already does.

https://claude.ai/code/session_01NC6kB92Hn6Gcf9cMHjLt4b
…, PR #39)

The boundary loop dropped a tick equal to scroll_tick although it maps
to the leftmost plot column; the guard was copied from the section-mark
loop, where skipping the origin divider is deliberate. visible_col
already filters ticks before the scroll origin, so the loop needs no
guard at all.

https://claude.ai/code/session_01NC6kB92Hn6Gcf9cMHjLt4b

Copy link
Copy Markdown
Owner Author

@codex plz review changes

Pushed the fix for the left-edge finding: the boundary loop drops its scroll-origin guard entirely (visible_col already filters earlier ticks), with a regression test pinning the marker at the leftmost plot column.


Generated by Claude Code

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants