baldart 4.33.1 → 4.33.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
CHANGED
|
@@ -5,6 +5,16 @@ 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.33.2] - 2026-06-12
|
|
9
|
+
|
|
10
|
+
**`/new` runs its two purely-mechanical spawns on haiku instead of opus.** Audit of every agent `/new` spawns (not `new2`) found that the spawns inherit each agent's frontmatter default and none ever override `model:` — correct for the reasoning agents (`coder`/`ui-expert` = opus; the review/analysis agents = sonnet), but the **background worktree-setup subagent** that runs `/nw` is a `general-purpose` agent with no `model:`, so it inherited the **session model (opus)** to do pure git plumbing (create worktree, install deps, allocate port, write registry). Same shape for the **file-scoped revert agent** (was spawned as `coder`/opus to do a mechanical revert). Both now run on **haiku** — cheaper and faster on the background barrier, with no quality loss because neither does any reasoning or code authoring. `qa-sentinel` deliberately stays on sonnet (failure interpretation + test-tier selection). `/mw` is invoked inline by the orchestrator (not a subagent) so it is unaffected. No `baldart.config.yml` key involved (model selection is native) ⇒ schema-change propagation rule does not apply. **PATCH** (cost/perf, no new capability, no breaking change).
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- **`framework/.claude/skills/new/references/setup.md`** — the §4b background worktree-setup subagent (`general-purpose`, runs `/nw`) now spawns with `model: "haiku"`, with a rationale noting it is deterministic plumbing.
|
|
15
|
+
- **`framework/.claude/skills/new/references/implement.md`** — the Phase 2.4 unauthorized-file revert is now a `general-purpose` + `model: "haiku"` agent with an explicit ROLE BOUNDARY (mechanical file-scoped revert, never code authoring), replacing the prior `coder`/opus revert spawn.
|
|
16
|
+
- **`framework/.claude/agents/REGISTRY.md`** — the Model Selection Matrix "never haiku" rule is scoped to **named specialist agents**, with an explicit **plumbing carve-out** sanctioning `model: "haiku"` for mechanical `general-purpose` plumbing (the two `/new` uses above); `qa-sentinel`'s stay-on-sonnet rationale made explicit.
|
|
17
|
+
|
|
8
18
|
## [4.33.1] - 2026-06-12
|
|
9
19
|
|
|
10
20
|
**Discoverability follow-up to v4.33.0** — the new `stack.schema_deploy_from_trunk_only` gate guard was enforced in the `/new` reference modules + `new2.js`, but the **"Reads from `baldart.config.yml`"** manifest line at the top of each skill body still omitted it. Surface it so the key is discoverable from the skill's config-reads declaration (parity with `stack.database` / `stack.deployment`). Manifest-only — **no behavior change**. **PATCH**.
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
4.33.
|
|
1
|
+
4.33.2
|
|
@@ -198,7 +198,9 @@ Use this table when spawning agents via the `Task` tool. The `model` field in ea
|
|
|
198
198
|
| **hybrid-ml-architect** | opus | — (always opus) | ML architecture is complex by nature |
|
|
199
199
|
| **senior-researcher** | opus | — (always opus) | Research depth requires strongest model |
|
|
200
200
|
|
|
201
|
-
**Rules**: Never use haiku for any agent. Opus for code writing and creative/complex work. Sonnet for analysis, review, and documentation.
|
|
201
|
+
**Rules**: Never use haiku for any **named specialist agent** in the matrix above. Opus for code writing and creative/complex work. Sonnet for analysis, review, and documentation. `qa-sentinel` stays on sonnet even though it is a mechanical gate runner — its failure interpretation and SCOPED-vs-FULL tiering benefit from sonnet.
|
|
202
|
+
|
|
203
|
+
**Plumbing carve-out (haiku allowed):** the "never haiku" rule above governs the specialist agents. **Mechanical plumbing spawned as `general-purpose`** — with no reasoning and an explicit ROLE BOUNDARY — MAY use `model: "haiku"` via override. Two sanctioned uses today, both in `/new`: (1) the background **worktree-setup** subagent that runs `/nw` (create worktree, install deps, allocate port, write registry — `references/setup.md` §4b); (2) the **file-scoped revert agent** that restores unauthorized files to their pre-commit state (`references/implement.md` Phase 2.4). Both are deterministic git/file ops, never code authoring.
|
|
202
204
|
|
|
203
205
|
## Notes
|
|
204
206
|
|
|
@@ -358,4 +358,4 @@
|
|
|
358
358
|
(`$TRUNK` is the trunk branch resolved in Phase 0; if the worktree branched from a different base, the `HEAD~1..HEAD` fallback covers the last commit.)
|
|
359
359
|
Compare against this card's allowed files in `## File Ownership Map`.
|
|
360
360
|
- **All within allowed set** → proceed to Phase 2.5.
|
|
361
|
-
- **Any file outside allowed set** → log the violation in `## Issues & Flags` (`"unauthorized file: <path>"`), then spawn a **targeted revert
|
|
361
|
+
- **Any file outside allowed set** → log the violation in `## Issues & Flags` (`"unauthorized file: <path>"`), then spawn a **targeted revert agent** (`subagent_type: general-purpose`, **`model: "haiku"`** — a file-scoped revert is mechanical git plumbing, not code authoring, so it does NOT need `coder`/opus; this is the sanctioned plumbing carve-out to REGISTRY.md's "never haiku" rule) with an **explicit ROLE BOUNDARY**: "Mechanical file-scoped revert only — restore ONLY these files to their pre-commit state, do NOT write, fix, or refactor any code. Do not touch any other file: [list unauthorized files]". Re-run build + lint to confirm clean state after revert. Update tracker with revert outcome, then proceed to Phase 2.5.
|
|
@@ -270,7 +270,7 @@
|
|
|
270
270
|
- **`WT_PATH` set AND `registry.json` has a complete code entry for this slug** (a finished prior run — `buildVerified` recorded) → **resume**: read `path`/`branch`/`port`/`createdAt`/`buildVerified` from that entry, skip to step 6; re-run the baseline as a single background `Bash` (output to `/tmp`) **only if** `buildVerified` is not `true`.
|
|
271
271
|
- **`WT_PATH` set but NO complete registry entry** (a prior attempt interrupted mid-setup — the normal compaction-mid-barrier state: worktree created, build unfinished, entry never written) → it is a half-built orphan with **no card work** (we are still in pre-flight, zero commits). **Reset clean and recreate**: `git -C "$MAIN" worktree remove --force "$WT_PATH"` then `git -C "$MAIN" branch -D "$WT_BRANCH"` (both ignore-if-absent), then proceed to 4b. A pre-flight worktree has nothing to lose, so a clean recreate is always safe — and it sidesteps the fail-loud collision a naive re-spawn would hit.
|
|
272
272
|
This — detection by `git worktree list`, not the lagging registry — is what makes the deferred-flush pre-flight genuinely idempotent across compaction.
|
|
273
|
-
b. **Spawn ONE background subagent** (Agent tool, **`mode: "bypassPermissions"`** — mandatory per the SKILL.md meta-rules; a background agent that hit a permission prompt with no human present would stall the barrier forever — `run_in_background: true`, `name: "worktree-setup-<FIRST-CARD-ID>"`, a subagent type that can use the Skill tool — `general-purpose
|
|
273
|
+
b. **Spawn ONE background subagent** (Agent tool, **`mode: "bypassPermissions"`** — mandatory per the SKILL.md meta-rules; a background agent that hit a permission prompt with no human present would stall the barrier forever — `run_in_background: true`, `name: "worktree-setup-<FIRST-CARD-ID>"`, a subagent type that can use the Skill tool — `general-purpose`, **`model: "haiku"`** — this mission is pure deterministic plumbing (create the worktree, install deps, allocate the dev-server port, write the registry entry) with no reasoning; haiku is sufficient and is faster on the barrier, and it is the sanctioned plumbing carve-out to REGISTRY.md's "never haiku" rule) whose ENTIRE mission is to run `/nw` and return the block below. Briefing:
|
|
274
274
|
```
|
|
275
275
|
Invoke the worktree-manager skill in `/nw` programmatic mode with:
|
|
276
276
|
{ cards: [<all card IDs>], groupParent: <PARENT-ID|null>, slug: "<slug>" }
|