@ssheleg/agent-stack 0.18.0 → 0.18.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
@@ -1,3 +1,64 @@
1
+ ## v0.18.2 — the card lost eleven characters and the check that watched it counted bytes
2
+
3
+ `docs/assets/social-preview.png` — the image every link to this repository renders —
4
+ had its eyebrow line **cut off at the canvas**. The line is generated from the umbrella's
5
+ `role` cell for this pack, 91 characters of it; at the smallest scale the renderer will
6
+ use, that needs **1354px of a 1200px canvas**. Eleven characters were never drawn. The
7
+ card read *"…AND THE WALLET UNDER"* and stopped.
8
+
9
+ Verified here rather than taken on report: decoding the committed PNG puts accent ink in
10
+ column **x=1199 of 1200**, and re-running the renderer's own metric confirms the pen would
11
+ have finished at x=1354 with `" LLM RESALE"` past the edge. **No scale fixes it** —
12
+ `fitScale` floors at 2 and was already there — so the text itself had to get shorter.
13
+
14
+ **The role string is now 60 characters:** `orchestration, prompts, evals, protocols, and
15
+ the LLM wallet`. It names all four skills where the old one named three (the harness was
16
+ missing from its own pack's one-line description), and it paints to x=919, leaving 196px
17
+ — 19% — of margin inside the content box. The umbrella owns that cell; this release ships
18
+ the card rendered from it, and the pin that makes them agree is the umbrella's.
19
+
20
+ **The sensor gap is the real repair.** `test/social_preview.py` checked the PNG
21
+ signature, the chunk order, the byte count and the dimensions — and was green over a
22
+ clipped card for as long as one existed, because none of those readings is about text.
23
+ `test/card_ink.py` decodes the image and measures where ink actually lands: every painted
24
+ pixel must sit inside the content box, with exactly one deliberate exception (the accent
25
+ bar that bleeds to the left edge), and the bar must be *present* so a blank or
26
+ mis-decoded image cannot pass by having nothing in the gutters. Clipping cannot hide from
27
+ it — losing even one glyph means the line already painted 70px into the right gutter.
28
+
29
+ Watched failing before it was believed: the guard refuses the previously committed card
30
+ by name (*"accent paints at x=1199, y=190 — 84px past the right edge of the content box …
31
+ and reaches the canvas edge, so characters were cut off entirely"*), and the old check
32
+ accepts the same file. A new negative self-test in `validate.yml` plants one pixel in the
33
+ last column of a repo copy and requires `test/social_preview.py` to refuse it, with
34
+ `plant_guard.py verify` confirming the plant landed.
35
+
36
+ `test/card_ink.py` is a separate module **on purpose, and must stay one**:
37
+ `test/social_preview.py` is a shared mechanism across nine repositories, and the
38
+ umbrella's divergence check stops comparing copies that fall below 90% similarity — for
39
+ all nine at once. Inlining a PNG decoder there would have disabled that guard on eight
40
+ repositories that never asked for it. The shared file gains two lines; measured
41
+ similarity to its eight siblings is **0.9133** against the 0.90 floor.
42
+
43
+ Closes board row **B-118**, deferred from v0.17.1 by coordinator decision.
44
+
45
+ ## v0.18.1 — the board row a sibling's gate refused
46
+
47
+ v0.18.0's B-124 row landed in the **wrong table** — the board carries two, an
48
+ eight-column ledger and a three-column *"Open, and why"* — and it was appended to the
49
+ file's end, which is the second one. It also carried an unescaped `|` inside a grep
50
+ pattern, so even in the right table its columns would have shifted and `Status` would
51
+ have read as whatever landed in its place.
52
+
53
+ **This repository's own gate passed it.** `npm test` here was green on the broken row;
54
+ the refusal came from `sshlg-skills`' validator reading this submodule's board during a
55
+ re-pin — *"row B-124 has 12 cells against the 3 its own header declares"*. A member's
56
+ board is checked by the umbrella, not by the member, and that asymmetry is why a
57
+ documentation defect reached a tag.
58
+
59
+ The neighbouring rows already showed the convention: `AG-06` and `AG-06b` carry escaped
60
+ `\|` inside code spans and count correctly. The fix follows them.
61
+
1
62
  ## v0.18.0 — how many runs before a difference is real, and the trajectory rule between its two measured edges
2
63
 
3
64
  `agent-evals` shipped 315 lines of doctrine about **what** to assert with **no
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ssheleg/agent-stack",
3
- "version": "0.18.0",
3
+ "version": "0.18.2",
4
4
  "scripts": {
5
5
  "test": "python3 test/validate.py && python3 test/plant_guard_test.py && node test/installer_test.js"
6
6
  },
@@ -3,7 +3,7 @@
3
3
  "name": "agent-stack",
4
4
  "displayName": "Agent Stack",
5
5
  "description": "Four skills: agent-orchestrator — tool-calling loops, pipelines with checkpoints, provider routing with fallback, memory architecture, plus the wallet side of reselling LLM access; agent-evals — run/trace/thread evals, LLM judges, and fixtures grown from production; agent-interop — MCP servers and clients, A2A agent cards, the MCP Registry, and gateways; agent-harness — system prompts, tool shaping, workflow-vs-agent, and auditing an agent system.",
6
- "version": "0.18.0",
6
+ "version": "0.18.2",
7
7
  "author": {
8
8
  "name": "ssheleg",
9
9
  "url": "https://x.com/sshlg93"