Skip to content

.risundlerc.toml からライブラリのパスを宣言できるようにする #96

Description

@TwoSquirrels

動機

v1.0 の仕様案 (2026-02) に「v1.1 以降実装予定」として書かれていた構想の掘り起こし。

[library.paths]
my-lib = "./library"

.risundlerc.toml からライブラリの ID とパス (config からの相対パス可) を宣言できるようにする。現状のライブラリ登録は $LOCAL に住むマシンローカルな状態であり、設定ファイルがリポジトリにコミットされるのと非対称になっている (この非対称が、未登録 keep をエラーでなく警告にする現行設計の理由でもある)。config で宣言できれば、リポジトリ自体が環境の宣言になり clone するだけで使える。

想定ユーザー

  • ライブラリと解答を 1 リポジトリで持つモノレポ派。 library/contests/ を同居させる構成の人。ルートの config に書けば配下のバンドル全部に効く。
  • 環境が使い捨てられる人。 devcontainer・Codespaces・Docker で rebuild するたびに $LOCAL が消えて library add のやり直しになる。config 宣言なら clone だけで自己修復する。CI でのバンドル検証も同様。
  • 複数マシン持ち。 同じ登録を全マシンで打ち直す手間が消える。

verification-helper が設定をリポジトリにコミットさせる文化を作っており、「リポジトリがライブラリ構成を宣言する」モデル自体は競プロ界隈に馴染みがある。

実装の見通し

追い風: 「バンドル時に未登録なら黙って登録する」機構には前例が 2 つある (std の初回自動登録・schema 不一致の自動再生成)。config 宣言ライブラリの自動登録は既存パターンの延長で書ける見込み。

要検討事項

  • ID の名前空間の衝突。 $LOCAL/libraries/<id> はグローバルなので、別々のリポジトリが同じ ID を別のパスで宣言すると衝突する。キャッシュをパス基準で持つ、config 宣言をグローバル登録より優先する、衝突時はエラーにする、などの選択肢がある。
  • 相対パスの基準。 config ファイルのあるディレクトリ基準が素直か。
  • ハッシュ検証・library update との関係。 config 宣言ライブラリも変更検知の対象にするか、更新フローはどうなるか。
  • library list/show にどう見せるか。 グローバル登録と config 宣言を区別して表示するか。
  • 未登録 keep 警告との整合。 config で宣言されたライブラリは警告対象から外れる。警告文の案内 (library add を促す) に config という選択肢を足すかも含めて見直す。

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions