mirror of https://github.com/garrytan/gstack.git
Codex structured review (large-diff gate, Step 11) found 3 more real gaps:
- matchesUnnegated's bare "no" trigger over-fired on common positive-framing
idioms: "No blocker here: create a separate tier model" and "there is no
downside to promoting the payload" both got misread as negated, even
though they're endorsements of the recommendation that follows, not
rejections. Removed bare "no" from the negation list — "not"/"never"/
"cannot"/the "-n't" family are far more reliable negation signals and
don't share this idiom-collision problem.
- SENTENCE_END only recognized period-followed-by-capital as a boundary, so
a bulleted recommendation like "I would not keep this inline.\n- Separate
tier model" (very common LLM output formatting) let the earlier "not"
leak into the bullet below it. Added a second alternative: a newline
followed by a markdown bullet or numbered-list marker now also counts as
a clause boundary. Fixed the boundary-index arithmetic to use the full
match length (em[0].length) instead of a bare +1, since this new
alternative can match more than one character ("\n- ", "\n1. ").
- The minimal-change eval's own hardcoded doesn't-pattern only matched the
ASCII apostrophe (`doesn'?t`), missing the curly one — inconsistent with
matchesUnnegated's own apostrophe handling a few lines away in the same
file.
Added 3 regression tests reproducing each directly.
bun test test/helpers/e2e-helpers.test.ts test/skill-e2e-plan.test.ts
test/skill-validation.test.ts test/parity-suite.test.ts test/touchfiles.test.ts
test/gen-skill-docs.test.ts — 788 pass, 42 skip (paid E2E), 0 fail.
|
||
|---|---|---|
| .. | ||
| providers | ||
| agent-sdk-runner.ts | ||
| auq-sdk-capture.ts | ||
| benchmark-judge.ts | ||
| benchmark-runner.ts | ||
| budget-override.test.ts | ||
| budget-override.ts | ||
| capture-parity-baseline.test.ts | ||
| capture-parity-baseline.ts | ||
| carve-guard-checks.ts | ||
| carve-guards.ts | ||
| claude-pty-runner.ts | ||
| claude-pty-runner.unit.test.ts | ||
| codex-session-runner.ts | ||
| e2e-helpers.test.ts | ||
| e2e-helpers.ts | ||
| eval-store.test.ts | ||
| eval-store.ts | ||
| gemini-session-runner.test.ts | ||
| gemini-session-runner.ts | ||
| hermetic-env.test.ts | ||
| hermetic-env.ts | ||
| llm-judge.ts | ||
| observability.test.ts | ||
| parity-harness.ts | ||
| pricing.ts | ||
| required-reads.ts | ||
| secret-sink-harness.ts | ||
| session-runner.test.ts | ||
| session-runner.ts | ||
| skill-parser.ts | ||
| tool-map.ts | ||
| touchfiles.ts | ||
| transcript-section-logger.ts | ||