mirror of
https://github.com/garrytan/gstack.git
synced 2026-05-21 12:18:24 +08:00
test: align unit tests with slim resolvers + exempt 27MB security fixture
- test/skill-validation.test.ts: assert the slim Completeness Principle shape (Completeness: X/10, kind-note language) instead of the old Compression table. Remove the 3 tier-1 skills from the spot-check list (they intentionally don't carry the full Completeness Principle section). Exempt browse/test/fixtures/security-bench-haiku-responses.json (27MB deterministic replay fixture for BrowseSafe-Bench) from the 2MB tracked-file gate. The gate was actually failing on origin/main since the fixture was added in v1.6.4.0 — this is a side-fix to a real regression. - test/brain-sync.test.ts: developer-machine-safe assertion for GSTACK_HOME override (compare config contents before/after instead of asserting the absence of a string that may legitimately exist). - test/gen-skill-docs.test.ts: new tests for the slim — plan-review preambles stay under the post-slim budget (~33KB), Voice + Writing Style sections stay compact, and the slim Voice section preserves the load-bearing semantic contract (lead-with-the-point, name-the-file, user-outcome framing, no-corporate, no-AI-vocab, user-sovereignty). Update path-leakage scan to allow repo-root sidecar symlinks. - test/writing-style-resolver.test.ts: assert the compact contract (gloss-on-first-use, outcome-framing, user-impact, terse-mode override) instead of the old 6-numbered-rules shape. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -800,9 +800,8 @@ describe('Enum & Value Completeness in review checklist', () => {
|
||||
|
||||
describe('Completeness Principle in generated SKILL.md files', () => {
|
||||
const skillsWithPreamble = [
|
||||
'SKILL.md', 'browse/SKILL.md', 'qa/SKILL.md',
|
||||
'qa/SKILL.md',
|
||||
'qa-only/SKILL.md',
|
||||
'setup-browser-cookies/SKILL.md',
|
||||
'ship/SKILL.md', 'review/SKILL.md',
|
||||
'plan-ceo-review/SKILL.md', 'plan-eng-review/SKILL.md',
|
||||
'retro/SKILL.md',
|
||||
@@ -820,11 +819,12 @@ describe('Completeness Principle in generated SKILL.md files', () => {
|
||||
});
|
||||
}
|
||||
|
||||
test('Completeness Principle includes compression table in tier 2+ skills', () => {
|
||||
// Root is tier 1 (no completeness). Check tier 2+ skill.
|
||||
test('Completeness Principle keeps compact scoring guidance in tier 2+ skills', () => {
|
||||
const content = fs.readFileSync(path.join(ROOT, 'cso', 'SKILL.md'), 'utf-8');
|
||||
expect(content).toContain('CC+gstack');
|
||||
expect(content).toContain('Compression');
|
||||
expect(content).toContain('Completeness: X/10');
|
||||
expect(content).toContain('10 = all edge cases');
|
||||
expect(content).toContain('Note: options differ in kind, not coverage');
|
||||
expect(content).toContain('Do not fabricate scores');
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1634,7 +1634,13 @@ describe('no compiled binaries in git', () => {
|
||||
test('git tracks no files larger than 2MB', () => {
|
||||
// Pure fs.statSync — no shell spawn per file.
|
||||
const MAX_BYTES = 2 * 1024 * 1024;
|
||||
const knownLargeFixtures = new Set([
|
||||
// Deterministic replay fixture for BrowseSafe-Bench. The live bench is
|
||||
// expensive; this file is intentionally committed so the gate is free.
|
||||
'browse/test/fixtures/security-bench-haiku-responses.json',
|
||||
]);
|
||||
const oversized = trackedFiles.filter((f: string) => {
|
||||
if (knownLargeFixtures.has(f)) return false;
|
||||
const full = path.join(ROOT, f);
|
||||
try {
|
||||
return fs.statSync(full).size > MAX_BYTES;
|
||||
|
||||
Reference in New Issue
Block a user