Skip to content

RT-170: gate option recommended flag and guarded label capitalization - #281

Merged
m4ttheweric merged 5 commits into
mainfrom
rt-170
Sep 15, 2026
Merged

m4ttheweric merged 5 commits into
mainfrom
rt-170

Conversation

@m4ttheweric

@m4ttheweric m4ttheweric commented Sep 15, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Adds an optional recommended flag to the GateOption object form and guarded word-like label capitalization in normalizeGateOptions.

  • GateOption object form gains an optional recommended flag (RT-170 A1)
  • normalizeGateOptions capitalizes word-like labels and lifts the recommended flag into a label suffix (RT-170 A2/A3/A4); capitalization applies at GatesStore.open so every persisted row benefits
  • MCP gate_ask/herd_ask's shared option schema now documents recommended (the server doesn't validate schemas so the field already reached the daemon at runtime; this is a schema-truth fix, not new behavior), with a test proving a recommended: true option round-trips through the real daemon-side normalizer into the (Recommended) suffix
  • 3 pre-existing pinned tests updated deliberately (declared change, not a regression); values themselves are never transformed, only labels

The mattstack-skills half of this ticket (branch rt-170 there, receive-review recommended flag) is not part of this PR; it batches with the wave-3 skill lanes' bump+sync.

Review

CodeRabbit was rate-limited (org cap: 1 review/hour) with zero comments posted; the fallback model (fable, back to normal capacity) ran the substitute adversarial review. No blocking findings; value is never transformed (only label), capitalization is applied once at the single store seam, the three pinned-test edits are pure label deltas, and normalization is idempotent (46-input probe). Fixed: an empty label with recommended: true collapsed to just " (Recommended)", hiding the option's value in a downstream label || value fallback (fixed with a test that fails without it); a doc comment citing a path in the wrong repo; and, per the shepherd's follow-up ruling, the MCP tool schemas not documenting recommended (agents are the primary gate openers).

Accepted as-is, no tickets (shepherd's call): the word-like capitalization guard is syntactic rather than semantic, so lowercase acronyms/tool names get title-cased (values untouched, cosmetic); the 200-byte label cap is checked before the 14-byte suffix is appended, so a maximal flagged label can land at 214 bytes.

🤖 Generated with Claude Code

…ation

gates-store, gate:open, and the reconciler's attention gate all normalize
options through the same rt-client seam, so their pinned exact-label
assertions shift with normalizeGateOptions capitalizing word-like labels.
@coderabbitai

coderabbitai Bot commented Sep 15, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 13 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available. Your 82 included PR review attempts over the past 7 days set your current allowance at 1 review per hour.

Your organization has reached its usage spending cap. Adjust your spending cap in the billing tab.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 562e9a2d-045a-4d90-91c3-f541822b4f63

📥 Commits

Reviewing files that changed from the base of the PR and between edc9bf9 and e90c2b6.

📒 Files selected for processing (8)
  • lib/daemon/__tests__/gates-handlers.test.ts
  • lib/daemon/__tests__/gates-store.test.ts
  • lib/daemon/__tests__/reconciler.test.ts
  • lib/mcp/__tests__/tools.test.ts
  • lib/mcp/tools.ts
  • packages/rt-client/src/commands.ts
  • packages/rt-client/src/gate-options.ts
  • packages/rt-client/test/gate-options.test.ts

Comment @coderabbitai help to get the list of available commands.

m4ttheweric and others added 2 commits September 15, 2026 18:23
…ust the suffix; fix cross-repo doc path

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

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@m4ttheweric
m4ttheweric merged commit 743ea96 into main Sep 15, 2026
4 checks passed
@m4ttheweric
m4ttheweric deleted the rt-170 branch September 15, 2026 23:33
m4ttheweric added a commit that referenced this pull request Sep 17, 2026
…#281)

* RT-170 A1: add optional recommended flag to GateOption object form

* RT-170 A2/A3/A4: normalizeGateOptions capitalizes word-like labels and lifts recommended flag into label suffix

* RT-170: update pinned gate-option tests for word-like label capitalization

gates-store, gate:open, and the reconciler's attention gate all normalize
options through the same rt-client seam, so their pinned exact-label
assertions shift with normalizeGateOptions capitalizing word-like labels.

* gate-options: an empty label with recommended:true stays empty, not just the suffix; fix cross-repo doc path

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

* mcp tools: expose recommended in gate_ask/herd_ask's shared option schema

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

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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.

1 participant