paperlint 10.3.0 → 10.4.1
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/CLAUDE.md.spec.d.ts.map +1 -1
- package/dist/CLAUDE.md.spec.js +6 -3
- package/dist/CLAUDE.md.spec.js.map +1 -1
- 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/latex/captions.d.ts +9 -0
- package/dist/adapters/latex/captions.d.ts.map +1 -0
- package/dist/adapters/latex/captions.js +40 -0
- package/dist/adapters/latex/captions.js.map +1 -0
- package/dist/adapters/latex/index.d.ts +1 -0
- package/dist/adapters/latex/index.d.ts.map +1 -1
- package/dist/adapters/latex/index.js +1 -0
- package/dist/adapters/latex/index.js.map +1 -1
- package/dist/adapters/latex/parse.d.ts.map +1 -1
- package/dist/adapters/latex/parse.js +6 -0
- package/dist/adapters/latex/parse.js.map +1 -1
- 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 +26 -0
- package/dist/adapters/node/list-entries.io.js.map +1 -0
- package/dist/adapters/study-registry/index.d.ts +70 -10
- package/dist/adapters/study-registry/index.d.ts.map +1 -1
- package/dist/adapters/study-registry/index.js +84 -10
- package/dist/adapters/study-registry/index.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +33 -3
- package/dist/cli.js.map +1 -1
- package/dist/domain/decide-first.d.ts +110 -0
- package/dist/domain/decide-first.d.ts.map +1 -0
- package/dist/domain/decide-first.js +108 -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 +64 -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 +116 -12
- package/dist/domain/study-registry.d.ts.map +1 -1
- package/dist/domain/study-registry.js +164 -44
- 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 +94 -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 +20 -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-deps.d.ts +14 -0
- package/dist/ports/study-deps.d.ts.map +1 -0
- package/dist/ports/study-deps.js +2 -0
- package/dist/ports/study-deps.js.map +1 -0
- package/dist/ports/study-folder.d.ts +43 -0
- package/dist/ports/study-folder.d.ts.map +1 -0
- package/dist/ports/study-folder.js +2 -0
- package/dist/ports/study-folder.js.map +1 -0
- package/dist/ports/study-registry-codec.d.ts +6 -3
- package/dist/ports/study-registry-codec.d.ts.map +1 -1
- package/dist/presets.d.ts +1 -2
- package/dist/presets.d.ts.map +1 -1
- package/dist/presets.js +1 -2
- package/dist/presets.js.map +1 -1
- package/dist/studies.d.ts +4 -0
- package/dist/studies.d.ts.map +1 -1
- package/dist/studies.js +52 -21
- package/dist/studies.js.map +1 -1
- package/dist/study-folder.d.ts +14 -0
- package/dist/study-folder.d.ts.map +1 -0
- package/dist/study-folder.js +123 -0
- package/dist/study-folder.js.map +1 -0
- package/dist/study-gate.d.ts +14 -0
- package/dist/study-gate.d.ts.map +1 -0
- package/dist/study-gate.js +132 -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 +18 -0
- package/dist/study-index-input.js.map +1 -0
- package/dist/study-modes.d.ts +56 -0
- package/dist/study-modes.d.ts.map +1 -0
- package/dist/study-modes.js +59 -0
- package/dist/study-modes.js.map +1 -0
- package/dist/study-registry-rule.d.ts +13 -1
- package/dist/study-registry-rule.d.ts.map +1 -1
- package/dist/study-registry-rule.js +33 -21
- 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 +265 -0
- package/docs/design/study-registry.md +6 -0
- package/docs/e2e.md +8 -4
- package/docs/layout.md +22 -19
- package/docs/rules/repro/outputs-before-decision.md +122 -0
- package/docs/rules/repro/study-registered.md +49 -15
- package/docs/rules/tex/heading-case.md +1 -1
- package/docs/rules.md +54 -53
- package/docs/testing.md +1 -0
- package/eslint.config.mjs +36 -24
- package/package.json +2 -1
- package/scripts/check.ts +6 -0
- 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/grade-paper-writing/SKILL.md +4 -2
- package/skills/grade-paper-writing/SKILL.md.spec.ts +3 -1
- package/skills/grade-paper-writing/__snapshots__/prose-lint.test.ts.snap +16 -3
- package/skills/grade-paper-writing/prose-lint.mjs +127 -95
- package/skills/grade-paper-writing/prose-lint.test.ts +119 -10
- 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/tighten-paper/SKILL.md +5 -1
- package/skills/tighten-paper/SKILL.md.spec.ts +4 -0
- package/src/CLAUDE.md +7 -4
- package/src/CLAUDE.md.spec.ts +6 -3
- 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/latex/captions.test.ts +57 -0
- package/src/adapters/latex/captions.ts +56 -0
- package/src/adapters/latex/index.ts +1 -0
- package/src/adapters/latex/parse.ts +7 -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 +27 -0
- package/src/adapters/node/list-entries.test.ts +61 -0
- package/src/adapters/study-registry/index.test.ts +12 -9
- package/src/adapters/study-registry/index.ts +130 -24
- package/src/adapters/study-registry/mode.test.ts +162 -0
- package/src/cli.ts +47 -3
- package/src/domain/decide-first.test.ts +291 -0
- package/src/domain/decide-first.ts +258 -0
- package/src/domain/index-columns.test.ts +261 -0
- package/src/domain/index-columns.ts +107 -0
- package/src/domain/study-measurements.test.ts +16 -8
- package/src/domain/study-mode.test.ts +55 -0
- package/src/domain/study-mode.ts +78 -0
- package/src/domain/study-registry.test.ts +72 -37
- package/src/domain/study-registry.ts +281 -50
- package/src/new-paper.test.ts +5 -1
- package/src/outputs-before-decision-rule.test.ts +251 -0
- package/src/outputs-before-decision-rule.ts +133 -0
- package/src/ports/git-history.ts +44 -0
- package/src/ports/list-entries.ts +21 -0
- package/src/ports/study-deps.ts +14 -0
- package/src/ports/study-folder.ts +38 -0
- package/src/ports/study-registry-codec.ts +10 -3
- package/src/presets.ts +1 -2
- package/src/rule-cases.test.ts +78 -3
- package/src/studies-index-modes.test.ts +129 -0
- package/src/studies.test.ts +35 -11
- package/src/studies.ts +96 -26
- package/src/study-folder.test.ts +237 -0
- package/src/study-folder.ts +176 -0
- package/src/study-gate.test.ts +467 -0
- package/src/study-gate.ts +234 -0
- package/src/study-index-input.ts +31 -0
- package/src/study-modes.ts +107 -0
- package/src/study-registry-rule.test.ts +285 -11
- package/src/study-registry-rule.ts +64 -35
- package/src/study-run.ts +21 -0
|
@@ -12,9 +12,14 @@
|
|
|
12
12
|
* Its texts may be empty — the template's are — and the parser says which: a plan comes out ready or
|
|
13
13
|
* a draft naming its empty texts, so nothing downstream looks at a text again. A plan still named
|
|
14
14
|
* `prereg.json` has a loose schema of its own.
|
|
15
|
+
*
|
|
16
|
+
* A plan's `mode` (docs/design/study-modes.md) is parsed here too, strictly, a union on its `kind`:
|
|
17
|
+
* one mode at most, a glob that leaves the study's folder or a decision outside the paper refused,
|
|
18
|
+
* and a measurement's plan ready only with a mode.
|
|
15
19
|
*/
|
|
16
20
|
import { z } from "zod";
|
|
17
|
-
import { type Approval, type AuthorCheck, type Measurement, type ParsedPlan, type ParsedRegistry, type Requirement, type Study, type StudyPlan, type StudyRegistry } from "../../domain/study-registry.ts";
|
|
21
|
+
import { type Approval, type AuthorCheck, type Measurement, type ParsedPlan, type ParsedRegistry, type Requirement, type Study, type PlanTextField, type StudyKind, type StudyPlan, type StudyRegistry } from "../../domain/study-registry.ts";
|
|
22
|
+
import { type Decision, type StudyMode } from "../../domain/study-mode.ts";
|
|
18
23
|
import type { StudyRegistryCodec } from "../../ports/study-registry-codec.ts";
|
|
19
24
|
declare const study: z.ZodObject<{
|
|
20
25
|
id: z.ZodString;
|
|
@@ -141,6 +146,22 @@ declare const authorCheck: z.ZodObject<{
|
|
|
141
146
|
date: z.ZodISODate;
|
|
142
147
|
quote: z.ZodString;
|
|
143
148
|
}, z.core.$strict>;
|
|
149
|
+
declare const decisionShape: z.ZodObject<{
|
|
150
|
+
file: z.ZodString;
|
|
151
|
+
note: z.ZodString;
|
|
152
|
+
}, z.core.$strict>;
|
|
153
|
+
/** How the outcomes are kept from the decisions: exactly one mode, by its `kind`. */
|
|
154
|
+
declare const mode: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
155
|
+
kind: z.ZodLiteral<"decide_before_run">;
|
|
156
|
+
outputs: z.ZodArray<z.ZodString>;
|
|
157
|
+
decision: z.ZodObject<{
|
|
158
|
+
file: z.ZodString;
|
|
159
|
+
note: z.ZodString;
|
|
160
|
+
}, z.core.$strict>;
|
|
161
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
162
|
+
kind: z.ZodLiteral<"exploratory">;
|
|
163
|
+
reason: z.ZodString;
|
|
164
|
+
}, z.core.$strict>], "kind">;
|
|
144
165
|
/** A plan's shape: closed at every level; the paper's own keys go in `extra`. Null is the one "none". */
|
|
145
166
|
declare const planShape: z.ZodObject<{
|
|
146
167
|
question: z.ZodString;
|
|
@@ -165,6 +186,17 @@ declare const planShape: z.ZodObject<{
|
|
|
165
186
|
quote: z.ZodString;
|
|
166
187
|
}, z.core.$strict>>;
|
|
167
188
|
extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
189
|
+
mode: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
190
|
+
kind: z.ZodLiteral<"decide_before_run">;
|
|
191
|
+
outputs: z.ZodArray<z.ZodString>;
|
|
192
|
+
decision: z.ZodObject<{
|
|
193
|
+
file: z.ZodString;
|
|
194
|
+
note: z.ZodString;
|
|
195
|
+
}, z.core.$strict>;
|
|
196
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
197
|
+
kind: z.ZodLiteral<"exploratory">;
|
|
198
|
+
reason: z.ZodString;
|
|
199
|
+
}, z.core.$strict>], "kind">>;
|
|
168
200
|
}, z.core.$strict>;
|
|
169
201
|
/**
|
|
170
202
|
* A plan under its old name, `prereg.json`, written by hand before the plan had a schema: open at
|
|
@@ -216,8 +248,8 @@ declare const legacyAsPlan: z.ZodPipe<z.ZodObject<{
|
|
|
216
248
|
type ReadyOrDraft = Exclude<ParsedPlan, {
|
|
217
249
|
readonly kind: "unreadable";
|
|
218
250
|
}>;
|
|
219
|
-
/** A `plan.json`: strict, then ready or draft. */
|
|
220
|
-
declare const
|
|
251
|
+
/** A `plan.json` of a study of `kind`: strict, then ready or draft — a measurement's ready only with its mode. */
|
|
252
|
+
declare const planFor: (kind: StudyKind) => z.ZodPipe<z.ZodObject<{
|
|
221
253
|
question: z.ZodString;
|
|
222
254
|
population: z.ZodObject<{
|
|
223
255
|
source: z.ZodString;
|
|
@@ -240,13 +272,24 @@ declare const plan: z.ZodPipe<z.ZodObject<{
|
|
|
240
272
|
quote: z.ZodString;
|
|
241
273
|
}, z.core.$strict>>;
|
|
242
274
|
extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
275
|
+
mode: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
276
|
+
kind: z.ZodLiteral<"decide_before_run">;
|
|
277
|
+
outputs: z.ZodArray<z.ZodString>;
|
|
278
|
+
decision: z.ZodObject<{
|
|
279
|
+
file: z.ZodString;
|
|
280
|
+
note: z.ZodString;
|
|
281
|
+
}, z.core.$strict>;
|
|
282
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
283
|
+
kind: z.ZodLiteral<"exploratory">;
|
|
284
|
+
reason: z.ZodString;
|
|
285
|
+
}, z.core.$strict>], "kind">>;
|
|
243
286
|
}, z.core.$strict>, z.ZodTransform<{
|
|
244
287
|
readonly kind: "ready";
|
|
245
288
|
readonly plan: StudyPlan;
|
|
246
289
|
} | {
|
|
247
290
|
readonly kind: "draft";
|
|
248
291
|
readonly plan: import("../../domain/study-registry.ts").DraftPlan;
|
|
249
|
-
readonly empty: readonly
|
|
292
|
+
readonly empty: readonly PlanTextField[];
|
|
250
293
|
}, {
|
|
251
294
|
question: string;
|
|
252
295
|
population: {
|
|
@@ -270,8 +313,23 @@ declare const plan: z.ZodPipe<z.ZodObject<{
|
|
|
270
313
|
quote: string;
|
|
271
314
|
} | null;
|
|
272
315
|
extra?: Record<string, unknown> | undefined;
|
|
316
|
+
mode?: {
|
|
317
|
+
kind: "decide_before_run";
|
|
318
|
+
outputs: string[];
|
|
319
|
+
decision: {
|
|
320
|
+
file: string;
|
|
321
|
+
note: string;
|
|
322
|
+
};
|
|
323
|
+
} | {
|
|
324
|
+
kind: "exploratory";
|
|
325
|
+
reason: string;
|
|
326
|
+
} | undefined;
|
|
273
327
|
}>>;
|
|
274
|
-
/**
|
|
328
|
+
/**
|
|
329
|
+
* A `prereg.json`: loose, mapped onto the plan, then ready or draft. Written before modes existed, it
|
|
330
|
+
* is never asked for one; `repro/study-plan-name` already asks to move it to `plan.json`, where the
|
|
331
|
+
* strict parser does.
|
|
332
|
+
*/
|
|
275
333
|
declare const legacyPlan: z.ZodPipe<z.ZodPipe<z.ZodObject<{
|
|
276
334
|
question: z.ZodString;
|
|
277
335
|
population: z.ZodObject<{
|
|
@@ -318,7 +376,7 @@ declare const legacyPlan: z.ZodPipe<z.ZodPipe<z.ZodObject<{
|
|
|
318
376
|
} | {
|
|
319
377
|
readonly kind: "draft";
|
|
320
378
|
readonly plan: import("../../domain/study-registry.ts").DraftPlan;
|
|
321
|
-
readonly empty: readonly
|
|
379
|
+
readonly empty: readonly PlanTextField[];
|
|
322
380
|
}, StudyPlan>>;
|
|
323
381
|
/** `T`, readonly all the way down: zod's outputs are mutable, the domain's are not. */
|
|
324
382
|
type Frozen<T> = T extends readonly (infer U)[] ? readonly Frozen<U>[] : T extends object ? {
|
|
@@ -341,15 +399,17 @@ export type SchemasAreTheDomain = [
|
|
|
341
399
|
Same<z.output<typeof authorCheck>, AuthorCheck>,
|
|
342
400
|
Same<z.output<typeof planShape>, StudyPlan>,
|
|
343
401
|
Same<z.output<typeof legacyAsPlan>, StudyPlan>,
|
|
344
|
-
Same<z.output<typeof
|
|
345
|
-
Same<z.output<typeof legacyPlan>, ReadyOrDraft
|
|
402
|
+
Same<z.output<ReturnType<typeof planFor>>, ReadyOrDraft>,
|
|
403
|
+
Same<z.output<typeof legacyPlan>, ReadyOrDraft>,
|
|
404
|
+
Same<z.output<typeof mode>, StudyMode>,
|
|
405
|
+
Same<z.output<typeof decisionShape>, Decision>
|
|
346
406
|
] extends true[] ? true : never;
|
|
347
407
|
/** The proof is used, so the build checks it. */
|
|
348
408
|
export declare const SCHEMAS_ARE_THE_DOMAIN: SchemasAreTheDomain;
|
|
349
409
|
/** A `studies.json`'s text, parsed once at the boundary: the registry, or every reason it is not one. */
|
|
350
410
|
export declare function parseStudyRegistry(text: string): ParsedRegistry;
|
|
351
|
-
/** A `plan.json`: strict. */
|
|
352
|
-
export declare const parseStudyPlan: (text: string) => ParsedPlan;
|
|
411
|
+
/** A `plan.json` of a study of `kind`: strict. */
|
|
412
|
+
export declare const parseStudyPlan: (text: string, kind: StudyKind) => ParsedPlan;
|
|
353
413
|
/** A plan still named `prereg.json`: loose, read only when a row names it. */
|
|
354
414
|
export declare const parseLegacyPlan: (text: string) => ParsedPlan;
|
|
355
415
|
export declare const studyRegistryCodec: StudyRegistryCodec;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/study-registry/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/study-registry/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,9 +12,15 @@
|
|
|
12
12
|
* Its texts may be empty — the template's are — and the parser says which: a plan comes out ready or
|
|
13
13
|
* a draft naming its empty texts, so nothing downstream looks at a text again. A plan still named
|
|
14
14
|
* `prereg.json` has a loose schema of its own.
|
|
15
|
+
*
|
|
16
|
+
* A plan's `mode` (docs/design/study-modes.md) is parsed here too, strictly, a union on its `kind`:
|
|
17
|
+
* one mode at most, a glob that leaves the study's folder or a decision outside the paper refused,
|
|
18
|
+
* and a measurement's plan ready only with a mode.
|
|
15
19
|
*/
|
|
16
20
|
import { z } from "zod";
|
|
21
|
+
import { README } from "../../domain/repro-layout.js";
|
|
17
22
|
import { IN_PAPER, MEASUREMENT_ROLES, PLAN_FIELDS, PLAN_TEXT_FIELDS, PREFIX_PATTERN, STUDY_KINDS, STUDY_STATUSES, } from "../../domain/study-registry.js";
|
|
23
|
+
import { needsMode, } from "../../domain/study-mode.js";
|
|
18
24
|
const study = z.looseObject({
|
|
19
25
|
id: z.string(),
|
|
20
26
|
folder: z.string(),
|
|
@@ -95,6 +101,48 @@ const extra = z.record(z.string(), z.unknown()).superRefine((e, ctx) => {
|
|
|
95
101
|
});
|
|
96
102
|
});
|
|
97
103
|
});
|
|
104
|
+
/** Every value of `values` once: a repeat is an error naming it. */
|
|
105
|
+
const once = (what) => (values, ctx) => {
|
|
106
|
+
repeated(values).forEach((v) => {
|
|
107
|
+
ctx.addIssue({
|
|
108
|
+
code: "custom",
|
|
109
|
+
message: `${what} «${v}» is listed more than once`,
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
};
|
|
113
|
+
/** Whether `p` is a relative path that stays where it starts: no backslash, not absolute, no `..`. */
|
|
114
|
+
const staysInside = (p) => !p.includes("\\") && !p.startsWith("/") && !p.split("/").includes("..");
|
|
115
|
+
/** An output glob, relative to the study's folder: inside it, and never the study's README. */
|
|
116
|
+
const inFolder = z
|
|
117
|
+
.string()
|
|
118
|
+
.min(1)
|
|
119
|
+
.refine((p) => staysInside(p) && p !== README, `is not a path inside the study's folder, or names its ${README}`);
|
|
120
|
+
/**
|
|
121
|
+
* Whether `p` names a file by one or more names joined by `/`, none empty, `.` or `..`: never the
|
|
122
|
+
* paper's folder itself (`.`) nor a path ending in `/`. Whether a name is a directory on disk is the
|
|
123
|
+
* gate's and the order rule's to see.
|
|
124
|
+
*/
|
|
125
|
+
const namesAFile = (p) => p.split("/").every((n) => n !== "" && n !== "." && n !== "..");
|
|
126
|
+
/**
|
|
127
|
+
* A decision file, relative to the PAPER's folder: inside it, and a file's path. Empty in a draft (the
|
|
128
|
+
* parser names it).
|
|
129
|
+
*/
|
|
130
|
+
const inPaper = z
|
|
131
|
+
.string()
|
|
132
|
+
.refine(staysInside, "is not a path inside the paper's folder")
|
|
133
|
+
.refine((p) => p === "" || !staysInside(p) || namesAFile(p), "is not a path to a file inside the paper's folder: one or more names joined by /, none empty, . or ..");
|
|
134
|
+
const decisionShape = z.strictObject({ file: inPaper, note: z.string() });
|
|
135
|
+
/** The output globs: each once; none yet in a draft. */
|
|
136
|
+
const outputs = z.array(inFolder).superRefine(once("the output"));
|
|
137
|
+
/** How the outcomes are kept from the decisions: exactly one mode, by its `kind`. */
|
|
138
|
+
const mode = z.discriminatedUnion("kind", [
|
|
139
|
+
z.strictObject({
|
|
140
|
+
kind: z.literal("decide_before_run"),
|
|
141
|
+
outputs,
|
|
142
|
+
decision: decisionShape,
|
|
143
|
+
}),
|
|
144
|
+
z.strictObject({ kind: z.literal("exploratory"), reason: z.string() }),
|
|
145
|
+
]);
|
|
98
146
|
/** A plan's shape: closed at every level; the paper's own keys go in `extra`. Null is the one "none". */
|
|
99
147
|
const planShape = z.strictObject({
|
|
100
148
|
question: z.string(),
|
|
@@ -103,6 +151,7 @@ const planShape = z.strictObject({
|
|
|
103
151
|
primary_outcome: z.string(),
|
|
104
152
|
author_check: authorCheck.nullable(),
|
|
105
153
|
extra: extra.optional(),
|
|
154
|
+
mode: mode.optional(),
|
|
106
155
|
});
|
|
107
156
|
/**
|
|
108
157
|
* A plan under its old name, `prereg.json`, written by hand before the plan had a schema: open at
|
|
@@ -151,16 +200,37 @@ const readyTexts = z.object({
|
|
|
151
200
|
}),
|
|
152
201
|
primary_outcome: filled,
|
|
153
202
|
});
|
|
203
|
+
/** Whether `t` says something. */
|
|
204
|
+
const says = (t) => /\S/u.test(t);
|
|
205
|
+
/**
|
|
206
|
+
* The mode's texts that are still empty, by their field: the mode itself when a study of `kind` must
|
|
207
|
+
* declare one and the plan does not, a decide-first mode's outputs and decision, an exploratory reason.
|
|
208
|
+
*/
|
|
209
|
+
const modeEmpties = (p, kind) => {
|
|
210
|
+
const m = p.mode;
|
|
211
|
+
if (m === undefined)
|
|
212
|
+
return needsMode(kind) ? ["mode"] : [];
|
|
213
|
+
if (m.kind === "exploratory")
|
|
214
|
+
return says(m.reason) ? [] : ["mode.reason"];
|
|
215
|
+
return PLAN_TEXT_FIELDS.filter((f) => (f === "mode.outputs" && m.outputs.length === 0) ||
|
|
216
|
+
(f === "mode.decision.file" && !says(m.decision.file)) ||
|
|
217
|
+
(f === "mode.decision.note" && !says(m.decision.note)));
|
|
218
|
+
};
|
|
154
219
|
/**
|
|
155
220
|
* A parsed plan, ready when every required text is filled, else a draft naming the empty ones. A
|
|
156
221
|
* draft that carries the author's check is no plan: the author approved one with empty texts.
|
|
157
222
|
*/
|
|
158
|
-
const readyOrDraft = (p, ctx) => {
|
|
223
|
+
const readyOrDraft = (kind) => (p, ctx) => {
|
|
159
224
|
const checked = readyTexts.safeParse(p);
|
|
160
|
-
|
|
225
|
+
const paths = checked.success
|
|
226
|
+
? []
|
|
227
|
+
: checked.error.issues.map((i) => i.path.join("."));
|
|
228
|
+
const empty = [
|
|
229
|
+
...PLAN_TEXT_FIELDS.filter((f) => paths.includes(f)),
|
|
230
|
+
...modeEmpties(p, kind),
|
|
231
|
+
];
|
|
232
|
+
if (empty.length === 0)
|
|
161
233
|
return { kind: "ready", plan: p };
|
|
162
|
-
const paths = checked.error.issues.map((i) => i.path.join("."));
|
|
163
|
-
const empty = PLAN_TEXT_FIELDS.filter((f) => paths.includes(f));
|
|
164
234
|
if (p.author_check === null)
|
|
165
235
|
return { kind: "draft", plan: { ...p, author_check: null }, empty };
|
|
166
236
|
ctx.addIssue({
|
|
@@ -170,10 +240,14 @@ const readyOrDraft = (p, ctx) => {
|
|
|
170
240
|
});
|
|
171
241
|
return z.NEVER;
|
|
172
242
|
};
|
|
173
|
-
/** A `plan.json`: strict, then ready or draft. */
|
|
174
|
-
const
|
|
175
|
-
/**
|
|
176
|
-
|
|
243
|
+
/** A `plan.json` of a study of `kind`: strict, then ready or draft — a measurement's ready only with its mode. */
|
|
244
|
+
const planFor = (kind) => planShape.transform(readyOrDraft(kind));
|
|
245
|
+
/**
|
|
246
|
+
* A `prereg.json`: loose, mapped onto the plan, then ready or draft. Written before modes existed, it
|
|
247
|
+
* is never asked for one; `repro/study-plan-name` already asks to move it to `plan.json`, where the
|
|
248
|
+
* strict parser does.
|
|
249
|
+
*/
|
|
250
|
+
const legacyPlan = legacyAsPlan.transform(readyOrDraft("spike"));
|
|
177
251
|
/** The proof is used, so the build checks it. */
|
|
178
252
|
export const SCHEMAS_ARE_THE_DOMAIN = true;
|
|
179
253
|
/** The JSON `text` holds, or undefined when it is not JSON. */
|
|
@@ -209,8 +283,8 @@ const planParser = (schema) => (text) => {
|
|
|
209
283
|
? parsed.data
|
|
210
284
|
: { kind: "unreadable", why: reasons(parsed.error.issues) };
|
|
211
285
|
};
|
|
212
|
-
/** A `plan.json`: strict. */
|
|
213
|
-
export const parseStudyPlan = planParser(
|
|
286
|
+
/** A `plan.json` of a study of `kind`: strict. */
|
|
287
|
+
export const parseStudyPlan = (text, kind) => planParser(planFor(kind))(text);
|
|
214
288
|
/** A plan still named `prereg.json`: loose, read only when a row names it. */
|
|
215
289
|
export const parseLegacyPlan = planParser(legacyPlan);
|
|
216
290
|
export const studyRegistryCodec = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/study-registry/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/study-registry/index.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAS7C,OAAO,EAAE,MAAM,EAAE,MAAM,+CAA+C,CAAC;AAEvE,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAapE,OAAO,EAAyB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAwDrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAoBnE,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAGL,IAAI,EAEL,MAAM,WAAW,CAAC;AACnB,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,gBAAgB,CAAC;AAYxB,OAAO,EAKL,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,SAAS,EAEf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,IAAI,EAAE,CAAC;AAChB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -89,6 +89,9 @@ import { folderLayoutHook } from "./folder-layout-hook.js";
|
|
|
89
89
|
import { REPRO_LAYOUT_RULE_LEVELS, reproLayoutRules, } from "./repro-layout-rule.js";
|
|
90
90
|
import { STUDY_REGISTRY_RULE_LEVELS, studyRegistryRules, } from "./study-registry-rule.js";
|
|
91
91
|
import { studyRegistryCodec } from "./adapters/study-registry/index.js";
|
|
92
|
+
import { nodeListEntries, spawnProcess } from "./adapters/node/index.js";
|
|
93
|
+
import { gitHistory } from "./adapters/git/index.js";
|
|
94
|
+
import { ORDER_RULE_LEVELS, outputsBeforeDecisionRules, } from "./outputs-before-decision-rule.js";
|
|
92
95
|
import { runStudies } from "./studies.js";
|
|
93
96
|
import typography from "#eslint-rules/paper-typography";
|
|
94
97
|
import texBuild from "#eslint-rules/tex-build";
|
|
@@ -140,6 +143,11 @@ const USAGE = `paperlint — machine-checkable gates for a paper kept in git
|
|
|
140
143
|
index in repro/README.md regenerated
|
|
141
144
|
npx paperlint studies index <paper-dir>
|
|
142
145
|
regenerate the index in repro/README.md from repro/studies.json
|
|
146
|
+
npx paperlint studies gate <paper-dir> <id>
|
|
147
|
+
may the study's run start? For a study decided before its run
|
|
148
|
+
(the default mode), exit 0 only once its decision file is
|
|
149
|
+
committed as it stands, printing the commit and date; else exit
|
|
150
|
+
1 saying why. A runner calls it first: gate … && ./run.sh
|
|
143
151
|
npx paperlint hook <name> run an editor hook (.claude/settings.json calls this)
|
|
144
152
|
npx paperlint --help
|
|
145
153
|
|
|
@@ -164,7 +172,10 @@ studies:
|
|
|
164
172
|
--kind <kind> new: measurement (the default), spike, tooling, data, artifact or salvage.
|
|
165
173
|
A study's status, result and in_paper are edited in repro/studies.json, its
|
|
166
174
|
plan in its plan.json; the rule repro/study-registered checks them
|
|
167
|
-
(docs/rules/repro/study-registered.md)
|
|
175
|
+
(docs/rules/repro/study-registered.md). A measurement's plan declares its
|
|
176
|
+
mode: decide_before_run (written by new) or exploratory;
|
|
177
|
+
repro/outputs-before-decision checks the order in git
|
|
178
|
+
(docs/design/study-modes.md)
|
|
168
179
|
|
|
169
180
|
submission:
|
|
170
181
|
The venue preset declares the portal — "portal": { "kind": "hotcrp", "url": "<site>" } — and the
|
|
@@ -272,18 +283,30 @@ const FRAGMENT_RULES = {
|
|
|
272
283
|
"future-promise": texBuild["future-promise"],
|
|
273
284
|
"heading-case": REGISTER_AND_CASE_RULES["heading-case"],
|
|
274
285
|
};
|
|
286
|
+
/** `names` of this process's environment, and nothing else of it. */
|
|
287
|
+
const envOf = (names) => (env) => Object.fromEntries(Object.entries(env).filter((e) => names.includes(e[0]) && e[1] !== undefined));
|
|
288
|
+
/** The environment git runs in: PATH, and HOME for its configuration. */
|
|
289
|
+
const gitEnv = envOf(["PATH", "HOME"]);
|
|
290
|
+
/** git's history, as the decide-first rule and the gate read it. */
|
|
291
|
+
const GIT = gitHistory(spawnProcess(), gitEnv(process.env));
|
|
275
292
|
/** What the two layout rules read with: the disk and its directory listings. */
|
|
276
293
|
const LAYOUT_RULE_DEPS = { files: nodeFiles, listDir: nodeListDir };
|
|
277
294
|
/** What `repro/study-registered` and `paperlint studies` read with: the layout's, and the registry's parser. */
|
|
278
|
-
const STUDY_RULE_DEPS = {
|
|
295
|
+
const STUDY_RULE_DEPS = {
|
|
296
|
+
...LAYOUT_RULE_DEPS,
|
|
297
|
+
entries: nodeListEntries,
|
|
298
|
+
codec: studyRegistryCodec,
|
|
299
|
+
};
|
|
279
300
|
/** The `repro` plugin's rules, on every `PIPELINE-STATUS.md`: the layout of `repro/`, and its study registry. */
|
|
280
301
|
const REPRO_RULES = {
|
|
281
302
|
...reproLayoutRules(LAYOUT_RULE_DEPS),
|
|
282
303
|
...studyRegistryRules(STUDY_RULE_DEPS),
|
|
304
|
+
...outputsBeforeDecisionRules({ ...STUDY_RULE_DEPS, git: GIT }),
|
|
283
305
|
};
|
|
284
306
|
const REPRO_RULE_LEVELS = {
|
|
285
307
|
...REPRO_LAYOUT_RULE_LEVELS,
|
|
286
308
|
...STUDY_REGISTRY_RULE_LEVELS,
|
|
309
|
+
...ORDER_RULE_LEVELS,
|
|
287
310
|
};
|
|
288
311
|
/** Today in this machine's time zone, `YYYY-MM-DD`: the date `paperlint studies new` registers a study on. */
|
|
289
312
|
const today = (now = new Date()) => [
|
|
@@ -1285,7 +1308,14 @@ const SIMPLE = {
|
|
|
1285
1308
|
title: a.paths[2],
|
|
1286
1309
|
extra: a.paths.slice(3),
|
|
1287
1310
|
kind: a.kind,
|
|
1288
|
-
}, {
|
|
1311
|
+
}, {
|
|
1312
|
+
...STUDY_RULE_DEPS,
|
|
1313
|
+
git: GIT,
|
|
1314
|
+
cwd,
|
|
1315
|
+
today: today(),
|
|
1316
|
+
log,
|
|
1317
|
+
err,
|
|
1318
|
+
}),
|
|
1289
1319
|
submission: (a, { log, err, cwd }) => runSubmission({
|
|
1290
1320
|
sub: a.paths[0],
|
|
1291
1321
|
paperDir: a.paths[1] ?? ".",
|