baldart 4.69.0 → 4.69.1
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
CHANGED
|
@@ -5,6 +5,17 @@ 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.69.1] - 2026-06-24
|
|
9
|
+
|
|
10
|
+
**`/prd` and `/new` now actually USE `/ds-new` when a new STANDARDIZED component is detected** (v4.69.0 only wired it as an opt-in arm + left `/new`'s spec production unspecified). A new canonical element should be materialized through the one discipline, not hand-rolled per surface.
|
|
11
|
+
|
|
12
|
+
**PATCH** — wires the just-shipped skill into the two orchestrators; no new config key.
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- **`/prd` defaults to `/ds-new` create-now for a STANDARD** (`ui-design-phase.md`, NEW-governed branch) — when the user confirms a new component is `standard: yes` (canonical for its role, especially a `closed` family), `/prd` now invokes `/ds-new` to materialize the canonical element + its standardized spec + INDEX entry + Selection-Policy governance **before any card runs** (so `ds-gate` enforces it and every consumer reuses it), instead of scattering the governance lazily across `/new` cards. A genuine `scope: local` one-off stays bind-and-defer.
|
|
17
|
+
- **`/new` produces a new primitive's spec via the serializer, following the `/ds-new` discipline** (`implement.md`, ui-expert Post-Intervention) — a NEW canonical/standardized primitive's `components/<Name>.md` HEAD is **emitted by `extract-one.mjs` → `serialize-spec.mjs`** (filling `framework/templates/component-spec.template.md`), **never hand-written** (the serialization contract), with `canonical_for`/`use_when`/`selection_closed` set per governance when it is a standard. Closes the gap where "ship the spec" let ui-expert hand-author an untemplated, possibly invalid-YAML HEAD. Propagates to `new2` automatically (shared reference modules).
|
|
18
|
+
|
|
8
19
|
## [4.69.0] - 2026-06-24
|
|
9
20
|
|
|
10
21
|
**`/ds-new` — the fifth corner of the design-system discipline: guided creation of ONE canonical element + a canonical, ENFORCED doc template.** Discovery/reuse, prevention (`/prd`), enforcement (`ds-gate`), and bulk bootstrap (`/design-system-init`) all existed — but there was no user-invocable entry point to create a single new component or token *correctly* on-the-fly (research → create → document → register → govern → verify); `ui-expert` does it inside tasks, `/design-system-init` is bulk-only. Second gap the user named: the docs were **not standardized** — the rich prose template existed but was buried in `scripts/` and (critically) **not wired into the serializer** (`emitSpec` stubbed a one-liner on empty prose), so freshly-created specs were untemplated.
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
4.69.
|
|
1
|
+
4.69.1
|
|
@@ -198,7 +198,18 @@
|
|
|
198
198
|
introduced or modified. Drift code: `DS_INDEX_DRIFT`.
|
|
199
199
|
- `${paths.design_system}/components/<Name>.md` — ship the per-component
|
|
200
200
|
spec for any new primitive; update the spec when a primitive's API or
|
|
201
|
-
visual changes. Drift code: `DS_COMPONENT_STALE`.
|
|
201
|
+
visual changes. Drift code: `DS_COMPONENT_STALE`. **A NEW canonical/standardized
|
|
202
|
+
primitive follows the `/ds-new` create+document+govern discipline** (the
|
|
203
|
+
single-element procedure — `framework/.claude/skills/ds-new/SKILL.md`): the spec
|
|
204
|
+
HEAD is **emitted by the serializer** (`extract-one.mjs` → `serialize-spec.mjs`
|
|
205
|
+
with `--index`, which fills the canonical template
|
|
206
|
+
`framework/templates/component-spec.template.md`) — **never hand-write the HEAD or
|
|
207
|
+
the spec body** (the serialization contract in `agents/component-manifest-schema.md`).
|
|
208
|
+
If the new primitive is a standard for its role, set its `canonical_for` /
|
|
209
|
+
`use_when` / `selection_closed` per `design-system-protocol.md § Closed-Set
|
|
210
|
+
Selection Policy` (a closure is a governance decision — flag it, don't self-approve).
|
|
211
|
+
A genuinely surface-specific one-off (`scope: local`) may use a lighter spec, but
|
|
212
|
+
still tokens-compliant + INDEX-registered.
|
|
202
213
|
- `${paths.design_system}/tokens-reference.md` — add / update token entries
|
|
203
214
|
when introducing new semantic tokens. Drift code: `DS_TOKENS_DRIFT`.
|
|
204
215
|
|
|
@@ -186,15 +186,25 @@ Before invoking `ui-design`:
|
|
|
186
186
|
it from then on. A new standard for *all* views also opens a **migration
|
|
187
187
|
follow-up card** for the existing views (never migrate them in this PRD).
|
|
188
188
|
|
|
189
|
-
7. **
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
189
|
+
7. **Materialize the new element — routed by whether it is a STANDARD.** For each
|
|
190
|
+
`NEW (governed)` element:
|
|
191
|
+
- **Standardized / canonical** (the user confirmed it `standard: yes` — it becomes
|
|
192
|
+
the canonical answer for its role, especially a `closed` family): **default to
|
|
193
|
+
invoking `/ds-new` now** with the resolved tuple (`NewComponent — role:
|
|
194
|
+
family@context — standard:yes — closed:y/n`). `/ds-new` skips its own reuse step
|
|
195
|
+
(already reconciled here) and runs from its create step, materializing the
|
|
196
|
+
canonical element + its standardized (serializer-templated) spec + INDEX entry +
|
|
197
|
+
Selection-Policy governance BEFORE any card runs — so `ds-gate` enforces it from
|
|
198
|
+
then on and every consumer reuses it. Creating a *standard* lazily at implement
|
|
199
|
+
time scatters the governance decision across cards; do it once, here, with the
|
|
200
|
+
human in the loop.
|
|
201
|
+
- **Local one-off** (`scope: local`, surface-specific, not a standard): **bind-and-defer**
|
|
202
|
+
— persist the binding (step 6) and let `ui-expert` create it at `/new` implement
|
|
203
|
+
time (following the `/ds-new` create discipline per `implement.md`, but without
|
|
204
|
+
closed-set governance).
|
|
205
|
+
`/prd` owns the *decision* (standard vs one-off); `/ds-new` / `ui-expert` execute
|
|
206
|
+
the *creation* — no rule is duplicated. (Offline / non-interactive `/prd`: record
|
|
207
|
+
the `/ds-new` create-now intent for the standard so it is not silently deferred.)
|
|
198
208
|
|
|
199
209
|
Pass the resolved inventory to `ui-design`:
|
|
200
210
|
|