mirror of
https://github.com/garrytan/gstack.git
synced 2026-09-16 09:55:29 +02:00
v1.87.3.0 fix: bind review evidence to the reviewed tree (#2875)
* fix(review): bind evidence to completed unchanged review passes * fix(review): keep unresolved Codex findings unverified * docs: update review evidence documentation for v1.87.3.0 * test(cso): let Windows integration finish within subprocess budgets * docs: update project documentation for v1.87.3.0 --------- Co-authored-by: garrytan <19957+garrytan@users.noreply.github.com>
This commit is contained in:
@@ -61,6 +61,45 @@ describe('content-binding template drift', () => {
|
||||
expect(rendered('land-and-deploy/sections/readiness-gate.md')).toMatch(rowList);
|
||||
});
|
||||
|
||||
test('both grading surfaces reject missing capture instead of falling back to HEAD', () => {
|
||||
for (const file of ['ship/SKILL.md', 'land-and-deploy/sections/readiness-gate.md']) {
|
||||
const text = rendered(file);
|
||||
expect(text).toContain('review_freshness');
|
||||
expect(text).toContain('UNVERIFIED');
|
||||
expect(text).toContain('Never fall back');
|
||||
expect(text).toContain('0 commits');
|
||||
expect(text.toLowerCase()).toContain('plan-tier');
|
||||
}
|
||||
});
|
||||
|
||||
test('diff callers capture before reading and consume the original token', () => {
|
||||
const review = rendered('review/SKILL.md');
|
||||
expect(review).toContain('gstack-review-log --start review\ngit diff "$DIFF_BASE"');
|
||||
expect(review).toContain('--finish REVIEW_START');
|
||||
expect(review).toContain('"completed":COMPLETED,"converged":CONVERGED,"cycles":CYCLES');
|
||||
const army = rendered('ship/sections/review-army.md');
|
||||
expect(army.indexOf('gstack-review-log --start review')).toBeLessThan(army.indexOf('run `git diff origin/<base>`'));
|
||||
expect(army).toContain('--finish REVIEW_START');
|
||||
expect(army).toContain('persist item 9 with `converged:false`');
|
||||
expect(army).toContain('--start design-review-lite');
|
||||
expect(army).toContain('--finish DESIGN_START');
|
||||
const codex = rendered('codex/sections/review-mode.md');
|
||||
const starts = [...codex.matchAll(/gstack-review-log --start codex-review/g)];
|
||||
expect(starts).toHaveLength(2);
|
||||
expect(starts[0].index).toBeLessThan(codex.indexOf('_gstack_codex_timeout_wrapper 330 codex review'));
|
||||
expect(starts[1].index).toBeLessThan(codex.indexOf('git diff "<base>...HEAD"'));
|
||||
expect(codex).toContain('--finish CODEX_REVIEW_START');
|
||||
expect(codex).toContain('"completed":COMPLETED,"converged":CONVERGED');
|
||||
expect(codex).toContain('Fixes stay stale until a genuine rerun');
|
||||
for (const skill of ['ship', 'review']) {
|
||||
const adversarial = rendered(`${skill}/sections/adversarial.md`);
|
||||
expect(adversarial).toContain('--start adversarial-review');
|
||||
expect(adversarial).toContain('--finish PASS_START');
|
||||
expect(adversarial).toContain('Each outside adversarial/structured pass');
|
||||
expect(adversarial).toContain('Each token is consumed once');
|
||||
}
|
||||
});
|
||||
|
||||
test('release-body write side carries the banner tripwire (and it actually fires)', () => {
|
||||
const body = rendered('document-release/sections/release-body.md');
|
||||
expect(body).toContain('grep -c "UNTRUSTED TRACKER CONTENT" "<run-dir>/body.md"');
|
||||
|
||||
Reference in New Issue
Block a user