@supersuit/superskill 0.6.0 → 0.6.1

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,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.6.1 (2026-10-06)
4
+
5
+ - **`real-runs` reading Freedom's ledger live no longer counts a rescued run as one-shot.** Freedom
6
+ derives `succeeded_with_rescues` from the operator's turns during a run even when nobody
7
+ classified them, so those records carry no intervention, and 0.6.0 read them as clean. Measured
8
+ on a real ledger the same day: a skill showed 54 of 54 one-shot that way. The exported
9
+ `superskill-real-runs/1` file was already right; only the live fallback was affected.
10
+
3
11
  ## 0.6.0 (2026-10-06)
4
12
 
5
13
  **A skill's embodiment is what it has absorbed, not one run of it.** 0.5.0 made a golden from a
package/SPEC.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # The superskill standard
2
2
 
3
- **Version 0.6.0** (2026-10-06). The reference checker is `@supersuit/superskill`; where this
3
+ **Version 0.6.1** (2026-10-06). The reference checker is `@supersuit/superskill`; where this
4
4
  document and the checker disagree, the checker has a bug.
5
5
 
6
6
  A **superskill** runs on frontier intelligence, is fixed every time it gets something wrong, and
@@ -319,8 +319,10 @@ Harness-neutral: any harness, ledger or script may write it, and the doctor only
319
319
  - A **run** is one real use of the skill by a person. Never a sandbox run (`doctor --run`), never
320
320
  a test.
321
321
  - It is **one-shot** when the person needed no correction, rescue or redirect, it did not fail or
322
- get abandoned, and it was not corrected after it handed back. A taste note is the person's
323
- preference, not the skill's defect, and does not break one-shot.
322
+ get abandoned, and it was not corrected after it handed back. A ledger outcome that already
323
+ says the person rescued the run (Freedom's `succeeded_with_rescues`) is not one-shot either,
324
+ whether or not the rescue was classified. A taste note is the person's preference, not the
325
+ skill's defect, and does not break one-shot.
324
326
  - `model` is the model id the harness ran (as the transcript or environment reports it);
325
327
  `harness` is `claude-code`, `codex`, or another harness's name. A writer that cannot tell
326
328
  writes `unknown`, never a guess. Counts only: the file carries no input, output or names, so it
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@supersuit/superskill",
3
- "version": "0.6.0",
3
+ "version": "0.6.1",
4
4
  "description": "Score any agent skill folder as skill, tested, or superskill. An open standard and a zero-dependency CLI.",
5
5
  "type": "module",
6
6
  "bin": {
package/src/realruns.mjs CHANGED
@@ -66,7 +66,9 @@ function readFile(p, where) {
66
66
  /** Is a ledger record a one-shot run? Exported so a writer can count the same way the reader does. */
67
67
  export function isOneShot(rec) {
68
68
  const kinds = (Array.isArray(rec?.interventions) ? rec.interventions : []).filter((i) => i && MISS_KINDS.has(i.kind));
69
- return !kinds.length && !["failed", "abandoned"].includes(rec?.outcome) && !rec?.corrected_after;
69
+ // Freedom derives `succeeded_with_rescues` from operator turns during the run even when nobody
70
+ // classified them, so an empty interventions list next to that outcome is still a rescue.
71
+ return !kinds.length && !["failed", "abandoned", "succeeded_with_rescues"].includes(rec?.outcome) && !rec?.corrected_after;
70
72
  }
71
73
 
72
74
  /** Summarize ledger records (Freedom's shape, or any with model/harness/started) per model+harness. */