@takagaki/cortex-decisions-viewer 0.12.210 → 0.12.214
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/dist/build.js +62 -5
- package/dist/memory-evidence.js +12 -6
- package/dist/render.js +14 -5
- package/dist/view-dir.js +26 -7
- package/package.json +1 -1
package/dist/build.js
CHANGED
|
@@ -266,12 +266,14 @@ const MEMORY_DIR_CANDIDATES = ["Memory/Decisions/records", "Memory/Decisions"];
|
|
|
266
266
|
/**
|
|
267
267
|
* Decisionsディレクトリを解決する。明示指定があればそれを使い、
|
|
268
268
|
* 未指定なら Cortex/Decisions/records → Cortex/Decisions → Decisions の順で存在するものを採用する。
|
|
269
|
+
* 組み直した案件(木に `Memory/Home.md`)は Memory/Decisions/records → Memory/Decisions だけ。
|
|
269
270
|
*/
|
|
270
271
|
async function resolveDecisionsDir(dir) {
|
|
271
272
|
if (dir)
|
|
272
273
|
return path.resolve(dir);
|
|
273
274
|
const rebuilt = (await (0, memory_dir_1.memoryDirOfTree)(process.cwd())) === "Memory";
|
|
274
|
-
|
|
275
|
+
// 🔴 組み直した案件は `Memory/` だけを探す(今までの置き場〈Cortex/…・Decisions〉へ倒れない・cortex-engine #1911 便 GV)
|
|
276
|
+
const candidates = rebuilt ? MEMORY_DIR_CANDIDATES : DEFAULT_DIR_CANDIDATES;
|
|
275
277
|
for (const candidate of candidates) {
|
|
276
278
|
const abs = path.resolve(candidate);
|
|
277
279
|
try {
|
|
@@ -285,6 +287,52 @@ async function resolveDecisionsDir(dir) {
|
|
|
285
287
|
}
|
|
286
288
|
throw new Error(`Decisionsディレクトリが見つかりません(${candidates.join(" / ")} を確認してください)`);
|
|
287
289
|
}
|
|
290
|
+
/** 取り出した区画にファイルが 1 本も無いか(無いフォルダも空と読む・読めないフォルダは空と読まない) */
|
|
291
|
+
async function viewDirIsEmpty(viewDir) {
|
|
292
|
+
try {
|
|
293
|
+
return (await node_fs_1.promises.readdir(viewDir)).length === 0;
|
|
294
|
+
}
|
|
295
|
+
catch (e) {
|
|
296
|
+
return e?.code === "ENOENT";
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
/** 記憶の中身に数えない Markdown(入口・説明・雛形) */
|
|
300
|
+
const MEMORY_NON_CONTENT_MD = new Set(["home.md", "readme.md", "template.md"]);
|
|
301
|
+
/**
|
|
302
|
+
* 組み直した案件の木の記憶の中身の数(`Memory/` の下の .md。Home・README・template は数えない)。区画の名前も `records/` の有無も決め打ちしない
|
|
303
|
+
* (記録・ストーリー・区画の直下の記録を全部数える)。リンクはたどる(`stat`)。空の画面に倒してよいかの判定にだけ使う(cortex-engine #1911 便 GV)。
|
|
304
|
+
* 🔴 読めない階層・深すぎる階層は 1 と数える(空に倒れる側にしない)。`Memory/` が無い木も 1(組み直した案件の印と食い違う)
|
|
305
|
+
*/
|
|
306
|
+
async function memoryContentCount(dir, depth = 0) {
|
|
307
|
+
if (depth > 8)
|
|
308
|
+
return 1;
|
|
309
|
+
let names;
|
|
310
|
+
try {
|
|
311
|
+
names = await node_fs_1.promises.readdir(dir);
|
|
312
|
+
}
|
|
313
|
+
catch {
|
|
314
|
+
return 1;
|
|
315
|
+
}
|
|
316
|
+
let n = 0;
|
|
317
|
+
for (const name of names) {
|
|
318
|
+
const abs = path.join(dir, name);
|
|
319
|
+
let st;
|
|
320
|
+
try {
|
|
321
|
+
st = await node_fs_1.promises.stat(abs);
|
|
322
|
+
}
|
|
323
|
+
catch {
|
|
324
|
+
n += 1;
|
|
325
|
+
continue;
|
|
326
|
+
}
|
|
327
|
+
if (st.isDirectory())
|
|
328
|
+
n += await memoryContentCount(abs, depth + 1);
|
|
329
|
+
else if (name.toLowerCase().endsWith(".md") && !MEMORY_NON_CONTENT_MD.has(name.toLowerCase()))
|
|
330
|
+
n += 1;
|
|
331
|
+
if (n > 0)
|
|
332
|
+
return n;
|
|
333
|
+
}
|
|
334
|
+
return n;
|
|
335
|
+
}
|
|
288
336
|
/**
|
|
289
337
|
* DecisionsディレクトリからCortex(Gold層)ルートを推定する。
|
|
290
338
|
* Cortex/Decisions/records → 2つ上、Cortex/Decisions → 1つ上。
|
|
@@ -2446,17 +2494,25 @@ async function buildSite(opts, views) {
|
|
|
2446
2494
|
const repoRoot = knowledgeRoot ? path.dirname(knowledgeRoot) : path.dirname(dirAbs);
|
|
2447
2495
|
// 記憶の置き場の名前(知識の根の名前から。`Cortex` ならこれまでと同じ出力)
|
|
2448
2496
|
const memoryDir = (0, memory_dir_1.memoryDirOfRoot)(knowledgeRoot);
|
|
2449
|
-
// 帳簿 9 本の置き場(既定は `<repoRoot>/.cortex`)。読み口はこの 1
|
|
2497
|
+
// 帳簿 9 本の置き場(既定は `<repoRoot>/.cortex`)。読み口はこの 1 つから読む(根拠の台帳は組み直していない案件だけ `<repoRoot>/.cortex`)
|
|
2450
2498
|
let ledgerDir = (0, ledger_dir_1.ledgerDirOf)(repoRoot, opts.ledgerDir);
|
|
2451
2499
|
// 設定の置き場のヒント(便 DS-8b)。組み直した案件(木に `Memory/Home.md`)だけ `table`。最初の描画(骨組みを出すか)だけに使い、応答の mode が勝つ
|
|
2452
2500
|
const configMode = await (0, config_mode_1.configModeHint)(repoRoot);
|
|
2453
|
-
// 🔴 組み直した案件(v2・cortex-engine #1911 便 DC-2f・設計書 D-4)は封筒を無条件で採用し、帳簿 8
|
|
2501
|
+
// 🔴 組み直した案件(v2・cortex-engine #1911 便 DC-2f・設計書 D-4)は封筒を無条件で採用し、帳簿 8 本と根拠の台帳(便 DC-2e)を `.cortex` から読まない。
|
|
2454
2502
|
// 封筒が無い・確かめられない回は投げる(空の画面を緑で配らない)。下の倒れ(catch)は組み直していない案件だけ
|
|
2455
2503
|
const rebuilt = configMode === "table";
|
|
2456
2504
|
if (rebuilt) {
|
|
2457
2505
|
if (!opts.viewDir)
|
|
2458
2506
|
throw new Error("組み直した案件(Memory/Home.md)のビルドには記憶側の画面用ファイル(--view-dir)が要ります(帳簿は .cortex から組みません)");
|
|
2459
|
-
|
|
2507
|
+
// 記憶がまだ 1 件も無い案件(組み直した直後で、記憶側がまだ画面用ファイルを 1 度も置いていない)は空の画面を組む(cortex-engine #1911 便 GV)。
|
|
2508
|
+
// 🔴 空に倒れるのは「取り出した区画にファイルが 1 本も無い」かつ「読んだ決定と木の記憶の中身(記録・ストーリー)が 0 件」のときだけ。記録があるのに目次が無い・目次が空や壊れている・
|
|
2509
|
+
// 封筒の欠けは、取り出しか公開が壊れている(今どおり赤)
|
|
2510
|
+
const viewDirAbs = path.resolve(opts.viewDir);
|
|
2511
|
+
const empty = mdFiles.length === 0 && (await viewDirIsEmpty(viewDirAbs)) && (await memoryContentCount(path.join(repoRoot, "Memory"))) === 0;
|
|
2512
|
+
// 黙って緑にしない: 警告の 1 行を出す(記憶側の最初の通常の夜が目次を置けば、次のビルドから消える)
|
|
2513
|
+
if (empty)
|
|
2514
|
+
console.warn("記憶 v2 の画面用ファイル(組み直した案件): 記憶がまだ 1 件も無く、記憶側の画面用ファイルもまだ 1 本も無いので、空の画面を組みます");
|
|
2515
|
+
const plan = empty ? (0, view_dir_1.emptyPlanV2)() : await (0, view_dir_1.planViewsV2)(viewDirAbs);
|
|
2460
2516
|
const merged = await (0, view_dir_1.mergeViewsV2)(plan);
|
|
2461
2517
|
views.cleanup = merged.cleanup;
|
|
2462
2518
|
views.counts = plan.counts;
|
|
@@ -2502,7 +2558,8 @@ async function buildSite(opts, views) {
|
|
|
2502
2558
|
// 目次と同じ順位(engine #551)。**読めないなら `null`** で、つながり画面の点は今までどおり一律
|
|
2503
2559
|
const memoryRanking = await (0, ranking_1.readMemoryRanking)(repoRoot, ledgerDir);
|
|
2504
2560
|
// 根拠の台帳(便 B3)。**読めないなら `null`** で、根拠の段は記録に書かれた references のリンクだけ
|
|
2505
|
-
|
|
2561
|
+
// 組み直していない案件は案件リポの .cortex から(--ledger-dir に従わない)。組み直した案件は封筒をほどいた置き場から(便 DC-2e・memory-evidence.ts)
|
|
2562
|
+
const memoryEvidence = await (0, memory_evidence_1.readMemoryEvidence)(repoRoot, rebuilt ? ledgerDir : null);
|
|
2506
2563
|
// 人の手の表の写し(engine #1094 q-10)。あれば記憶 v2 の案件で、確認の印とボタンを出さない。**無い案件は今と 1 バイトも同じ**(キーごと無い)
|
|
2507
2564
|
// 「記憶 v2 の案件か」は 1 本の栓 `memory_v2_writer` の値で決める(cortex-engine #1094 鎖 3 V10b)。橋の間は写しとの OR
|
|
2508
2565
|
const memoryHands = await (0, hands_1.readMemoryHands)(repoRoot, ledgerDir);
|
package/dist/memory-evidence.js
CHANGED
|
@@ -20,10 +20,12 @@ exports.evidenceLookup = evidenceLookup;
|
|
|
20
20
|
* 無ければ `null`(黙る)。壊れている・版が違えば `null` と build のログに 1 行(`ranking.ts` と同じ作法)。
|
|
21
21
|
* どちらも画面は `references` のリンクだけで「根拠」の段を描く。
|
|
22
22
|
*
|
|
23
|
-
* ## 🔴
|
|
23
|
+
* ## 🔴 置き場は案件の形で決まる
|
|
24
24
|
*
|
|
25
|
-
* 引用の文字は案件リポ(git
|
|
26
|
-
*
|
|
25
|
+
* 組み直していない案件: 引用の文字は案件リポ(git)に置く(前のオーナー決定 B・cortex-engine #1911 のリーダーの答え 6239629719 の 1)。
|
|
26
|
+
* `--ledger-dir`・`--view-dir` を渡しても、いつも `<repo>/.cortex` から読む。
|
|
27
|
+
* 組み直した案件(木に `Memory/Home.md`): 決定 B はオーナー決定 Q6(cortex-engine #1911 6375271707)で覆り、引用は保管庫の項目ごとのオブジェクトに置く。
|
|
28
|
+
* 記憶側が組んだ封筒 `memory-evidence` を `--view-dir` からだけ読む(`.cortex` は読まない・cortex-engine #1911 便 DC-2e)。
|
|
27
29
|
*
|
|
28
30
|
* ## 項目ごとの形の検め
|
|
29
31
|
*
|
|
@@ -119,11 +121,15 @@ function parseMemoryEvidence(text) {
|
|
|
119
121
|
return null;
|
|
120
122
|
}
|
|
121
123
|
}
|
|
122
|
-
/**
|
|
123
|
-
|
|
124
|
+
/**
|
|
125
|
+
* 読む。無い → `null`(黙る)・壊れている/版違い → `null`(build のログに 1 行)。
|
|
126
|
+
* 組み直していない案件は案件リポの `.cortex` から(`--ledger-dir` に従わない)。組み直した案件(cortex-engine #1911 便 DC-2e)は
|
|
127
|
+
* `viewDir`(記憶側の封筒をほどいた置き場・`mergeViewsV2`)から読み、`.cortex` は読まない(引用は案件リポに置かない)
|
|
128
|
+
*/
|
|
129
|
+
async function readMemoryEvidence(repoRoot, viewDir = null) {
|
|
124
130
|
let text;
|
|
125
131
|
try {
|
|
126
|
-
text = await promises_1.default.readFile(node_path_1.default.join((0, ledger_dir_1.defaultLedgerDir)(repoRoot), exports.MEMORY_EVIDENCE_FILE), "utf8");
|
|
132
|
+
text = await promises_1.default.readFile(node_path_1.default.join(viewDir ?? (0, ledger_dir_1.defaultLedgerDir)(repoRoot), exports.MEMORY_EVIDENCE_FILE), "utf8");
|
|
127
133
|
}
|
|
128
134
|
catch {
|
|
129
135
|
return null;
|
package/dist/render.js
CHANGED
|
@@ -1182,7 +1182,7 @@ const STATE_ROW_FIELDS = ["cap", "ref", "workspace", "question", "status", "at",
|
|
|
1182
1182
|
*/
|
|
1183
1183
|
const RUN_URL_RE = /^https:\/\/github\.com\/[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+\/actions\/runs\/[0-9]+$/;
|
|
1184
1184
|
/** `runUrl` を持てる書き手(Actions の run の中で動く engine の書き手)。ほかの書き手の値は出さない */
|
|
1185
|
-
const RUN_URL_WRITERS = ["ingest", "gold", "nightly"];
|
|
1185
|
+
const RUN_URL_WRITERS = ["ingest", "gold", "nightly", "bronze"];
|
|
1186
1186
|
/**
|
|
1187
1187
|
* `runUrl` が無い行の出どころの語(#560)。run が無い書き手だけ。**`ingest` / `gold` は
|
|
1188
1188
|
* 載せない**——`runUrl` が無いのは古い engine か固定 IP の CodeBuild で、行からは区別できない
|
|
@@ -15960,7 +15960,7 @@ ${story_1.splitByNameLinks.toString()}
|
|
|
15960
15960
|
* 画面から外した)
|
|
15961
15961
|
* -------------------------------------------------------------------------
|
|
15962
15962
|
* run の無い書き手の行は、出どころを語で示す(「中央の処理」「その場で確認」)。run のある
|
|
15963
|
-
* 行(ingest / gold / nightly)は何も添えない——リンク先が実行用リポや案件リポの GitHub
|
|
15963
|
+
* 行(ingest / gold / nightly / bronze)は何も添えない——リンク先が実行用リポや案件リポの GitHub
|
|
15964
15964
|
* Actions で、多くの利用者には開けないため。出すかどうかの判断は純関数
|
|
15965
15965
|
* (runLogUrlOf / runSourceWordOf)が持ち、ここは描くだけ。
|
|
15966
15966
|
* ----------------------------------------------------------------------- */
|
|
@@ -21632,13 +21632,22 @@ ${story_1.splitByNameLinks.toString()}
|
|
|
21632
21632
|
Members: "この関係者の記録を消し、以後同じ人で作り直さないよう「除外メンバー」の一覧に足します。",
|
|
21633
21633
|
Rules: "このルールを消し、以後同じ題で作り直さないよう「除外ルール」の一覧に足します。",
|
|
21634
21634
|
};
|
|
21635
|
+
// 組み直した案件(記録が Memory/ の下)は除外の一覧を持たない。消したことは履歴で覚え、以後作り直さない
|
|
21636
|
+
// (cortex-engine #1911 便 DC-2d・オーナー決定 10/25。上の表は Cortex/ の案件のための橋)
|
|
21637
|
+
var DELETE_EFFECTS_MEMORY = {
|
|
21638
|
+
Decisions: "この決定を消し、以後同じ決定を作り直しません。",
|
|
21639
|
+
Glossary: "この用語を消し、以後同じ語を作り直しません。",
|
|
21640
|
+
Members: "この関係者の記録を消し、以後同じ人を作り直しません。",
|
|
21641
|
+
Rules: "このルールを消し、以後同じルールを作り直しません。",
|
|
21642
|
+
};
|
|
21635
21643
|
function deleteConfirmLines(rec, path) {
|
|
21636
|
-
var m = /^(
|
|
21637
|
-
var dir = m ? m[
|
|
21644
|
+
var m = /^(Cortex|Memory)\\/([^/]+)\\//.exec(path || "");
|
|
21645
|
+
var dir = m ? m[2] : "";
|
|
21646
|
+
var effects = m && m[1] === "Memory" ? DELETE_EFFECTS_MEMORY : DELETE_EFFECTS;
|
|
21638
21647
|
var title = (rec && rec.title) || (rec && rec.fileName) || "(題なし)";
|
|
21639
21648
|
return [
|
|
21640
21649
|
dirLabel(dir) + "「" + title + "」を削除します。",
|
|
21641
|
-
|
|
21650
|
+
effects[dir] || "この記録を消します。",
|
|
21642
21651
|
"消した中身は履歴に残り、あとから戻せます。",
|
|
21643
21652
|
];
|
|
21644
21653
|
}
|
package/dist/view-dir.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.VIEW_INDEX_FILE = exports.VIEW_NAMES_V2 = exports.VIEW_HELD = exports.VIEW_NAMES = void 0;
|
|
6
|
+
exports.VIEW_INDEX_FILE = exports.VIEW_NAMES_V2 = exports.EVIDENCE_VIEW_NAME = exports.VIEW_HELD = exports.VIEW_NAMES = void 0;
|
|
7
7
|
exports.blobShaOf = blobShaOf;
|
|
8
8
|
exports.isReadableEnvelope = isReadableEnvelope;
|
|
9
9
|
exports.classifyView = classifyView;
|
|
@@ -11,6 +11,7 @@ exports.classifyViewV2 = classifyViewV2;
|
|
|
11
11
|
exports.checkoutGit = checkoutGit;
|
|
12
12
|
exports.planViews = planViews;
|
|
13
13
|
exports.planViewsV2 = planViewsV2;
|
|
14
|
+
exports.emptyPlanV2 = emptyPlanV2;
|
|
14
15
|
exports.mergeViewsV2 = mergeViewsV2;
|
|
15
16
|
exports.mergeLedgerDir = mergeLedgerDir;
|
|
16
17
|
exports.viewCountsLine = viewCountsLine;
|
|
@@ -36,15 +37,16 @@ exports.viewCountsLineV2 = viewCountsLineV2;
|
|
|
36
37
|
* ## 名前(engine の宣言表 `publish: "viewer"` の行・V10a の `VIEW_HELD`)
|
|
37
38
|
*
|
|
38
39
|
* - 読む 10 本のうち、記憶側が置くのは 8 本+順位 1 本(`VIEW_NAMES`)
|
|
39
|
-
* - 根拠の台帳(`memory-evidence`・便 B3
|
|
40
|
+
* - 根拠の台帳(`memory-evidence`・便 B3)は、組み直していない案件では案件リポに置き公開されない。目次の名前に入れず、読み手が `<repo>/.cortex` から読む。
|
|
41
|
+
* 組み直した案件(便 DC-2e)では記憶側が封筒で置くので、`VIEW_NAMES_V2` にだけ入れる
|
|
40
42
|
* - 確認の帳簿(`gold-confirmation`・再導出の帯の読み手 `readRederivationLedgers` が読む)は置かれないので、いつも `.cortex` から読む
|
|
41
43
|
* - 名寄せの提案(`gold-proposals`)はビューアが読まなくなった(cortex-engine #1094 B-viewer V4・問いはポータルから)。置かれても使わない
|
|
42
44
|
*
|
|
43
45
|
* ## 組み直した案件(v2・木に `Memory/Home.md`・cortex-engine #1911 便 DC-2f・設計書 D-4)
|
|
44
46
|
*
|
|
45
47
|
* 上の比べと倒れは組み直していない案件(v1)だけ。組み直した案件は `.cortex` が空になる(便 DC-2)ので、`planViewsV2`・`mergeViewsV2` で
|
|
46
|
-
* 封筒を**無条件で採用**し(自分の sha で確かめられれば使う・`classifyViewV2`)、帳簿
|
|
47
|
-
* 確認の帳簿・再導出の帳簿は読まない(v1 本体だけが書き、便 V1N
|
|
48
|
+
* 封筒を**無条件で採用**し(自分の sha で確かめられれば使う・`classifyViewV2`)、帳簿 9 本(`VIEW_NAMES_V2`・根拠の台帳を含む)を `.cortex` から読まない。
|
|
49
|
+
* 確認の帳簿・再導出の帳簿は読まない(v1 本体だけが書き、便 V1N で書き手ごと消えた)。根拠の台帳も封筒から読む(便 DC-2e・上)。
|
|
48
50
|
* 取り出せない・確かめられない晩は**赤**(空の画面を緑で配らない・`build.ts`)
|
|
49
51
|
*/
|
|
50
52
|
const node_child_process_1 = require("node:child_process");
|
|
@@ -69,11 +71,16 @@ exports.VIEW_NAMES = Object.freeze([
|
|
|
69
71
|
exports.VIEW_HELD = Object.freeze({
|
|
70
72
|
"gold-confirmation": "人が確認した版と機械の書き直し(再導出の帯の材料・readRederivationLedgers)",
|
|
71
73
|
});
|
|
74
|
+
/**
|
|
75
|
+
* 根拠の台帳の封筒の名前(cortex-engine #1911 便 DC-2e)。組み直した案件だけが読む(記憶側の段 `evidence` が保管庫の項目ごとの引用から組んで置く)。
|
|
76
|
+
* 組み直していない案件は今どおり案件リポの `.cortex` から読む(`memory-evidence.ts`)ので `VIEW_NAMES` には入れない
|
|
77
|
+
*/
|
|
78
|
+
exports.EVIDENCE_VIEW_NAME = "memory-evidence";
|
|
72
79
|
/**
|
|
73
80
|
* 組み直した案件(v2・木に `Memory/Home.md`)で読む名前(cortex-engine #1911 便 DC-2f・設計書 D-4)。`VIEW_NAMES` から再導出の帳簿
|
|
74
|
-
* (`gold-rederivation`・v1 本体だけが書き、便 V1N
|
|
81
|
+
* (`gold-rederivation`・v1 本体だけが書き、便 V1N で書き手ごと消えた)を除き、根拠の台帳(便 DC-2e)を足した 9 本(名前順)。確認の帳簿(`VIEW_HELD`)も読まない
|
|
75
82
|
*/
|
|
76
|
-
exports.VIEW_NAMES_V2 = Object.freeze(exports.VIEW_NAMES.filter((n) => n !== "gold-rederivation"));
|
|
83
|
+
exports.VIEW_NAMES_V2 = Object.freeze([...exports.VIEW_NAMES.filter((n) => n !== "gold-rederivation"), exports.EVIDENCE_VIEW_NAME].sort());
|
|
77
84
|
/** 目次の名前(engine `VIEW_INDEX_NAME`) */
|
|
78
85
|
exports.VIEW_INDEX_FILE = "view-index.json";
|
|
79
86
|
const SHA_RE = /^[0-9a-f]{40}$/;
|
|
@@ -276,7 +283,7 @@ async function planViews(viewDir, git, baseDir) {
|
|
|
276
283
|
return { classes, counts, use };
|
|
277
284
|
}
|
|
278
285
|
/**
|
|
279
|
-
* 組み直した案件(v2)の計画(cortex-engine #1911 便 DC-2f・設計書 D-4)。**帳簿の置き場(`.cortex`)も git も見ない**。名前は `VIEW_NAMES_V2` の
|
|
286
|
+
* 組み直した案件(v2)の計画(cortex-engine #1911 便 DC-2f・設計書 D-4)。**帳簿の置き場(`.cortex`)も git も見ない**。名前は `VIEW_NAMES_V2` の 9 本。
|
|
280
287
|
* 🔴 **空の画面を緑で配らない**: 目次が無い・壊れている・読む名前が 1 本も無い、封筒が読めない・確かめられない(`unreadable`・`unexplained`。
|
|
281
288
|
* 形の違う目次の行も `unreadable`)が 1 本でもあれば投げる(ビルドを赤にする)。目次に行の無い名前は `missing`(その帳簿は無い=置かない)
|
|
282
289
|
*/
|
|
@@ -310,6 +317,18 @@ async function planViewsV2(viewDir) {
|
|
|
310
317
|
throw new Error(`組み直した案件の記憶側の画面用ファイルを確かめられません(${bad.join("・")})`);
|
|
311
318
|
return { classes, counts, use };
|
|
312
319
|
}
|
|
320
|
+
/**
|
|
321
|
+
* 記憶がまだ 1 件も無い組み直した案件の計画(cortex-engine #1911 便 GV)。読む名前は全部 `missing`(帳簿は無い=置かない)。
|
|
322
|
+
* 🔴 呼んでよいのは「取り出した区画にファイルが 1 本も無い」かつ「木の記録とストーリーが 0 件」のときだけ(`build.ts`)。記録があるのに目次が無い・目次が壊れている・封筒を確かめられないのは
|
|
323
|
+
* 今どおり `planViewsV2` が投げる(空の画面を緑で配らない)
|
|
324
|
+
*/
|
|
325
|
+
function emptyPlanV2() {
|
|
326
|
+
const classes = {};
|
|
327
|
+
for (const name of exports.VIEW_NAMES_V2)
|
|
328
|
+
classes[name] = "missing";
|
|
329
|
+
const total = exports.VIEW_NAMES_V2.length;
|
|
330
|
+
return { classes, use: {}, counts: { total, same: 0, stale: 0, unexplained: 0, unreadable: 0, unverified: 0, missing: total } };
|
|
331
|
+
}
|
|
313
332
|
/** 封筒を読む(無い・JSON でない → `null`=読めない) */
|
|
314
333
|
async function readEnvelope(viewDir, name) {
|
|
315
334
|
const text = await readText(node_path_1.default.join(viewDir, `${name}.json`));
|
package/package.json
CHANGED