@haus-tech/haus-workflow 5.12.1 → 6.0.0

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
@@ -1,5 +1,60 @@
1
1
  # Changelog
2
2
 
3
+ ## [6.0.0](https://github.com/WeAreHausTech/haus-workflow/compare/v5.12.1...v6.0.0) (2026-10-15)
4
+
5
+ ### ⚠ BREAKING CHANGES
6
+
7
+ - **apply:** haus no longer replaces a file it does not own. Earlier releases could overwrite a hand-made skill, agent, command or rule folder that shared a catalog name (#617) and a config file that haus configs --force or haus new overlaid (#584), without a backup. That content is lost on the machine that ran the command. If your project may have been hit, check git history for .claude/skills/, .claude/agents/, .claude/commands/, .claude/rules/ and the scaffolded config files (eslint, prettier and the other haus configs items) and restore what you need. From this release on, such a file is refused with a warning, adopted when it is byte-identical to the catalog, or backed up under .haus-workflow/backups/overwrite-<stamp>/ before --force replaces it.
8
+
9
+ Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
10
+
11
+ ### Features
12
+
13
+ - **request:** designa continues into bedöm, approve and synced receipts (ADR-0153) ([#691](https://github.com/WeAreHausTech/haus-workflow/issues/691)) ([febd8ab](https://github.com/WeAreHausTech/haus-workflow/commit/febd8ab8698abca1321664bce80dfc437ba5260e)), closes [#688](https://github.com/WeAreHausTech/haus-workflow/issues/688)
14
+ - **request:** detaljer lists a split root's parts and reads one part ([#736](https://github.com/WeAreHausTech/haus-workflow/issues/736)) ([5680e7e](https://github.com/WeAreHausTech/haus-workflow/commit/5680e7e7cd94a56b3db79d8714e83dd8ef8e1f4c))
15
+ - **request:** ny-del --typ split writes a production split part ([#734](https://github.com/WeAreHausTech/haus-workflow/issues/734)) ([fb6926d](https://github.com/WeAreHausTech/haus-workflow/commit/fb6926d84b3a39d9551e7b24f70b9fd42cfaafc2))
16
+ - **request:** production pricing runs as one script process (ADR-0155) ([#723](https://github.com/WeAreHausTech/haus-workflow/issues/723)) ([1aa9b3b](https://github.com/WeAreHausTech/haus-workflow/commit/1aa9b3b1797c406ed760a1f1167f009c7e46df28))
17
+ - **request:** the archive lives in the main checkout (ADR-0154) ([#701](https://github.com/WeAreHausTech/haus-workflow/issues/701)) ([f5e0639](https://github.com/WeAreHausTech/haus-workflow/commit/f5e0639814c8283bc49648538625745c75591615))
18
+ - **request:** the Closing tells how to wrap up a session at a resting point ([#729](https://github.com/WeAreHausTech/haus-workflow/issues/729)) ([e85c7ed](https://github.com/WeAreHausTech/haus-workflow/commit/e85c7ed2b7ccbab97f3ca15289f584af1592374d))
19
+ - **request:** the design is drafted by a machine and read by a second (ADR-0156) ([#741](https://github.com/WeAreHausTech/haus-workflow/issues/741)) ([5614fb3](https://github.com/WeAreHausTech/haus-workflow/commit/5614fb34593f6c520c29edfad23afd80d28c6672))
20
+ - **request:** the spec sync runs without a go when the board opts in (ADR-0157) ([#744](https://github.com/WeAreHausTech/haus-workflow/issues/744)) ([59822d5](https://github.com/WeAreHausTech/haus-workflow/commit/59822d5c140caae0398a9ea667b9de5850d657a5))
21
+ - **undo:** keep the lock, back up before every deletion, --force on remove and undo ([#760](https://github.com/WeAreHausTech/haus-workflow/issues/760)) ([606ba17](https://github.com/WeAreHausTech/haus-workflow/commit/606ba1701f95685a36365df82fe121f35b997aac))
22
+
23
+ ### Bug Fixes
24
+
25
+ - **apply:** refuse, adopt or back up a target haus does not own ([#682](https://github.com/WeAreHausTech/haus-workflow/issues/682)) ([1305d76](https://github.com/WeAreHausTech/haus-workflow/commit/1305d768ae524d884a9755801a9b8616077ddb23)), closes [#617](https://github.com/WeAreHausTech/haus-workflow/issues/617)
26
+ - **ci-gate:** diff the decisions leg from the pull request's base ([#728](https://github.com/WeAreHausTech/haus-workflow/issues/728)) ([cc88384](https://github.com/WeAreHausTech/haus-workflow/commit/cc883847ecfb232737039e73c9b25de43c4fbc17)), closes [#616](https://github.com/WeAreHausTech/haus-workflow/issues/616)
27
+ - **config:** refuse an unreadable haus.config.json with the unreadable line ([#732](https://github.com/WeAreHausTech/haus-workflow/issues/732)) ([f13a914](https://github.com/WeAreHausTech/haus-workflow/commit/f13a914d0ad1ef1cb55ae5a0ea75f5717255670b)), closes [#704](https://github.com/WeAreHausTech/haus-workflow/issues/704)
28
+ - **configs:** refuse an existing config file, back it up under --force ([#683](https://github.com/WeAreHausTech/haus-workflow/issues/683)) ([dd517e7](https://github.com/WeAreHausTech/haus-workflow/commit/dd517e75375334e8abf17237093d2fd420d6ede1)), closes [#584](https://github.com/WeAreHausTech/haus-workflow/issues/584)
29
+ - **decisions:** judge the repository gh pr create targets, not the session folder ([#709](https://github.com/WeAreHausTech/haus-workflow/issues/709)) ([a9359d9](https://github.com/WeAreHausTech/haus-workflow/commit/a9359d99b02aa3b8fb6ad71e2bc85f9c77f40d3c)), closes [#654](https://github.com/WeAreHausTech/haus-workflow/issues/654)
30
+ - **decisions:** read the index from the diff side, quiet an empty second home ([#724](https://github.com/WeAreHausTech/haus-workflow/issues/724)) ([8c0b145](https://github.com/WeAreHausTech/haus-workflow/commit/8c0b1452a1941c0d9c3d75bb73a791c4e3be729b)), closes [#626](https://github.com/WeAreHausTech/haus-workflow/issues/626)
31
+ - **decisions:** say a titled suggest draft was requested, pin the declare-role hints ([#719](https://github.com/WeAreHausTech/haus-workflow/issues/719)) ([d8f78d9](https://github.com/WeAreHausTech/haus-workflow/commit/d8f78d97a5f60b8b52275775cf3ceb7a8bc2ea94))
32
+ - **doctor:** a heading no longer vouches for an agent name on its own line ([#705](https://github.com/WeAreHausTech/haus-workflow/issues/705)) ([a574b19](https://github.com/WeAreHausTech/haus-workflow/commit/a574b19801b2788ac6a83ce7d63be377daf59912))
33
+ - **doctor:** give the hand fix for a settings file apply refuses ([#737](https://github.com/WeAreHausTech/haus-workflow/issues/737)) ([011f128](https://github.com/WeAreHausTech/haus-workflow/commit/011f128db9ac8e2aafbc5b92c8d1f65d66c86f63)), closes [#713](https://github.com/WeAreHausTech/haus-workflow/issues/713) [#713](https://github.com/WeAreHausTech/haus-workflow/issues/713)
34
+ - **doctor:** resolve a plugin's skills per plugin, not per marketplace root ([#715](https://github.com/WeAreHausTech/haus-workflow/issues/715)) ([7b9f3c1](https://github.com/WeAreHausTech/haus-workflow/commit/7b9f3c1b0655df18d0118cddcb76d300c5e229c1))
35
+ - **doctor:** write no scan file on a stale cache and test the plugin messages ([#743](https://github.com/WeAreHausTech/haus-workflow/issues/743)) ([b798326](https://github.com/WeAreHausTech/haus-workflow/commit/b798326a3b13b6695084a0e69ac5f26913e2b3fd)), closes [#588](https://github.com/WeAreHausTech/haus-workflow/issues/588) [#588](https://github.com/WeAreHausTech/haus-workflow/issues/588) [#588](https://github.com/WeAreHausTech/haus-workflow/issues/588)
36
+ - **lock:** carry every row while its files exist and stop re-hashing on update ([#670](https://github.com/WeAreHausTech/haus-workflow/issues/670)) ([9fff0f0](https://github.com/WeAreHausTech/haus-workflow/commit/9fff0f0a16f6d38fe9ea0a0dcf81c0a0fce9cef1)), closes [#615](https://github.com/WeAreHausTech/haus-workflow/issues/615) [#636](https://github.com/WeAreHausTech/haus-workflow/issues/636)
37
+ - **new:** let the overlay land the catalog .prettierignore and alert on a red canary ([#710](https://github.com/WeAreHausTech/haus-workflow/issues/710)) ([97a3d5b](https://github.com/WeAreHausTech/haus-workflow/commit/97a3d5bc3991e85fbaf3405d0b7715feeeda217a)), closes [#442](https://github.com/WeAreHausTech/haus-workflow/issues/442) [#645](https://github.com/WeAreHausTech/haus-workflow/issues/645)
38
+ - **profiles:** print each catalog profile warning once, refuse new options on stderr ([#730](https://github.com/WeAreHausTech/haus-workflow/issues/730)) ([85421b8](https://github.com/WeAreHausTech/haus-workflow/commit/85421b87898dc111fde2b0eeed302366dedfcb05)), closes [#552](https://github.com/WeAreHausTech/haus-workflow/issues/552)
39
+ - **recommender:** warn about an unknown profile clause once per process ([#720](https://github.com/WeAreHausTech/haus-workflow/issues/720)) ([401f0e5](https://github.com/WeAreHausTech/haus-workflow/commit/401f0e503dbd612fedd3b9a1e747f894c37c86a1))
40
+ - **request:** a guard file no longer sets the item's coverage post ([#762](https://github.com/WeAreHausTech/haus-workflow/issues/762)) ([b17539f](https://github.com/WeAreHausTech/haus-workflow/commit/b17539fb9006bdca6dc20d1aaa869712953f3e74))
41
+ - **request:** a split parent reads its board receipt like a priced item ([#711](https://github.com/WeAreHausTech/haus-workflow/issues/711)) ([c77556b](https://github.com/WeAreHausTech/haus-workflow/commit/c77556b0b88562d57eb63094c3b233c9dcf43cf9))
42
+ - **request:** add-run takes coverage_post from the round's main file only ([#686](https://github.com/WeAreHausTech/haus-workflow/issues/686)) ([072e6b3](https://github.com/WeAreHausTech/haus-workflow/commit/072e6b344209764ba8245310760191e7bccb09cf))
43
+ - **request:** define the resting point and name the wrap-up where tasks close ([#731](https://github.com/WeAreHausTech/haus-workflow/issues/731)) ([5f87c1a](https://github.com/WeAreHausTech/haus-workflow/commit/5f87c1ada38ed48c07a4079edb038083bb89e723)), closes [#729](https://github.com/WeAreHausTech/haus-workflow/issues/729)
44
+ - **request:** pricing-check replies explain the result in plain sentences ([#725](https://github.com/WeAreHausTech/haus-workflow/issues/725)) ([25efe97](https://github.com/WeAreHausTech/haus-workflow/commit/25efe97c207efde694af88f0e143ed99eabb1817))
45
+ - **request:** stopp reads the design-conflict reason from impact.md ([#738](https://github.com/WeAreHausTech/haus-workflow/issues/738)) ([8fe50fa](https://github.com/WeAreHausTech/haus-workflow/commit/8fe50fa2b6fed6f58c557a4ce7c7a7d763529650)), closes [#596](https://github.com/WeAreHausTech/haus-workflow/issues/596)
46
+ - **request:** underkänn records its board move so the next step stops calling the sync done ([#718](https://github.com/WeAreHausTech/haus-workflow/issues/718)) ([22874da](https://github.com/WeAreHausTech/haus-workflow/commit/22874da2175ccb32239612ba6603b8c83d69041f))
47
+ - **settings:** refuse a hand-damaged _haus record instead of crashing ([#733](https://github.com/WeAreHausTech/haus-workflow/issues/733)) ([b1078ae](https://github.com/WeAreHausTech/haus-workflow/commit/b1078ae0ee5c4b03aed8cf23428dfc9acf2919f5)), closes [#722](https://github.com/WeAreHausTech/haus-workflow/issues/722) [#722](https://github.com/WeAreHausTech/haus-workflow/issues/722)
48
+ - **settings:** remove the retired context hook only where the record lists it ([#740](https://github.com/WeAreHausTech/haus-workflow/issues/740)) ([feb9975](https://github.com/WeAreHausTech/haus-workflow/commit/feb9975a79880209246e634a6213c6678bc7e7d2)), closes [#700](https://github.com/WeAreHausTech/haus-workflow/issues/700) [#700](https://github.com/WeAreHausTech/haus-workflow/issues/700) [#700](https://github.com/WeAreHausTech/haus-workflow/issues/700)
49
+ - **settings:** touch only haus entries and blocks in shared and team files ([#712](https://github.com/WeAreHausTech/haus-workflow/issues/712)) ([d02aa86](https://github.com/WeAreHausTech/haus-workflow/commit/d02aa863e86bf39ad617370f84af78dbdf50efab)), closes [#699](https://github.com/WeAreHausTech/haus-workflow/issues/699)
50
+ - **shared-files:** leave every blank line outside haus's block as the user wrote it ([#735](https://github.com/WeAreHausTech/haus-workflow/issues/735)) ([36f2af8](https://github.com/WeAreHausTech/haus-workflow/commit/36f2af8b4cd58e76e96a292f19703cfacf8b1e34)), closes [#697](https://github.com/WeAreHausTech/haus-workflow/issues/697) [#697](https://github.com/WeAreHausTech/haus-workflow/issues/697)
51
+ - **team-config:** refuse to replace a linked haus.workspace.yaml or haus.config.json ([#742](https://github.com/WeAreHausTech/haus-workflow/issues/742)) ([3eed50a](https://github.com/WeAreHausTech/haus-workflow/commit/3eed50a5c3c132159f8a320bd88c25f72235e35c)), closes [#703](https://github.com/WeAreHausTech/haus-workflow/issues/703)
52
+ - **test:** fail a test run against a dist/ older than src/ ([#716](https://github.com/WeAreHausTech/haus-workflow/issues/716)) ([3580770](https://github.com/WeAreHausTech/haus-workflow/commit/35807703638feb80e76524cd9adf130c70beb9db)), closes [#643](https://github.com/WeAreHausTech/haus-workflow/issues/643) [#643](https://github.com/WeAreHausTech/haus-workflow/issues/643)
53
+ - **test:** fail the run when a describe() body throws ([#726](https://github.com/WeAreHausTech/haus-workflow/issues/726)) ([08e810a](https://github.com/WeAreHausTech/haus-workflow/commit/08e810a52c5a655836c5db5045f95fab1a2583bb)), closes [#602](https://github.com/WeAreHausTech/haus-workflow/issues/602)
54
+ - **test:** run only the named files in yarn test <file> ([#707](https://github.com/WeAreHausTech/haus-workflow/issues/707)) ([5eb8cff](https://github.com/WeAreHausTech/haus-workflow/commit/5eb8cfff25fe5f1b16a05fcd71cfd02de0b82dcf)), closes [#644](https://github.com/WeAreHausTech/haus-workflow/issues/644)
55
+ - **update:** skip the project refresh outside a project, home folder first ([#717](https://github.com/WeAreHausTech/haus-workflow/issues/717)) ([d85971e](https://github.com/WeAreHausTech/haus-workflow/commit/d85971e34d3404543cce009b6af69495e44e34e9)), closes [#647](https://github.com/WeAreHausTech/haus-workflow/issues/647)
56
+ - **workspace:** keep the member headings on stderr under setup --json ([#739](https://github.com/WeAreHausTech/haus-workflow/issues/739)) ([e0019b3](https://github.com/WeAreHausTech/haus-workflow/commit/e0019b30b86e383d57801370c2fed11c1a3f2f66)), closes [#698](https://github.com/WeAreHausTech/haus-workflow/issues/698)
57
+
3
58
  ## [5.12.1](https://github.com/WeAreHausTech/haus-workflow/compare/v5.12.0...v5.12.1) (2026-10-08)
4
59
 
5
60
  ### Bug Fixes
package/README.md CHANGED
@@ -98,9 +98,10 @@ On `haus apply` / `haus update`, items **removed from the catalog** or marked
98
98
  **deprecated** are pruned from the project when their on-disk copy still matches the
99
99
  lock hash; user-edited copies are kept, lock entry and all. Every lock-tracked catalog item
100
100
  haus deletes is snapshotted under `.haus-workflow/backups/` first and can be put back with
101
- `haus backups restore` (`haus undo` also removes other project files such as
102
- `.claude/settings.json` and the root `CLAUDE.md`, which are not lock-tracked and not
103
- snapshotted — see [docs/cli.md](docs/cli.md) → `haus backups`). Approved items deselected via
101
+ `haus backups restore` (`haus undo` also strips haus's parts of `.claude/settings.json` and
102
+ the root `CLAUDE.md` and removes `.claude/rules/haus.md` when haus owns it; its `undo-`
103
+ snapshot covers those too, and it keeps the lock rows of the edited items it leaves behind,
104
+ see [docs/cli.md](docs/cli.md) → `haus undo`). Approved items deselected via
104
105
  `--select` are not pruned.
105
106
 
106
107
  > **Upgrading from a pre-`0.30.0` CLI:** deprecated-skill pruning shipped in `0.30.0`.
@@ -141,7 +142,9 @@ The honest-shortfall reporting covers `haus apply`, `haus init`, `haus new`, and
141
142
  and `workspace setup`; issue #329 threaded the same `--allow-empty-cache` flag through
142
143
  `haus new`): a run that cannot install everything it wanted reports `K of N catalog
143
144
  items installed` and exits 1 if it installed none, unless `--allow-empty-cache` opts
144
- into writing core files anyway (still exits 1 having installed nothing). `workspace
145
+ into writing core files anyway (still exits 1 having installed nothing, though in a
146
+ project already set up a wanted item whose files are on disk from an earlier run counts
147
+ as installed). `workspace
145
148
  setup` reports this per member repo — a repo that installed zero catalog items, hit
146
149
  the zero-signal guard, or was refused for an unsupported catalog format is recorded
147
150
  `failed`, not `ok` (issue #330). See [docs/cli.md](docs/cli.md) for each command's