mirror of
https://github.com/garrytan/gstack.git
synced 2026-09-17 10:25:33 +02:00
Merge origin/main (v1.60.1.0) into garrytan/gstack-fix-wave
Semantic reconciliation with the parallel time-attack wave (#2264):
- careful: adopt main's anchored full-command whitelist (stricter — also
catches comment-hiding), re-apply this wave's two hardenings on top
(capital -[rR] in the flag cluster; exclude `(` and backtick from safe
targets so $()/backtick substitution cannot ride the whitelist). Union
of both waves' test batteries passes (main's test.each incl. comment
case + this wave's substitution/capital-R/FP-pin cases).
- one-way-doors: main landed the singular noun unification (a2a447a1);
keep this wave's superset (plural s? + --summary-stdin runtime wiring).
- gbrain-local-status: union of states — main's engine-locked (#2194,
exit 124 PGLite lock) + this wave's thin-client (#2051). --is-ok keeps
main's intent (engine-locked = STOP) and this wave's (thin-client =
usable). Test harness unions both fake behaviors.
- sync-gbrain/setup-gbrain tmpls: both Step 1.5 branches kept; generated
SKILL.md resolved via bun run gen:skill-docs (never hand-edited).
- VERSION/package.json -> 1.61.0.0 per bin/gstack-next-version (main took
1.60.1.0; PR #2470 claims 1.60.2.0). CHANGELOG: wave entry renumbered
1.61.0.0 on top of main's 1.60.1.0; careful/#2024 bullets updated to
describe the delta vs current main. TODOS: union.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -112,6 +112,35 @@ Trigger condition documented in `lib/gbrain-sources.ts` at the drift log line.
|
||||
|
||||
**Effort:** M (human ~1d, CC ~45min). **Depends on:** drift-log evidence from
|
||||
the wave's `ensureSourceRegistered` logging.
|
||||
### P2: Periodic CI matrix covers 9 of ~66 e2e files — decide the coverage contract
|
||||
|
||||
**Priority:** P2
|
||||
|
||||
**What:** `evals-periodic.yml` (weekly cron, `EVALS_TIER=periodic EVALS_ALL=1`) runs a
|
||||
hard-coded 9-file matrix; `evals.yml` gate shards cover 14 files. ~57 `test/skill-e2e-*`
|
||||
files run in NEITHER workflow — they execute only when a local diff happens to select
|
||||
them via touchfiles. CLAUDE.md says "periodic tests run weekly via cron," which the
|
||||
matrix doesn't deliver. Decide: (a) expand the periodic matrix (or glob it) to all
|
||||
periodic-tier files with a budget cap, (b) shrink the claim in CLAUDE.md and mark the
|
||||
uncovered files as local-only, or (c) tier the orphans explicitly.
|
||||
|
||||
**Why:** The autoplan-dual-voice E2E was silently broken for months (claude >= 2.x
|
||||
changed unregistered-slash-command handling) and nothing noticed until a docs PR's
|
||||
touchfiles happened to select it locally (2026-07-09). Tests that never run anywhere
|
||||
rot invisibly; each one found broken later costs a full /investigate session.
|
||||
|
||||
**Pros:** Kills the silent-rot class for ~57 test files; makes the CLAUDE.md tiering
|
||||
claim true.
|
||||
**Cons:** Full periodic coverage costs real money weekly (rough order: ~$1/file/run);
|
||||
some orphans are deliberately manual (ios-device, opus-47 overlay harness), so a plain
|
||||
glob is wrong — needs a curated exclude list.
|
||||
|
||||
**Context / where to start:** `.github/workflows/evals-periodic.yml:71` (matrix),
|
||||
`test/helpers/touchfiles.ts` E2E_TIERS (tier labels already exist per test), orphan
|
||||
list generated via `comm -23` between `ls test/skill-e2e-*.test.ts` and the file lists
|
||||
in `.github/workflows/evals*.yml`. Receipts from the autoplan incident:
|
||||
`~/.gstack/projects/garrytan-gstack/e2e-runs/2026-07-10-0154/` (0-turn "Unknown command"
|
||||
transcripts).
|
||||
|
||||
### Eval harness: live progress + incremental result persistence (kill the silent hour)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user