ADR-47: 窓列への周期ラベル——segmentBy の labels: cycle 形
判断: segmentBy の labels: の値位置に周期形 cycle リスト anchor: 実日 を採用する
(発報層還流 第 5 便 §3〈第 3 の適用ドメイン=暦注・周期暦法〉の実需を受けた候補設計 draft
§1.28=4 視点並列検証済み・設計者裁定 3 件〈2026-07-25〉を経た ADR 化。ADR-39〈窓列への並行
ラベル列〉の器の拡張であり、静的 labels: の同長性要求が ADR-46 の静的ソース原則〈式は静的・
データは実行時解決〉と衝突する穴——covering が伸びるたびにラベル列の改稿が要る——を塞ぐ)。
-
設計の核=窓束縛 cycle(ADR-03/30)の意味論の再利用。「anchor の属する窓が先頭 ラベル」——ラベル(窓 i) =
list[(i − i₀) mod N](i=窓列序数〈ADR-39〉・i₀=anchor の 属する窓の序数・N=リスト長・負の差は法で正規化=F65 規約)。新語彙ゼロ(cycle・anchor:とも既存語)。用途は「窓列=暦の単位・ラベル=固定周期」の形すべて(節切り月の 十二支・月家九星〈逆行は逆順リスト〉・月星座の 12 宮)。 -
形と位置:
labels: cycle (リスト | リスト束縛名) anchor: 実日。anchor: は形の一部 (必須・カンマで切らない——切ると segmentBy の未知引数に化けるため専用文言で導く)。segmentByの named-arg 限定——テーブルリテラルの labels: には入れない(テーブルは点への 1 対 1。周期を貼りたい点列は「テーブルでなく cycle」の既存誘導が立つ)。premise 層の窓生成語cycleの named-arg 値位置への出現は位置依存のキーワード解釈(ADR-42 の統一原理)。 リスト値域は静的形と対称(リテラルまたはリスト束縛名=ADR-39 判断 1・型域は ADR-34 判断 3。 裁定 2026-07-25)。 -
同長性検査は課さない——周期は任意の窓数を覆う(リスト長の倍数である必要もない)。 位相保存は端の増減に限る: 覆域の延伸・過去側切り詰めは i と i₀ が同数ずれて差が不変 (数学的保証)。i₀ はマーカー列基準で計算する——実体化範囲・評価範囲に依存しない正確な 数え方(ADR-39 判断 2 の原則の継承)。
-
anchor の所属要件(評価時検査・窓束縛の評価と同時=external では解決後): anchor は 窓列のいずれかの窓に区間所属する実日(空窓〈empties: keep〉も序数を消費し anchor を 受ける=ADR-39 の空窓読み口と同一規約。境界日は半開区間で新窓側・最終窓は覆域端まで)。 頭側・範囲外は一般評価エラー(裁定 2026-07-25——供給エラーには乗せない。解決は成功して おり式側の宣言と新データの不整合だから、式の更新を促す明示エラーが筋。文言に同位相の 付け替え候補〈リスト周期 N 窓分先の対応実日へ進めれば全ラベル不変〉を含める)。マーカー点 との一致は要求しない(属する窓で決まる=cycle と同じ)。
-
締めの継承(ADR-39 判断 4):
edges: clip・empties: drop・label:同居・規則マーカー (無限窓列——周期ラベルは窓束縛 cycle へ・既存誘導文言も書き分け)は静的エラー。マーカー 覆域が全マーカーを包む単一の無註釈区間であることも継承——根拠は「窓数確定」から「位相 確定」に読み替える(註釈域内の未知マーカーは全ラベルを黙ってずらす)。あわせて named-arg の重複指定を静的エラーに一般化(従来は先勝ちの黙殺——ADR-39「黙って捨てない」の残り穴)。 -
窓インスタンス参照 W(v): 周期ラベルは非一意キー——全マッチ和(ADR-42。覆域が 1 周期 未満でリスト内未出現のラベルは正当な空)。リストは cycle 形の静的な全値域——リスト外の 値引数は域外の静的エラー(ADR-42 判断 7 (g) の適用)。
-
守備範囲の較正(裁定 2026-07-25=トレードオフ受け入れ): cycle 形が守るのは位相の宣言 のみ。同長性検査(F62 の器)を持たないため、(a) マーカーの中途挿入・欠落は片側の全ラベルが 黙って回り、(b) 非周期列への誤用(旧暦月番号——閏月は前月番号の繰り返し)は閏のたび永続 ずれが累積する——いずれも照合相手のリストが存在せず機械検出は原理的に不可能(静的 labels: なら同長性検査が割れていたクラス)。中身と周期性の照合は doctest・
coincidesの 分担(ADR-39 判断 6「守るのは長さのみ」の対——cycle 形では「守るのは位相のみ」)。 reference には使い分け(周期→cycle 形・非周期データ→静的 labels:)と誤用時の症状を必置する。
経緯: 候補設計(draft §1.28)→ 4 視点並列検証(整合性・コーパス・実装可能性・敵対=指摘 32 件
全反映。コーパス実証=節切り十二支・月家九星〈非倍数周期 9∤12・負 mod〉・月星座の 3 用途全一致・
covering 3 年延伸で式不変)→ 設計者裁定 3 件 → ADR 化・実装(テスト 15 本)。検証の副産物として
reference/cycle.md 落とし穴の既存誤り(「リストを書き換えても anchor が同じなら同一の暦」——実装・
spec と矛盾)を検出し訂正した(2026-07-25)。却下案=cycle のオペランド拡張(窓列 cycle […]):
窓(windows 値・暦法純粋の律動)と窓列(データ由来のストリーム)の型差を跨ぎ、cycle の I8 の
性格を壊すため不採用(第 5 便裁定)。