@7n/rules 1.49.24 → 1.49.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@ type: JS Module
|
|
|
3
3
|
title: fix-worker.mjs
|
|
4
4
|
resource: npm/rules/doc-files/check/fix-worker.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
6
|
+
crc: 444c817d
|
|
7
7
|
model: omlx/gemma-4-e4b-it-OptiQ-4bit
|
|
8
8
|
score: 100
|
|
9
9
|
issues: judge:inaccurate:0.98
|
|
@@ -18,7 +18,7 @@ docgen:
|
|
|
18
18
|
## Поведінка
|
|
19
19
|
|
|
20
20
|
1. Викликається `fixWorker`.
|
|
21
|
-
2.
|
|
21
|
+
2. З порушень, знайдених detector-ом, відновлюються повні цілі застарілих документів; fixer не робить нового повного обходу checkout. Тому hook і `lint doc-files --path` генерують docs лише для власного explicit scope (рукописні доки без docgen-frontmatter — не цілі).
|
|
22
22
|
3. Якщо знайдені застарілі документи, кожна цільова дока реєструється durable через `ctx.recordDurableWrite` (fallback — `ctx.recordWrite`), а потім запускається генерація батчу через `runGenerationBatch`.
|
|
23
23
|
4. Батч отримує м'який дедлайн — 80% від `ctx.timeoutMs` рунга: генерація сама зупиняється до backstop-таймауту, повертає частковий прогрес штатно й не лишає фонового батчу поверх наступного rung-а. Дедлайн діє і всередині файлу: `generateDoc` ріже per-call LLM-таймаути під залишок бюджету, тож навіть перший файл, що не вкладається у рунг, обривається сам (transient), а не по backstop-таймеру runner-а.
|
|
24
24
|
5. Фільтруються порушення, що стосуються сирітських документів (вихідні файли видалені); pre-image кожного реєструється у `ctx.recordWrite`.
|
|
@@ -3,7 +3,7 @@ type: JS Module
|
|
|
3
3
|
title: main.mjs
|
|
4
4
|
resource: npm/rules/doc-files/check/main.mjs
|
|
5
5
|
docgen:
|
|
6
|
-
crc:
|
|
6
|
+
crc: b5921123
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
## Огляд
|
|
@@ -12,7 +12,7 @@ Lint-детектор doc-files: знаходить застарілі файл
|
|
|
12
12
|
|
|
13
13
|
## Поведінка
|
|
14
14
|
|
|
15
|
-
`lint(ctx)` збирає застарілі доки через `collectStale` (для конкретного набору змінених файлів або, якщо файлів не передано, повним скануванням дерева) і додає для кожної окреме порушення з причиною (`missing`/`crc-mismatch`/`degraded`) та шляхом джерела.
|
|
15
|
+
`lint(ctx)` збирає застарілі доки через `collectStale` (для конкретного набору змінених файлів або, якщо файлів не передано, повним скануванням дерева) і додає для кожної окреме порушення з причиною (`missing`/`crc-mismatch`/`degraded`) та шляхом джерела. Сирітські доки (`scanOrphanedDocs`) перевіряються лише за повного repo-wide скану: explicit files від hook або `--path` не мають безпечної межі для такого обходу, тому не можуть зачіпати docs поза своїм scope.
|
|
16
16
|
|
|
17
17
|
Реверс-мапінг: якщо серед змінених файлів трапляється сама `.md`-дока (а не її джерело), `sourceForDoc` шукає відповідний вихідний файл поруч (той самий basename, легальне розширення) і саме його передає далі в перевірку застарілості — так зміна доки теж тригерить звірку CRC її джерела.
|
|
18
18
|
|
|
@@ -24,16 +24,19 @@ const DEADLINE_FRACTION = 0.8
|
|
|
24
24
|
/** @type {FixWorkerFn} */
|
|
25
25
|
export async function fixWorker(violations, ctx) {
|
|
26
26
|
const { cwd } = ctx
|
|
27
|
-
const {
|
|
27
|
+
const { describeFile } = await import('../docgen-scan/main.mjs')
|
|
28
28
|
const { runGenerationBatch, purgeOrphanedDocs } = await import('../docgen-files-batch/main.mjs')
|
|
29
29
|
|
|
30
30
|
/** @type {string[]} */
|
|
31
31
|
const touchedFiles = []
|
|
32
32
|
const recordDoc = ctx.recordDurableWrite ?? ctx.recordWrite
|
|
33
33
|
|
|
34
|
-
//
|
|
35
|
-
//
|
|
36
|
-
|
|
34
|
+
// Відновлюємо повні target-обʼєкти лише для порушень detector-а. Повний re-scan
|
|
35
|
+
// тут ігнорував би explicit files від hook/`lint --path` і генерував би docs
|
|
36
|
+
// для всього checkout.
|
|
37
|
+
const stale = [...new Set(violations.filter(v => v.reason !== 'orphaned-doc' && v.file).map(v => v.file))]
|
|
38
|
+
.map(sourcePath => describeFile(cwd, sourcePath))
|
|
39
|
+
.filter(f => f.stale)
|
|
37
40
|
if (stale.length > 0) {
|
|
38
41
|
for (const f of stale) {
|
|
39
42
|
const docAbs = join(cwd, f.docPath)
|
|
@@ -86,14 +86,19 @@ export function lint(ctx) {
|
|
|
86
86
|
})
|
|
87
87
|
)
|
|
88
88
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
89
|
+
// Явний files-набір (hook/--path) не містить межі дерева для безпечного
|
|
90
|
+
// orphan-скану. Повний скан тут порушив би scope і міг би видалити доки поза
|
|
91
|
+
// сервісом, тому orphan-cleanup лишається лише repo-wide прогоном.
|
|
92
|
+
if (files === undefined) {
|
|
93
|
+
for (const orphan of scanOrphanedDocs(cwd)) {
|
|
94
|
+
violations.push(
|
|
95
|
+
/** @type {Partial<import('../../../scripts/lib/lint-surface/types.mjs').LintViolation>} */ ({
|
|
96
|
+
reason: 'orphaned-doc',
|
|
97
|
+
message: `сирітський док (source видалено): ${orphan}`,
|
|
98
|
+
file: orphan
|
|
99
|
+
})
|
|
100
|
+
)
|
|
101
|
+
}
|
|
97
102
|
}
|
|
98
103
|
|
|
99
104
|
const unavailable = unavailableDocFilesPlugins(cwd)
|