目的
PR #1652 の brake 1 で、括弧深度トラッカーの届く範囲に 2 件の欠陥が出た。いずれも #1652 では仕様文に挙動を明記するに留め、アルゴリズムには触れていない(親の brake 後修正は指摘が要求する範囲に閉じるため)。本 issue はその挙動そのものを直す。
3 ポート(adapter/claude/hooks/on-session-start.sh / adapter/codex/hooks/on-session-start.sh / adapter/codex/hooks/on-session-start.ps1)同時でなければ新しい食い違いを作る。
確認済みの事実
1. 全角括弧 () が追跡されない(評価者 3/3)
outer_index / Get-OuterIndex は ASCII の ( ) しか見ていない(awk on-session-start.sh:578-579 / ps1 :482)。日本語ログで全角括弧の中に / や 。 が入ると、括弧の外と判定されてリストが早期終端するか幻の軸として割れる。item 3 で直したのと同じバグクラスが、文字種を変えて再現する。
到達可能性: live な self-evaluation_log.md の **Axis tags** 行 10 本を走査して全角括弧の混入は 0 件。ファイル全体では全角括弧が 20 箇所あるが、いずれも軸タグ行の外。現時点では未発火。
2. 閉じられない ( 以降が全て括弧内扱いになる(評価者 2/3、退行)
depth は ( で増え ) で減るだけで、非対称な ( があると 0 に戻らない。以降その行は終端子も / も効かず、残り全体が 1 ペアに畳まれる。
変更前の素朴な split(rest, " / ") は無条件に割っていたため、旧コードなら拾えていた軸ペアを新コードが黙って落とす。PR #1652 が持ち込んだ退行である。
到達可能性: live ログの **Axis tags** 行 10 本のうち括弧が非対称なものは 0 件。現時点では未発火。
前提
制約
- 3 ポート同時。片方だけ直すと新たな食い違いになる
layer: L1-model のファイルには触れない見込み
- 全角括弧を追跡対象へ足すか、括弧の概念自体をやめるか(例: 終端子の探索を行頭からの最左でなく別の規則へ)は設計判断。単純に文字を足すと、次に別の括弧様文字が出た時に同じ形で腐る
- 2 の修正方向も一つでない。非対称
( を無視する / 行末で depth をリセットして再走する / 非対称を検出したら旧来の無条件 split へ縮退する、のいずれか
完了条件
- 全角括弧を含む軸タグ行で、3 ポートが ASCII 括弧の場合と同じ結果を出す
- 非対称
( を含む軸タグ行で、その後ろの軸ペアが数えられる
- 上記 2 点それぞれに、本番形の 3 ポートを検査するテストがある
- 仕様文が実装に追随している
対象ファイル
adapter/claude/hooks/on-session-start.sh
adapter/codex/hooks/on-session-start.sh
adapter/codex/hooks/on-session-start.ps1
skills/evolution-self-eval/SKILL.md
tests/test_on_session_start_observation_surface.py
参照
目的
PR #1652 の brake 1 で、括弧深度トラッカーの届く範囲に 2 件の欠陥が出た。いずれも #1652 では仕様文に挙動を明記するに留め、アルゴリズムには触れていない(親の brake 後修正は指摘が要求する範囲に閉じるため)。本 issue はその挙動そのものを直す。
3 ポート(
adapter/claude/hooks/on-session-start.sh/adapter/codex/hooks/on-session-start.sh/adapter/codex/hooks/on-session-start.ps1)同時でなければ新しい食い違いを作る。確認済みの事実
1. 全角括弧
()が追跡されない(評価者 3/3)outer_index/Get-OuterIndexは ASCII の()しか見ていない(awkon-session-start.sh:578-579/ ps1:482)。日本語ログで全角括弧の中に/や。が入ると、括弧の外と判定されてリストが早期終端するか幻の軸として割れる。item 3 で直したのと同じバグクラスが、文字種を変えて再現する。到達可能性: live な
self-evaluation_log.mdの**Axis tags**行 10 本を走査して全角括弧の混入は 0 件。ファイル全体では全角括弧が 20 箇所あるが、いずれも軸タグ行の外。現時点では未発火。2. 閉じられない
(以降が全て括弧内扱いになる(評価者 2/3、退行)depthは(で増え)で減るだけで、非対称な(があると 0 に戻らない。以降その行は終端子も/も効かず、残り全体が 1 ペアに畳まれる。変更前の素朴な
split(rest, " / ")は無条件に割っていたため、旧コードなら拾えていた軸ペアを新コードが黙って落とす。PR #1652 が持ち込んだ退行である。到達可能性: live ログの
**Axis tags**行 10 本のうち括弧が非対称なものは 0 件。現時点では未発火。前提
skills/evolution-self-eval/SKILL.mdAxis tag line format)には fix(hooks): axis-tag format spec and locale-pinned ordering across three session-start ports #1652 で両方の挙動を明記済。挙動を変えるなら仕様文も同時に更新すること制約
layer: L1-modelのファイルには触れない見込み(を無視する / 行末で depth をリセットして再走する / 非対称を検出したら旧来の無条件 split へ縮退する、のいずれか完了条件
(を含む軸タグ行で、その後ろの軸ペアが数えられる対象ファイル
adapter/claude/hooks/on-session-start.shadapter/codex/hooks/on-session-start.shadapter/codex/hooks/on-session-start.ps1skills/evolution-self-eval/SKILL.mdtests/test_on_session_start_observation_surface.py参照