mirror of
https://github.com/garrytan/gstack.git
synced 2026-09-09 22:48:57 +02:00
fix: clarify retro workflow and evaluate compare instructions
Include compare mode in the frontier judge excerpt, define metric sources and snapshot ordering, and preserve the existing prompt-size budget. Co-authored-by: OpenAI Codex <noreply@openai.com>
This commit is contained in:
co-authored by
OpenAI Codex
parent
eb4fd65ed3
commit
2e624adf20
@@ -177,7 +177,7 @@ describe('gstack-retro-metrics contract', () => {
|
||||
expect(tmpl).toContain('".claude/skills/gstack/bin/gstack-retro-metrics"');
|
||||
expect(tmpl).toContain('--base "<default>" --since "<since>"');
|
||||
expect(tmpl).toContain(
|
||||
'RETRO_METRICS: unavailable — stale install (compute metrics manually from the steps below)',
|
||||
'RETRO_METRICS: unavailable — stale install (read the helper source for manual computation)',
|
||||
);
|
||||
// Degraded-mode prose keys off the proto handshake.
|
||||
expect(tmpl).toContain('RETRO_METRICS_PROTO: 1');
|
||||
|
||||
@@ -785,7 +785,7 @@ describeIfSelected('Other skill evals', [
|
||||
suite: 'Other skill evals',
|
||||
skillPath: 'retro/SKILL.md',
|
||||
startMarker: '## Instructions',
|
||||
endMarker: '## Compare Mode',
|
||||
endMarker: '## Tone',
|
||||
judgeContext: 'an engineering retrospective data gathering and analysis workflow',
|
||||
judgeGoal: 'how to gather git metrics (commit history, test counts, work patterns), analyze them, produce a structured retro report with praise, growth areas, and trend tracking',
|
||||
});
|
||||
|
||||
@@ -1404,7 +1404,9 @@ describe('Retro test health tracking', () => {
|
||||
test('retro/SKILL.md has Test Health metrics row', () => {
|
||||
const content = readSkillUnion('retro');
|
||||
expect(content).toContain('Test Health');
|
||||
expect(content).toContain('regression tests');
|
||||
expect(content).toContain('N test files');
|
||||
expect(content).toContain('M changed this period');
|
||||
expect(content).toContain('K regression test commits');
|
||||
});
|
||||
|
||||
test('retro/SKILL.md has Test Health narrative section', () => {
|
||||
|
||||
@@ -83,6 +83,25 @@ describe('workflow judge excerpts', () => {
|
||||
expect(() => readWorkflowExcerpt('ship/SKILL.md', '# Ship:', '# missing')).toThrow('End marker not found');
|
||||
});
|
||||
|
||||
test('retro judge includes compare semantics and unambiguous report inputs', () => {
|
||||
const text = readWorkflowExcerpt('retro/SKILL.md', '## Instructions', '## Tone');
|
||||
expect(text).toContain('## Compare Mode');
|
||||
expect(text).toContain('does not require saved history');
|
||||
expect(text).toContain('one second before the current start');
|
||||
expect(text).toContain('PRs referenced');
|
||||
expect(text).toContain('prs_merged: null');
|
||||
expect(text).toContain('not newly added test cases');
|
||||
expect(text).toContain('`streak_days` is the live **team** streak');
|
||||
expect(text).toContain('draft the tweetable summary using the format in Step 14, then save');
|
||||
expect(text).toContain('### Shipping Streaks');
|
||||
expect(text).toContain('### Shortcut Debt');
|
||||
expect(text.indexOf('## Capture Learnings')).toBeGreaterThan(text.indexOf('### Step 14:'));
|
||||
expect(text).not.toContain('$(date');
|
||||
expect(text.match(/today="<today>"/g)).toHaveLength(2);
|
||||
const judge = readFileSync(join(import.meta.dir, 'skill-llm-eval.test.ts'), 'utf8');
|
||||
expect(judge).toMatch(/skillPath: 'retro\/SKILL.md',[\s\S]*?endMarker: '## Tone'/);
|
||||
});
|
||||
|
||||
test('deploy gates and navigation timing formulas are executable as documented', () => {
|
||||
const land = readFileSync(join(import.meta.dir, '../land-and-deploy/SKILL.md.tmpl'), 'utf8');
|
||||
expect(land).not.toContain('Skip Step 3, go to Step 4');
|
||||
|
||||
Reference in New Issue
Block a user