Skip to content

Case folding is not locale-pinned in the bash ports while ordering is #1654

Description

@liplus-lin-lay

目的

PR #1652 は 3 ポートの並べ替えをロケール非依存に固定した(bash は LC_ALL=C sort、PowerShell は [System.StringComparer]::Ordinal)。しかし大小文字変換は同じ扱いになっていない。

  • bash 側: normalize_axis / record 内の tolower() は素のまま。LC_ALL=C が掛かっているのはパイプ末尾の sort だけ(adapter/claude/hooks/on-session-start.sh:557 の awk 起動には無く、:667 / :812 の sort にのみ有る)
  • PowerShell 側: .ToLowerInvariant() で不変固定

同一入力に対してホストのロケール次第でポート間の結果が割れうる。

確認済みの事実

前提

制約

  • 3 ポート同時。bash 2 本だけ固定しても PowerShell と揃わなければ意味を成さない
  • LC_ALL=C を awk 起動全体に掛けると、awk の文字/バイトモードが変わり多バイト文字の length() / substr() の挙動に波及しうる。並べ替えの固定と同じ粒度で貼れる保証がないため、tolower() の呼び出し側だけを不変にする経路(ASCII 限定の自前変換など)と比較して決めること
  • layer: L1-model のファイルには触れない見込み

完了条件

  • 3 ポートの大小文字変換がホストのロケールに依存せず一致する
  • 多バイト文字を含む軸名に対する既存の挙動が変わっていない(回帰させないこと)
  • 本番形の 3 ポートを検査するテストがある

対象ファイル

  • adapter/claude/hooks/on-session-start.sh
  • adapter/codex/hooks/on-session-start.sh
  • adapter/codex/hooks/on-session-start.ps1
  • tests/test_on_session_start_observation_surface.py

参照

Metadata

Metadata

Assignees

No one assigned

    Labels

    forming本文を再構築しながら要求を整えている状態specLi+の挙動に影響する仕様・ポリシー・定義

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions