super-ux 0.53.0 → 0.55.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 +60 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,63 @@
|
|
|
1
|
+
## 0.55.0 — the ledger names the version it was measured on, because 0.54.0's did not
|
|
2
|
+
|
|
3
|
+
**A repair for what the previous release shipped, and the gate that would have caught
|
|
4
|
+
it.** `0.54.0` went out with its verification ledger's newest section naming **v0.53.0**.
|
|
5
|
+
This repository's own gate said nothing; the umbrella's cross-member ratchet caught it one
|
|
6
|
+
layer up — *3 member ledgers describe a version older than they ship, and the ratchet
|
|
7
|
+
stands at 2* — which is the right backstop and the wrong first line.
|
|
8
|
+
|
|
9
|
+
`validate_ledger_names_its_version` reads the newest `## …` section, resolves the version
|
|
10
|
+
it names and compares it with `package.json`. A ledger whose newest section names an older
|
|
11
|
+
artifact is a release nobody re-confirmed against anything.
|
|
12
|
+
|
|
13
|
+
**The first draft crashed instead of refusing.** It called a `fail()` this module does not
|
|
14
|
+
have — the name belongs to a sibling repository's validator — so the plant raised
|
|
15
|
+
`NameError` and the run stopped. `rc=1` either way, which is exactly why the plant looked
|
|
16
|
+
like it had worked. **A guard that crashes has not refused anything**: it stops the suite
|
|
17
|
+
before the rest of it can speak, and it reports a defect in itself as a defect in the
|
|
18
|
+
tree. Rewritten through `check()`, watched refusing its plant with no traceback.
|
|
19
|
+
|
|
20
|
+
Ledger section added for `0.54.0`'s own content, so the release it repairs is recorded
|
|
21
|
+
rather than skipped. `repo validator checks` recomputed 4621 → 4623 by running the command
|
|
22
|
+
`docs/brand/facts.md` names, not by adding two.
|
|
23
|
+
|
|
24
|
+
## 0.54.0 — FR-01 says who does the clicking, and where the tool has to stop
|
|
25
|
+
|
|
26
|
+
Closes `ssheleg/sshlg-skills#B-87` (board row), and widens two advertised triggers.
|
|
27
|
+
|
|
28
|
+
**A method told the agent to click through a competitor funnel by hand, in sessions
|
|
29
|
+
where two browser tools are connected.** FR-01 read *"open a competitor's ad, click
|
|
30
|
+
through, and you are in it at step one"* and named no tool for the click — while the
|
|
31
|
+
same repository's neighbours already name `chrome-devtools` for their own crawling and
|
|
32
|
+
`claude-in-chrome` is connected beside it. FR-01's whole output is *a list of live
|
|
33
|
+
funnel URLs with the ad that led to each*: a walk a browser tool performs and a person
|
|
34
|
+
performs slowly.
|
|
35
|
+
|
|
36
|
+
**The answer is both, and the split is the useful part.** The walk is mechanical until
|
|
37
|
+
it is not:
|
|
38
|
+
|
|
39
|
+
- a **browser tool** opens the ad's destination, follows the redirect chain and captures
|
|
40
|
+
four things a screenshot loses — the final URL after redirects, every step's URL in
|
|
41
|
+
order, the network requests on the paywall step (which processor, which price ids —
|
|
42
|
+
the one place a funnel states its own price without a human reading it), and the ad
|
|
43
|
+
that led there;
|
|
44
|
+
- a **human** takes over at three points that are not incidental: consent walls, which
|
|
45
|
+
vary by geography and are the first thing an automated walk gets stuck in; **sign-in
|
|
46
|
+
and paywall steps**, where a tool cannot proceed without real credentials or a real
|
|
47
|
+
card — and where FR-06 already forbids going further; and **ad libraries themselves**,
|
|
48
|
+
which rate-limit and serve challenges to a driven browser.
|
|
49
|
+
|
|
50
|
+
So: the library is read by a person, the funnel is walked by a tool, and the walk stops
|
|
51
|
+
at the first wall that asks who you are. **Silence here read as *nobody thought about
|
|
52
|
+
it*, which is worse than either answer** — and the method is otherwise the most
|
|
53
|
+
operationally precise document in the pack.
|
|
54
|
+
|
|
55
|
+
**Two advertised triggers corrected rather than added.** `copywriting` advertised
|
|
56
|
+
`"пост для твиттера"`, which demands a literal «для» an operator does not type; it now
|
|
57
|
+
reads `"пост в твиттер"`. And `"error text" / "текст ошибки"` is named, closing a route
|
|
58
|
+
the umbrella measured reaching nothing. The description moves 634 → 662 of 1024, leaving
|
|
59
|
+
308 characters — well clear of the 60-character reserve the family's ratchet counts.
|
|
60
|
+
|
|
1
61
|
## 0.53.0 — a coverage metric is a check, and its matching rule is where the assumptions hide
|
|
2
62
|
|
|
3
63
|
Closes `ssheleg/sshlg-skills#96`.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "super-ux",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.55.0",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"test": "python3 test/validate.py && python3 test/brand_lint_test.py && python3 test/ux_lint_test.py && python3 docs/ux/lint.py && python3 docs/brand/lint.py && node test/installer_test.js"
|
|
6
6
|
},
|