super-ux 0.41.3 → 0.41.4

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.
Files changed (2) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.41.4 — 2026-08-16
4
+
5
+ **This gate can now see an invariant it breaks one repository away.** The family umbrella
6
+ routes work by matching a prompt against a table in `lib/triggers.js`, and every trigger
7
+ there must be a word this skill's own `description` advertises. Nothing here knew that
8
+ table existed. On 2026-08-16 `sheleg-design` 1.37.0 shipped green having dropped a phrase
9
+ that was still a live trigger, the umbrella found out minutes after the tag, and it cost a
10
+ patch release — because the member releases FIRST and the umbrella re-pins after.
11
+
12
+ `test/validate.py` now asks the umbrella's own checker (`test/advertised_check.js`), which
13
+ reads the module the hook itself calls. **No copy of the table lives here**, so there is
14
+ nothing to drift. With no umbrella above this checkout — a standalone clone, and CI — it
15
+ discloses rather than passing, because a check that cannot look must never read as one
16
+ that looked.
17
+
18
+ Watched refusing a real drop before shipping: every one of the seven members carrying
19
+ routed triggers had one of its own advertised phrases removed and every one of them failed
20
+ its own gate.
21
+
3
22
  ## 0.41.3 — 2026-08-16
4
23
 
5
24
  **`facts.md` is a document, not only a facts table.** `facts()` took any
@@ -21,6 +40,42 @@ where it would have been overwritten by the next sync — a plugin-owned file
21
40
  edited in a downstream project serves that project until the day it silently
22
41
  does not. Ported up with its fixture, which was watched failing.
23
42
 
43
+ ### Three more changes landed in this version, from a concurrent session
44
+
45
+ They carry the same `0.41.3` in every manifest and sit inside the tag, so the
46
+ entry names them rather than leaving a release whose changelog describes a
47
+ quarter of it. Summarised from their own commit messages, not re-derived.
48
+
49
+ - **`B021` reads the built page** (`6fe309e`). The registry records what a
50
+ reader sees, and the check looked for that string in component *source*, where
51
+ an interpolated value never appears literally and an inline `<strong>` or `<a>`
52
+ splits a sentence the registry stores whole. On `sshlg.me` that was five errors
53
+ with no honest repair — hardcode the number and lose the guarantee it is
54
+ derived, or delete the rows and lose the check. `rendered_text()` now reads
55
+ `dist`, `build`, `out` or `_site`, first that exists, and a project that does
56
+ not build keeps the byte-exact source comparison. The message says which of the
57
+ two it checked. **This closes the last class `sshlg.me` had open**: that
58
+ project went from five errors to zero.
59
+ - **The same fix, applied to the script this package actually ships**
60
+ (`213ae1b`). It had gone into `docs/brand/lint.py`, the dogfood copy, while
61
+ `plugins/super-ux/scripts/brand_lint.py` is what `package.json` ships and what
62
+ `validate.py` reads as the authority — so it reached this repository's own
63
+ linting and no installed project. The pair check was red the whole time and the
64
+ commit went in without running it, which its author recorded rather than
65
+ quietly fixed.
66
+ - **`guardedFiles` covers the linters** (`3e133ab`). The manifests, the evidence
67
+ ledgers and `test/validate.py` were guarded; `docs/brand/lint.py` and
68
+ `plugins/super-ux/scripts/brand_lint.py` were not, and that is exactly where two
69
+ agents collided on 2026-08-16 and lost about twenty minutes. "A config that
70
+ guards what is edited rarely and leaves what is edited hourly open describes a
71
+ project nobody works on."
72
+
73
+ **The tag was placed on the tip rather than on the release commit**, by the run
74
+ that wrote the section above this one: `git tag` was given no target and took
75
+ `HEAD`, which by then carried three commits it had not seen. Left where it is —
76
+ a published tag is not moved — and the entry was widened to match it instead.
77
+ Both are recoveries from the same mistake, and only one of them is safe.
78
+
24
79
  ## 0.41.2 — 2026-08-16
25
80
 
26
81
  **A source file is not prose, and the prose rules were reading all of it.** On
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "super-ux",
3
- "version": "0.41.3",
3
+ "version": "0.41.4",
4
4
  "description": "Scenario-driven UI development for AI agents (Claude Code, Cursor, 70+ agents): a versioned design chain in docs/ux/, a scenario-first hard rule, a deterministic drift linter, and evidence-backed UX audits. This package is the installer CLI.",
5
5
  "bin": {
6
6
  "super-ux": "bin/super-ux.js"