ci: keep proof job names API-verifiable (#541)

Issue: #541
User-Visible: no
This commit is contained in:
Sergey Matyunin
2026-09-13 10:07:04 +03:00
parent a8ae5a45e1
commit fdb0d0743d
7 changed files with 10 additions and 6 deletions
+1 -1
View File
@@ -11,7 +11,7 @@ export const SHA = 'a'.repeat(40);
export const TREE = 'b'.repeat(40);
const names = {
preflight: 'Предполётные проверки: документация, провенанс, процесс',
preflight: 'Предполёт: документация, провенанс, процесс',
changes: 'Классификация изменённых файлов',
reuse: 'Переиспользование: это дерево уже проверено',
frontend: 'Фронтенд: типы, юниты, мутанты, синхрон бандла',
+1 -1
View File
@@ -24,7 +24,7 @@ const mergeProofContext = (row, sha, tree) => {
});
const success = (name) => ({ name, conclusion: 'success' });
return { proof, reuseRuns: new Map(), jobs: [
success('Предполётные проверки: документация, провенанс, процесс'),
success('Предполёт: документация, провенанс, процесс'),
success('Классификация изменённых файлов'),
success('Переиспользование: это дерево уже проверено'),
success('Фронтенд: типы, юниты, мутанты, синхрон бандла'),
+1 -1
View File
@@ -23,7 +23,7 @@ const proofContext = ({ id, full = true, conclusion = 'success' }) => {
};
const proof = buildCiProof({ candidateSha: SHA, candidateTree: TREE, runId: id, attempt: 1, event: 'workflow_dispatch', needs });
const jobs = [
greenJob('Предполётные проверки: документация, провенанс, процесс'),
greenJob('Предполёт: документация, провенанс, процесс'),
greenJob('Классификация изменённых файлов'), greenJob('Переиспользование: это дерево уже проверено'),
greenJob('Фронтенд: типы, юниты, мутанты, синхрон бандла'),
...Array.from({ length: 6 }, (_, i) => greenJob(`Мутанты по диффу (${i + 1}/6): затронутые свидетели краснеют`)),
+1 -1
View File
@@ -12,7 +12,7 @@ const TREE = 'b'.repeat(40);
const MUTANT_JOBS = [1, 2, 3, 4, 5, 6].map((n) => ({ name: `Мутанты по диффу (${n}/6): затронутые свидетели краснеют`, conclusion: 'success' }));
const OTHER_JOBS = [{ name: 'Фронтенд: типы, юниты, мутанты, синхрон бандла', conclusion: 'success' }];
const BASE_JOBS = [
{ name: 'Предполётные проверки: документация, провенанс, процесс', conclusion: 'success' },
{ name: 'Предполёт: документация, провенанс, процесс', conclusion: 'success' },
{ name: 'Классификация изменённых файлов', conclusion: 'success' },
{ name: 'Переиспользование: это дерево уже проверено', conclusion: 'success' },
];
+4
View File
@@ -456,6 +456,10 @@ test('журнал свидетелей changed_mutants: rerun продолжа
test('#541: Validate всегда публикует proof точной попытки, а reuse раскрывает источник', () => {
const workflow = read('validate.yml');
const preflightName = workflow.match(/\n preflight:\n name: "([^"]+)"/)?.[1];
assert.equal(preflightName, 'Предполёт: документация, провенанс, процесс');
assert.ok(Buffer.byteLength(preflightName, 'utf8') <= 100,
'GitHub Jobs API truncates job names longer than 100 UTF-8 bytes');
assert.doesNotMatch(workflow, /with:\s*\{[^\n]*\$\{\{/,
'GitHub does not parse an unquoted expression inside a YAML flow mapping');
const proofAt = workflow.indexOf('\n proof:\n');