@xera-ai/skills 0.13.0 → 0.14.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 CHANGED
@@ -1,5 +1,13 @@
1
1
  # @xera-ai/skills
2
2
 
3
+ ## 0.14.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#121](https://github.com/xera-ai/xera/pull/121) [`f1baccd`](https://github.com/xera-ai/xera/commit/f1baccd268379b22c366ea1a2563e4d4d67ce293) Thanks [@thanhtrinity](https://github.com/thanhtrinity)! - trustworthy coverage — SKIPPED bucket, additive AC backfill, normalize emits run.completed (auto-generated from [#121](https://github.com/xera-ai/xera/issues/121))
8
+
9
+ ## 0.13.1
10
+
3
11
  ## 0.13.0
4
12
 
5
13
  ### Minor Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xera-ai/skills",
3
- "version": "0.13.0",
3
+ "version": "0.14.0",
4
4
  "files": [
5
5
  "*.md",
6
6
  "version.json"
package/xera-coverage.md CHANGED
@@ -48,7 +48,7 @@ Read `.xera/coverage/report.json`. If `acBackfillNeeded === true`:
48
48
  bun run xera:ac-coverage-backfill-prepare
49
49
  ```
50
50
 
51
- This writes `.xera/coverage/ac-backfill-input.json` listing tickets that have ACs + scenarios but no `satisfies` edges yet.
51
+ This writes `.xera/coverage/ac-backfill-input.json` listing tickets with at least one **unmapped** scenario (a scenario that has no `satisfies` edge to any of its ticket's ACs). Tickets with partially mapped scenarios surface only their unmapped scenarios — finalize is additive per scenarioId (#119), so generating decisions for just the unmapped set will not clobber prior mappings.
52
52
 
53
53
  If the input file is `{ "tickets": [] }`, skip to Step 4 — there's nothing to backfill (the `acBackfillNeeded` flag in report.json may be a leftover stale state; re-running `coverage-prepare` will refresh it).
54
54
 
package/xera-exec.md CHANGED
@@ -18,12 +18,14 @@ The user invoked `/xera-exec <TICKET>`. If no key, ask.
18
18
 
19
19
  4. Suggest: "Diagnose this run with `/xera-report {{TICKET}}`."
20
20
 
21
- ## Step 5 — Record graph events (v0.6)
21
+ ## Step 5 — Record graph events
22
22
 
23
- After Playwright reporter writes `runs/<RUN_ID>/reporter.json`:
23
+ `/xera-report` calls `bun run xera:normalize {{TICKET}}` as its first step, which now emits the `run.completed` events for this run automatically (see #118). No explicit `graph-record exec` call is needed here.
24
+
25
+ If you skip `/xera-report` (e.g. running `/xera-exec` standalone for a smoke check), trigger the same emission with:
24
26
 
25
27
  ```bash
26
- bun run xera:graph-record exec <TICKET> --run-id <RUN_ID>
28
+ bun run xera:normalize <TICKET>
27
29
  ```
28
30
 
29
- Non-fatal.
31
+ Non-fatal. (The lower-level `bun run xera:graph-record exec <TICKET> --run-id <RUN_ID>` still works for manual replay, but produces duplicate events if `xera:normalize` already ran for the same run.)
package/xera-report.md CHANGED
@@ -26,7 +26,7 @@ Step 4 below is *cognitive work that YOU, the session, must do*. It is not a she
26
26
  - `node_modules/@xera-ai/prompts/diagnose-failure.md` (the prompt template — read it in full; the rest of step 4 follows ITS rules)
27
27
 
28
28
  4. **Classify (YOUR job, no CLI shortcut here).** Follow `diagnose-failure.md`'s decision algorithm scenario-by-scenario. For each scenario in `normalized.json`, decide:
29
- - `class`: one of `PASS`, `REAL_BUG`, `SELECTOR_DRIFT`, `FLAKY`, `TEST_BUG`
29
+ - `class`: one of `PASS`, `SKIPPED`, `REAL_BUG`, `SELECTOR_DRIFT`, `FLAKY`, `TEST_BUG`. If `outcome === "SKIPPED"`, set `class: "SKIPPED"` — never `PASS`, because skipped scenarios do not verify their AC and coverage will over-report.
30
30
  - `confidence`: `low`, `medium`, or `high`
31
31
  - `rationale`: 1–3 sentences in English citing concrete evidence (URL, HTTP status, element name, prior run timestamps, hash drift, etc.)
32
32
 
@@ -39,7 +39,7 @@ Step 4 below is *cognitive work that YOU, the session, must do*. It is not a she
39
39
  {
40
40
  "name": "<scenario name>",
41
41
  "outcome": "PASS" | "FAIL" | "SKIPPED",
42
- "class": "PASS" | "REAL_BUG" | "SELECTOR_DRIFT" | "FLAKY" | "TEST_BUG",
42
+ "class": "PASS" | "SKIPPED" | "REAL_BUG" | "SELECTOR_DRIFT" | "FLAKY" | "TEST_BUG",
43
43
  "confidence": "low" | "medium" | "high",
44
44
  "rationale": "..."
45
45
  }
package/xera-run.md CHANGED
@@ -65,7 +65,7 @@ Run `bun run xera:exec {{TICKET}}`.
65
65
 
66
66
  ## Step 5 — Normalize
67
67
 
68
- Run `bun run xera:normalize {{TICKET}}`.
68
+ Run `bun run xera:normalize {{TICKET}}`. This writes `normalized.json` AND emits `run.completed` events to the graph for every PASS/FAIL scenario in the run, so `latest_failures` and risk scoring stay in sync with reality (see #118 — earlier versions silently rendered failed scenarios green on `graph.html`).
69
69
 
70
70
  ## Step 6 — Diagnose + report + post
71
71