Skip to content

chore(metadata): clear the dead-metadata findings of os validate --strict - #1983

Merged
hotlong merged 2 commits into
mainfrom
chore/validate-strict-cleanup
Oct 2, 2026
Merged

hotlong merged 2 commits into
mainfrom
chore/validate-strict-cleanup

Conversation

@hotlong

@hotlong hotlong commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

Description

This is the follow-up promised in #1982. On 17.6.0, os validate --strict reports 111 warnings. This PR clears 97 of them, all of which are metadata the platform never read. The 14 left are deliberate, and each is listed below with its reason. --strict is not part of pnpm verify, and this PR does not add it.

Type of Change

  • Bug fix (row tints that the docs describe now actually draw)
  • Code refactoring (dead metadata removed)

Related Issues

Related to #1982 (the 17.6.0 upgrade; its PR body lists these findings as a follow-up).

Changes Made

  • Nine rowColor maps use colour names instead of hex (src/*/views/*.view.ts). objectui's useRowColor resolves only a name from its own vocabulary or a full bg-* class, and a hex value resolves to no colour at all. So until now no row was ever tinted, although content/docs/service/cases.mdx and content/docs/sales/opportunities.mdx say rows are tinted. Each hex maps to the matching Tailwind family; the renderer draws the -100 shade.
    • Browser check, 17.6.0, Playwright, by counting rows that carry a tint class:
      • All Cases: 40 / 40 rows (red / orange / yellow / slate).
      • Unassigned Triage: 1 / 1.
      • Open Deals: 15 / 15 (by stage).
      • Events: 31 / 31.
      • Event attendees: 25 / 25.
      • Knowledge articles: 4 / 4.
      • High Priority leads: 5 / 5.
      • Tasks: 13 / 13.
    • Accounts: the active/inactive tint belongs to the account list, which the All Accounts landing tab does not use, so that tab is unchanged.
  • 86 dashboard widget options keys are deleted across the activity, CRM, sales and service dashboards and shared-widgets.ts.
    • The removed keys are tile icon / format, table columns / striped / density, a suffix, the pivot's field keys and its drillDown, and the SLA gauge's thresholds.
    • The rule unconsumed-widget-option reports that no renderer reads them. A dataset-bound widget takes its labels and formats from the dataset.
    • I compared every removed format with the format of the measure it displays. They match, or the measure is a plain count. The dashboards do not change. The pivot never opened a drill-down drawer, and the gauge never drew the green/amber/red bands.
  • Tests that pinned the two removed keys (second commit, as the maintainer asked):
    • test/ownership-model.test.ts drops "dashboard drill-down column lists name real record columns". With no drill-down left, it would run over nothing.
    • test/sla-compliance-gauge.test.ts drops its threshold-band assertions, including the "lands in the success band" test, which read only the ladder.
    • The gauge keeps its pins on the compliance measure, the computed value on both drivers, colorVariant, the absence of invert, and the 0.95 target line.
  • Four rowLevelSecurity[] label / description values move into comments, in the sales_manager and marketing_user permission sets. These keys are liveness: dead.
  • Code comments that named the removed keys are updated.

Still reported (14), on purpose

Finding Count Why it stays
hierarchy-security capability is enterprise-only 1 It stays declared under the #1378 ruling.
Approval node routes to a position that may be unstaffed 6 Whether a position is staffed is a fact about each deployment, not a metadata defect.
{…} template expression (could be a CEL envelope) 6 The lint says the template form keeps working. Moving Quote Generation's rounding and Forecast Snapshot's sums to CEL changes the integer-division semantics, so it deserves its own change with its own tests.
page:card description on Sales Home 1 A ruling-backed guard pins it (#1216; test/metadata-references.test.ts).

Testing

  • pnpm verify green: validate, typecheck, lint, i18n gate, hygiene, build, and 3723 tests. Of the 3725 tests before this PR, the 2 removed are the threshold and drill-down tests above.
  • os validate --strict: 111 → 14 warnings, exactly the set listed above.
  • Manual browser check of the row tints (above).

🤖 Generated with Claude Code

https://claude.ai/code/session_01WXp8E7s1gzSBje9ZwwqVux

…rict

- views: nine rowColor maps wrote hex colours, which the console resolves
  to nothing; write the matching colour names so the documented row tints
  actually draw.
- dashboards: drop 84 widget `options` keys no renderer reads (icons,
  formats, table columns/striped/density, suffix, pivot field keys).
  Every removed format matched its measure's own.
- permission sets: move four rowLevelSecurity label/description values
  (liveness: dead) into comments.

os validate --strict: 111 -> 16 warnings. The 16 left are deliberate and
listed in the changeset (enterprise capability, position-routed
approvals, template expressions, two test-pinned keys, one ruling-pinned
card description).

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WXp8E7s1gzSBje9ZwwqVux
@vercel

vercel Bot commented Oct 2, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
hotcrm Ignored Ignored Oct 2, 2026 12:34pm UTC

Request Review

@github-actions github-actions Bot added the metadata Declarative metadata — schema, security posture, UI surfaces label Oct 2, 2026
Neither key reaches a renderer (`unconsumed-widget-option`): the pivot
never opened a drill-down drawer and the SLA gauge never drew the
green/amber/red bands. Remove both, with the test assertions that pinned
them: the drill-down column check in ownership-model (it would run over
nothing) and the threshold-band assertions in sla-compliance-gauge. The
gauge keeps its pins on the compliance measure, its computed value and
the 0.95 target line.

os validate --strict: 16 -> 14 warnings, all deliberate.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WXp8E7s1gzSBje9ZwwqVux
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci/cd CI plumbing and the verification pipeline metadata Declarative metadata — schema, security posture, UI surfaces

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants