daftari 1.30.0 → 1.32.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/CHANGELOG.md +176 -0
- package/README.md +188 -4
- package/dist/access/rbac.d.ts +1 -0
- package/dist/access/rbac.d.ts.map +1 -1
- package/dist/access/rbac.js +7 -0
- package/dist/access/rbac.js.map +1 -1
- package/dist/audit/checks/broken_refs.d.ts +1 -1
- package/dist/audit/checks/broken_refs.d.ts.map +1 -1
- package/dist/audit/checks/broken_refs.js +77 -22
- package/dist/audit/checks/broken_refs.js.map +1 -1
- package/dist/audit/collect.d.ts +1 -0
- package/dist/audit/collect.d.ts.map +1 -1
- package/dist/audit/collect.js +22 -2
- package/dist/audit/collect.js.map +1 -1
- package/dist/audit/index.d.ts.map +1 -1
- package/dist/audit/index.js +9 -3
- package/dist/audit/index.js.map +1 -1
- package/dist/audit/links.d.ts.map +1 -1
- package/dist/audit/links.js +9 -3
- package/dist/audit/links.js.map +1 -1
- package/dist/audit/report.d.ts.map +1 -1
- package/dist/audit/report.js +2 -0
- package/dist/audit/report.js.map +1 -1
- package/dist/audit/types.d.ts +4 -1
- package/dist/audit/types.d.ts.map +1 -1
- package/dist/audit/types.js.map +1 -1
- package/dist/backfill/derive.d.ts.map +1 -1
- package/dist/backfill/derive.js +1 -0
- package/dist/backfill/derive.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +24 -0
- package/dist/cli.js.map +1 -1
- package/dist/consolidate/index.d.ts.map +1 -1
- package/dist/consolidate/index.js +10 -12
- package/dist/consolidate/index.js.map +1 -1
- package/dist/court/precedent.d.ts.map +1 -1
- package/dist/court/precedent.js +6 -1
- package/dist/court/precedent.js.map +1 -1
- package/dist/curation/consumes.d.ts +24 -0
- package/dist/curation/consumes.d.ts.map +1 -0
- package/dist/curation/consumes.js +122 -0
- package/dist/curation/consumes.js.map +1 -0
- package/dist/curation/edge-staleness.d.ts +47 -0
- package/dist/curation/edge-staleness.d.ts.map +1 -0
- package/dist/curation/edge-staleness.js +258 -0
- package/dist/curation/edge-staleness.js.map +1 -0
- package/dist/curation/edges.d.ts.map +1 -1
- package/dist/curation/edges.js +190 -17
- package/dist/curation/edges.js.map +1 -1
- package/dist/curation/lint.d.ts +6 -1
- package/dist/curation/lint.d.ts.map +1 -1
- package/dist/curation/lint.js +87 -24
- package/dist/curation/lint.js.map +1 -1
- package/dist/curation/provenance.d.ts +2 -0
- package/dist/curation/provenance.d.ts.map +1 -1
- package/dist/curation/provenance.js +2 -0
- package/dist/curation/provenance.js.map +1 -1
- package/dist/curation/read-log.d.ts +19 -0
- package/dist/curation/read-log.d.ts.map +1 -0
- package/dist/curation/read-log.js +120 -0
- package/dist/curation/read-log.js.map +1 -0
- package/dist/curation/review-throughput.d.ts +24 -0
- package/dist/curation/review-throughput.d.ts.map +1 -0
- package/dist/curation/review-throughput.js +102 -0
- package/dist/curation/review-throughput.js.map +1 -0
- package/dist/curation/shadow.d.ts +1 -0
- package/dist/curation/shadow.d.ts.map +1 -1
- package/dist/curation/shadow.js +17 -11
- package/dist/curation/shadow.js.map +1 -1
- package/dist/curation/staged-actions.d.ts +12 -1
- package/dist/curation/staged-actions.d.ts.map +1 -1
- package/dist/curation/staged-actions.js +123 -48
- package/dist/curation/staged-actions.js.map +1 -1
- package/dist/curation/structural.d.ts +16 -0
- package/dist/curation/structural.d.ts.map +1 -0
- package/dist/curation/structural.js +64 -0
- package/dist/curation/structural.js.map +1 -0
- package/dist/curation/tension-blast.d.ts +4 -0
- package/dist/curation/tension-blast.d.ts.map +1 -1
- package/dist/curation/tension-blast.js +9 -0
- package/dist/curation/tension-blast.js.map +1 -1
- package/dist/curation/tension.d.ts +5 -2
- package/dist/curation/tension.d.ts.map +1 -1
- package/dist/curation/tension.js +68 -25
- package/dist/curation/tension.js.map +1 -1
- package/dist/curation/tier0.d.ts +27 -0
- package/dist/curation/tier0.d.ts.map +1 -0
- package/dist/curation/tier0.js +196 -0
- package/dist/curation/tier0.js.map +1 -0
- package/dist/curation/tier1.d.ts +30 -0
- package/dist/curation/tier1.d.ts.map +1 -0
- package/dist/curation/tier1.js +142 -0
- package/dist/curation/tier1.js.map +1 -0
- package/dist/curation/tier2.d.ts +43 -0
- package/dist/curation/tier2.d.ts.map +1 -0
- package/dist/curation/tier2.js +182 -0
- package/dist/curation/tier2.js.map +1 -0
- package/dist/curation/vault-docs.d.ts +5 -1
- package/dist/curation/vault-docs.d.ts.map +1 -1
- package/dist/curation/vault-docs.js +14 -0
- package/dist/curation/vault-docs.js.map +1 -1
- package/dist/eval/generate.d.ts.map +1 -1
- package/dist/eval/generate.js +38 -5
- package/dist/eval/generate.js.map +1 -1
- package/dist/eval/index.d.ts +1 -0
- package/dist/eval/index.d.ts.map +1 -1
- package/dist/eval/index.js +249 -50
- package/dist/eval/index.js.map +1 -1
- package/dist/eval/llm-openrouter.d.ts.map +1 -1
- package/dist/eval/llm-openrouter.js +158 -65
- package/dist/eval/llm-openrouter.js.map +1 -1
- package/dist/eval/llm.js +1 -1
- package/dist/eval/llm.js.map +1 -1
- package/dist/eval/prune.d.ts +24 -0
- package/dist/eval/prune.d.ts.map +1 -0
- package/dist/eval/prune.js +83 -0
- package/dist/eval/prune.js.map +1 -0
- package/dist/eval/storage.d.ts +3 -0
- package/dist/eval/storage.d.ts.map +1 -1
- package/dist/eval/storage.js +14 -0
- package/dist/eval/storage.js.map +1 -1
- package/dist/frontmatter/schema.d.ts.map +1 -1
- package/dist/frontmatter/schema.js +19 -1
- package/dist/frontmatter/schema.js.map +1 -1
- package/dist/frontmatter/types.d.ts +4 -1
- package/dist/frontmatter/types.d.ts.map +1 -1
- package/dist/frontmatter/types.js +8 -0
- package/dist/frontmatter/types.js.map +1 -1
- package/dist/import/index.d.ts.map +1 -1
- package/dist/import/index.js +44 -9
- package/dist/import/index.js.map +1 -1
- package/dist/import/langgraph-store.d.ts +53 -0
- package/dist/import/langgraph-store.d.ts.map +1 -0
- package/dist/import/langgraph-store.js +292 -0
- package/dist/import/langgraph-store.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +56 -18
- package/dist/index.js.map +1 -1
- package/dist/interview/index.d.ts +7 -0
- package/dist/interview/index.d.ts.map +1 -0
- package/dist/interview/index.js +219 -0
- package/dist/interview/index.js.map +1 -0
- package/dist/interview/questions.d.ts +18 -0
- package/dist/interview/questions.d.ts.map +1 -0
- package/dist/interview/questions.js +169 -0
- package/dist/interview/questions.js.map +1 -0
- package/dist/interview/transcript.d.ts +23 -0
- package/dist/interview/transcript.d.ts.map +1 -0
- package/dist/interview/transcript.js +155 -0
- package/dist/interview/transcript.js.map +1 -0
- package/dist/lifecycle/lock.d.ts +9 -1
- package/dist/lifecycle/lock.d.ts.map +1 -1
- package/dist/lifecycle/lock.js +34 -9
- package/dist/lifecycle/lock.js.map +1 -1
- package/dist/okf/export.d.ts +12 -0
- package/dist/okf/export.d.ts.map +1 -0
- package/dist/okf/export.js +117 -0
- package/dist/okf/export.js.map +1 -0
- package/dist/okf/import.d.ts +24 -0
- package/dist/okf/import.d.ts.map +1 -0
- package/dist/okf/import.js +115 -0
- package/dist/okf/import.js.map +1 -0
- package/dist/okf/index.d.ts +2 -0
- package/dist/okf/index.d.ts.map +1 -0
- package/dist/okf/index.js +159 -0
- package/dist/okf/index.js.map +1 -0
- package/dist/okf/map.d.ts +27 -0
- package/dist/okf/map.d.ts.map +1 -0
- package/dist/okf/map.js +327 -0
- package/dist/okf/map.js.map +1 -0
- package/dist/okf/types.d.ts +13 -0
- package/dist/okf/types.d.ts.map +1 -0
- package/dist/okf/types.js +82 -0
- package/dist/okf/types.js.map +1 -0
- package/dist/search/coverage.d.ts.map +1 -1
- package/dist/search/coverage.js +1 -1
- package/dist/search/coverage.js.map +1 -1
- package/dist/search/hybrid.d.ts +19 -0
- package/dist/search/hybrid.d.ts.map +1 -1
- package/dist/search/hybrid.js +60 -15
- package/dist/search/hybrid.js.map +1 -1
- package/dist/search/reindex.d.ts +4 -0
- package/dist/search/reindex.d.ts.map +1 -1
- package/dist/search/reindex.js +64 -14
- package/dist/search/reindex.js.map +1 -1
- package/dist/search/watcher.d.ts +2 -0
- package/dist/search/watcher.d.ts.map +1 -1
- package/dist/search/watcher.js +29 -27
- package/dist/search/watcher.js.map +1 -1
- package/dist/serve/index.d.ts +36 -0
- package/dist/serve/index.d.ts.map +1 -0
- package/dist/serve/index.js +507 -0
- package/dist/serve/index.js.map +1 -0
- package/dist/server.d.ts +10 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +89 -14
- package/dist/server.js.map +1 -1
- package/dist/sleep/index.d.ts +2 -0
- package/dist/sleep/index.d.ts.map +1 -1
- package/dist/sleep/index.js +212 -21
- package/dist/sleep/index.js.map +1 -1
- package/dist/sleep/report.d.ts +3 -0
- package/dist/sleep/report.d.ts.map +1 -1
- package/dist/sleep/report.js +52 -0
- package/dist/sleep/report.js.map +1 -1
- package/dist/sleep/tension-scan-state.d.ts +19 -0
- package/dist/sleep/tension-scan-state.d.ts.map +1 -0
- package/dist/sleep/tension-scan-state.js +0 -0
- package/dist/sleep/tension-scan-state.js.map +1 -0
- package/dist/sleep/tension-scan.d.ts +44 -0
- package/dist/sleep/tension-scan.d.ts.map +1 -0
- package/dist/sleep/tension-scan.js +0 -0
- package/dist/sleep/tension-scan.js.map +1 -0
- package/dist/storage/backend.d.ts +12 -0
- package/dist/storage/backend.d.ts.map +1 -0
- package/dist/storage/backend.js +231 -0
- package/dist/storage/backend.js.map +1 -0
- package/dist/storage/backends/fs.d.ts +4 -0
- package/dist/storage/backends/fs.d.ts.map +1 -0
- package/dist/storage/backends/fs.js +99 -0
- package/dist/storage/backends/fs.js.map +1 -0
- package/dist/storage/fs-walk.d.ts +5 -0
- package/dist/storage/fs-walk.d.ts.map +1 -0
- package/dist/storage/fs-walk.js +28 -0
- package/dist/storage/fs-walk.js.map +1 -0
- package/dist/storage/index-db.d.ts +16 -0
- package/dist/storage/index-db.d.ts.map +1 -1
- package/dist/storage/index-db.js +95 -5
- package/dist/storage/index-db.js.map +1 -1
- package/dist/storage/local.d.ts +1 -0
- package/dist/storage/local.d.ts.map +1 -1
- package/dist/storage/local.js +12 -0
- package/dist/storage/local.js.map +1 -1
- package/dist/storage/sync.d.ts +25 -0
- package/dist/storage/sync.d.ts.map +1 -0
- package/dist/storage/sync.js +308 -0
- package/dist/storage/sync.js.map +1 -0
- package/dist/sync/index.d.ts +2 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +136 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/themes/clustering.d.ts +6 -11
- package/dist/themes/clustering.d.ts.map +1 -1
- package/dist/themes/clustering.js +76 -84
- package/dist/themes/clustering.js.map +1 -1
- package/dist/tools/consumes.d.ts +14 -0
- package/dist/tools/consumes.d.ts.map +1 -0
- package/dist/tools/consumes.js +99 -0
- package/dist/tools/consumes.js.map +1 -0
- package/dist/tools/curation.d.ts +2 -0
- package/dist/tools/curation.d.ts.map +1 -1
- package/dist/tools/curation.js +53 -15
- package/dist/tools/curation.js.map +1 -1
- package/dist/tools/edge-staleness.d.ts +28 -0
- package/dist/tools/edge-staleness.d.ts.map +1 -0
- package/dist/tools/edge-staleness.js +205 -0
- package/dist/tools/edge-staleness.js.map +1 -0
- package/dist/tools/edges.d.ts.map +1 -1
- package/dist/tools/edges.js +27 -21
- package/dist/tools/edges.js.map +1 -1
- package/dist/tools/read.d.ts +15 -1
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/read.js +211 -76
- package/dist/tools/read.js.map +1 -1
- package/dist/tools/receipt.d.ts.map +1 -1
- package/dist/tools/receipt.js +16 -7
- package/dist/tools/receipt.js.map +1 -1
- package/dist/tools/search.d.ts +1 -0
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +147 -5
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/staged-actions.d.ts +3 -0
- package/dist/tools/staged-actions.d.ts.map +1 -1
- package/dist/tools/staged-actions.js +225 -22
- package/dist/tools/staged-actions.js.map +1 -1
- package/dist/tools/themes.d.ts +8 -0
- package/dist/tools/themes.d.ts.map +1 -1
- package/dist/tools/themes.js +208 -122
- package/dist/tools/themes.js.map +1 -1
- package/dist/tools/tier1.d.ts +14 -0
- package/dist/tools/tier1.d.ts.map +1 -0
- package/dist/tools/tier1.js +169 -0
- package/dist/tools/tier1.js.map +1 -0
- package/dist/tools/tier2.d.ts +27 -0
- package/dist/tools/tier2.d.ts.map +1 -0
- package/dist/tools/tier2.js +344 -0
- package/dist/tools/tier2.js.map +1 -0
- package/dist/tools/write.d.ts +9 -1
- package/dist/tools/write.d.ts.map +1 -1
- package/dist/tools/write.js +596 -174
- package/dist/tools/write.js.map +1 -1
- package/dist/utils/config.d.ts +52 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +394 -24
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/dates.d.ts +1 -0
- package/dist/utils/dates.d.ts.map +1 -1
- package/dist/utils/dates.js +5 -0
- package/dist/utils/dates.js.map +1 -1
- package/dist/utils/run-id.d.ts +3 -0
- package/dist/utils/run-id.d.ts.map +1 -0
- package/dist/utils/run-id.js +19 -0
- package/dist/utils/run-id.js.map +1 -0
- package/dist/utils/vault-gitignore.d.ts +1 -1
- package/dist/utils/vault-gitignore.d.ts.map +1 -1
- package/dist/utils/vault-gitignore.js +4 -1
- package/dist/utils/vault-gitignore.js.map +1 -1
- package/package.json +21 -1
- package/templates/config.yaml +8 -0
package/dist/curation/tension.js
CHANGED
|
@@ -17,16 +17,37 @@
|
|
|
17
17
|
// Legacy entries without a `kind` or `id` are read as `kind: "unspecified"`
|
|
18
18
|
// and have no id — they cannot be resolved through the tool. They can still
|
|
19
19
|
// be edited or re-logged.
|
|
20
|
-
import { mkdirSync } from "node:fs";
|
|
21
|
-
import {
|
|
20
|
+
import { appendFileSync, mkdirSync, readFileSync } from "node:fs";
|
|
21
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
22
22
|
import { join } from "node:path";
|
|
23
23
|
import { err, ok } from "../frontmatter/types.js";
|
|
24
24
|
import { ageInDays } from "./staleness.js";
|
|
25
25
|
export const DEFAULT_TENSION_STATUS = "unresolved";
|
|
26
26
|
export const RESOLVED_TENSION_STATUS = "resolved";
|
|
27
|
-
|
|
27
|
+
// `inter-proposal` (#235): two pending staged actions contest the same
|
|
28
|
+
// document. Logged automatically at stage time as a self-tension on the
|
|
29
|
+
// target path (sourceA === sourceB === target), claims naming the competing
|
|
30
|
+
// proposal ids. Deterministic outcome: both proposals stay pending, neither
|
|
31
|
+
// is promoted, the conflict is surfaced here — never last-write-wins, never
|
|
32
|
+
// silent.
|
|
33
|
+
export const TENSION_KINDS = [
|
|
34
|
+
"temporal",
|
|
35
|
+
"factual",
|
|
36
|
+
"interpretive",
|
|
37
|
+
"inter-proposal",
|
|
38
|
+
"unspecified",
|
|
39
|
+
];
|
|
28
40
|
// `unspecified` is for legacy entries only — never accepted on a new log.
|
|
41
|
+
// `inter-proposal` is deliberately absent: it is system-generated by the
|
|
42
|
+
// staged-actions conflict check, not a taxonomy callers pick from —
|
|
43
|
+
// vault_tension_log's kind enum is this constant, so keeping it out keeps the
|
|
44
|
+
// kind off the public logging surface.
|
|
29
45
|
export const LOGGABLE_TENSION_KINDS = ["temporal", "factual", "interpretive"];
|
|
46
|
+
// The kinds addTension itself accepts: the caller-loggable set plus the
|
|
47
|
+
// system-generated inter-proposal kind (produced only by
|
|
48
|
+
// stageActionWithConflictCheck, always as a self-tension on the contested
|
|
49
|
+
// target).
|
|
50
|
+
const ADDABLE_TENSION_KINDS = [...LOGGABLE_TENSION_KINDS, "inter-proposal"];
|
|
30
51
|
export const RESOLUTION_KINDS = ["superseded", "corrected", "accepted", "invalid"];
|
|
31
52
|
export function tensionsPath(vaultRoot) {
|
|
32
53
|
return join(vaultRoot, ".daftari", "tensions.md");
|
|
@@ -93,33 +114,52 @@ export async function addTension(vaultRoot, input) {
|
|
|
93
114
|
return err(new Error(`addTension requires a non-empty '${field}'`));
|
|
94
115
|
}
|
|
95
116
|
}
|
|
96
|
-
if (!
|
|
97
|
-
return err(new Error(`addTension 'kind' must be one of: ${
|
|
117
|
+
if (!ADDABLE_TENSION_KINDS.includes(input.kind)) {
|
|
118
|
+
return err(new Error(`addTension 'kind' must be one of: ${ADDABLE_TENSION_KINDS.join(", ")} ` +
|
|
98
119
|
`(unspecified is for legacy entries only)`));
|
|
99
120
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
kind: input.kind,
|
|
108
|
-
sourceA: input.sourceA.trim(),
|
|
109
|
-
claimA: input.claimA.trim(),
|
|
110
|
-
sourceB: input.sourceB.trim(),
|
|
111
|
-
claimB: input.claimB.trim(),
|
|
112
|
-
status: input.status ?? DEFAULT_TENSION_STATUS,
|
|
113
|
-
loggedBy: input.loggedBy.trim(),
|
|
114
|
-
...(input.decidedByPrincipal != null && input.decidedByPrincipal.trim().length > 0
|
|
115
|
-
? { decidedByPrincipal: input.decidedByPrincipal.trim() }
|
|
116
|
-
: {}),
|
|
117
|
-
resolved: false,
|
|
118
|
-
};
|
|
121
|
+
// An inter-proposal tension is by construction a self-tension on the
|
|
122
|
+
// contested target — enforce the shape so the system-generated kind cannot
|
|
123
|
+
// be minted between arbitrary, unrelated documents.
|
|
124
|
+
if (input.kind === "inter-proposal" && input.sourceA.trim() !== input.sourceB.trim()) {
|
|
125
|
+
return err(new Error("addTension: an 'inter-proposal' tension is a self-tension — sourceA " +
|
|
126
|
+
"and sourceB must both be the contested target path"));
|
|
127
|
+
}
|
|
119
128
|
try {
|
|
120
129
|
mkdirSync(join(vaultRoot, ".daftari"), { recursive: true });
|
|
130
|
+
// Critical section (mirrors stageAction's id allocation in
|
|
131
|
+
// staged-actions.ts): read the log, allocate the next id, and append in
|
|
132
|
+
// one synchronous breath with no intervening await, so two concurrent
|
|
133
|
+
// addTension calls — e.g. the inter-proposal conflict check firing from
|
|
134
|
+
// two contending stagings, the exact scenario #235 targets — can never
|
|
135
|
+
// mint the same tension-NNN id. Per-process, which is sufficient under
|
|
136
|
+
// the one-process-per-vault rule (.daftari/process.lock).
|
|
137
|
+
let raw = "";
|
|
138
|
+
try {
|
|
139
|
+
raw = readFileSync(tensionsPath(vaultRoot), "utf-8");
|
|
140
|
+
}
|
|
141
|
+
catch (e) {
|
|
142
|
+
if (e.code !== "ENOENT")
|
|
143
|
+
throw e;
|
|
144
|
+
}
|
|
145
|
+
const entry = {
|
|
146
|
+
id: nextTensionId(parseTensionLog(raw)),
|
|
147
|
+
date: input.date ?? new Date().toISOString().slice(0, 10),
|
|
148
|
+
title: input.title.trim(),
|
|
149
|
+
kind: input.kind,
|
|
150
|
+
sourceA: input.sourceA.trim(),
|
|
151
|
+
claimA: input.claimA.trim(),
|
|
152
|
+
sourceB: input.sourceB.trim(),
|
|
153
|
+
claimB: input.claimB.trim(),
|
|
154
|
+
status: input.status ?? DEFAULT_TENSION_STATUS,
|
|
155
|
+
loggedBy: input.loggedBy.trim(),
|
|
156
|
+
...(input.decidedByPrincipal != null && input.decidedByPrincipal.trim().length > 0
|
|
157
|
+
? { decidedByPrincipal: input.decidedByPrincipal.trim() }
|
|
158
|
+
: {}),
|
|
159
|
+
resolved: false,
|
|
160
|
+
};
|
|
121
161
|
// A leading blank line keeps this block separated from the previous one.
|
|
122
|
-
|
|
162
|
+
appendFileSync(tensionsPath(vaultRoot), `\n${renderEntry(entry)}`);
|
|
123
163
|
return ok(entry);
|
|
124
164
|
}
|
|
125
165
|
catch (e) {
|
|
@@ -374,6 +414,9 @@ export const STALE_TIER_LINT_COPY = {
|
|
|
374
414
|
interpretive: "Unresolved interpretive tension — decide explicitly: `accepted` if both views stand, " +
|
|
375
415
|
"`invalid` if it was mis-logged. Long-running unacknowledged disagreement is the smell, " +
|
|
376
416
|
"not the disagreement itself.",
|
|
417
|
+
"inter-proposal": "Unresolved inter-proposal tension — competing proposals have contested the same " +
|
|
418
|
+
"document for months. Ratify one and reject the rest, or reject them all; the " +
|
|
419
|
+
"review queue is not a resolution.",
|
|
377
420
|
};
|
|
378
421
|
// Boundary inclusivity: a tension exactly 30 days old is fresh, 31 days is
|
|
379
422
|
// aging, 90 days is aging, 91 days is stale. The thresholds in the table match
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tension.js","sourceRoot":"","sources":["../../src/curation/tension.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,2EAA2E;AAC3E,2DAA2D;AAC3D,EAAE;AACF,8EAA8E;AAC9E,0EAA0E;AAC1E,cAAc;AACd,EAAE;AACF,6EAA6E;AAC7E,+EAA+E;AAC/E,uEAAuE;AACvE,qEAAqE;AACrE,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,0BAA0B;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,EAAE,EAAe,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,CAAC,MAAM,sBAAsB,GAAG,YAAY,CAAC;AACnD,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAAC;AAElD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,CAAU,CAAC;AAG7F,0EAA0E;AAC1E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,cAAc,CAAU,CAAC;AAGvF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,CAAU,CAAC;AAoC5F,MAAM,UAAU,YAAY,CAAC,SAAiB;IAC5C,OAAO,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,gBAAgB,CAAC,UAA6B;IACrD,MAAM,KAAK,GAAG;QACZ,sBAAsB,UAAU,CAAC,WAAW,EAAE;QAC9C,sBAAsB,UAAU,CAAC,WAAW,EAAE;QAC9C,0BAA0B,UAAU,CAAC,IAAI,EAAE;KAC5C,CAAC;IACF,IAAI,UAAU,CAAC,SAAS,KAAK,SAAS,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1E,KAAK,CAAC,IAAI,CAAC,oBAAoB,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,UAAU,CAAC,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5E,KAAK,CAAC,IAAI,CAAC,qBAAqB,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,2EAA2E;AAC3E,4EAA4E;AAC5E,4EAA4E;AAC5E,aAAa;AACb,SAAS,WAAW,CAAC,KAAmB;IACtC,MAAM,KAAK,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IACpD,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAChE,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa;QAAE,KAAK,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1E,KAAK,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,OAAO,SAAS,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACpE,KAAK,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,OAAO,SAAS,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACpE,KAAK,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,KAAK,CAAC,IAAI,CAAC,oBAAoB,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjD,IAAI,KAAK,CAAC,kBAAkB;QAC1B,KAAK,CAAC,IAAI,CAAC,+BAA+B,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACxE,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC;AAED,2EAA2E;AAC3E,8EAA8E;AAC9E,2EAA2E;AAC3E,yBAAyB;AACzB,SAAS,aAAa,CAAC,QAAwB;IAC7C,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,EAAE,KAAK,SAAS;YAAE,SAAS;QACjC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACxC,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC;QAC9C,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;YAAE,GAAG,GAAG,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;IACrB,OAAO,WAAW,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACpD,CAAC;AAED,2EAA2E;AAC3E,mDAAmD;AACnD,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,SAAiB,EACjB,KAAmB;IAEnB,KAAK,MAAM,KAAK,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAU,EAAE,CAAC;QAC7F,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzE,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,oCAAoC,KAAK,GAAG,CAAC,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IACD,IAAI,CAAE,sBAA4C,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACxE,OAAO,GAAG,CACR,IAAI,KAAK,CACP,qCAAqC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACvE,0CAA0C,CAC7C,CACF,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC;IAElC,MAAM,KAAK,GAAiB;QAC1B,EAAE,EAAE,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC;QACjC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QACzD,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;QACzB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;QAC7B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;QAC3B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;QAC7B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;QAC3B,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,sBAAsB;QAC9C,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE;QAC/B,GAAG,CAAC,KAAK,CAAC,kBAAkB,IAAI,IAAI,IAAI,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YAChF,CAAC,CAAC,EAAE,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE;YACzD,CAAC,CAAC,EAAE,CAAC;QACP,QAAQ,EAAE,KAAK;KAChB,CAAC;IAEF,IAAI,CAAC;QACH,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,yEAAyE;QACzE,MAAM,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,KAAK,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrE,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,MAAM,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,iCAAiC,MAAM,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED,uEAAuE;AACvE,+DAA+D;AAC/D,SAAS,eAAe,CAAC,KAAa;IACpC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,MAAM,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAC5D,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE;QACnC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE;KACpD,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,KAAK;SACT,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IACrD,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACrE,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAE9B,MAAM,KAAK,GAAiB;QAC1B,IAAI,EAAE,WAAW,CAAC,CAAC,CAAW;QAC9B,KAAK,EAAG,WAAW,CAAC,CAAC,CAAY,CAAC,IAAI,EAAE;QACxC,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,sBAAsB;QAC9B,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,KAAK;KAChB,CAAC;IAEF,6EAA6E;IAC7E,wCAAwC;IACxC,IAAI,UAA8B,CAAC;IACnC,IAAI,UAA8B,CAAC;IACnC,IAAI,cAA0C,CAAC;IAC/C,IAAI,SAA6B,CAAC;IAClC,IAAI,UAAgC,CAAC;IAErC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACpD,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,MAAM,KAAK,GAAI,CAAC,CAAC,CAAC,CAAY,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAW,CAAC;QAC7B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1B,CAAC;aAAM,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YACvB,IAAK,aAAmC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrD,KAAK,CAAC,IAAI,GAAG,CAAgB,CAAC;YAChC,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YACjC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC;YACvB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC;QACzB,CAAC;aAAM,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YACjC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC;YACvB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC;QACzB,CAAC;aAAM,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC9B,CAAC;aAAM,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;YACjC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAChC,CAAC;aAAM,IAAI,KAAK,KAAK,sBAAsB,EAAE,CAAC;YAC5C,KAAK,CAAC,kBAAkB,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1C,CAAC;aAAM,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;YACnC,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC5B,CAAC;aAAM,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;YACnC,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC5B,CAAC;aAAM,IAAI,KAAK,KAAK,iBAAiB,EAAE,CAAC;YACvC,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YACxB,IAAK,gBAAsC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;gBACzD,cAAc,GAAG,EAAoB,CAAC;YACxC,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;YACjC,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC3B,CAAC;aAAM,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;YAClC,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACzF,MAAM,UAAU,GAAsB;YACpC,WAAW,EAAE,UAAU;YACvB,WAAW,EAAE,UAAU;YACvB,IAAI,EAAE,cAAc;SACrB,CAAC;QACF,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;YAAE,UAAU,CAAC,SAAS,GAAG,SAAS,CAAC;QACtF,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;YAAE,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC;QAC1F,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;QAC9B,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,sEAAsE;AACtE,oEAAoE;AACpE,wEAAwE;AACxE,oCAAoC;AACpC,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,oDAAoD;IACpD,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,SAAS;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,KAAK;YAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,wEAAwE;AACxE,4EAA4E;AAC5E,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,SAAiB,EACjB,MAAe;IAEf,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAK,CAA2B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,4BAA4B,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACrC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC3E,CAAC;AAED,6EAA6E;AAC7E,6EAA6E;AAC7E,wEAAwE;AACxE,iEAAiE;AACjE,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,SAAiB,EACjB,EAAU,EACV,UAA6B;IAE7B,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAK,CAA2B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnD,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,MAAM,MAAM,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,4BAA4B,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,oEAAoE;IACpE,gEAAgE;IAChE,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3E,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAE3D,IAAI,OAAO,GAAwB,IAAI,CAAC;IACxC,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,UAAU,CAAE,MAAM,CAAC,CAAC,CAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE;YAAE,SAAS;QACxC,OAAO,GAAG,KAAK,CAAC;QAChB,QAAQ,GAAG,CAAC,CAAC;QACb,MAAM;IACR,CAAC;IAED,IAAI,CAAC,OAAO,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QAChC,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,gCAAgC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,OAAO,GAAiB;QAC5B,GAAG,OAAO;QACV,MAAM,EAAE,uBAAuB;QAC/B,QAAQ,EAAE,IAAI;QACd,UAAU;KACX,CAAC;IAEF,4EAA4E;IAC5E,4EAA4E;IAC5E,yEAAyE;IACzE,gCAAgC;IAChC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACpC,IAAI,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC;QAC7B,uDAAuD;QACvD,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QACtC,oEAAoE;QACpE,8DAA8D;QAC9D,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACpD,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,QAAQ,EAAE,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE3C,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/C,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,MAAM,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,6BAA6B,MAAM,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED,6EAA6E;AAC7E,EAAE;AACF,yEAAyE;AACzE,6EAA6E;AAC7E,4DAA4D;AAC5D,EAAE;AACF,4EAA4E;AAC5E,2CAA2C;AAC3C,EAAE;AACF,6BAA6B;AAC7B,6BAA6B;AAC7B,6BAA6B;AAC7B,EAAE;AACF,0DAA0D;AAC1D,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,oDAAoD;AACpD,4EAA4E;AAC5E,0EAA0E;AAC1E,8CAA8C;AAC9C,EAAE;AACF,qEAAqE;AACrE,qEAAqE;AACrE,uEAAuE;AACvE,2EAA2E;AAC3E,wDAAwD;AAExD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAU,CAAC;AAGhE,8EAA8E;AAC9E,uEAAuE;AACvE,8EAA8E;AAC9E,MAAM,CAAC,MAAM,oBAAoB,GAAwD;IACvF,QAAQ,EAAE,2EAA2E;IACrF,OAAO,EAAE,qDAAqD;IAC9D,YAAY,EACV,uFAAuF;QACvF,yFAAyF;QACzF,8BAA8B;CACjC,CAAC;AAEF,2EAA2E;AAC3E,+EAA+E;AAC/E,uEAAuE;AACvE,MAAM,UAAU,SAAS,CAAC,KAAmB,EAAE,MAAY,IAAI,IAAI,EAAE;IACnE,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa;QAAE,OAAO,IAAI,CAAC;IAC9C,IAAI,KAAK,CAAC,UAAU,EAAE,IAAI,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAEvD,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACvC,IAAI,GAAG,IAAI,EAAE;QAAE,OAAO,OAAO,CAAC;IAC9B,IAAI,GAAG,IAAI,EAAE;QAAE,OAAO,OAAO,CAAC;IAC9B,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
1
|
+
{"version":3,"file":"tension.js","sourceRoot":"","sources":["../../src/curation/tension.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Status } from "../frontmatter/types.js";
|
|
2
|
+
import { type LoadedDoc } from "./vault-docs.js";
|
|
3
|
+
export declare const TIER0_LINT_CHECKS: readonly ["brokenSourceRefs", "lifecycleConflicts", "schemaInvalid", "domainLeaks"];
|
|
4
|
+
export declare const CONFLICTING_SOURCE_STATUSES: ReadonlySet<Status>;
|
|
5
|
+
export declare const EXTERNAL_REF: RegExp;
|
|
6
|
+
export interface Tier0Finding {
|
|
7
|
+
path: string;
|
|
8
|
+
detail: string;
|
|
9
|
+
}
|
|
10
|
+
export interface Tier0Findings {
|
|
11
|
+
brokenSourceRefs: Tier0Finding[];
|
|
12
|
+
lifecycleConflicts: Tier0Finding[];
|
|
13
|
+
schemaInvalid: Tier0Finding[];
|
|
14
|
+
domainLeaks: Tier0Finding[];
|
|
15
|
+
}
|
|
16
|
+
export declare function tier0Findings(docs: LoadedDoc[]): Tier0Findings;
|
|
17
|
+
export interface PromoteGateResult {
|
|
18
|
+
violations: string[];
|
|
19
|
+
hiddenConflicts: number;
|
|
20
|
+
}
|
|
21
|
+
export declare function tier0PromoteGate(docs: LoadedDoc[], targetPath: string, visible?: (doc: LoadedDoc) => boolean): PromoteGateResult;
|
|
22
|
+
export interface DeprecateGateResult {
|
|
23
|
+
dependents: string[];
|
|
24
|
+
hiddenDependents: number;
|
|
25
|
+
}
|
|
26
|
+
export declare function tier0DeprecateGate(docs: LoadedDoc[], targetPath: string, visible?: (doc: LoadedDoc) => boolean): DeprecateGateResult;
|
|
27
|
+
//# sourceMappingURL=tier0.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tier0.d.ts","sourceRoot":"","sources":["../../src/curation/tier0.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAoB,KAAK,SAAS,EAAe,MAAM,iBAAiB,CAAC;AAKhF,eAAO,MAAM,iBAAiB,qFAKpB,CAAC;AAKX,eAAO,MAAM,2BAA2B,EAAE,WAAW,CAAC,MAAM,CAI1D,CAAC;AAIH,eAAO,MAAM,YAAY,QAAwB,CAAC;AAQlD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,gBAAgB,EAAE,YAAY,EAAE,CAAC;IACjC,kBAAkB,EAAE,YAAY,EAAE,CAAC;IACnC,aAAa,EAAE,YAAY,EAAE,CAAC;IAM9B,WAAW,EAAE,YAAY,EAAE,CAAC;CAC7B;AAOD,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,aAAa,CAyE9D;AAWD,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,EAAE,CAAC;IAGrB,eAAe,EAAE,MAAM,CAAC;CACzB;AAMD,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,EAAE,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,OAAO,GACpC,iBAAiB,CAmCnB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,EAAE,CAAC;IAGrB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAMD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,SAAS,EAAE,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,OAAO,GACpC,mBAAmB,CAkBrB"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
// Tier 0 of tiered compatibility checking (#232) — quick win 1 of #236.
|
|
2
|
+
//
|
|
3
|
+
// Structure-only checks whose failures are certain, not judgment calls:
|
|
4
|
+
// referential integrity, lifecycle consistency, and schema conformance. They
|
|
5
|
+
// run off frontmatter and the declared-source graph alone — no compiled edge
|
|
6
|
+
// graph, no LLM. Per the 2026-07-17 through-line spec, these are the checks
|
|
7
|
+
// that hard verdicts are allowed for, which is why they get two enforcement
|
|
8
|
+
// surfaces:
|
|
9
|
+
//
|
|
10
|
+
// 1. vault_lint checks (advisory, like every lint check — reported, never
|
|
11
|
+
// auto-fixed).
|
|
12
|
+
// 2. The ratify gate in vault_ratify (tools/staged-actions.ts): approving a
|
|
13
|
+
// promote/deprecate that would CREATE a tier-0 violation is blocked.
|
|
14
|
+
// Ratification is already a gate, so blocking there does not violate the
|
|
15
|
+
// advisory-curation rule; the direct write tools stay unblocked.
|
|
16
|
+
//
|
|
17
|
+
// Scope discipline: referential integrity covers the TYPED dependency
|
|
18
|
+
// channels only — the `sources` frontmatter array and `superseded_by`. Body
|
|
19
|
+
// links are the advisory channel (see tension-blast.ts) and broken body links
|
|
20
|
+
// are the audit engine's territory (audit/checks/broken_refs). A `sources`
|
|
21
|
+
// entry is only checked when it looks like a vault path (contains "/" or ends
|
|
22
|
+
// in ".md"); opaque citation strings ("interview-2026-04", a book title) and
|
|
23
|
+
// external URLs are legitimate non-vault citations and are never flagged.
|
|
24
|
+
//
|
|
25
|
+
// Lifecycle consistency deliberately does NOT treat a `superseded` source as
|
|
26
|
+
// a conflict: a superseded doc has a designated successor and the
|
|
27
|
+
// current-source layer forwards readers to it — citing one is aged, not
|
|
28
|
+
// broken. The conflict statuses are draft (not yet certified), deprecated
|
|
29
|
+
// (retired without forwarding... unless superseded_by is set, but the status
|
|
30
|
+
// alone already routes readers away), and archived (no live claim).
|
|
31
|
+
import { buildPathIndexes, resolveLink } from "./vault-docs.js";
|
|
32
|
+
// Lint check names contributed by this module (appended to LINT_CHECKS).
|
|
33
|
+
// Exported so consumers can triage findings by confidence class: everything
|
|
34
|
+
// under these names is tier-0-certain, not advisory judgment.
|
|
35
|
+
export const TIER0_LINT_CHECKS = [
|
|
36
|
+
"brokenSourceRefs",
|
|
37
|
+
"lifecycleConflicts",
|
|
38
|
+
"schemaInvalid",
|
|
39
|
+
"domainLeaks",
|
|
40
|
+
];
|
|
41
|
+
// A canonical doc citing a source in one of these states is a lifecycle
|
|
42
|
+
// conflict — #232's "certified artifact depending on a unit that transitioned
|
|
43
|
+
// to draft/deprecated". `superseded` is intentionally absent (see header).
|
|
44
|
+
export const CONFLICTING_SOURCE_STATUSES = new Set([
|
|
45
|
+
"draft",
|
|
46
|
+
"deprecated",
|
|
47
|
+
"archived",
|
|
48
|
+
]);
|
|
49
|
+
// Exported so write-time advisories (domain_warnings) share the same
|
|
50
|
+
// definition of "external reference" and the two can't drift.
|
|
51
|
+
export const EXTERNAL_REF = /^(https?:|mailto:)/i;
|
|
52
|
+
// A sources entry is checked for referential integrity only when it plausibly
|
|
53
|
+
// names a vault document. Everything else is an opaque citation.
|
|
54
|
+
function isPathLike(raw) {
|
|
55
|
+
return raw.includes("/") || raw.endsWith(".md");
|
|
56
|
+
}
|
|
57
|
+
// Runs the three tier-0 checks over a loaded doc set. The doc set is also the
|
|
58
|
+
// resolution universe: under RBAC, lint passes the caller-visible subset, so
|
|
59
|
+
// findings compute from the caller's vantage (#217) — a source the caller
|
|
60
|
+
// cannot read is indistinguishable from one that does not exist, the same
|
|
61
|
+
// rule every other lint check follows.
|
|
62
|
+
export function tier0Findings(docs) {
|
|
63
|
+
const { byPath, byBasename } = buildPathIndexes(docs);
|
|
64
|
+
const docByPath = new Map(docs.map((d) => [d.path, d]));
|
|
65
|
+
const out = {
|
|
66
|
+
brokenSourceRefs: [],
|
|
67
|
+
lifecycleConflicts: [],
|
|
68
|
+
schemaInvalid: [],
|
|
69
|
+
domainLeaks: [],
|
|
70
|
+
};
|
|
71
|
+
for (const doc of docs) {
|
|
72
|
+
const broken = [];
|
|
73
|
+
const conflicts = [];
|
|
74
|
+
const leaks = [];
|
|
75
|
+
for (const raw of doc.frontmatter.sources ?? []) {
|
|
76
|
+
if (EXTERNAL_REF.test(raw))
|
|
77
|
+
continue;
|
|
78
|
+
const target = resolveLink(raw, doc.path, byPath, byBasename);
|
|
79
|
+
if (!target) {
|
|
80
|
+
if (isPathLike(raw))
|
|
81
|
+
broken.push(raw);
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (target === doc.path)
|
|
85
|
+
continue;
|
|
86
|
+
if (doc.frontmatter.status === "canonical") {
|
|
87
|
+
const status = docByPath.get(target)?.frontmatter.status;
|
|
88
|
+
if (status && CONFLICTING_SOURCE_STATUSES.has(status)) {
|
|
89
|
+
conflicts.push(`${target} (${status})`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// #4: the epistemic boundary — durable canon must not cite sketches.
|
|
93
|
+
if (doc.frontmatter.domain === "accumulation" &&
|
|
94
|
+
docByPath.get(target)?.frontmatter.domain === "generative") {
|
|
95
|
+
leaks.push(target);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// superseded_by is always a vault path by construction (the write tools
|
|
99
|
+
// set it from a validated successor), so it is always checked.
|
|
100
|
+
const sup = doc.frontmatter.superseded_by;
|
|
101
|
+
if (sup && !EXTERNAL_REF.test(sup) && !resolveLink(sup, doc.path, byPath, byBasename)) {
|
|
102
|
+
broken.push(`superseded_by: ${sup}`);
|
|
103
|
+
}
|
|
104
|
+
if (broken.length > 0) {
|
|
105
|
+
out.brokenSourceRefs.push({
|
|
106
|
+
path: doc.path,
|
|
107
|
+
detail: `unresolvable reference(s): ${broken.join(", ")}`,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
if (conflicts.length > 0) {
|
|
111
|
+
out.lifecycleConflicts.push({
|
|
112
|
+
path: doc.path,
|
|
113
|
+
detail: `canonical doc cites non-canonical source(s): ${conflicts.join(", ")}`,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
if (leaks.length > 0) {
|
|
117
|
+
out.domainLeaks.push({
|
|
118
|
+
path: doc.path,
|
|
119
|
+
detail: `accumulation-domain doc cites generative-domain source(s): ${leaks.join(", ")}`,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
if (!doc.validation.valid) {
|
|
123
|
+
out.schemaInvalid.push({
|
|
124
|
+
path: doc.path,
|
|
125
|
+
detail: doc.validation.issues.map((i) => `${i.field}: ${i.message}`).join("; "),
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return out;
|
|
130
|
+
}
|
|
131
|
+
// Would promoting targetPath to canonical create a tier-0 violation? Checks
|
|
132
|
+
// the target's schema report, its path-like sources for resolvability, and
|
|
133
|
+
// its resolved sources for conflicting lifecycle states (as-if canonical —
|
|
134
|
+
// the post-state of the promote).
|
|
135
|
+
export function tier0PromoteGate(docs, targetPath, visible) {
|
|
136
|
+
const target = docs.find((d) => d.path === targetPath);
|
|
137
|
+
// A missing/unparseable target is the dispatch layer's error to report.
|
|
138
|
+
if (!target)
|
|
139
|
+
return { violations: [], hiddenConflicts: 0 };
|
|
140
|
+
const { byPath, byBasename } = buildPathIndexes(docs);
|
|
141
|
+
const docByPath = new Map(docs.map((d) => [d.path, d]));
|
|
142
|
+
const violations = [];
|
|
143
|
+
let hiddenConflicts = 0;
|
|
144
|
+
if (!target.validation.valid) {
|
|
145
|
+
violations.push(`schema-invalid frontmatter (${target.validation.issues
|
|
146
|
+
.map((i) => `${i.field}: ${i.message}`)
|
|
147
|
+
.join("; ")})`);
|
|
148
|
+
}
|
|
149
|
+
for (const raw of target.frontmatter.sources ?? []) {
|
|
150
|
+
if (EXTERNAL_REF.test(raw))
|
|
151
|
+
continue;
|
|
152
|
+
const resolved = resolveLink(raw, target.path, byPath, byBasename);
|
|
153
|
+
if (!resolved) {
|
|
154
|
+
if (isPathLike(raw))
|
|
155
|
+
violations.push(`unresolvable source: ${raw}`);
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
if (resolved === target.path)
|
|
159
|
+
continue;
|
|
160
|
+
const sourceDoc = docByPath.get(resolved);
|
|
161
|
+
if (!sourceDoc)
|
|
162
|
+
continue;
|
|
163
|
+
const status = sourceDoc.frontmatter.status;
|
|
164
|
+
if (!CONFLICTING_SOURCE_STATUSES.has(status))
|
|
165
|
+
continue;
|
|
166
|
+
if (visible && !visible(sourceDoc))
|
|
167
|
+
hiddenConflicts += 1;
|
|
168
|
+
else
|
|
169
|
+
violations.push(`source ${resolved} is ${status}`);
|
|
170
|
+
}
|
|
171
|
+
return { violations, hiddenConflicts };
|
|
172
|
+
}
|
|
173
|
+
// Would deprecating targetPath strand canonical dependents on a retired
|
|
174
|
+
// source? Only relevant for a deprecate WITHOUT a superseded_by forward — a
|
|
175
|
+
// forwarded deprecate leaves dependents a resolution path, same as
|
|
176
|
+
// supersede. The caller decides whether forwarding is present.
|
|
177
|
+
export function tier0DeprecateGate(docs, targetPath, visible) {
|
|
178
|
+
const { byPath, byBasename } = buildPathIndexes(docs);
|
|
179
|
+
const dependents = [];
|
|
180
|
+
let hiddenDependents = 0;
|
|
181
|
+
for (const doc of docs) {
|
|
182
|
+
if (doc.path === targetPath)
|
|
183
|
+
continue;
|
|
184
|
+
if (doc.frontmatter.status !== "canonical")
|
|
185
|
+
continue;
|
|
186
|
+
const cites = (doc.frontmatter.sources ?? []).some((raw) => !EXTERNAL_REF.test(raw) && resolveLink(raw, doc.path, byPath, byBasename) === targetPath);
|
|
187
|
+
if (!cites)
|
|
188
|
+
continue;
|
|
189
|
+
if (visible && !visible(doc))
|
|
190
|
+
hiddenDependents += 1;
|
|
191
|
+
else
|
|
192
|
+
dependents.push(doc.path);
|
|
193
|
+
}
|
|
194
|
+
return { dependents: dependents.sort(), hiddenDependents };
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=tier0.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tier0.js","sourceRoot":"","sources":["../../src/curation/tier0.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ConsumesEdge } from "./consumes.js";
|
|
2
|
+
import type { ProvenanceEntry } from "./provenance.js";
|
|
3
|
+
export declare const BOOKKEEPING_FIELDS: ReadonlySet<string>;
|
|
4
|
+
export type Tier1VerdictKind = "unaffected" | "affected" | "possibly-affected" | "semantic-review";
|
|
5
|
+
export type Tier1EdgeClass = "compiled" | "declared" | "earned";
|
|
6
|
+
export interface Tier1Verdict {
|
|
7
|
+
artifact: string;
|
|
8
|
+
verdict: Tier1VerdictKind;
|
|
9
|
+
edge_class: Tier1EdgeClass;
|
|
10
|
+
reason: string;
|
|
11
|
+
}
|
|
12
|
+
export interface Tier1Inputs {
|
|
13
|
+
unit: string;
|
|
14
|
+
changedFields: string[];
|
|
15
|
+
compiled: ConsumesEdge[];
|
|
16
|
+
declaredDependents: string[];
|
|
17
|
+
earnedDependents: string[];
|
|
18
|
+
}
|
|
19
|
+
export interface Tier1Summary {
|
|
20
|
+
unaffected: number;
|
|
21
|
+
affected: number;
|
|
22
|
+
possibly_affected: number;
|
|
23
|
+
semantic_review: number;
|
|
24
|
+
resolved_at_tier1: boolean;
|
|
25
|
+
}
|
|
26
|
+
export declare function contentChangedFields(fields: string[]): string[];
|
|
27
|
+
export declare function changedFieldsFromProvenance(entry: ProvenanceEntry): string[];
|
|
28
|
+
export declare function tier1Dispatch(input: Tier1Inputs): Tier1Verdict[];
|
|
29
|
+
export declare function tier1Summary(verdicts: Tier1Verdict[]): Tier1Summary;
|
|
30
|
+
//# sourceMappingURL=tier1.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tier1.d.ts","sourceRoot":"","sources":["../../src/curation/tier1.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAIvD,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAsC,CAAC;AAE1F,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,UAAU,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;AACnG,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEhE,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,UAAU,EAAE,cAAc,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IAGb,aAAa,EAAE,MAAM,EAAE,CAAC;IAExB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IAGxB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAS/D;AAMD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,EAAE,CAO5E;AAID,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,EAAE,CAiFhE;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,YAAY,CASnE"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
// Tier 1 of tiered compatibility checking (#232) — type-directed dispatch
|
|
2
|
+
// over the edge provenance classes, deterministic and LLM-free.
|
|
3
|
+
//
|
|
4
|
+
// Given a changed unit and the set of fields the change touched, every
|
|
5
|
+
// dependent gets a verdict whose CEILING is set by the provenance class of
|
|
6
|
+
// the edge that connects it (the 2026-07-17 through-line spec's dispatch
|
|
7
|
+
// rule):
|
|
8
|
+
//
|
|
9
|
+
// compiled (consumes) — mechanically certain, so hard verdicts are
|
|
10
|
+
// licensed: `unaffected` when the change misses
|
|
11
|
+
// every consumed field, `affected` when it hits.
|
|
12
|
+
// declared (sources) — a claim, so the positive verdict is only
|
|
13
|
+
// `possibly-affected`; never a hard hit.
|
|
14
|
+
// earned (derives_from) — an LLM inference with a decay schedule; it
|
|
15
|
+
// ROUTES (`semantic-review`, the tier-2 queue)
|
|
16
|
+
// and never decides.
|
|
17
|
+
//
|
|
18
|
+
// One certain verdict cuts across all classes: a change that touched nothing
|
|
19
|
+
// but server bookkeeping fields is `unaffected` for every dependent — the
|
|
20
|
+
// CHANGE side of the judgment is certain even when the edge side is a claim.
|
|
21
|
+
//
|
|
22
|
+
// An artifact reachable through several classes keeps the highest-certainty
|
|
23
|
+
// verdict (compiled > declared > earned): a certain skip beats a claim, and
|
|
24
|
+
// a certain hit makes a semantic review redundant.
|
|
25
|
+
//
|
|
26
|
+
// The #232 acceptance metric falls out of the summary: a change "resolves at
|
|
27
|
+
// tier 1" when no dependent needs semantic review — everything was decided
|
|
28
|
+
// deterministically.
|
|
29
|
+
// Server-stamped bookkeeping — changed on every write, consumed by no one's
|
|
30
|
+
// meaning. Never counts as a content change.
|
|
31
|
+
export const BOOKKEEPING_FIELDS = new Set(["updated", "updated_by"]);
|
|
32
|
+
export function contentChangedFields(fields) {
|
|
33
|
+
const seen = new Set();
|
|
34
|
+
const out = [];
|
|
35
|
+
for (const f of fields) {
|
|
36
|
+
if (BOOKKEEPING_FIELDS.has(f) || seen.has(f))
|
|
37
|
+
continue;
|
|
38
|
+
seen.add(f);
|
|
39
|
+
out.push(f);
|
|
40
|
+
}
|
|
41
|
+
return out;
|
|
42
|
+
}
|
|
43
|
+
// Derives the changed-field set from a provenance entry: the frontmatter
|
|
44
|
+
// diff's keys plus "body" when the body changed. An entry from before the
|
|
45
|
+
// body_changed flag existed reports body as changed for a content write —
|
|
46
|
+
// unknown must over-approximate, never silently skip.
|
|
47
|
+
export function changedFieldsFromProvenance(entry) {
|
|
48
|
+
const fields = Object.keys(entry.frontmatter_diff ?? {});
|
|
49
|
+
const bodyChanged = entry.body_changed ??
|
|
50
|
+
(entry.action === "create" || entry.action === "update" || entry.action === "append");
|
|
51
|
+
if (bodyChanged)
|
|
52
|
+
fields.push("body");
|
|
53
|
+
return contentChangedFields(fields);
|
|
54
|
+
}
|
|
55
|
+
const CLASS_RANK = { compiled: 3, declared: 2, earned: 1 };
|
|
56
|
+
export function tier1Dispatch(input) {
|
|
57
|
+
const changed = contentChangedFields(input.changedFields);
|
|
58
|
+
const noContentChange = changed.length === 0;
|
|
59
|
+
const changedList = changed.join(", ");
|
|
60
|
+
const byArtifact = new Map();
|
|
61
|
+
const put = (v) => {
|
|
62
|
+
const prev = byArtifact.get(v.artifact);
|
|
63
|
+
if (!prev || CLASS_RANK[v.edge_class] > CLASS_RANK[prev.edge_class]) {
|
|
64
|
+
byArtifact.set(v.artifact, v);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
for (const e of input.compiled) {
|
|
68
|
+
if (noContentChange) {
|
|
69
|
+
put({
|
|
70
|
+
artifact: e.artifact,
|
|
71
|
+
verdict: "unaffected",
|
|
72
|
+
edge_class: "compiled",
|
|
73
|
+
reason: "only bookkeeping fields changed",
|
|
74
|
+
});
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
const consumesAll = e.fields.includes("*");
|
|
78
|
+
const overlap = consumesAll ? changed : e.fields.filter((f) => changed.includes(f));
|
|
79
|
+
if (overlap.length === 0) {
|
|
80
|
+
put({
|
|
81
|
+
artifact: e.artifact,
|
|
82
|
+
verdict: "unaffected",
|
|
83
|
+
edge_class: "compiled",
|
|
84
|
+
reason: `consumed fields [${e.fields.join(", ")}] untouched by change [${changedList}]`,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
put({
|
|
89
|
+
artifact: e.artifact,
|
|
90
|
+
verdict: "affected",
|
|
91
|
+
edge_class: "compiled",
|
|
92
|
+
reason: `consumed ${consumesAll ? "the whole doc" : `[${overlap.join(", ")}]`}, which the change touched`,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
for (const artifact of input.declaredDependents) {
|
|
97
|
+
put(noContentChange
|
|
98
|
+
? {
|
|
99
|
+
artifact,
|
|
100
|
+
verdict: "unaffected",
|
|
101
|
+
edge_class: "declared",
|
|
102
|
+
reason: "only bookkeeping fields changed",
|
|
103
|
+
}
|
|
104
|
+
: {
|
|
105
|
+
artifact,
|
|
106
|
+
verdict: "possibly-affected",
|
|
107
|
+
edge_class: "declared",
|
|
108
|
+
reason: `declared sources citation — a claim, so [${changedList}] may or may not matter`,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
for (const artifact of input.earnedDependents) {
|
|
112
|
+
put(noContentChange
|
|
113
|
+
? {
|
|
114
|
+
artifact,
|
|
115
|
+
verdict: "unaffected",
|
|
116
|
+
edge_class: "earned",
|
|
117
|
+
reason: "only bookkeeping fields changed",
|
|
118
|
+
}
|
|
119
|
+
: {
|
|
120
|
+
artifact,
|
|
121
|
+
verdict: "semantic-review",
|
|
122
|
+
edge_class: "earned",
|
|
123
|
+
reason: "earned derives_from edge — routes to semantic review, never a hard verdict",
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
return [...byArtifact.values()].sort((a, b) => a.artifact < b.artifact ? -1 : a.artifact > b.artifact ? 1 : 0);
|
|
127
|
+
}
|
|
128
|
+
export function tier1Summary(verdicts) {
|
|
129
|
+
const counts = { unaffected: 0, affected: 0, possibly_affected: 0, semantic_review: 0 };
|
|
130
|
+
for (const v of verdicts) {
|
|
131
|
+
if (v.verdict === "unaffected")
|
|
132
|
+
counts.unaffected += 1;
|
|
133
|
+
else if (v.verdict === "affected")
|
|
134
|
+
counts.affected += 1;
|
|
135
|
+
else if (v.verdict === "possibly-affected")
|
|
136
|
+
counts.possibly_affected += 1;
|
|
137
|
+
else
|
|
138
|
+
counts.semantic_review += 1;
|
|
139
|
+
}
|
|
140
|
+
return { ...counts, resolved_at_tier1: counts.semantic_review === 0 };
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=tier1.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tier1.js","sourceRoot":"","sources":["../../src/curation/tier1.ts"],"names":[],"mappings":"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"}
|