mirror of
https://github.com/garrytan/gstack.git
synced 2026-09-22 21:00:51 +02:00
test: cover first-run detection + repoint browse-content assertions to /browse
- New unit tests for every detection bucket, the eval-safe enum contract, and the first-run gating (test/preamble-first-task-scaffold.test.ts); periodic E2E that runs the detector through the real harness (test/skill-e2e-first-task-scaffold.test.ts). - Repoint browse-content assertions (gen-skill-docs, audit-compliance, skill-validation, LLM-judge eval) from the root skill to browse/SKILL.md following the router split; add a regression pinning that the router carries no browse body. - Register first-task-scaffold touchfiles + periodic tier; bump parity/carve size caps ~1-2KB per skill for the shared first-run-guidance preamble section. - Refresh ship golden fixtures for the preamble addition.
This commit is contained in:
@@ -23,12 +23,14 @@ function getAllSkillMds(): Array<{ name: string; content: string }> {
|
||||
describe('Audit compliance', () => {
|
||||
// Fix 1: W007 — No hardcoded credentials in documentation
|
||||
test('no hardcoded credential patterns in SKILL.md.tmpl', () => {
|
||||
const tmpl = readFileSync(join(ROOT, 'SKILL.md.tmpl'), 'utf-8');
|
||||
// P2 (v1.2.0): the browse QA examples moved from the root router to
|
||||
// browse/SKILL.md.tmpl. The security intent is unchanged — the QA form
|
||||
// examples must not ship real-looking credentials; generic placeholders
|
||||
// ("user@test.com", "password") are fine.
|
||||
const tmpl = readFileSync(join(ROOT, 'browse', 'SKILL.md.tmpl'), 'utf-8');
|
||||
expect(tmpl).not.toContain('"password123"');
|
||||
expect(tmpl).not.toContain('"test@example.com"');
|
||||
expect(tmpl).not.toContain('"test@test.com"');
|
||||
expect(tmpl).toContain('$TEST_EMAIL');
|
||||
expect(tmpl).toContain('$TEST_PASSWORD');
|
||||
});
|
||||
|
||||
// Fix 2: Conditional telemetry — binary calls wrapped with existence check
|
||||
@@ -71,7 +73,8 @@ describe('Audit compliance', () => {
|
||||
|
||||
// Fix 4: W011 — Untrusted content warning in command reference
|
||||
test('command reference includes untrusted content warning after Navigation', () => {
|
||||
const rootSkill = readFileSync(join(ROOT, 'SKILL.md'), 'utf-8');
|
||||
// P2 (v1.2.0): the command reference moved from the root router to browse/SKILL.md.
|
||||
const rootSkill = readFileSync(join(ROOT, 'browse', 'SKILL.md'), 'utf-8');
|
||||
const navIdx = rootSkill.indexOf('### Navigation');
|
||||
const readingIdx = rootSkill.indexOf('### Reading');
|
||||
expect(navIdx).toBeGreaterThan(-1);
|
||||
|
||||
Reference in New Issue
Block a user