Skip to content

fix(github): render cancelled as 🚫 and stopped as ⏹️ in state glyphs - #1148

Merged
aparajon merged 2 commits into
mainfrom
armand/glyph-state-cancelled
Aug 30, 2026
Merged

fix(github): render cancelled as 🚫 and stopped as ⏹️ in state glyphs#1148
aparajon merged 2 commits into
mainfrom
armand/glyph-state-cancelled

Conversation

@aparajon

@aparajon aparajon commented Aug 26, 2026

Copy link
Copy Markdown
Collaborator

Fixes the state-glyph split between per-deployment rows and the terminal summary comments on the same PR timeline:

  • Cancelled renders 🚫 instead of ⛔. The per-deployment row showed ⛔ — the refusal glyph — directly under a 🚫 Schema Change Cancelled headline. Nothing was refused; the apply was cancelled. The CLI status line already rendered 🚫 Cancelled, so the deployment row was the outlier.
  • Stopped renders ⏹️ instead of ⏸. Stopped table rows and the terminal comment already used ⏹️; the per-deployment row and the CLI (⏸️ Stopped status line, ⏸️ Schema change stopped stop-command output) said ⏸. ⏸ now means only genuinely paused, transient states — paused/halted mid-flight and the Defer Cutover options — while ⏹️ means the operator-terminal stopped state.
  • The unification is total, not per-surface. Cancelled per-table rows, the namespace group header, and the CLI progress lines rendered ⊘ while the headline said 🚫 — a single cancelled comment mixed both. Every cancelled surface now uses 🚫. The remaining paused/halted glyphs gain the variation selector their sibling glyphs already carry, so every state glyph in a derived deployment measures two terminal cells and padded columns stay aligned.

State glyphs are a separate vocabulary from the pkg/glyph severities and stay literal in pkg/presentation.

Stacked on the webhook-surface PR; the base retargets as parents merge. This must ship in the same release as the webhook-surface PR.

Cancelled deployment row — before / after

Before:

Status: Cancelled

us-east ⛔ cancelled
eu-west ✅ complete

🚫 Schema Change Cancelled — Staging

After:

Status: Cancelled

us-east 🚫 cancelled
eu-west ✅ complete

🚫 Schema Change Cancelled — Staging

Stopped deployment row — before / after

Before:

us-east ⏸ stopped — resume to continue

After:

us-east ⏹️ stopped — resume to continue

CLI stop command — before / after

Before:

⏸️ Schema change stopped

Database: myapp
Environment: staging

After:

⏹️ Schema change stopped

Database: myapp
Environment: staging


This PR was written by an AI agent (Claude Code, model Claude Fable 5) on behalf of the author.

@aparajon
aparajon force-pushed the armand/glyph-state-cancelled branch from cb7af9a to edf7c7c Compare August 26, 2026 03:07
@aparajon
aparajon force-pushed the armand/glyph-webhook-surface branch from bb8b258 to e473cee Compare August 27, 2026 05:12
@aparajon
aparajon force-pushed the armand/glyph-state-cancelled branch 2 times, most recently from f63363a to 479f901 Compare August 28, 2026 08:46
Base automatically changed from armand/glyph-webhook-surface to main August 28, 2026 08:58
@aparajon
aparajon force-pushed the armand/glyph-state-cancelled branch from 479f901 to f9ffbf2 Compare August 28, 2026 09:02
@aparajon
aparajon marked this pull request as ready for review August 28, 2026 09:10
Copilot AI lite review requested due to automatic review settings August 28, 2026 09:10

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Aligns state glyph rendering across GitHub PR surfaces and the CLI so “cancelled” and “stopped” are represented consistently everywhere SchemaBot presents apply state.

Changes:

  • Update per-deployment presentation state glyphs: Cancelled now renders as 🚫 (instead of ) and Stopped as ⏹️ (instead of ).
  • Update CLI progress + stop-command output to render Stopped as ⏹️.
  • Refresh template/test expectations to match the new glyph vocabulary.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated no comments.

Show a summary per file
File Description
TEMPLATES.md Updates the documented stop-command output example to use ⏹️.
pkg/webhook/templates/sharded_apply_tenant_test.go Updates expected shard “stopped” emoji to ⏹️.
pkg/presentation/presentation.go Changes deployment-row glyphs for Stopped and Cancelled states.
pkg/presentation/presentation_test.go Updates state→emoji mapping expectations for Stopped and Cancelled.
pkg/cmd/internal/templates/progress.go Updates CLI rendering for Stopped state and stop success output to ⏹️.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

The per-deployment state glyphs disagreed with the terminal summary
comments on the same timeline: a cancelled deployment row showed ⛔
(the refusal glyph — nothing was refused) next to a 🚫 Cancelled
headline, and a stopped row showed ⏸ while stopped tables and the
terminal comment used ⏹️. Cancelled now renders 🚫 and stopped renders
⏹️ everywhere, including the CLI status line and stop-command output.
⏸ remains for genuinely paused states (paused/halted mid-flight,
Defer Cutover options), which are transient rather than
operator-terminal.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@aparajon
aparajon force-pushed the armand/glyph-state-cancelled branch from f9ffbf2 to 99647b1 Compare August 30, 2026 14:00
@Kiran01bm

Copy link
Copy Markdown
Collaborator

🤖 Review findings - created by Kiran's code review agent - for schemabot/pull/1148, 99647b1.

Verdict: 2 findings — no blockers; 2 suggestions. The PR is a net improvement on both glyph collisions it targets.

General suggestions

  1. Cancelled is still rendered two ways in one comment. The headline and the deployment row now use 🚫, but the table row and the namespace group header still emit ⊘ — apply.go:852 renders **`users`**: ⊘ Cancelled (not started) and groupStateEmoji returns . Reproduced by rendering RenderApplySummaryComment with a cancelled apply across two namespaces: ## 🚫 Schema Change Cancelled — Staging and ### ⊘ analytics in the same body, with no guard between them (showGroupEmoji is true whenever any group is non-✅). Kept as a suggestion rather than a defect: ⊘ is untouched by this diff, it belongs to the task-status vocabulary rather than the pkg/presentation state-glyph vocabulary this PR scopes itself to, and the PR strictly reduces the inconsistency — cancelled rendered three ways before (⛔ row / 🚫 headline / ⊘ table), two after.

  2. The stopped glyph gains a cell of width while its siblings keep one. ⏹️ carries VS16, so ui.VisibleWidth returns 2, whereas the bare still used for Paused and Halted in the same function returns 1 (measured, not inferred). Inside deriveDeployment the states now render at mixed widths, which will misalign any PadVisible column that mixes them; the PR does reduce bare from three sites to two, so this is the tail of an existing inconsistency rather than a new one. Worth either adding VS16 to the remaining two or dropping it from ⏹️.

The one thing that could have broken, verified

Whether moving cancelled off ⛔ collides with, or orphans, the severity vocabulary. It does neither, and this is the strongest argument for the change: ⛔ is glyph.Refused, documented in docs/lint-and-safety-levels.md as "the schema-change engine refuses the statement" and asserted across the plan, blocked, direct and apply-blocked templates. Before this PR ⛔ meant both "engine refuses this statement" and "operator cancelled the apply" in the same comment stream; after it, ⛔ is unambiguously refusal and 🚫 is unambiguously cancellation. The same holds for the stopped change: every remaining site is genuinely pause semantics (Defer Cutover, halted-awaiting-sibling, paused), so ⏹️ now cleanly separates stopped from paused. Width is preserved on the cancel swap — ⛔ and 🚫 both measure 2 cells — so no table alignment moves.

Verified correct

  • FormatProgressState's Cancelled arm was already 🚫, so the CLI and the comment surface now agree rather than diverging.
  • The two-space gap in "⏹️ Stopped" and "⏹️ Schema change stopped" matches the old "⏸️ …" spacing, so CLI alignment is unchanged on those lines.
  • TEMPLATES.md was regenerated for the one preview scenario that renders the stop-command output; the remaining ⏸️ occurrences in that file are Defer Cutover options, correctly untouched.
  • Both test fixtures were updated in lockstep with the code (presentation_test.go state table, sharded_apply_tenant_test.go shard statuses), so nothing silently pins the old glyphs.
  • go build ./... is clean and all CI checks pass at this head.

This review was generated by Claude Code (claude-opus-5).

Cancelled rendered as ⊘ in the per-table rows, the namespace group
header, and the CLI progress lines while the headline used 🚫; every
cancelled surface now uses 🚫. The two remaining bare ⏸ sites (paused,
halted) gain the variation selector their sibling glyphs already carry,
so every state glyph in a derived deployment measures two cells and
padded columns stay aligned.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@aparajon

Copy link
Copy Markdown
Collaborator Author

🤖 Both suggestions taken, in bcbbbe7:

  1. Every cancelled surface now renders 🚫 — the per-table row, groupStateEmoji, and the two CLI progress lines that still said ⊘. A cancelled comment now uses one glyph from headline to table.
  2. Went with adding the variation selector: the paused/halted ⏸ sites now match the ⏸️ the Defer Cutover options already use, so every state glyph in a derived deployment measures two cells and PadVisible columns stay aligned.

Fixtures and TEMPLATES.md regenerated in the same commit.

Reply by Claude (Fable 5).

@aparajon
aparajon merged commit d59ca55 into main Aug 30, 2026
37 checks passed
@aparajon
aparajon deleted the armand/glyph-state-cancelled branch August 30, 2026 21:49
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.

3 participants