super-ux 0.52.5 → 0.54.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 +70 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,73 @@
|
|
|
1
|
+
## 0.54.0 — FR-01 says who does the clicking, and where the tool has to stop
|
|
2
|
+
|
|
3
|
+
Closes `ssheleg/sshlg-skills#B-87` (board row), and widens two advertised triggers.
|
|
4
|
+
|
|
5
|
+
**A method told the agent to click through a competitor funnel by hand, in sessions
|
|
6
|
+
where two browser tools are connected.** FR-01 read *"open a competitor's ad, click
|
|
7
|
+
through, and you are in it at step one"* and named no tool for the click — while the
|
|
8
|
+
same repository's neighbours already name `chrome-devtools` for their own crawling and
|
|
9
|
+
`claude-in-chrome` is connected beside it. FR-01's whole output is *a list of live
|
|
10
|
+
funnel URLs with the ad that led to each*: a walk a browser tool performs and a person
|
|
11
|
+
performs slowly.
|
|
12
|
+
|
|
13
|
+
**The answer is both, and the split is the useful part.** The walk is mechanical until
|
|
14
|
+
it is not:
|
|
15
|
+
|
|
16
|
+
- a **browser tool** opens the ad's destination, follows the redirect chain and captures
|
|
17
|
+
four things a screenshot loses — the final URL after redirects, every step's URL in
|
|
18
|
+
order, the network requests on the paywall step (which processor, which price ids —
|
|
19
|
+
the one place a funnel states its own price without a human reading it), and the ad
|
|
20
|
+
that led there;
|
|
21
|
+
- a **human** takes over at three points that are not incidental: consent walls, which
|
|
22
|
+
vary by geography and are the first thing an automated walk gets stuck in; **sign-in
|
|
23
|
+
and paywall steps**, where a tool cannot proceed without real credentials or a real
|
|
24
|
+
card — and where FR-06 already forbids going further; and **ad libraries themselves**,
|
|
25
|
+
which rate-limit and serve challenges to a driven browser.
|
|
26
|
+
|
|
27
|
+
So: the library is read by a person, the funnel is walked by a tool, and the walk stops
|
|
28
|
+
at the first wall that asks who you are. **Silence here read as *nobody thought about
|
|
29
|
+
it*, which is worse than either answer** — and the method is otherwise the most
|
|
30
|
+
operationally precise document in the pack.
|
|
31
|
+
|
|
32
|
+
**Two advertised triggers corrected rather than added.** `copywriting` advertised
|
|
33
|
+
`"пост для твиттера"`, which demands a literal «для» an operator does not type; it now
|
|
34
|
+
reads `"пост в твиттер"`. And `"error text" / "текст ошибки"` is named, closing a route
|
|
35
|
+
the umbrella measured reaching nothing. The description moves 634 → 662 of 1024, leaving
|
|
36
|
+
308 characters — well clear of the 60-character reserve the family's ratchet counts.
|
|
37
|
+
|
|
38
|
+
## 0.53.0 — a coverage metric is a check, and its matching rule is where the assumptions hide
|
|
39
|
+
|
|
40
|
+
Closes `ssheleg/sshlg-skills#96`.
|
|
41
|
+
|
|
42
|
+
A metric is built to end an argument about coverage. Then **the rule that decides what a
|
|
43
|
+
document is ABOUT** turns out to be one line of string handling, and the number reports work
|
|
44
|
+
that exists as work that is missing — and the number now generates work that is fictional.
|
|
45
|
+
|
|
46
|
+
Measured: a screen inventory decided a screen was documented when a scenario named its path
|
|
47
|
+
as the primary entry point, taking the first backticked path from `Entry point:` **whole**.
|
|
48
|
+
Two scenarios name their subject with a query string — `/reset-password?token=…` and
|
|
49
|
+
`/account/billing/return?invoice=&status=` — so both matched no route, and **two screens
|
|
50
|
+
that had always been documented were published as having no scenario at all.** The board row
|
|
51
|
+
that followed named nine screens needing scenarios: two needed nothing, and a third was one
|
|
52
|
+
component at two addresses, which the rule can only ever name one of. **Three of nine rows
|
|
53
|
+
were fiction, in a number whose whole purpose was to stop people arguing about coverage from
|
|
54
|
+
memory.**
|
|
55
|
+
|
|
56
|
+
`ux-audit` now carries three rules for any metric over these documents:
|
|
57
|
+
|
|
58
|
+
- **the aboutness rule is a named, exported function with a table of synthetic inputs,
|
|
59
|
+
including the negative cases** — query strings, fragments, several paths in one field,
|
|
60
|
+
prose with no backticks. It was untestable while it was an inline regex, which is exactly
|
|
61
|
+
why it was never tested;
|
|
62
|
+
- **a metric that cannot express a real state says so beside the number** rather than
|
|
63
|
+
counting that state as a failure. One screen at two addresses is one screen, and the
|
|
64
|
+
matrix carries a derived *alias routes* line instead of silently ranking the second
|
|
65
|
+
address undocumented;
|
|
66
|
+
- **a deliberate, hard-won rule is a reason to test it, not to trust it.** This one had
|
|
67
|
+
already replaced a looser rule twice, each time after a screen was reported covered on a
|
|
68
|
+
mention rather than on a subject — and a rule with that history is the last one anybody
|
|
69
|
+
re-reads.
|
|
70
|
+
|
|
1
71
|
## 0.52.5 — the card the umbrella renders, and the half of the role that was copywriting's
|
|
2
72
|
|
|
3
73
|
The committed social preview is now the umbrella's own render, byte for byte
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "super-ux",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.54.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
|
},
|