ship: drop issue/incident IDs and the 'continue silently' suppressor (s06 M2, s06 M3, s06 M4, s06 M7)

- M2/M3: '(#1946)' and '(#1079)' removed from the credential guard and REST
  fallback headings; the rules are unchanged.
- M4: the audit-failure fallback states the reason (a skipped audit lets
  unverified plan items ship as done) instead of 'the failure shape that
  VAS-449 surfaced'.
- M7: 'Continue silently — just note the counts briefly' -> report the pass
  counts in one line and continue to Step 6 (Step 16 cites these counts).

Not changed: s06 M1, the Step 16 IRON LAW (UC2 gate keeps its wording).
W7a pin: test/ship-plan-completion-invariants.test.ts:127 pinned the VAS-449
sentence; it now checks that the audit-failure fallback still forbids a
silent fail-open (case-insensitive). Negative control: deleting that
sentence turns it red. expected red until the regeneration commit
This commit is contained in:
garrytan committed 2026-10-03 00:14:50 +00:00
1 parent b38ad96a1f
commit be348ba24a
5 files changed
+8 -6

No files matched your search

+3 -1
View File
@@ -123,7 +123,9 @@ describe('ship/SKILL.md — Plan Completion gate invariants (VAS-449 remediation
test('Subagent failure: fail-closed, not silent fail-open', () => {
expect(skill).not.toMatch(/Never block \/ship on subagent failure\.\s*$/m);
expect(skill.replace(/\s+/g, ' ')).toContain('Silent fail-open is the failure shape that VAS-449 surfaced');
// The audit-failure fallback still forbids a silent fail-open (meaning, not the old incident ID).
const fallback = skill.slice(skill.indexOf('**Audit-failure fallback:**'), skill.indexOf('**Audit-failure fallback:**') + 800);
expect(fallback).toMatch(/fail[- ]open/i);
expect(skill).toMatch(/Stop and fix the audit/);
});