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.0
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. **Create now (OPT-IN) vs bind-and-defer (default).** For each `NEW (governed)`
190
- element, the default is **bind-and-defer**: persist the binding (step 6) and let
191
- `ui-expert` create the component at `/new` implement time. When the user wants it
192
- materialized **now** (the canonical element + its standardized spec + INDEX entry
193
- + governance, before any card runs), invoke **`/ds-new`** with the resolved tuple
194
- (`NewComponent — role: family@context — standard:y/n — closed:y/n`); it skips its
195
- own reuse step (already reconciled here) and runs from its create step. `/prd`
196
- owns the *decision*; `/ds-new` executes the *creation* no rule is duplicated.
197
- This is additive: omit it and the default bind-and-defer path is unchanged.
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
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "baldart",
3
- "version": "4.69.0",
3
+ "version": "4.69.1",
4
4
  "description": "Claude Agent Framework - Reusable framework for coordinating AI agents and humans in software projects",
5
5
  "bin": {
6
6
  "baldart": "./bin/baldart.js"