Skip to content

chore: add component-status manifest sync check to lint pipeline#750

Open
QuintonJason wants to merge 3 commits into
mainfrom
ci/component-status-guard
Open

chore: add component-status manifest sync check to lint pipeline#750
QuintonJason wants to merge 3 commits into
mainfrom
ci/component-status-guard

Conversation

@QuintonJason

@QuintonJason QuintonJason commented Jun 1, 2026

Copy link
Copy Markdown
Contributor

Description

Adds a CI-gated check that keeps libs/core/src/stories/resources/component-status.json (the declared source of truth for StatusBadge and the central Component status table) in sync with libs/core/src/components/, so the two cannot silently drift after the lifecycle-status work landed in #738 / #748.

The check fails the build when:

  • a top-level pds-* component has no status entry, or
  • a status entry references a pds-* that no longer exists.

Manifest entries validate against any pds-* directory (top-level or a nested subcomponent such as pds-filter), so deliberate subcomponent entries pass without a hardcoded allowlist.

Why no workflow changes: CI runs nx affected --target=lint → core's lint script → run-p lint.*. Adding lint.status means the existing lint job gates this automatically — no new workflow YAML or composite action.

New dependencies: none (dependency-free ESM Node script).

Fixes #(no-issue)

Type of change

  • New feature (non-breaking change which adds functionality)

How Has This Been Tested?

  • Passes on current main (36 entries in sync).

  • Verified it fails with an actionable message when an entry is removed (pds-button) and when a stale entry is added (pds-ghost), then confirmed clean after restore.

  • npm run lint.status resolves; run-p lint.* enumerates lint.eslint, lint.status, lint.styles.

  • unit tests

  • e2e tests

  • accessibility tests

  • tested manually

  • other: self-validating check run against real + simulated drift

Test Configuration:

  • Pine versions: 3.26.1 (current main)
  • OS: macOS 25.3.0
  • Browsers: n/a
  • Screen readers: n/a
  • Misc: tooling-only change

Checklist:

  • My code follows the style guidelines of this project
  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing tests pass locally with my changes
  • Design has QA'ed and approved this PR

Note

Low Risk
Tooling-only changes with no runtime component or API behavior; risk is limited to CI failing until manifests, waivers, or mappings are updated.

Overview
Adds two maturity checks to @pine-ds/core lint (run-p lint.*), so existing nx affected --target=lint CI picks them up without workflow changes.

lint.status keeps component-status.json aligned with src/components/: every top-level pds-* must have a manifest entry, and every entry must match a real pds-* directory (including nested subcomponents). lint.figma requires each top-level component to have a libs/figma/components/<name>.figma.ts mapping or an explicit waiver in code-connect-waivers.json, and reports redundant/orphan waivers.

Shared enumeration lives in scripts/lib/components.mjs. Nx now treats @pine-ds/figma as an implicit dependency of core and extends lint inputs to figma waivers and *.figma.ts so cache and affected lint stay correct when only figma changes. A minimal libs/figma workspace package is registered in the lockfile.

Reviewed by Cursor Bugbot for commit 0632cd7. Bugbot is set up for automated code reviews on this repo. Configure here.

@netlify

netlify Bot commented Jun 1, 2026

Copy link
Copy Markdown

Deploy Preview for pine-design-system ready!

Name Link
🔨 Latest commit 0632cd7
🔍 Latest deploy log https://app.netlify.com/projects/pine-design-system/deploys/6a230ca9ecc1540008714b7a
😎 Deploy Preview https://deploy-preview-750--pine-design-system.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@github-actions github-actions Bot added the package: core Changes have been made to the Core package label Jun 1, 2026
@QuintonJason QuintonJason added the ran-gauntlet Multi-agent review gauntlet has been run on this branch label Jun 1, 2026
@QuintonJason QuintonJason self-assigned this Jun 3, 2026
@QuintonJason QuintonJason requested a review from pixelflips June 3, 2026 13:17

@pixelflips pixelflips left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Should be fine for now, but I still think it's worth letting Storybook handle these, but nothing is blocking from a code review standpoint.

* chore: add figma code connect coverage guard to lint pipeline

* fix: harden figma-coverage waiver and shared component-dir helper

* fix: wire figma paths into nx affected and lint cache inputs

Register @pine-ds/figma as a workspace project and declare an implicit
dependency from core so figma-only PRs still schedule lint.figma, and
add waiver/mapping paths to core lint inputs so Nx cache invalidates
when those files change.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

package: core Changes have been made to the Core package ran-gauntlet Multi-agent review gauntlet has been run on this branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants