mirror of
https://github.com/garrytan/gstack.git
synced 2026-11-01 06:24:41 +01:00
* fix(make-pdf,design): real TOC page numbers and anchors; design models move to gpt-5.5 + gpt-image-2 (#2903, #2807) * ci: pin every action to a SHA, Scorecard, checksummed Bun, scoped Codex CLI in the CI image, macOS named-regressions job (#1948, #1706, #1997) * fix(cso,browse): Windows/macOS lease identity, retention skips bad runs, truthful 'not assessed' reports, env.kv false positive, Windows browse spawn fixes (#2894, #2912, #2048, #2637, #2805) * fix(outside-voice): one Codex model precedence for probe and dispatch, bounded timeouts with KILL escalation, probe cache identity, guarded mktemp, skills hidden in nested Codex (#2776, #2914, #2787, #2881, #2847) * feat(setup): install registry, ./setup --status, staged activation, per-scope migrations, host tiers and conformance kit, OpenCode/Hermes fixes, Copilot CLI (experimental), disabled_skills, slimmer CLAUDE.md (#1925, #2879, #2347, #2338, #2626, #2629, #2825, #2015, #393, #1206, #2096) Co-authored-by: Andrey Esipov <61357035+andrey-esipov@users.noreply.github.com> Co-authored-by: Matthew Williams <5863886+ridermw@users.noreply.github.com> Co-authored-by: Rocky Wu <92764750+lolisaigao1234@users.noreply.github.com> * fix(preamble): skills start in worktree-isolated Claude Code sessions — one literal skill-start line, context-recovery helper, no eval in skill blocks, $N token tripwire, honest plan-mode precedence (#2763, #2896, #2851) * fix(setup): per-install renders for renamed, vendored and custom-config installs, space-safe alias roots, per-host /cso launcher path (#1882, #2906) * test: free tests never write the real HOME (home-write tripwire), no orphaned browse daemons, symlinked-TMPDIR (macOS) fixes, gbrain-on-PATH isolation (#2895, #2816, #2829, #2841, #2982, #2911, #2909, #2908, #2910) * chore: integrate wave follow-ups — regenerate all hosts, README model docs, TODOS, touchfiles, duration seeds, Bun 1.3 telemetry test fix, replay fixtures pinned to their recorded bytes * v1.91.14.0: release metadata * test(browse): group-kill cleanup falls back to the leader when macOS returns EPERM for a live group * ci: Codex login steps run under bash (the CI container's default sh rejects pipefail) * fix: full-suite repairs — private state roots for 7 real-HOME writers, truthful home-guard attribution with --attribute-home, gstack-paths shim in ship-hook fixtures, Copilot in team-init probes, test-of-test detector, cookie review fixture pinned to the approved excerpt * fix(windows): LF for Dockerfiles, normalized home-guard exclusions, path.relative fixture containment, ship push test spawn timeouts * test(design-detect): widen the whole-scan budget test's timing margins so a loaded macOS runner can't time out the single-batch call * fix(evals): qa protocol names defined for the judge, async PTY judge so overlapping sessions keep their cleanup deadline, bws setup cases use the standard JUDGE_MS tier * test(pty): the non-blocking judge case is POSIX-only (its fake judge is a shebang script, like the PTY harness it covers) * test(evals): ship-coverage-audit names absolute skill paths, uses Read, and skips the Step 7 artifact nothing consumes (removes the mechanism behind 3 of 4 historical timeouts) * test: deflake terminal-agent concurrent startup (write the placeholder record before spawning, like the product) and qa-evidence resumed pipe (barrier on a full high-water mark instead of a sleep) * fix(design): daemon log stream handles open errors instead of crashing the daemon; shutdown test awaits the stubbed exit * test(evals): skillify checks the product's resolved state root (no GSTACK_HOME bypass), negative cases check every root; tpa shims live outside the agent's cwd and answer consistently * test(evals): coverage-audit detector splits parallel columns at │ rails and [+] groups; coverage prompts name absolute skill paths; TODOs from the gate eval census * fix(plan-eng-review): scope gate always sends the menu (no headless 'Scope pending' exit); PTY harness ends idle turn-ends and API-error panels promptly with a precise diagnostic * test(evals): one position-bound coverage-read rule credits read-only && chains (labels, context ranges, git displays in either order) and still rejects forged output * fix(ship): documentation section has one saved source inserted by cat (never retyped); spawned-marker evidence is the child output; refreshed codex/factory ship goldens * test(docsync): the byte-exact insert positive is POSIX-only (the bash-command observer refuses backslash paths by design) * test(evals): plan-design-with-ui focus-title rule accepts the comma-less 'dimensions or focus' wording (replayed on the captured CI run, negative controls kept) * fix(qa-callers): exploratory preflight says the scope/method Reads come after exploratory.md; design-review scan check credits an executed scan proven by one engine run over the changed files --------- Co-authored-by: Andrey Esipov <61357035+andrey-esipov@users.noreply.github.com> Co-authored-by: Matthew Williams <5863886+ridermw@users.noreply.github.com> Co-authored-by: Rocky Wu <92764750+lolisaigao1234@users.noreply.github.com>
10 lines
3.7 KiB
JSON
10 lines
3.7 KiB
JSON
{
|
|
"provenance": {
|
|
"runId": 37077373640,
|
|
"headSha": "147163e0",
|
|
"testName": "plan-eng-coverage-audit",
|
|
"recordedPassed": false,
|
|
"source": "Exact final parent result of the CI capture (paid-slice-12-a1). The diagram follows plan-eng-review's documented CODE PATHS | USER FLOWS layout; a wrapped USER FLOWS row continues on a │ rail beside the covered processPayment row."
|
|
},
|
|
"output": "Test review complete for the two billing functions. Framework detected: vitest (config file and devDependency present), though the `test` script in package.json is a placeholder echo, so the one existing test never runs via `npm test`.\n\n```\nCODE PATHS USER FLOWS\n[+] src/billing.ts [+] Payment lifecycle (caller-facing)\n ├── processPayment(amount, currency) ├── [GAP] [→E2E] Pay then refund same paymentId\n │ ├── [★★ TESTED] Happy path USD — billing.test.ts:6 │ (no test chains the two functions)\n │ │ asserts status only; amount/currency └── [GAP] Caller receives rejection error\n │ │ echo not asserted (no test asserts any thrown message)\n │ ├── [GAP] EUR accepted (2nd arm of currency guard, :4)\n │ ├── [GAP] amount <= 0 → throws 'Invalid amount' (:3)\n │ │ boundary 0 and negative both unexercised\n │ └── [GAP] Unsupported currency → throws (:4)\n │ e.g. 'GBP', '', lowercase 'usd'\n └── refundPayment(paymentId, reason) [+] Error states\n ├── [GAP] Happy path → { status: 'refunded' } (:11) └── [GAP] Falsy-ID and falsy-reason both\n ├── [GAP] !paymentId → throws 'Payment ID required' collapse to '' and undefined;\n │ (:9) '' and undefined unexercised neither is exercised\n └── [GAP] !reason → throws 'Reason required' (:10)\n function is never imported by any test\n\nLLM integration: none in scope — no [→EVAL] paths\n\nCOVERAGE: 1/9 paths tested (11%) | Code paths: 1/7 (14%) | User flows: 0/2 (0%)\nQUALITY: ★★★:0 ★★:1 ★:0 | GAPS: 8 (1 E2E, 0 eval)\n```\n\nLegend: ★★★ behavior + edge + error | ★★ happy path | ★ smoke check\n[→E2E] = needs integration test | [→EVAL] = needs LLM eval\n\n**Coverage summary**\n\n- **processPayment** has one happy-path test rated ★★. It only checks the status field, so a regression that mangled the returned amount or currency would pass. Both guard clauses and the EUR arm are untested.\n- **refundPayment** has zero coverage. It is not imported anywhere in the test directory, so all three branches are gaps.\n- **No error message is asserted anywhere.** The four throw sites are the only behavior that protects callers from bad input, and none has a test that would catch the guard being removed or inverted.\n- **The branch diff itself adds no behavior.** It only appends a comment to each file, so the gaps above are pre-existing on main, not introduced by this branch.\n- **The pay-then-refund flow has no test**, and both functions are pure with no integration boundary yet. Unit tests are the right tool for every code-path gap. The lifecycle row is flagged E2E only because the matrix says payment flows should not rely on unit tests alone once a real boundary exists.\n\nPer the requested scope I did not write the Test Plan Artifact, propose tests through the decision gate, or modify the source or tests."
|
|
} |