diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index bfcc4a2e2..529337dab 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -27,9 +27,13 @@ changed. --> - **Verified live by:** - **Did NOT test:** -## Liveness proof (required) +## Liveness proof (required for external contributors) - ## Checklist -- [ ] Liveness screenshot attached: `GSTACK PR` typed live into a real surface (not edited onto the image) +- [ ] Liveness screenshot attached (`GSTACK PR` typed live into a real surface) or PR author is @garrytan (owner exemption) - [ ] This is not a generated-file-only diff (I edited the source/template and regenerated) - [ ] No ETHOS.md edits, and no changes to voice / founder perspective / YC references - [ ] New public command / external service / host adapter has an accepted issue linked (or N/A) diff --git a/test/ship-pr-liveness-policy.test.ts b/test/ship-pr-liveness-policy.test.ts new file mode 100644 index 000000000..4f9233481 --- /dev/null +++ b/test/ship-pr-liveness-policy.test.ts @@ -0,0 +1,24 @@ +import { describe, expect, test } from 'bun:test'; +import * as fs from 'fs'; +import * as path from 'path'; + +const template = fs.readFileSync( + path.join(import.meta.dir, '..', '.github', 'PULL_REQUEST_TEMPLATE.md'), + 'utf8', +); + +describe('gstack PR liveness policy', () => { + test('remembers the authenticated repository-owner exemption', () => { + expect(template).toContain('Repository owner @garrytan is explicitly exempt'); + expect(template).toContain('gh api user --jq .login'); + expect(template).toMatch(/Git author metadata\s+alone is not sufficient/); + expect(template).toContain('PR author is @garrytan (owner exemption)'); + }); + + test('retains live GSTACK PR proof for every other contributor', () => { + expect(template).toContain('required for external contributors'); + expect(template).toContain('All other contributors'); + expect(template).toContain('`GSTACK PR` typed LIVE'); + expect(template).toContain('not drawn,\noverlaid, or edited onto the image'); + }); +});