@quolu/lattice 0.12.32 → 0.12.34
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/README.md +10 -0
- package/package.json +1 -1
- package/src/todo-gantt-layout.mjs +15 -6
package/README.md
CHANGED
|
@@ -26,11 +26,17 @@ CLIの全体像は`lattice --help`、各公開namespaceの正規構文は
|
|
|
26
26
|
npm test
|
|
27
27
|
npm run check
|
|
28
28
|
npm run ci
|
|
29
|
+
node scripts/reap-orphan-test-daemons.mjs
|
|
29
30
|
lattice sensor sync . --json
|
|
30
31
|
spotter doctor
|
|
31
32
|
codex-sidecar diagnostics --project . --preset auditor --json
|
|
32
33
|
```
|
|
33
34
|
|
|
35
|
+
`reap-orphan-test-daemons.mjs`は、実daemonを起動するtestが取り残したprocessを一覧します。既定は表示
|
|
36
|
+
だけで何も停めません。停めるのは`--reap`を付けた時に限り、対象はargvが指すfixtureのdirectoryが既に
|
|
37
|
+
存在しないものだけです。実行中のtestを巻き込まないための条件なので、fixtureが残ったまま死んだ実行を
|
|
38
|
+
含めたい場合だけ`--older-than-hours=<n>`で起動時刻による許可を明示します。
|
|
39
|
+
|
|
34
40
|
未初期化projectで`sensor sync`した場合は`LATTICE_SENSOR_NOT_INITIALIZED`と正規`next_action`を返します。
|
|
35
41
|
その他のsensor失敗もexit code、signal、bounded stderrをtyped detailへ残し、原因を隠しません。
|
|
36
42
|
|
|
@@ -137,6 +143,10 @@ LANや外部reverse proxyから閲覧するoptional bridgeは既定で無効で
|
|
|
137
143
|
digest付きsidecarの欠落・改ざんはtyped failureになります。
|
|
138
144
|
dashboard daemonは起動時に読み込んだ版数をhealthで名乗り、installされた版と食い違えば`lattice status`の
|
|
139
145
|
たびに新版daemonへ置き換わります。publishしただけで配信面が古いまま残ることはありません。
|
|
146
|
+
入れ替えは新daemonが登録済み全projectのstoreを読み終えるまで待つため、`lattice status`の応答が
|
|
147
|
+
その間伸びます(実測: 8 project登録で約50秒台)。待ち時間は固定秒数ではなく、spawnした子が生きている
|
|
148
|
+
間だけ待ち、子が死ねば即座に`DASHBOARD_DAEMON_UNAVAILABLE`を返します。既定120秒の上限は、応答を
|
|
149
|
+
返さない子に対するbackstopであって正常な起動時間の見積りではありません。
|
|
140
150
|
状態を書き込む`start / block / unblock / done / evidence promote / reopen / revise / revise-phase / revise-set`
|
|
141
151
|
では、監査actorとして次の3環境変数をすべて設定してください。
|
|
142
152
|
|
package/package.json
CHANGED
|
@@ -416,9 +416,15 @@ export function layoutTodoGantt(readModel, chainProjection, options = {}) {
|
|
|
416
416
|
const layers = orderLayers(nodes, wave, incoming, outgoing);
|
|
417
417
|
// A ToDo with no registered dependency has nothing to line up with. Laying
|
|
418
418
|
// every one of them out in a single row makes the canvas as wide as the plan
|
|
419
|
-
// is old — real stores have hundreds — so they wrap into a block
|
|
420
|
-
//
|
|
421
|
-
//
|
|
419
|
+
// is old — real stores have hundreds — so they wrap into a block of rows.
|
|
420
|
+
//
|
|
421
|
+
// That block goes ABOVE the wired ToDos of its stage. Below them it used to be
|
|
422
|
+
// pierced: a wired card's port descends from its own bottom edge to the routing
|
|
423
|
+
// band under the whole stage, straight through whatever independent card had
|
|
424
|
+
// wrapped into the same column, and the hidden half of that line read as a
|
|
425
|
+
// dependency the plan does not have. Independent ToDos carry no edge, so they
|
|
426
|
+
// have no incoming one either and always land in stage 0, which nothing ever
|
|
427
|
+
// arrives into — putting them on top leaves no line to cross them.
|
|
422
428
|
const wired = new Set();
|
|
423
429
|
for (const edge of edges) { wired.add(edge.from); wired.add(edge.to); }
|
|
424
430
|
const transversePosition = new Map();
|
|
@@ -427,12 +433,15 @@ export function layoutTodoGantt(readModel, chainProjection, options = {}) {
|
|
|
427
433
|
for (const layer of layers) {
|
|
428
434
|
const connected = layer.filter((key) => wired.has(key));
|
|
429
435
|
const loose = layer.filter((key) => !wired.has(key));
|
|
430
|
-
connected.forEach((key, index) => { transversePosition.set(key, index); stageRow.set(key, 0); });
|
|
431
436
|
const columns = Math.max(LOOSE_COLUMNS_MINIMUM, connected.length);
|
|
432
|
-
const
|
|
437
|
+
const looseRows = loose.length === 0 ? 0 : Math.ceil(loose.length / columns);
|
|
433
438
|
loose.forEach((key, index) => {
|
|
434
439
|
transversePosition.set(key, index % columns);
|
|
435
|
-
stageRow.set(key,
|
|
440
|
+
stageRow.set(key, Math.floor(index / columns));
|
|
441
|
+
});
|
|
442
|
+
connected.forEach((key, index) => {
|
|
443
|
+
transversePosition.set(key, index);
|
|
444
|
+
stageRow.set(key, looseRows);
|
|
436
445
|
});
|
|
437
446
|
stageRowCount.push(Math.max(0, ...layer.map((key) => stageRow.get(key))) + 1);
|
|
438
447
|
}
|