@takagaki/cortex-decisions-viewer 0.12.10 → 0.12.11

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.
Files changed (2) hide show
  1. package/dist/render.js +18 -8
  2. package/package.json +1 -1
package/dist/render.js CHANGED
@@ -512,8 +512,22 @@ function sanitizeStateNow(v) {
512
512
  return out.length ? out : null;
513
513
  }
514
514
  /**
515
- * ストアの「届くか」を行に重ねる。**まとめ表より新しいときだけ**——古い確認結果で
516
- * 新しい実測を潰さない(時刻の比較は ISO 文字列の辞書順で足りる)。
515
+ * ストアの「届くか」を行に重ねる。**まとめ表の時刻とは比べない。**
516
+ * fleet-status.json chat / dev の gate・needed を焼き込まない(観測の一本化・工程1。
517
+ * 生成側の明示許可リストに無い)ので、この関数が触る行ではストアの行が
518
+ * **常に唯一かつ最良の答え**である。比べる相手がそもそも居ない。
519
+ *
520
+ * 🔴 **かつて在った鮮度ガード(`hit.at <= generatedAt` なら捨てる)は外した(#280)。**
521
+ * fleet-status.json は push のたびに再生成されるので、夜間の観測はほぼ常に「古い」側へ
522
+ * 回り、恒久的に捨てられていた——画面が「登録状況を確認中です」のまま戻らなくなる。
523
+ * 新旧の勝ち負けはサーバ側(DynamoDB の SK と、書き込み時の条件式)が解決済みで、
524
+ * 画面で二重に判定しない。ISO の秒精度とミリ秒精度を辞書順で比べると新旧が逆転する
525
+ * ハザード(`infra/lambda/shared/connection-state-keys.mjs` に記述あり)も、
526
+ * 比較をやめたことで消えている。
527
+ *
528
+ * ⚠ 工程1より前の cortex-engine が作った fleet-status.json には gate が焼き込まれて
529
+ * いることがあるが、push のたびに再生成される設計上それが残るのは休眠案件だけで、
530
+ * 休眠案件ではストアの行が唯一かつ最新の観測なので実害は無い。
517
531
  *
518
532
  * 対象はチャットと開発の行(段B。夜間チェックがこの2つを書く)。
519
533
  *
@@ -529,7 +543,7 @@ function sanitizeStateNow(v) {
529
543
  * 分からない状態に戻る。上書きするときは空でも必ず載せる——夜間の古い needed が
530
544
  * 新しい判定の横に残ると、直したはずのスコープ名がいつまでも出る
531
545
  */
532
- function overlayStateOnFleet(view, rows, generatedAt) {
546
+ function overlayStateOnFleet(view, rows) {
533
547
  const v = view || {};
534
548
  if (!rows || !rows.length || !Array.isArray(v.externalSources))
535
549
  return v;
@@ -553,8 +567,6 @@ function overlayStateOnFleet(view, rows, generatedAt) {
553
567
  hit = byKey["dev\t" + String(s.ref)];
554
568
  if (!hit)
555
569
  return s;
556
- if (generatedAt && hit.at <= generatedAt)
557
- return s;
558
570
  changed = true;
559
571
  return Object.assign({}, s, {
560
572
  gate: hit.status,
@@ -4738,12 +4750,11 @@ ${deriveCapTile.toString()}
4738
4750
  function fleetVal(key) {
4739
4751
  if ((LIVE_REGISTERED || LIVE_STATE) && MERGE_KEYS[key]) {
4740
4752
  // 登録の追加 → 状態の上書き、の順で1回だけ合成する。
4741
- // 状態ストアの答えは、まとめ表より新しいときだけ勝つ(overlayStateOnFleet が判定)
4753
+ // 状態ストアの答えは常に勝つ(まとめ表は gate を焼き込まない。overlayStateOnFleet の項)
4742
4754
  if (!MERGED) {
4743
4755
  MERGED = overlayStateOnFleet(
4744
4756
  mergeRegisteredFleet(rawView(), LIVE_REGISTERED),
4745
4757
  LIVE_STATE,
4746
- String(rawFleetVal("generatedAt") || ""),
4747
4758
  );
4748
4759
  }
4749
4760
  return MERGED[key];
@@ -4877,7 +4888,6 @@ ${deriveCapTile.toString()}
4877
4888
  var ov = overlayStateOnFleet(
4878
4889
  { externalSources: rawFleetVal("externalSources") || [] },
4879
4890
  LIVE_STATE,
4880
- String(rawFleetVal("generatedAt") || ""),
4881
4891
  );
4882
4892
  return {
4883
4893
  // 🔴 **能力の状態は正本(capabilitiesNow)を通す(工程1.5)。** タイルの語は
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@takagaki/cortex-decisions-viewer",
3
- "version": "0.12.10",
3
+ "version": "0.12.11",
4
4
  "description": "Cortexの意思決定記録(Decisions/*.md)を静的サイトにビルドして閲覧する。各レコードに「Edit on GitHub」リンクを付与する。",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,