mirror of
https://github.com/Matysh/houseplan-card
synced 2026-10-03 21:28:59 +00:00
fix(process): reconcile canon and hints with the pipeline after #707–#730 (#748)
Five places still described the pipeline as it was before code that is already in dev: - the S3 hint of the task packet told the author to push the branch, while the spec lives in the issue body (§2.3, #517) and nothing is pushed before S5 (§11.8); - process-gate printed «FAIL п.9 Gates: light» for a trailer nobody writes or reads, while §10.2 item 9 is the unimplemented release:prerelease verdict check. The check is removed; a contract test ties every RULES key to an implemented item of §10.2 and every finding number to a RULES key; - §10.4 item 4 demanded a heredoc in run:, while #723/#730 and their tests demand the opposite: commit messages echo line by line into a file, comment and summary texts come from code; - the ship merge comment, AUTHOR.md, REVIEWER.md and AGENTS.md named only the pre-beta document, though since #727 the night reads ship code first; - the nightly publication committed «docs: ship review for nightly … перед бетой» with the beta step's Issue: #696. It now has its own subject (the document name), body and Issue: #727; the beta message is unchanged. The browser-guard inventory note still said growth above 200 fails mutation-gate --check; since #699 it is a guideline and --check warns. Its counts now match the inventory: 205, lifecycle 90. Issue: #748 User-Visible: no Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018qZfe7YS4rqEMKoVeS3GKd
This commit is contained in:
@@ -56,6 +56,8 @@ const CHANGELOGS = ['docs/CHANGELOG.md', 'docs/CHANGELOG.ru.md'];
|
||||
export const ALLOWED_STATUS = ['S5-ready', 'S6-in-progress', 'S7-code-review', 'S8-merged'];
|
||||
export const STRICT_STATUS = ['S5-ready', 'S6-in-progress', 'S7-code-review'];
|
||||
|
||||
// Номер — пункт PROCESS.md §10.2 (0 — служебный). Пункт из «Не реализовано»
|
||||
// ключа не имеет (§10.2 п.9); соответствие держит test/process-gate.test.mjs (#748).
|
||||
export const RULES = {
|
||||
0: 'классификация путей',
|
||||
1: 'трейлер Issue',
|
||||
@@ -66,7 +68,6 @@ export const RULES = {
|
||||
6: 'релизный коммит',
|
||||
7: 'лимит документов ревью',
|
||||
8: 'статус issue',
|
||||
9: 'Gates: light',
|
||||
10: 'DoR по моменту коммита',
|
||||
};
|
||||
|
||||
@@ -118,7 +119,6 @@ export function makeCommit({
|
||||
baselineReviewedLocal: one('Baseline-Reviewed-Local'),
|
||||
// #729: все значения, а не первое — «ровно один» судит правило 10.
|
||||
specDrafts: all('Spec-Draft'),
|
||||
gates: one('Gates'),
|
||||
// null = вызывающий не доказал содержимое diff. Для stable release это
|
||||
// намеренно fail-closed: одного имени разрешённого version source мало.
|
||||
releaseSourceViolations,
|
||||
@@ -203,9 +203,6 @@ export function evaluateCommit(c) {
|
||||
if (violations.length) {
|
||||
fail(6, `релизный коммит содержит не-версионное изменение продукта: ${violations.slice(0, 3).join(', ')}`);
|
||||
}
|
||||
if ((c.gates ?? '').toLowerCase() === 'light') {
|
||||
fail(9, '«Gates: light» на релизном коммите запрещён');
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
@@ -228,10 +225,6 @@ export function evaluateCommit(c) {
|
||||
fail(5, 'изменена только генерируемая часть (класс D) без «Release: vX.Y.Z», «Baseline-Reviewed: <ссылка>» либо «Baseline-Reviewed-Local: sha256:<хеш>»');
|
||||
}
|
||||
|
||||
if ((c.gates ?? '').toLowerCase() === 'light' && onlyD) {
|
||||
fail(9, '«Gates: light» на коммите класса D запрещён');
|
||||
}
|
||||
|
||||
const unknown = c.files.filter((f) => classify(f) === '?');
|
||||
if (unknown.length) warn(0, `путь вне классов A/B/C/D: ${unknown.slice(0, 3).join(', ')}`);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user