ewderna and Claude Opus 5
5b671976d5
docs: 保留課題をbacklogへ分離し、運用ルール5を追加
...
未確認事項が「現在の仕様が答えに依存するもの」と「答えが出なくても進められる
もの」を混ぜて抱えていた。後者を backlog/README.md へ移し、仕様書の未確認事項を
前者だけに絞る。移す際は保留中の対応範囲・暫定仕様を仕様書本文に明記し、
backlogへの移動が仮説の採用を意味しないようにする。
PHY・ELC・IDXの10件を移し、3ファイルとも未確認事項が空になった。
ルール4では、事実確認の「格上げ条件」と意思決定の「完了条件」を区別する。
仕様書側の保留課題はbacklogの区分へのリンク箇条書きだけに固定し、
末尾は保留課題 → 検討済み・非採用 → 未確認事項の順に置く。
doc-lintをルール5に対応させ、backlogを検査対象に加えた。回帰テストを追加。
Journal: journal/2026-09-22-document-backlog.md
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01DKW58HEg8zAQoLrkWByPfD
2026-09-22 19:52:39 +09:00
ewderna and Claude Opus 5
76c349fa0c
idx: 全バリアントを1つのorderに並べ、出力時に取捨して番号を詰める
...
排他キーも別々の要素として並べる。出力はバリアントを選択した構成を単位とし、
対象外のキーを除いた並びの位置をそのままキー番号にする。同じ配線の排他キーは
選択後に同時には残らないため、番号を共有させる必要がない。
保存したorderは選択で書き換えず、番号の互換性は出力レイアウトごとに扱う。
6d0eba9 で「IDXは番号を共有できる」と書いたが、共有をやめる形に変える。
コミュニティレイアウトの並びを取捨で得られるかは、この方式では未検証のため
IDXのP-1として残す。
Journal: journal/2026-09-22-idx-variant-output.md
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01DKW58HEg8zAQoLrkWByPfD
2026-09-22 18:36:09 +09:00
ewderna and Claude Opus 5
c31360a772
phy: 行の先頭以外の r, rx, ry を取り込みで受け入れる(P-16解消)
...
KLE本家は拒否するが、VIAとRemapは読む。Remapで扱える基板を取り込めない
状態にしないため、位置を問わず受け入れる。本家のコードから行頭チェックを
外した挙動をそのまま採る。出力は従来どおり行頭にのみ置く。
Journal: journal/2026-09-21-kle-lenient-row.md
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01SSKcJLPAaPLchG4LXxk6cY
2026-09-21 21:57:45 +09:00
ewderna and Claude Opus 5
6d0eba9346
phy: 複数のバリアントで成立するキーはVariantごとに複製して置く
...
隣り合うキャップが同じフットプリントを食い合う基板(MACRO1)があり、選択を独立な
VariantGroupに必ず分解できるわけではない。分解を強いると、キャップが重なる組み合わせを
作れてしまう。複製してもELCは接続先を、IDXは番号を共有できるので他レイヤーは壊れない。
どのキーノードが同じ物理キーかはBeyond KLEが判定せず、設計者の情報として扱う。
前のコミットで「独立したVariantGroupに分けて表す」と書いたが、MACRO1は下段を含めると
分解できない。あわせて訂正する。
Journal: journal/2026-09-21-variant-shared-key.md
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01246a5KFLmwcRXriZvX8fdJ
2026-09-21 21:34:10 +09:00
ewderna and Claude Opus 5
8e7d21534d
phy: 未確認事項のP-16を番号順の位置へ移す
...
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01246a5KFLmwcRXriZvX8fdJ
2026-09-21 19:01:27 +09:00
ewderna and Claude Opus 5
ea7bf01e72
phy: 選択肢をまたぐ共通キーは独立したVariantGroupに分けて表す
...
VIAの定義824件を調べ、複数の選択肢で成立するキーを持つ基板を2件見つけた(LW67、MACRO1)。
どちらも独立した2つの選択を1つの選択肢リストに畳んだもので、VariantGroupを2つ置けば
キーを複製せずに表せる。残るのは、積のうち一部しか提供しない基板の扱いだけになった。
Journal: journal/2026-09-21-variant-shared-key.md
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01246a5KFLmwcRXriZvX8fdJ
2026-09-21 19:00:46 +09:00
ewderna and Claude Opus 5
12a47fe822
phy: 公開KLE JSON 1505件で変換可否を確かめ、書き戻しの制約を加える
...
VIAの定義とKLE本家のプリセット・サンプルを集め、本家の serial.js を通して往復させた。
幾何は全件無損失で、PHYで表せないKLEの幾何情報は無かった。
KLEは p, sm, sb, st を空文字に戻す指定を無視するため、混在する配置は書き戻せない。
本家が読めないJSONも実在するので、取り込みの寛容さを問いとして残す。
Journal: journal/2026-09-21-kle-corpus.md
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01246a5KFLmwcRXriZvX8fdJ
2026-09-21 19:00:32 +09:00
ewderna and Claude Opus 5
ebe1434860
phy: KLE出力の rx, ry をクラスター原点で共有し、座標を丸める
...
KLEが1行にまとめるのは r, rx, ry が一致し y が厳密に等しいキーだけなので、
同じ絶対角度のキーには共通の軸を与え、絶対座標への変換で入った誤差は丸めて落とす。
ErgoDox・Kinesis Advantage で元のKLE JSONとバイト単位で一致する出力になった。
Journal: journal/2026-09-21-kle-output-rowgroup.md
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01246a5KFLmwcRXriZvX8fdJ
2026-09-21 19:00:17 +09:00
ewderna and Claude Opus 5
69d9c73fff
phy: プロファイルをファイル単位の器に置き、キーはIDで参照する
...
保存形式に PhyFile を書き、profiles を木の外に出した。同じ定義を複数のキーに
複製しないため、Key.profile は実体ではなくIDの参照にする。
ビジュアル表現は上面矩形の4辺インセット + R とし、非対称な上面を表せる形にした。
プロファイル内の距離はすべてmmに統一。
Journal: journal/2026-09-21-profile-container.md
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01246a5KFLmwcRXriZvX8fdJ
2026-09-21 18:58:38 +09:00
ewderna and Claude Opus 5
a175ee3c53
PHY: レイアウトバリアントを木のノードとして導入し、ELC/IDXの扱いを決める
...
交換可能なキークラスタ(ISO Enter、スペース周りのキー数など)を、
VariantGroup / Variant の2ノードでPHYの木に表す。全バリアントのキーを
同時に持ち、単一の配置を要求する出力のときだけ1つ選んで畳む。
ELCは選択に関係なくsupersetを配線する。排他キー同士は同じ接続先を共有してよい。
IDXはキー番号の空間を1つに保ち、同じ接続先に配線された排他キーは
`order` の配列要素として同じ番号を共有する。
Journal: journal/2026-09-21-multi-layout.md
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01JPCpuPv6hDN76RgNe2PsRR
2026-09-21 09:34:51 +09:00
ewderna and Claude Opus 5
eb96ff02d8
PHY: LEDの識別番号をELCが持つことを明記(P-11解消)
...
RGB効果が使うのは物理座標で、インデックスは配線で決まるアドレス。
チェーン順序を設計者が恣意的に決めてよいのは確かだが、決めた順序は
そのまま配線の指示になるため、電気的な情報としてELCが持つ。
IDXに別の論理インデックスを置くと二重管理になり、食い違えば別のLEDが
光るため、IDXはLEDの番号を持たない。
検証ではなく決めによる解消。
Journal: journal/2026-09-20-led-index-layer.md
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-09-20 20:24:56 +09:00
ewderna and Claude Opus 5
900dfff65e
schema: PHYスキーマをPHYレイヤー.mdに追従させる
...
size に x2〜h2、key に switchOffset / partGroup / orientation /
perKeyLED / decal / ghost / labels を追加し、部品ノードを component
として定義して root と cluster.children に加えた。
key.metadata は廃止し、labels をトップレベルへ移した。残る見た目の
属性は保持する先の層が決まっていない(P-6)ため、構造化せず
kleCompatibility に不透明なまま置く。
PHYレイヤー.md 側の「スキーマが追従していない」注記を削除。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-09-20 14:31:47 +09:00
ewderna and Claude Opus 5
b9997f8272
PHY: 各ノードがIDを持つことを明記
...
木の中のノードを一意に指すために必要で、キーのIDはIDXからの参照先に
なっている。スキーマ側には元からあったが本文に書いていなかった。
部品ノードも同じ形でIDを持つ。
あわせて木の説明から部品ノードが抜けていたのを補った。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-09-20 14:31:31 +09:00
ewderna
d8db442fd5
chore: table style
2026-09-20 14:09:03 +09:00
ewderna and Claude Opus 5
58c952f6a3
PHY: クラスター自動推定をやめ、手動の組み替え操作を持つ(P-3解消)
...
絶対配置を保ったままクラスターを作り、原点と基準角度を動かせる操作を持つ。
reparent と reframe の2演算に還元され、Transform が剛体変換なので結果は必ず表せる。
これに伴い、スナップは手作業入力時のみ・相対グリッドとし、計算結果には適用しない。
Journal: journal/2026-09-20-cluster-manual-grouping.md
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-09-20 14:04:02 +09:00
ewderna and Claude Opus 5
2ec3dd4a1a
PHY: LEDをキーのbooleanと汎用の部品ノードに分ける(P-10解消)
...
per-key LEDは位置に自由度がないため、キーが持つboolean 1つにする。
設計者が位置を決める部品はLED専用ノードにせず、変換と部品グループだけを持つ
部品ノードとして一般化する。表裏とチェーン順序はPHYに持たない。
Journal: journal/2026-09-20-led-node.md
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-09-20 10:53:57 +09:00
ewderna and Claude Opus 5
bbea89798d
PHY: スイッチの品種を持たず、部品グループのラベルだけ残す
...
フットプリントの選択はPCB設計ツール側の仕事で、Beyond KLEはその手前までを扱う。
前の決定で品種を持つ根拠にした「3pinの明示」はKiCadに渡す情報の話だったため、
端子配置とソケット方式を落とし、解釈しない部品グループのラベルと向きだけを残す。
キーごとの検出方式はELCが持つ(2端子前提ではHEの配線を組めないため)。
未知の端子配置の問い(P-9)は、品種を持たなくなったので消滅。
Journal: journal/2026-09-20-switch-terminal-reversal.md
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01RCUFZ7vmSqQyGAPUFNWoiz
2026-09-20 09:26:44 +09:00
ewderna and Claude Opus 5
1e22853218
PHY: スイッチを端子配置・ソケット方式・向きの3軸で持つ(P-7解消)
...
ブランドは持たない。同じボードに対して利用者がスイッチを選べるため、
ボード設計の情報ではない。KLEの sm, sb, st は端子配置と対応させず、
見た目の属性と同じく不透明なまま退避して書き戻す。
未知の端子配置の扱い(P-9)とLEDノード(P-10)を未確認事項に追加。
Journal: journal/2026-09-20-switch-terminal.md
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-09-20 08:42:41 +09:00
ewderna and Claude Opus 5
f6ca7434bc
PHY: スイッチ位置をキーごとのオフセットとして持つ(P-5解消)
...
キャップ形状からはスイッチ位置が決まらない(Stepped Caps Lockはずれ、XFERはずれない)ため、
(w, h) 矩形の中心からのオフセットをキーのローカル座標系で持つ。既定値0。
Journal: journal/2026-09-19-switch-offset.md
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-09-19 11:15:03 +09:00
ewderna and Claude Opus 5
13df64f6ff
PHY: KLE固有の形状・属性の受け止め先を決める(P-4解消)
...
- 長方形でないキーは Size に x2, y2, w2, h2 を加えて持つ
- デカール・ゴーストはキーとして持ち、フラグで区別する
- ラベルは参考情報として持つ(取り込み時の照合に使う)
- 見た目の属性はKLEへ書き戻せるよう保持する。保持する層は未決
未決部分は P-5〜P-8 に分離。空の見出し「何かある?」も削除。
Journal: journal/2026-09-19-kle-key-attributes.md
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-09-19 11:14:43 +09:00
ewderna and Claude Opus 5
bb1108763a
KLE互換ドキュメント2本を廃止し、裏取りした事実をPHYに書き戻す
...
kle-compatibility.md / kle-compatibility-analysis.md は埋め込み前提の
設計で、KLE往復の決定と矛盾していた。KLE本家ソースで確認できた事実だけを
PHYレイヤー.md に書き戻し、2本は削除した。
- ConfigObject の回転角度キーを ra から r に修正し、fa sm sb st を追加
- KLE出力で失われる情報、KLEの p がPHYのプロファイルと別物であることを明記
- KLEは保存時にキーを並べ替えるため、配列順は照合に使わない
- 過去のKLE JSONはPHYデータなしでも読めなければならない、という制約を追加
- 未確認事項に P-3 クラスター自動推定、P-4 KLE固有の形状・属性の受け止め先を追加
Journal: journal/2026-09-18-kle-compat-docs-retire.md
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-09-18 21:18:49 +09:00
ewderna and Claude Opus 5
1a9a2a06c5
PHY: KLE JSONに識別・構造情報を埋め込まず、取り込みは照合で行う
...
KLEは既存のビュワーとして使えればよく、KLEで編集された時点で
Beyond KLEのデータではないと線引きした。KLE JSONは素の形式で出力し、
他ツールにそのまま渡せる状態を保つ。
取り込みは手元のPHYデータとの形状+ラベル照合で行い、照合できない
キーはroot直下に置く。構造の復元は保証しない。照合基準の詳細は
未確認事項 P-2 として残した。
labelへのID埋め込み、別ファイルのクラスターJSON、ゴーストキー案は
いずれも不採用。
Journal: journal/2026-09-18-kle-roundtrip.md
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-09-18 21:01:34 +09:00
ewderna and Claude Opus 5
cd6a94f4f4
PHY: 座標を親からの相対に統一し、回転中心パラメータを廃止
...
クラスター単位の移動・回転を親ノード1つの書き換えで済ませるため、
各ノードは親から見た変換 (x, y, rotation) を持つことにし、絶対座標は
保持しないことにした。回転軸は常に自分自身のローカル原点に固定し、
KLE の rotation_x / rotation_y に相当するパラメータは持たない。
あわせてスナップの基準系をローカル座標系と明記し、親の変換を受けない
w, h を Transform から分離した。KLE出力時の行のまとまりは未解決の問い
として未確認事項に立てた。
Journal: journal/2026-09-18-phy-coordinate-model.md
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01MdLT5x5ka5y6CaWLeE3EKb
2026-09-18 08:44:22 +09:00
ewderna and Claude Opus 5
55243f626d
初期検討段階のドキュメントと運用ルールを取り込む
...
ルール策定前に書かれた設計ドキュメント7点を、以降の基準点として
そのままの状態で記録する。CLAUDE.md のルール1〜4は未適用。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01MdLT5x5ka5y6CaWLeE3EKb
2026-09-18 08:43:01 +09:00