paperlint 10.2.0 → 10.4.0
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/.github/workflows/ci.yml +15 -4
- package/README.md +1 -0
- package/dist/adapters/git/index.d.ts +10 -0
- package/dist/adapters/git/index.d.ts.map +1 -0
- package/dist/adapters/git/index.js +151 -0
- package/dist/adapters/git/index.js.map +1 -0
- package/dist/adapters/memory/index.d.ts +6 -0
- package/dist/adapters/memory/index.d.ts.map +1 -1
- package/dist/adapters/memory/index.js +8 -0
- package/dist/adapters/memory/index.js.map +1 -1
- package/dist/adapters/node/index.d.ts +1 -0
- package/dist/adapters/node/index.d.ts.map +1 -1
- package/dist/adapters/node/index.js +1 -0
- package/dist/adapters/node/index.js.map +1 -1
- package/dist/adapters/node/list-entries.io.d.ts +3 -0
- package/dist/adapters/node/list-entries.io.d.ts.map +1 -0
- package/dist/adapters/node/list-entries.io.js +24 -0
- package/dist/adapters/node/list-entries.io.js.map +1 -0
- package/dist/adapters/study-registry/index.d.ts +412 -1
- package/dist/adapters/study-registry/index.d.ts.map +1 -1
- package/dist/adapters/study-registry/index.js +245 -8
- package/dist/adapters/study-registry/index.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +38 -6
- package/dist/cli.js.map +1 -1
- package/dist/domain/decide-first.d.ts +100 -0
- package/dist/domain/decide-first.d.ts.map +1 -0
- package/dist/domain/decide-first.js +102 -0
- package/dist/domain/decide-first.js.map +1 -0
- package/dist/domain/index-columns.d.ts +45 -0
- package/dist/domain/index-columns.d.ts.map +1 -0
- package/dist/domain/index-columns.js +62 -0
- package/dist/domain/index-columns.js.map +1 -0
- package/dist/domain/study-mode.d.ts +37 -0
- package/dist/domain/study-mode.d.ts.map +1 -0
- package/dist/domain/study-mode.js +45 -0
- package/dist/domain/study-mode.js.map +1 -0
- package/dist/domain/study-registry.d.ts +253 -10
- package/dist/domain/study-registry.d.ts.map +1 -1
- package/dist/domain/study-registry.js +325 -27
- package/dist/domain/study-registry.js.map +1 -1
- package/dist/outputs-before-decision-rule.d.ts +17 -0
- package/dist/outputs-before-decision-rule.d.ts.map +1 -0
- package/dist/outputs-before-decision-rule.js +90 -0
- package/dist/outputs-before-decision-rule.js.map +1 -0
- package/dist/ports/git-history.d.ts +44 -0
- package/dist/ports/git-history.d.ts.map +1 -0
- package/dist/ports/git-history.js +2 -0
- package/dist/ports/git-history.js.map +1 -0
- package/dist/ports/list-entries.d.ts +17 -0
- package/dist/ports/list-entries.d.ts.map +1 -0
- package/dist/ports/list-entries.js +2 -0
- package/dist/ports/list-entries.js.map +1 -0
- package/dist/ports/study-registry-codec.d.ts +9 -2
- package/dist/ports/study-registry-codec.d.ts.map +1 -1
- package/dist/studies.d.ts +4 -0
- package/dist/studies.d.ts.map +1 -1
- package/dist/studies.js +55 -24
- package/dist/studies.js.map +1 -1
- package/dist/study-gate.d.ts +14 -0
- package/dist/study-gate.d.ts.map +1 -0
- package/dist/study-gate.js +95 -0
- package/dist/study-gate.js.map +1 -0
- package/dist/study-index-input.d.ts +5 -0
- package/dist/study-index-input.d.ts.map +1 -0
- package/dist/study-index-input.js +13 -0
- package/dist/study-index-input.js.map +1 -0
- package/dist/study-modes.d.ts +45 -0
- package/dist/study-modes.d.ts.map +1 -0
- package/dist/study-modes.js +70 -0
- package/dist/study-modes.js.map +1 -0
- package/dist/study-registry-rule.d.ts +29 -6
- package/dist/study-registry-rule.d.ts.map +1 -1
- package/dist/study-registry-rule.js +91 -40
- package/dist/study-registry-rule.js.map +1 -1
- package/dist/study-run.d.ts +19 -0
- package/dist/study-run.d.ts.map +1 -0
- package/dist/study-run.js +9 -0
- package/dist/study-run.js.map +1 -0
- package/docs/design/study-modes.md +247 -0
- package/docs/design/study-registry.md +137 -15
- package/docs/e2e.md +8 -4
- package/docs/layout.md +26 -21
- package/docs/rules/repro/outputs-before-decision.md +119 -0
- package/docs/rules/repro/study-plan-name.md +70 -0
- package/docs/rules/repro/study-registered.md +206 -15
- package/docs/rules.md +54 -52
- package/docs/testing.md +1 -0
- package/package.json +2 -1
- package/scripts/check.ts +6 -0
- package/skills/build-benchmark/SKILL.md +24 -12
- package/skills/build-benchmark/SKILL.md.spec.ts +23 -11
- package/skills/build-label-page/SKILL.md +9 -7
- package/skills/build-label-page/SKILL.md.spec.ts +8 -6
- package/skills/camera-ready/SKILL.md +6 -1
- package/skills/camera-ready/SKILL.md.spec.ts +5 -0
- package/skills/draft-paper/SKILL.md +11 -3
- package/skills/draft-paper/SKILL.md.spec.ts +10 -2
- package/skills/harden-paper/SKILL.md +12 -2
- package/skills/harden-paper/SKILL.md.spec.ts +11 -1
- package/skills/osf-artifact-upload/SKILL.md +7 -1
- package/skills/osf-artifact-upload/SKILL.md.spec.ts +6 -0
- package/skills/pc-panel-review/SKILL.md +10 -3
- package/skills/pc-panel-review/SKILL.md.spec.ts +9 -2
- package/skills/run-agent-grid/SKILL.md +10 -5
- package/skills/run-agent-grid/SKILL.md.spec.ts +9 -4
- package/skills/tighten-paper/SKILL.md +5 -1
- package/skills/tighten-paper/SKILL.md.spec.ts +4 -0
- package/src/adapters/git/history.test.ts +121 -0
- package/src/adapters/git/index.test.ts +268 -0
- package/src/adapters/git/index.ts +227 -0
- package/src/adapters/memory/index.test.ts +15 -1
- package/src/adapters/memory/index.ts +13 -0
- package/src/adapters/node/index.ts +1 -0
- package/src/adapters/node/list-entries.io.ts +26 -0
- package/src/adapters/node/list-entries.test.ts +43 -0
- package/src/adapters/study-registry/index.test.ts +343 -0
- package/src/adapters/study-registry/index.ts +374 -10
- package/src/adapters/study-registry/mode.test.ts +162 -0
- package/src/cli.ts +52 -6
- package/src/domain/decide-first.test.ts +258 -0
- package/src/domain/decide-first.ts +243 -0
- package/src/domain/index-columns.test.ts +216 -0
- package/src/domain/index-columns.ts +105 -0
- package/src/domain/study-measurements.test.ts +633 -0
- package/src/domain/study-mode.test.ts +55 -0
- package/src/domain/study-mode.ts +78 -0
- package/src/domain/study-registry.test.ts +48 -32
- package/src/domain/study-registry.ts +621 -36
- package/src/new-paper.test.ts +6 -1
- package/src/outputs-before-decision-rule.test.ts +206 -0
- package/src/outputs-before-decision-rule.ts +124 -0
- package/src/ports/git-history.ts +44 -0
- package/src/ports/list-entries.ts +18 -0
- package/src/ports/study-registry-codec.ts +13 -2
- package/src/rule-cases.test.ts +103 -1
- package/src/studies-cli.test.ts +2 -2
- package/src/studies-index-modes.test.ts +129 -0
- package/src/studies.test.ts +39 -9
- package/src/studies.ts +99 -29
- package/src/study-gate.test.ts +316 -0
- package/src/study-gate.ts +161 -0
- package/src/study-index-input.ts +23 -0
- package/src/study-modes.ts +120 -0
- package/src/study-registry-rule.test.ts +333 -7
- package/src/study-registry-rule.ts +145 -41
- package/src/study-run.ts +21 -0
|
@@ -10,12 +10,16 @@
|
|
|
10
10
|
* ── JSON, NEVER MARKDOWN ─────────────────────────────────────────────────────────
|
|
11
11
|
* The registry is data: its text is parsed once, where it enters, against the schema in
|
|
12
12
|
* `src/adapters/study-registry/` (`StudyRegistryCodec`). The index in `repro/README.md` is OUTPUT: it is
|
|
13
|
-
* generated from the registry
|
|
13
|
+
* generated from the registry, the plans' modes and git's history (src/domain/index-columns.ts), and
|
|
14
|
+
* compared cell by cell between two fixed markers, the two columns read from git left out. Nothing
|
|
15
|
+
* else parses it.
|
|
14
16
|
*
|
|
15
17
|
* Pure: the caller lists `repro/`, reads the registry and the README, and says which result files exist.
|
|
16
18
|
*/
|
|
17
19
|
import { isAbsolute, posix, win32 } from "node:path";
|
|
18
20
|
import { STUDIES_FILE, STUDY_SLUG } from "./repro-layout.js";
|
|
21
|
+
import { needsMode } from "./study-mode.js";
|
|
22
|
+
import { decisionCell, firstOutputCell, modeCell, } from "./index-columns.js";
|
|
19
23
|
/** The registry, at the top of the paper's `repro/`; the layout allows it there. */
|
|
20
24
|
export { STUDIES_FILE };
|
|
21
25
|
export const STUDY_KINDS = [
|
|
@@ -47,6 +51,76 @@ export const INDEX_BEGIN = "<!-- studies:begin — generated from studies.json b
|
|
|
47
51
|
export const INDEX_END = "<!-- studies:end -->";
|
|
48
52
|
/** The README written when `repro/` has none. */
|
|
49
53
|
const INDEX_HEADING = "# Reproduction index";
|
|
54
|
+
/** What a measurement is to the paper: the claim it carries, or what that claim is compared with. */
|
|
55
|
+
export const MEASUREMENT_ROLES = ["headline", "baseline"];
|
|
56
|
+
/**
|
|
57
|
+
* The statuses of a study that has run: its plan was due before the first run. A `designing` study
|
|
58
|
+
* has not run yet, and a `dropped` one never will.
|
|
59
|
+
*/
|
|
60
|
+
export const RAN_STATUSES = [
|
|
61
|
+
"running",
|
|
62
|
+
"done",
|
|
63
|
+
"stopped",
|
|
64
|
+
"superseded",
|
|
65
|
+
];
|
|
66
|
+
/** The file `paperlint studies new` writes a study's plan to, beside its README.md. */
|
|
67
|
+
export const PLAN_FILE = "plan.json";
|
|
68
|
+
/** The plan's name before it was a plan: still read as one, and reported by `repro/study-plan-name`. */
|
|
69
|
+
export const LEGACY_PLAN_FILE = "prereg.json";
|
|
70
|
+
/** The top-level fields of a plan: none of them may be a key of `extra`. */
|
|
71
|
+
export const PLAN_FIELDS = [
|
|
72
|
+
"question",
|
|
73
|
+
"population",
|
|
74
|
+
"arms",
|
|
75
|
+
"primary_outcome",
|
|
76
|
+
"author_check",
|
|
77
|
+
"extra",
|
|
78
|
+
"mode",
|
|
79
|
+
];
|
|
80
|
+
/** The texts a plan must fill before the study runs, in the order they are named. */
|
|
81
|
+
export const PLAN_TEXT_FIELDS = [
|
|
82
|
+
"question",
|
|
83
|
+
"population.source",
|
|
84
|
+
"population.draw.method",
|
|
85
|
+
"primary_outcome",
|
|
86
|
+
"mode",
|
|
87
|
+
"mode.outputs",
|
|
88
|
+
"mode.decision.file",
|
|
89
|
+
"mode.decision.note",
|
|
90
|
+
"mode.reason",
|
|
91
|
+
];
|
|
92
|
+
/** The decision file `paperlint studies new` names for a study in `folder`, relative to the paper. */
|
|
93
|
+
export const decisionPath = (folder) => `repro/${folder}/${DECISION_FILE}`;
|
|
94
|
+
/** The decision file's name, beside the plan. */
|
|
95
|
+
export const DECISION_FILE = "decision.md";
|
|
96
|
+
/**
|
|
97
|
+
* The plan `paperlint studies new` writes for a study of `kind` in `folder`: every field present, its
|
|
98
|
+
* value to fill. Its draw is of all the population (a census); a sampled study changes it to
|
|
99
|
+
* `{ "kind": "seeded", "method", "seed" }`. A study that must declare its mode gets the default one,
|
|
100
|
+
* decided before the run, its decision file named and its outputs and note to fill.
|
|
101
|
+
*/
|
|
102
|
+
export const planTemplate = (kind, folder) => ({
|
|
103
|
+
question: "",
|
|
104
|
+
population: { source: "", draw: { kind: "all", method: "" } },
|
|
105
|
+
arms: [],
|
|
106
|
+
primary_outcome: "",
|
|
107
|
+
author_check: null,
|
|
108
|
+
...(needsMode(kind)
|
|
109
|
+
? {
|
|
110
|
+
mode: {
|
|
111
|
+
kind: "decide_before_run",
|
|
112
|
+
outputs: [],
|
|
113
|
+
decision: { file: decisionPath(folder), note: "" },
|
|
114
|
+
},
|
|
115
|
+
}
|
|
116
|
+
: {}),
|
|
117
|
+
});
|
|
118
|
+
/** A plan's text as `paperlint studies new` writes it: JSON, two-space indented, a final newline. */
|
|
119
|
+
export const planText = (p) => `${JSON.stringify(p, null, 2)}\n`;
|
|
120
|
+
/** The findings `repro/study-plan-name` reports, a warning; every other is `repro/study-registered`'s. */
|
|
121
|
+
export const PLAN_NAME_PROBLEMS = [
|
|
122
|
+
"legacy-plan",
|
|
123
|
+
];
|
|
50
124
|
/** The number of an id of `prefix` (`P1-S07` → 7); null for an id of another shape. */
|
|
51
125
|
function idNumber(prefix, id) {
|
|
52
126
|
const m = new RegExp(`^${prefix}-S(\\d{2,})$`, "u").exec(id);
|
|
@@ -73,12 +147,27 @@ export const titleWords = (title) => title.split(/\s+/u).filter((w) => w !== "")
|
|
|
73
147
|
* Whether `path` stays inside the folder it is relative to. A backslash or a Windows absolute path
|
|
74
148
|
* is refused outright: `posix.normalize` does not resolve `..\\`, while the host's `join` may.
|
|
75
149
|
*/
|
|
76
|
-
const isInside = (path) => {
|
|
150
|
+
export const isInside = (path) => {
|
|
77
151
|
if (path.includes("\\") || isAbsolute(path) || win32.isAbsolute(path))
|
|
78
152
|
return false;
|
|
79
153
|
const n = posix.normalize(path);
|
|
80
154
|
return n !== ".." && !n.startsWith("../");
|
|
81
155
|
};
|
|
156
|
+
/**
|
|
157
|
+
* Whether `folder` names one folder directly inside `repro/`: not empty, not `.` or `..`, and no
|
|
158
|
+
* separator or NUL. Every command and rule that reads a study's folder reads only such a one: a row
|
|
159
|
+
* naming `../x` would have them read and write outside the paper.
|
|
160
|
+
*/
|
|
161
|
+
export const isFolderName = (folder) => folder !== "." && folder !== ".." && /^[^/\\\0]+$/u.test(folder);
|
|
162
|
+
/**
|
|
163
|
+
* The `<folder>/<plan>` of each row whose plan lies inside its folder: the files the judge needs read
|
|
164
|
+
* (`StudyInput.plans`). A plan outside its folder is reported without being read.
|
|
165
|
+
*/
|
|
166
|
+
export const planKeys = (r) => planRefs(r).map((p) => p.key);
|
|
167
|
+
/** Each plan `planKeys` names, with the kind of the study whose row names it: what its parser needs. */
|
|
168
|
+
export const planRefs = (r) => r.studies.flatMap((s) => s.plan !== undefined && isInside(s.plan) && isFolderName(s.folder)
|
|
169
|
+
? [{ key: `${s.folder}/${s.plan}`, folder: s.folder, kind: s.kind }]
|
|
170
|
+
: []);
|
|
82
171
|
/** Whether the row is the first of the registry with its value of `key`. */
|
|
83
172
|
const isFirst = ({ r, s, i }, key) => r.studies.findIndex((o) => key(o) === key(s)) === i;
|
|
84
173
|
const badId = ({ r, s }) => idNumber(r.prefix, s.id) === null
|
|
@@ -139,6 +228,82 @@ const noSuccessor = ({ r, s }) => {
|
|
|
139
228
|
? { problem: "no-successor", id: s.id, superseded_by: by }
|
|
140
229
|
: null;
|
|
141
230
|
};
|
|
231
|
+
/** A row's `measurement`, when the registry declares its measurements, names one of them. */
|
|
232
|
+
const unknownMeasurement = ({ r, s }) => r.measurements === undefined ||
|
|
233
|
+
s.measurement === undefined ||
|
|
234
|
+
r.measurements.some((m) => m.id === s.measurement)
|
|
235
|
+
? null
|
|
236
|
+
: { problem: "unknown-measurement", id: s.id, measurement: s.measurement };
|
|
237
|
+
/** The state of the plan the row names (absent when outside its folder); null when it names none. */
|
|
238
|
+
const planOf = ({ s, input }) => {
|
|
239
|
+
if (s.plan === undefined)
|
|
240
|
+
return null;
|
|
241
|
+
return isInside(s.plan)
|
|
242
|
+
? (input.plans.get(`${s.folder}/${s.plan}`) ?? { kind: "absent" })
|
|
243
|
+
: { kind: "absent" };
|
|
244
|
+
};
|
|
245
|
+
const hasRun = (s) => RAN_STATUSES.includes(s.status);
|
|
246
|
+
/** The finding for the plan `path` of `s`, in the state its folder holds it; null when it stands. */
|
|
247
|
+
const planFinding = (s, path, state) => {
|
|
248
|
+
const at = { problem: "bad-plan", id: s.id, path };
|
|
249
|
+
switch (state.kind) {
|
|
250
|
+
case "absent":
|
|
251
|
+
return { ...at, why: "missing" };
|
|
252
|
+
case "unreadable":
|
|
253
|
+
return { ...at, why: "unreadable", reasons: state.why };
|
|
254
|
+
case "draft":
|
|
255
|
+
return hasRun(s)
|
|
256
|
+
? { ...at, why: "unfilled", fields: state.empty, status: s.status }
|
|
257
|
+
: null;
|
|
258
|
+
case "ready":
|
|
259
|
+
return null;
|
|
260
|
+
}
|
|
261
|
+
};
|
|
262
|
+
/** The plan a row names is a file inside its folder, of the schema, and ready once the study has run. */
|
|
263
|
+
const badPlan = ({ s, input }) => {
|
|
264
|
+
const path = s.plan;
|
|
265
|
+
if (path === undefined)
|
|
266
|
+
return null;
|
|
267
|
+
if (!isInside(path))
|
|
268
|
+
return { problem: "bad-plan", id: s.id, path, why: "outside" };
|
|
269
|
+
return planFinding(s, path, input.plans.get(`${s.folder}/${path}`) ?? { kind: "absent" });
|
|
270
|
+
};
|
|
271
|
+
/** A plan under its old name: read, and named for renaming. */
|
|
272
|
+
const legacyPlan = ({ s }) => s.plan !== undefined && posix.basename(s.plan) === LEGACY_PLAN_FILE
|
|
273
|
+
? { problem: "legacy-plan", id: s.id, path: s.plan }
|
|
274
|
+
: null;
|
|
275
|
+
/**
|
|
276
|
+
* A study of a headline measurement that has run carries the author's check of its drawn units in
|
|
277
|
+
* its plan, by the registry's author when it names one. A plan that cannot be read is `badPlan`'s.
|
|
278
|
+
*/
|
|
279
|
+
const authorCheck = (row) => {
|
|
280
|
+
const { r, s } = row;
|
|
281
|
+
const m = r.measurements?.find((o) => o.id === s.measurement);
|
|
282
|
+
if (m?.role !== "headline" || !hasRun(s))
|
|
283
|
+
return null;
|
|
284
|
+
const at = {
|
|
285
|
+
problem: "author-check",
|
|
286
|
+
id: s.id,
|
|
287
|
+
measurement: m.id,
|
|
288
|
+
status: s.status,
|
|
289
|
+
};
|
|
290
|
+
const state = planOf(row);
|
|
291
|
+
if (state === null)
|
|
292
|
+
return { ...at, why: "no-plan" };
|
|
293
|
+
const wrong = state.kind === "ready" || state.kind === "draft"
|
|
294
|
+
? checkProblem(r, state.plan)
|
|
295
|
+
: null;
|
|
296
|
+
return wrong === null ? null : { ...at, ...wrong };
|
|
297
|
+
};
|
|
298
|
+
/** What a read plan's author check lacks: it is not there, or it is not the registry's author's. */
|
|
299
|
+
const checkProblem = (r, plan) => {
|
|
300
|
+
const check = plan.author_check;
|
|
301
|
+
if (check === null)
|
|
302
|
+
return { why: "missing" };
|
|
303
|
+
return r.author === undefined || check.by === r.author
|
|
304
|
+
? null
|
|
305
|
+
: { why: "not-author", by: check.by, author: r.author };
|
|
306
|
+
};
|
|
142
307
|
/** The checks of a row, in the order their findings are reported. */
|
|
143
308
|
const ROW_CHECKS = [
|
|
144
309
|
badId,
|
|
@@ -150,17 +315,60 @@ const ROW_CHECKS = [
|
|
|
150
315
|
noResult,
|
|
151
316
|
resultFile,
|
|
152
317
|
noSuccessor,
|
|
318
|
+
unknownMeasurement,
|
|
319
|
+
badPlan,
|
|
320
|
+
legacyPlan,
|
|
321
|
+
authorCheck,
|
|
153
322
|
];
|
|
323
|
+
/** A headline measurement's approval: missing, or not the registry's author's; null when it stands. */
|
|
324
|
+
const headlineApproval = (r, m) => {
|
|
325
|
+
if (m.role !== "headline")
|
|
326
|
+
return null;
|
|
327
|
+
const author = r.author ?? null;
|
|
328
|
+
if (m.approval === undefined)
|
|
329
|
+
return {
|
|
330
|
+
problem: "headline-approval",
|
|
331
|
+
measurement: m.id,
|
|
332
|
+
why: "missing",
|
|
333
|
+
author,
|
|
334
|
+
};
|
|
335
|
+
return author === null || m.approval.by === author
|
|
336
|
+
? null
|
|
337
|
+
: {
|
|
338
|
+
problem: "headline-approval",
|
|
339
|
+
measurement: m.id,
|
|
340
|
+
why: "not-author",
|
|
341
|
+
by: m.approval.by,
|
|
342
|
+
author,
|
|
343
|
+
};
|
|
344
|
+
};
|
|
345
|
+
/** What is wrong with one measurement: no study, a requirement not held, a headline not approved. */
|
|
346
|
+
const judgeMeasurement = (r, m) => {
|
|
347
|
+
const approval = headlineApproval(r, m);
|
|
348
|
+
return [
|
|
349
|
+
...(r.studies.some((s) => s.measurement === m.id)
|
|
350
|
+
? []
|
|
351
|
+
: [{ problem: "empty-measurement", measurement: m.id }]),
|
|
352
|
+
...(m.requirements ?? [])
|
|
353
|
+
.filter((id) => !(r.requirements ?? []).some((q) => q.id === id))
|
|
354
|
+
.map((requirement) => ({
|
|
355
|
+
problem: "unknown-requirement",
|
|
356
|
+
measurement: m.id,
|
|
357
|
+
requirement,
|
|
358
|
+
})),
|
|
359
|
+
...(approval === null ? [] : [approval]),
|
|
360
|
+
];
|
|
361
|
+
};
|
|
154
362
|
/** What is wrong with a row, in a fixed order. */
|
|
155
363
|
const judgeRow = (row) => ROW_CHECKS.map((check) => check(row)).filter((f) => f !== null);
|
|
156
364
|
/** Whether the README's index is the one `r` generates; the finding when not. */
|
|
157
|
-
function judgeIndex(r, readme) {
|
|
365
|
+
function judgeIndex(r, readme, plans) {
|
|
158
366
|
if (readme === null)
|
|
159
367
|
return { problem: "stale-index", why: "no-readme" };
|
|
160
368
|
const block = embeddedIndex(readme);
|
|
161
369
|
if (block === null)
|
|
162
370
|
return { problem: "stale-index", why: "no-markers" };
|
|
163
|
-
return indexInSync(readme, r)
|
|
371
|
+
return indexInSync(readme, r, { plans, history: new Map() })
|
|
164
372
|
? null
|
|
165
373
|
: { problem: "stale-index", why: "differs" };
|
|
166
374
|
}
|
|
@@ -178,7 +386,7 @@ export function judgeStudies(input) {
|
|
|
178
386
|
return [{ problem: "unreadable", why: state.why }];
|
|
179
387
|
const r = state.registry;
|
|
180
388
|
const next = nextStudyId(r);
|
|
181
|
-
const index = judgeIndex(r, input.readme);
|
|
389
|
+
const index = judgeIndex(r, input.readme, input.plans);
|
|
182
390
|
return [
|
|
183
391
|
...input.folders
|
|
184
392
|
.filter((f) => !r.studies.some((s) => s.folder === f))
|
|
@@ -188,21 +396,50 @@ export function judgeStudies(input) {
|
|
|
188
396
|
next,
|
|
189
397
|
})),
|
|
190
398
|
...r.studies.flatMap((s, i) => judgeRow({ r, s, i, input })),
|
|
399
|
+
...(r.measurements ?? []).flatMap((m) => judgeMeasurement(r, m)),
|
|
191
400
|
...(index === null ? [] : [index]),
|
|
192
401
|
];
|
|
193
402
|
}
|
|
194
403
|
// ── the index ─────────────────────────────────────────────────────────────────────
|
|
195
404
|
/** A cell's text: one line, a backslash and then a pipe escaped, so `a\\|b` stays one cell. */
|
|
196
405
|
const cell = (s) => s.replace(/\r?\n/gu, " ").replace(/\\/gu, "\\\\").replace(/\|/gu, "\\|");
|
|
197
|
-
/** The
|
|
406
|
+
/** The mode the plan of `s` declares; null when it names none, or the plan is absent or unreadable. */
|
|
407
|
+
const declaredMode = (s, plans) => {
|
|
408
|
+
const state = s.plan !== undefined && isInside(s.plan)
|
|
409
|
+
? plans.get(`${s.folder}/${s.plan}`)
|
|
410
|
+
: undefined;
|
|
411
|
+
return state === undefined ||
|
|
412
|
+
state.kind === "absent" ||
|
|
413
|
+
state.kind === "unreadable"
|
|
414
|
+
? null
|
|
415
|
+
: (state.plan.mode ?? null);
|
|
416
|
+
};
|
|
417
|
+
/** What the index shows of `s` beyond its row. */
|
|
418
|
+
const factsOf = (s, at) => ({
|
|
419
|
+
mode: declaredMode(s, at.plans),
|
|
420
|
+
history: at.history.get(s.id) ?? null,
|
|
421
|
+
});
|
|
422
|
+
/**
|
|
423
|
+
* The columns of the index: each one's header, its cell for a study, and whether git's history is
|
|
424
|
+
* where the cell comes from — those two are never compared (src/domain/index-columns.ts).
|
|
425
|
+
*/
|
|
198
426
|
const COLUMNS = [
|
|
199
|
-
{ head: "id", of: (s) => s.id },
|
|
200
|
-
{ head: "title", of: (s) => cell(s.title) },
|
|
201
|
-
{ head: "status", of: (s) => s.status },
|
|
202
|
-
{ head: "result", of: (s) => cell(s.result ?? "—") },
|
|
203
|
-
{ head: "in paper", of: (s) => s.in_paper },
|
|
204
|
-
{ head: "
|
|
427
|
+
{ head: "id", of: (s) => s.id, fromGit: false },
|
|
428
|
+
{ head: "title", of: (s) => cell(s.title), fromGit: false },
|
|
429
|
+
{ head: "status", of: (s) => s.status, fromGit: false },
|
|
430
|
+
{ head: "result", of: (s) => cell(s.result ?? "—"), fromGit: false },
|
|
431
|
+
{ head: "in paper", of: (s) => s.in_paper, fromGit: false },
|
|
432
|
+
{ head: "mode", of: (_, f) => cell(modeCell(f)), fromGit: false },
|
|
433
|
+
{ head: "decision", of: (_, f) => decisionCell(f), fromGit: true },
|
|
434
|
+
{ head: "first output", of: (_, f) => firstOutputCell(f), fromGit: true },
|
|
435
|
+
{
|
|
436
|
+
head: "folder",
|
|
437
|
+
of: (s) => `[${s.folder}/](${s.folder}/)`,
|
|
438
|
+
fromGit: false,
|
|
439
|
+
},
|
|
205
440
|
];
|
|
441
|
+
/** The positions of the columns read from git: left out when an index is compared. */
|
|
442
|
+
const FROM_GIT = COLUMNS.flatMap((c, i) => (c.fromGit ? [i] : []));
|
|
206
443
|
/** The width a cell takes: its code points. */
|
|
207
444
|
const widthOf = (s) => Array.from(s).length;
|
|
208
445
|
/** `t` padded to `width`. */
|
|
@@ -212,16 +449,17 @@ const padded = (t, width) => t + " ".repeat(width - widthOf(t));
|
|
|
212
449
|
* widest cell (at least 3), the way prettier writes a table — so formatting the README leaves it as
|
|
213
450
|
* it is.
|
|
214
451
|
*/
|
|
215
|
-
export function studyIndex(r) {
|
|
452
|
+
export function studyIndex(r, at) {
|
|
453
|
+
const studies = r.studies.map((s) => ({ s, f: factsOf(s, at) }));
|
|
216
454
|
const sized = COLUMNS.map((c) => ({
|
|
217
455
|
...c,
|
|
218
|
-
width: Math.max(3, widthOf(c.head), ...
|
|
456
|
+
width: Math.max(3, widthOf(c.head), ...studies.map(({ s, f }) => widthOf(c.of(s, f)))),
|
|
219
457
|
}));
|
|
220
458
|
const line = (cells) => `| ${cells.join(" | ")} |`;
|
|
221
459
|
return [
|
|
222
460
|
line(sized.map((c) => padded(c.head, c.width))),
|
|
223
461
|
line(sized.map((c) => "-".repeat(c.width))),
|
|
224
|
-
...
|
|
462
|
+
...studies.map(({ s, f }) => line(sized.map((c) => padded(c.of(s, f), c.width)))),
|
|
225
463
|
].join("\n");
|
|
226
464
|
}
|
|
227
465
|
/**
|
|
@@ -229,7 +467,7 @@ export function studyIndex(r) {
|
|
|
229
467
|
* `---`. The index is judged on this, because the padding belongs to the formatter: prettier sizes a
|
|
230
468
|
* column by display width, so a wide character pads differently from a code-point count.
|
|
231
469
|
*/
|
|
232
|
-
const cellsOf = (table) => table
|
|
470
|
+
const cellsOf = (table, skip) => table
|
|
233
471
|
.trim()
|
|
234
472
|
.split("\n")
|
|
235
473
|
.map((line) => line
|
|
@@ -237,15 +475,26 @@ const cellsOf = (table) => table
|
|
|
237
475
|
.replace(/^\||\|$/gu, "")
|
|
238
476
|
.split(/(?<!\\)\|/u)
|
|
239
477
|
.map((c) => c.trim().replace(/^:?-{3,}:?$/u, "---"))
|
|
478
|
+
.filter((_, i) => !skip.includes(i))
|
|
240
479
|
.join("|"))
|
|
241
480
|
.join("\n");
|
|
242
|
-
/** Whether `readme` holds the index of `r
|
|
243
|
-
|
|
481
|
+
/** Whether `readme` holds the index of `r` in every column but those at `skip`, whatever its padding. */
|
|
482
|
+
const sameCells = (readme, index, skip) => {
|
|
244
483
|
const block = readme === null ? null : embeddedIndex(readme);
|
|
245
|
-
return block !== null && cellsOf(block) === cellsOf(
|
|
246
|
-
}
|
|
484
|
+
return block !== null && cellsOf(block, skip) === cellsOf(index, skip);
|
|
485
|
+
};
|
|
486
|
+
/**
|
|
487
|
+
* Whether `readme` holds the index of `r`, whatever padding a formatter gave its table and whatever
|
|
488
|
+
* its two columns read from git say: what `repro/study-registered` checks.
|
|
489
|
+
*/
|
|
490
|
+
export const indexInSync = (readme, r, at) => sameCells(readme, studyIndex(r, at), FROM_GIT);
|
|
491
|
+
/**
|
|
492
|
+
* Whether `readme` holds the index of `r` in every column, whatever its padding: when it does,
|
|
493
|
+
* `studies index` leaves the README as it is, so the padding a formatter gave the table stays.
|
|
494
|
+
*/
|
|
495
|
+
export const indexCurrent = (readme, r, at) => sameCells(readme, studyIndex(r, at), []);
|
|
247
496
|
/** The index between its markers, a blank line on each side. */
|
|
248
|
-
export const indexBlock = (r) => `${INDEX_BEGIN}\n\n${studyIndex(r)}\n\n${INDEX_END}`;
|
|
497
|
+
export const indexBlock = (r, at) => `${INDEX_BEGIN}\n\n${studyIndex(r, at)}\n\n${INDEX_END}`;
|
|
249
498
|
/**
|
|
250
499
|
* Where `marker` stands alone on a line of `text`, at or after `from`; -1 when it does not. A marker
|
|
251
500
|
* counts only there, where the generator writes it: prose can mention it and a cell can carry it, but
|
|
@@ -266,15 +515,16 @@ export function embeddedIndex(readme) {
|
|
|
266
515
|
* `readme` with its index regenerated from `r`: the block replaced in place, appended when the README
|
|
267
516
|
* has none, a README of its own when there is none.
|
|
268
517
|
*/
|
|
269
|
-
export function withIndex(readme, r) {
|
|
518
|
+
export function withIndex(readme, r, at) {
|
|
519
|
+
const fresh = indexBlock(r, at);
|
|
270
520
|
if (readme === null)
|
|
271
|
-
return `${INDEX_HEADING}\n\n${
|
|
521
|
+
return `${INDEX_HEADING}\n\n${fresh}\n`;
|
|
272
522
|
const block = embeddedIndex(readme);
|
|
273
523
|
if (block === null)
|
|
274
|
-
return `${readme.trimEnd()}\n\n${
|
|
524
|
+
return `${readme.trimEnd()}\n\n${fresh}\n`;
|
|
275
525
|
const begin = markerAt(readme, INDEX_BEGIN);
|
|
276
526
|
const after = begin + INDEX_BEGIN.length + block.length + INDEX_END.length;
|
|
277
|
-
return `${readme.slice(0, begin)}${
|
|
527
|
+
return `${readme.slice(0, begin)}${fresh}${readme.slice(after)}`;
|
|
278
528
|
}
|
|
279
529
|
/** The registry's text as `paperlint studies new` writes it: JSON, two-space indented, a final newline. */
|
|
280
530
|
export const registryText = (r) => `${JSON.stringify(r, null, 2)}\n`;
|
|
@@ -284,6 +534,13 @@ const NEW_STUDY = '`npx paperlint studies new <paper-dir> "<title>"`';
|
|
|
284
534
|
const RUN_INDEX = "What to do: run `npx paperlint studies index <paper-dir>`; the block is generated, never edited by hand.";
|
|
285
535
|
const RENAME = "give each other row the next free id and rename its folder to match";
|
|
286
536
|
const tick = (s) => `\`${s}\``;
|
|
537
|
+
/** `a`, `b` and `c`: names in backticks, the last joined by "and". */
|
|
538
|
+
const listed = (names) => {
|
|
539
|
+
const t = names.map(tick);
|
|
540
|
+
return [t.slice(0, -1).join(", "), ...t.slice(-1)]
|
|
541
|
+
.filter((part) => part !== "")
|
|
542
|
+
.join(" and ");
|
|
543
|
+
};
|
|
287
544
|
const STALE_HEAD = {
|
|
288
545
|
differs: `The index in \`repro/README.md\` (between the \`studies:begin\` and \`studies:end\` markers) is not the one ${REGISTRY} generates.`,
|
|
289
546
|
"no-markers": "`repro/README.md` has no index of the studies (the `studies:begin` and `studies:end` markers).",
|
|
@@ -304,11 +561,47 @@ const HEADS = {
|
|
|
304
561
|
"result-file": (f) => `${REGISTRY}: the \`result_file\` of ${tick(f.id)}, ${tick(f.path)}, ${f.why === "missing" ? "is not a file in its folder" : "is outside its folder"}. What to do: name a file that exists, relative to the study's folder.`,
|
|
305
562
|
"no-successor": (f) => `${REGISTRY}: ${tick(f.id)} is \`superseded\` ${f.superseded_by === null ? "without `superseded_by`" : `by ${tick(f.superseded_by)}, which is no study in the registry`}. What to do: name the id of the study that replaced it.`,
|
|
306
563
|
"stale-index": (f) => `${STALE_HEAD[f.why]} ${RUN_INDEX}`,
|
|
564
|
+
"unknown-measurement": (f) => `${REGISTRY}: the row ${tick(f.id)} names the measurement ${tick(f.measurement)}, which is not in \`measurements\`. What to do: add the measurement to \`measurements\`, or correct the row's \`measurement\`.`,
|
|
565
|
+
"empty-measurement": (f) => `${REGISTRY}: no row names the measurement ${tick(f.measurement)}, and a measurement is made of studies. What to do: set \`"measurement": "${f.measurement}"\` on the rows of its studies, or remove the measurement.`,
|
|
566
|
+
"unknown-requirement": (f) => `${REGISTRY}: the measurement ${tick(f.measurement)} must meet the requirement ${tick(f.requirement)}, which is not in \`requirements\`. What to do: add the requirement — the author's words verbatim in \`text\`, with its \`date\` and \`source\` — or correct the measurement's \`requirements\`.`,
|
|
567
|
+
"headline-approval": (f) => f.why === "missing"
|
|
568
|
+
? `${REGISTRY}: the measurement ${tick(f.measurement)} is a \`headline\` one and has no \`approval\`. What to do: record ${f.author === null ? "the author's approval" : `the approval of ${f.author}, the registry's \`author\``} — \`by\`, \`date\`, and their words in \`quote\` — or make it a \`baseline\`.`
|
|
569
|
+
: `${REGISTRY}: the measurement ${tick(f.measurement)} is a \`headline\` one, and its \`approval\` is by ${f.by}, not by the registry's \`author\`, ${f.author}. What to do: only the author approves a headline measurement; record their own approval.`,
|
|
570
|
+
"bad-plan": (f) => {
|
|
571
|
+
const of = `the \`plan\` of ${tick(f.id)}, ${tick(f.path)},`;
|
|
572
|
+
const plan = `The plan of ${tick(f.id)}, ${tick(f.path)} in its folder,`;
|
|
573
|
+
switch (f.why) {
|
|
574
|
+
case "missing":
|
|
575
|
+
return `${REGISTRY}: ${of} is not a file in its folder. What to do: write the plan there (its fields are on the rule's page), or correct the row's \`plan\`.`;
|
|
576
|
+
case "outside":
|
|
577
|
+
return `${REGISTRY}: ${of} is outside its folder. What to do: keep the plan in the study's folder, as \`${PLAN_FILE}\`, and name it relative to the folder.`;
|
|
578
|
+
case "unreadable":
|
|
579
|
+
return `${plan} is not a study plan: ${f.reasons}. What to do: give it the fields on the rule's page — \`question\`, \`population\`, \`arms\`, \`primary_outcome\`, and for a measurement its \`mode\`.`;
|
|
580
|
+
case "unfilled":
|
|
581
|
+
return `${plan} leaves ${listed(f.fields)} empty, and the study is ${tick(f.status)}: a plan is written before the runs. What to do: fill them in, or set the study back to \`designing\`.`;
|
|
582
|
+
}
|
|
583
|
+
},
|
|
584
|
+
"author-check": (f) => {
|
|
585
|
+
const head = `${tick(f.id)} is ${tick(f.status)} in the headline measurement ${tick(f.measurement)}, and`;
|
|
586
|
+
switch (f.why) {
|
|
587
|
+
case "no-plan":
|
|
588
|
+
return `${head} its row names no plan to hold the author's check of the drawn units. What to do: write its plan (\`${PLAN_FILE}\` in its folder, named in the row's \`plan\`) with \`author_check\` — \`by\`, \`date\`, and the author's words in \`quote\`.`;
|
|
589
|
+
case "missing":
|
|
590
|
+
return `${head} its plan has no \`author_check\`. What to do: show the author the drawn units, then record their answer in the plan's \`author_check\` — \`by\`, \`date\`, and their words in \`quote\`.`;
|
|
591
|
+
case "not-author":
|
|
592
|
+
return `${head} the \`author_check\` in its plan is by ${f.by}, not by the registry's \`author\`, ${f.author}. What to do: only the author approves the drawn units of a headline measurement; record their own answer.`;
|
|
593
|
+
}
|
|
594
|
+
},
|
|
595
|
+
"legacy-plan": (f) => `The plan of ${tick(f.id)} is ${tick(f.path)}, its old name; it is read as the plan. What to do: rename it to \`${PLAN_FILE}\` in the study's folder (\`git mv\`) and set the row's \`plan\` to \`${PLAN_FILE}\`.`,
|
|
307
596
|
};
|
|
308
597
|
/** The head of finding `f` of problem `p`: the lookup, typed by the problem. */
|
|
309
598
|
const headOf = (p, f) => HEADS[p](f);
|
|
599
|
+
/** The rule that reports finding `f`. */
|
|
600
|
+
const ruleOf = (f) => PLAN_NAME_PROBLEMS.includes(f.problem)
|
|
601
|
+
? "repro/study-plan-name"
|
|
602
|
+
: "repro/study-registered";
|
|
310
603
|
/** The one text a finding is reported with: what is wrong, what to do, and the rule's page. */
|
|
311
|
-
export const studyMessage = (f) => `${headOf(f.problem, f)}\nRule
|
|
604
|
+
export const studyMessage = (f) => `${headOf(f.problem, f)}\nRule ${ruleOf(f)}: https://github.com/zernie/paperlint/blob/main/docs/rules/${ruleOf(f)}.md`;
|
|
312
605
|
// ── a new study ───────────────────────────────────────────────────────────────────
|
|
313
606
|
/** Whether `s` names a kind of study. */
|
|
314
607
|
export const isStudyKind = (s) => STUDY_KINDS.some((k) => k === s);
|
|
@@ -325,7 +618,7 @@ function titleProblem(title) {
|
|
|
325
618
|
}
|
|
326
619
|
/**
|
|
327
620
|
* `r` with a new study appended: the next id, the folder `<id>-<slug>`, `status: designing`,
|
|
328
|
-
* `in_paper: no
|
|
621
|
+
* `in_paper: no`, an empty question and its plan, `plan.json`; or why the title cannot make one.
|
|
329
622
|
*/
|
|
330
623
|
export function addStudy(r, n) {
|
|
331
624
|
const title = n.title.trim().replace(/\s+/gu, " ");
|
|
@@ -342,6 +635,7 @@ export function addStudy(r, n) {
|
|
|
342
635
|
status: "designing",
|
|
343
636
|
date: n.date,
|
|
344
637
|
in_paper: "no",
|
|
638
|
+
plan: PLAN_FILE,
|
|
345
639
|
};
|
|
346
640
|
return {
|
|
347
641
|
ok: true,
|
|
@@ -361,6 +655,10 @@ export const studyReadme = (s) => [
|
|
|
361
655
|
`Its row in \`../${STUDIES_FILE}\` holds its status. When the study ends, set \`status\`, \`result\`,`,
|
|
362
656
|
"`result_file` and `in_paper` there, then run `npx paperlint studies index <paper-dir>`.",
|
|
363
657
|
"",
|
|
658
|
+
`Its plan is \`${PLAN_FILE}\`: what it measures, the population and the draw, the arms and the primary`,
|
|
659
|
+
"outcome, filled in before the first run; the author's check of the drawn units goes in its",
|
|
660
|
+
"`author_check`.",
|
|
661
|
+
"",
|
|
364
662
|
"## Question",
|
|
365
663
|
"",
|
|
366
664
|
"## How to run",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"study-registry.js","sourceRoot":"","sources":["../../src/domain/study-registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"study-registry.js","sourceRoot":"","sources":["../../src/domain/study-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type StudyDeps } from "./study-modes.ts";
|
|
2
|
+
import { type DecideFirstStudy } from "./domain/decide-first.ts";
|
|
3
|
+
import type { FolderRuleModule } from "./folder-venue-rule.ts";
|
|
4
|
+
import type { GitOrder } from "./ports/git-history.ts";
|
|
5
|
+
/** What the rule reads with: the registry's, and git's order. */
|
|
6
|
+
export interface OrderDeps extends StudyDeps {
|
|
7
|
+
readonly git: GitOrder;
|
|
8
|
+
}
|
|
9
|
+
/** Every decide-first study of the paper folder `paper`, with its tree and its history's order. */
|
|
10
|
+
export declare const decideFirstStudies: (paper: string, deps: OrderDeps) => readonly DecideFirstStudy[];
|
|
11
|
+
/** The rule, reading the folder and git through `deps`. */
|
|
12
|
+
export declare const outputsBeforeDecisionRules: (deps: OrderDeps) => Readonly<Record<"outputs-before-decision", FolderRuleModule>>;
|
|
13
|
+
/** Its level in paperlint's own config: an error. */
|
|
14
|
+
export declare const ORDER_RULE_LEVELS: Readonly<{
|
|
15
|
+
"repro/outputs-before-decision": "error";
|
|
16
|
+
}>;
|
|
17
|
+
//# sourceMappingURL=outputs-before-decision-rule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outputs-before-decision-rule.d.ts","sourceRoot":"","sources":["../src/outputs-before-decision-rule.ts"],"names":[],"mappings":"AAiBA,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAGL,KAAK,gBAAgB,EAEtB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAKvD,iEAAiE;AACjE,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;CACxB;AAED,mGAAmG;AACnG,eAAO,MAAM,kBAAkB,GAC7B,OAAO,MAAM,EACb,MAAM,SAAS,KACd,SAAS,gBAAgB,EAoBxB,CAAC;AAiCL,2DAA2D;AAC3D,eAAO,MAAM,0BAA0B,GACrC,MAAM,SAAS,KACd,QAAQ,CAAC,MAAM,CAAC,yBAAyB,EAAE,gBAAgB,CAAC,CAc7D,CAAC;AAEH,qDAAqD;AACrD,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC;IACvC,+BAA+B,EAAE,OAAO,CAAC;CAC1C,CAAgD,CAAC"}
|