33 lines
1.4 KiB
TypeScript
33 lines
1.4 KiB
TypeScript
import { readFile } from 'node:fs/promises';
|
|
import { describe, expect, it } from 'vitest';
|
|
|
|
const root = process.cwd();
|
|
|
|
describe('Pi release documentation', () => {
|
|
it('keeps final-product commands and the external Provider waiver distinct', async () => {
|
|
const [readme, runbook] = await Promise.all([
|
|
readFile(`${root}/README.md`, 'utf8'),
|
|
readFile(`${root}/docs/pi-runtime-release-runbook.md`, 'utf8'),
|
|
]);
|
|
|
|
expect(readme).toContain('pnpm run verify:artifact:pi');
|
|
expect(readme).toContain('pnpm run smoke:pi:real');
|
|
expect(readme).toContain('pnpm run perf:pi:release');
|
|
expect(runbook).toContain('realTurnVerified=false');
|
|
expect(runbook).toContain('Explicitly Waived / Accepted Risk');
|
|
expect(runbook).toContain('不得写成 Pass');
|
|
});
|
|
|
|
it('requires all release targets and documents the Pi-only rollback boundary', async () => {
|
|
const runbook = await readFile(`${root}/docs/pi-runtime-release-runbook.md`, 'utf8');
|
|
|
|
for (const target of ['Windows x64', 'Linux x64', 'macOS x64', 'macOS arm64']) {
|
|
expect(runbook).toContain(target);
|
|
}
|
|
expect(runbook).toContain('缺少任一目标的独立证据时,结论只能是 `Blocked`');
|
|
expect(runbook).toContain('项目配置和 Conversation 元数据只使用 `.makelore`');
|
|
expect(runbook).toContain('不提供旧格式提示与确认接口');
|
|
expect(runbook).toContain('只支持完整应用版本回滚');
|
|
});
|
|
});
|