shapeup-sdlc 3.15.0 → 3.15.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.
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "shapeup-sdlc-plugin",
|
|
3
3
|
"displayName": "ShapeUp SDLC Plugin",
|
|
4
|
-
"version": "3.15.
|
|
4
|
+
"version": "3.15.1",
|
|
5
5
|
"description": "Shape Up SDLC harness for Claude Code: shaping, intake, orient, scope-mapping, building (T0-verified, sandboxed, scope-contracted), evaluation and QA skills orchestrated by a tech-lead.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Liberty Nguyen",
|
package/kernel/reduce/ship.mjs
CHANGED
|
@@ -370,6 +370,21 @@ export function buildReport(facts) {
|
|
|
370
370
|
return deboard(L.join("\n"), board.anchors);
|
|
371
371
|
}
|
|
372
372
|
|
|
373
|
+
/**
|
|
374
|
+
* The QA line the report may print. The run says whether it dispatched the hunt; the hunt's own
|
|
375
|
+
* report says whether anything was hunted. A hunter that could not reach the app still returns, and
|
|
376
|
+
* a report opening `charters: 0/…` over a dispatched hunt read as "QA: run" with no findings — which
|
|
377
|
+
* a reader takes for an app with nothing wrong, not for an app nobody drove.
|
|
378
|
+
* @param {string|undefined} passed - What the caller recorded (`run`, `skipped`), if anything.
|
|
379
|
+
* @param {string|null} huntReport - The hunt report's text, or null when there is none.
|
|
380
|
+
* @returns {string} `skipped`, `not-hunted` (dispatched, zero charters run), or `run`.
|
|
381
|
+
*/
|
|
382
|
+
export function qaStatus(passed, huntReport) {
|
|
383
|
+
if (passed === "skipped" || (!passed && !huntReport)) return passed || "skipped";
|
|
384
|
+
if (huntReport && /^charters:\s*0\s*\//m.test(huntReport)) return "not-hunted";
|
|
385
|
+
return passed || "run";
|
|
386
|
+
}
|
|
387
|
+
|
|
373
388
|
/**
|
|
374
389
|
* Gather every fact from disk and render the report.
|
|
375
390
|
* @param {{cwd:string, slug:string, verdict?:string, qa?:string}} opts - Inputs.
|
|
@@ -394,7 +409,7 @@ export function generate({ cwd, slug, verdict, qa }) {
|
|
|
394
409
|
at: today(),
|
|
395
410
|
verdict: verdict || run.final_verdict || "not-evaluated",
|
|
396
411
|
census: (() => { try { return JSON.parse(readIf(hammerCensus(cwd, slug)) || "null"); } catch { return null; } })(),
|
|
397
|
-
qa: qa
|
|
412
|
+
qa: qaStatus(qa, huntReport),
|
|
398
413
|
rounds: derivedRounds.rounds_used,
|
|
399
414
|
roundsJudged: derivedRounds.rounds_judged,
|
|
400
415
|
intakeSha: receipt.intake_sha256,
|
package/package.json
CHANGED
|
@@ -70,9 +70,13 @@ Phase Q3 │ Report ───────► qa/hunt-report.md — no score, no
|
|
|
70
70
|
## GATE Q0 — Preflight
|
|
71
71
|
|
|
72
72
|
```
|
|
73
|
+
FIRST: read `payload.kb_rules_path` for the tool paths it names — a device tool that is not on PATH is
|
|
74
|
+
named there by its full path, and a bare-name lookup (`which`, a bare call) proves nothing.
|
|
73
75
|
HARD (any miss → STOP, report which):
|
|
74
76
|
✅ deliverable reachable: one real request at `app_url`, or `launch_cmd` run and exit 0, or one
|
|
75
|
-
real invocation of the entry point (not a ping, not a guess that a tool is missing)
|
|
77
|
+
real invocation of the entry point (not a ping, not a guess that a tool is missing). When the
|
|
78
|
+
order carries `launch_cmd`, run it before concluding anything; the report names the command
|
|
79
|
+
and its exit. A hunt that reached nothing returns `status: failed`, never `done`.
|
|
76
80
|
✅ EVAL-FEATURE-<slug>.md exists with verdict: PASS
|
|
77
81
|
✅ if discovery/ledger.md exists: ledger.feature == <feature> (read-only context check —
|
|
78
82
|
a missing ledger is fine; ingest creates it when your findings land)
|