baldart 4.78.0 → 4.78.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/VERSION +1 -1
- package/framework/.claude/skills/ds-edit/SKILL.md +9 -0
- package/framework/.claude/skills/ds-new/SKILL.md +8 -0
- package/framework/.claude/skills/ds-render/SKILL.md +8 -0
- package/framework/.claude/skills/ui-design/SKILL.md +8 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,28 @@ All notable changes to BALDART will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [4.78.2] - 2026-06-29
|
|
9
|
+
|
|
10
|
+
**The "visual-verify every `ui-expert` intervention" hard rule was investigated and deliberately NOT built.** The ask sounded obvious — wire an invariant `UI_VISUAL_UNVERIFIED` forcing a visual check after every `ui-expert` implementation. Three adversarial reviewers (distinct lenses) refuted the diagnosis: (1) standalone skills already verify — `/ui-design` has its generator/evaluator Playwright loop, `/ds-new` + `/ds-edit` delegate to `ui-expert`'s own BLOCKING pre-work + `ds-gate` + the coherence report, `/ds-render` feeds `/e2e-review` Phase 4b; (2) the invariant would be redundant with the existing `DS_*` coherence codes + the `coverage-gap` finding, and would fire **constantly** on every Storybook-less project — the gate-with-no-exit structural false-positive the framework explicitly avoids — plus risk the assertion-fitting the verifier trio forbids; (3) the real driver the obvious diagnosis missed: **visual verification is deliberately deferred to where a ground-truth exists** (a composed route / a mockup) — an inert scaffolded primitive has nothing to be judged against, so verifying it *now* judges the void. The single useful residue (a deterministic `PostToolUse` hook would beat prose if one ever wanted to harden `/new`'s own prose-driven Phase 2.6) was logged, not built. So this release ships only the **zero-cost, non-regressive nudge**: a documentation pointer making explicit *where* route-level fidelity lives.
|
|
11
|
+
|
|
12
|
+
**PATCH** — doc-only pointers; no new capability, no agent, no invariant, **no `baldart.config.yml` key**. The nudge is a pointer to the existing `/e2e-review` Phase 4, never a blocking obligation; skipped/irrelevant where no render surface exists.
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- **`/ds-render`** (`framework/.claude/skills/ds-render/SKILL.md`) — added a "Where route-level fidelity lives" note: the harness verifies a primitive in isolation (quality only, no ground-truth); the full fidelity check happens downstream via `/e2e-review` Phase 4 when the primitive is composed into a real route. A pointer, never a blocking obligation.
|
|
17
|
+
- **`/ui-design`** (`framework/.claude/skills/ui-design/SKILL.md`) — added a "Downstream visual verification" note after Step H: the design is verified visually at the mockup stage (Step D evaluator); the fidelity of the *implemented* result is verified downstream via `/e2e-review` Phase 4 (auto-run by `/new`, or manual `/e2e-review CARD-ID` outside the pipeline).
|
|
18
|
+
|
|
19
|
+
## [4.78.1] - 2026-06-29
|
|
20
|
+
|
|
21
|
+
**`/ds-new` + `/ds-edit` now close the closed-loop (the `DS_MIRROR_STALE` nudge).** The mirror advisory — check #6 of the Post-Intervention Coherence Check, which nudges `/design-sync publish` when the in-repo registry has moved ahead of its Claude Design satellite — was cited by **every** UI-touching surface (`code-reviewer`, `ui-design`, `/design-review`, `/new` implement, `/prd` ui-design-phase, the `ds-drift` backstop) **except the two skills whose whole job is to create/modify a canonical element**: `/ds-new` and `/ds-edit`. So creating a primitive with `/ds-new` on a satellite-bound project never reminded the user to publish it — the one event that most directly makes the mirror stale was the one that skipped the nudge. This release adds the citation to both skills' step-8 coherence report.
|
|
22
|
+
|
|
23
|
+
**PATCH** — doc-only completion of an existing advisory check; no new capability, no agent, **no `baldart.config.yml` key** (the check rides on the already-present `features.has_design_system` + the satellite-bound gate). The definition stays the single SSOT in `design-system-protocol.md` § Post-Intervention Coherence Check check #6 — the skills **cite, never redefine** it. Skipped when no satellite is bound (the vast majority of consumers → no-op); never blocks creation/edit.
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
|
|
27
|
+
- **`/ds-new`** (`framework/.claude/skills/ds-new/SKILL.md`) — step 8 coherence report now surfaces `DS_MIRROR_STALE` (advisory, non-blocking) nudging `/design-sync publish` when a Claude Design satellite is bound (`.baldart/design-sync.json` has a `project_id`); added a `See Also` pointer to `/design-sync`.
|
|
28
|
+
- **`/ds-edit`** (`framework/.claude/skills/ds-edit/SKILL.md`) — same step-8 mirror advisory, with the breaking-edit note that satellite drift is the same class as the migration; added the `/design-sync` `See Also` pointer.
|
|
29
|
+
|
|
8
30
|
## [4.78.0] - 2026-06-29
|
|
9
31
|
|
|
10
32
|
**Route-independent per-card mockup fidelity + graphics fast-lane.** On a `/new` run a desktop "Edit product" page shipped as **1 column** against a **2-column** mockup, marked DONE: the fidelity gate never ran on a rendered page because the auth-gated route returned 500 under the empty-Supabase demo lane, the views were "soft-skipped", and the verdict came back `ACCEPTED (harness limit)` — **a skip masked as a pass**. Two adversarial passes found this is not one bug but two distinct holes hitting two cards, plus the fact that the fidelity check depended on rendering a live, data-bearing route at all. This release inverts the priority: per-card UI fidelity is verified **route-independently, before proceeding** — a code-structural diff first, an isolated render as confirmation — and an un-runnable required check now **blocks instead of silently passing**. Bets validated against 2026 best practice (structural TED + perceptual diff as complementary dimensions; MLLM-as-judge reliable at comparison, weak at absolute scoring → fidelity gates, quality stays advisory).
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
4.78.
|
|
1
|
+
4.78.2
|
|
@@ -144,6 +144,13 @@ Each step is a delegation. Read the cited SSOT; do not paraphrase it.
|
|
|
144
144
|
8. **Coherence report (never silent).** Emit the protocol's "Registry coherence
|
|
145
145
|
check: N findings" block: spec updated (incl. HEAD), INDEX/policy reconciled,
|
|
146
146
|
tokens reconciled, breaking change documented + migration noted.
|
|
147
|
+
**Mirror (advisory, non-blocking):** modifying a canonical component or token
|
|
148
|
+
moves the registry ahead of its Claude Design satellite — so when a satellite is
|
|
149
|
+
bound (`.baldart/design-sync.json` has a `project_id`), also surface
|
|
150
|
+
`DS_MIRROR_STALE` (check #6, `design-system-protocol.md` — cite, do not redefine)
|
|
151
|
+
nudging `/design-sync publish`. For a **breaking** edit the satellite drift is
|
|
152
|
+
the same class as the migration — note both. Skipped when no satellite is bound;
|
|
153
|
+
never blocks the edit.
|
|
147
154
|
|
|
148
155
|
## Token edit path
|
|
149
156
|
|
|
@@ -183,3 +190,5 @@ symmetric to how a `NEW (governed)` standard routes to `/ds-new`. `/prd` owns th
|
|
|
183
190
|
- `framework/agents/component-manifest-schema.md` — the HEAD schema + the
|
|
184
191
|
regeneration contract (preserve agentic, regenerate deterministic).
|
|
185
192
|
- `framework/templates/breaking-change-checklist.md` — for breaking edits.
|
|
193
|
+
- `framework/.claude/skills/design-sync/SKILL.md` — `/design-sync publish` mirrors
|
|
194
|
+
the edit UP to the Claude Design satellite (the `DS_MIRROR_STALE` nudge).
|
|
@@ -139,6 +139,12 @@ Each step is a delegation. Read the cited SSOT; do not paraphrase it.
|
|
|
139
139
|
8. **Coherence report (never silent).** Emit the protocol's "Registry coherence
|
|
140
140
|
check: N findings" block (per § Post-Intervention Coherence Check): new spec
|
|
141
141
|
shipped, INDEX entry added, tokens reconciled, closed-set respected.
|
|
142
|
+
**Mirror (advisory, non-blocking):** creating a canonical component or token is
|
|
143
|
+
exactly the event that moves the registry ahead of its Claude Design satellite —
|
|
144
|
+
so when a satellite is bound (`.baldart/design-sync.json` has a `project_id`),
|
|
145
|
+
also surface `DS_MIRROR_STALE` (check #6, `design-system-protocol.md` — cite, do
|
|
146
|
+
not redefine) nudging `/design-sync publish`. Skipped when no satellite is bound;
|
|
147
|
+
never blocks creation.
|
|
142
148
|
|
|
143
149
|
---
|
|
144
150
|
|
|
@@ -196,4 +202,6 @@ across the two.
|
|
|
196
202
|
the serializer fills (the standardized doc shape).
|
|
197
203
|
- `framework/.claude/skills/design-system-init/SKILL.md` — the bulk twin; shares
|
|
198
204
|
the same scripts (`extract-manifest`/`extract-one`/`serialize-spec`).
|
|
205
|
+
- `framework/.claude/skills/design-sync/SKILL.md` — `/design-sync publish` mirrors
|
|
206
|
+
the new element UP to the Claude Design satellite (the `DS_MIRROR_STALE` nudge).
|
|
199
207
|
- `framework/docs/COMPONENT-MANIFEST-LAYER.md` — the layer overview.
|
|
@@ -71,6 +71,14 @@ Baseline `medium`. Honor an inline `effort=<level>` override.
|
|
|
71
71
|
mechanism is the `mockup_source.level: "harness-render"` marker (see
|
|
72
72
|
`e2e-review/SKILL.md` Phase 2 cascade) which Phase 4 skips and Phase 4b takes.
|
|
73
73
|
|
|
74
|
+
> **Where route-level fidelity lives (nudge, not a gate).** This harness verifies a
|
|
75
|
+
> primitive **in isolation** (quality only — it has no mockup ground-truth). The full
|
|
76
|
+
> visual-**fidelity** check happens **downstream**, when the primitive is composed into
|
|
77
|
+
> a real route: that is `/e2e-review` Phase 4 (auto-run by `/new`, or invoke
|
|
78
|
+
> `/e2e-review CARD-ID` manually if you implement outside `/new`). Verifying an inert
|
|
79
|
+
> primitive against a mockup here would be premature — it has nothing to be judged
|
|
80
|
+
> against yet. So this is a pointer, never a blocking obligation.
|
|
81
|
+
|
|
74
82
|
## Hard prohibitions
|
|
75
83
|
- NEVER feed a harness PNG to a fidelity diff (Phase 4) — quality (4b/4c) only.
|
|
76
84
|
- NEVER build a framework-native preview-route or an auto-provider-shim — Storybook
|
|
@@ -246,6 +246,14 @@ prevent**: catching a duplicate primitive at the mockup stage costs minutes,
|
|
|
246
246
|
catching it after implementation costs a refactor. The weekly `ds-drift`
|
|
247
247
|
routine is a safety net, not a substitute for this check.
|
|
248
248
|
|
|
249
|
+
**Downstream visual verification (nudge, not a gate).** The chosen design is
|
|
250
|
+
verified visually **at the mockup stage** here (Step D evaluator). The fidelity
|
|
251
|
+
of the *implemented* result against this design is verified **downstream**, when
|
|
252
|
+
the design lands in a live route: that is `/e2e-review` Phase 4 — auto-run by
|
|
253
|
+
`/new`, or invoke `/e2e-review CARD-ID` manually if you implement this design
|
|
254
|
+
outside the `/new` pipeline. This is where route-level fidelity lives; it is a
|
|
255
|
+
pointer, never a blocking obligation on this skill.
|
|
256
|
+
|
|
249
257
|
---
|
|
250
258
|
|
|
251
259
|
## Design Principles (quick reference)
|