Skip to content

spec(brake): normative prose in tests/ falls outside every brake 1 axis #1920

Description

@smileygames

purpose

tests/** は brake 1 の発火面(governed surface)だが、そこに書かれた規範的な散文を読む軸が 1 つも無い。 PR #1919 で射程を越えた主張がそのまま merge された。どの軸も見に行かない位置に規範的主張が置ける、という穴を塞ぐ。

premise

いずれも 2026-09-09 に実測。

(1) 実際に通り抜けた 1 件。 PR #1919(merge 済み、4ce88d6)が追加した tests/test_target_tag_sort_key_parity.py の docstring:

which pins the workspace at sentinel-tag(adapter=...,target=unknown) permanently.

permanently は観測条件(shallow clone、かつ最新 tag が truncation の外を指す状態)を越えて読める。同じ主張の別の site では狭めてある —— issue #1918 本文の premise (3) は「この観測はこのクローンで取ったもので、健全なクローンで同じ固定が起きるとは述べていない」と射程を明記している。狭めた側と狭め残した側が同時に存在する形で merge された。

(2) 3 軸すべての射程外だったのは、いずれも仕様どおり。

  • 固定軸(impression-literal): Scope が rules/**/*.md / skills/**/SKILL.md / adapter/**/* / Li+update.md に限られる。skills/evolution-impression-literal-detection/SKILL.md は除外理由を自分で述べている —— tests/**.github/workflows/** は executed code であって instruction として load される散文ではないので、除去テストが不変に保つべき behavior semantic を持たない。さらに firing side と path-for-path で一致させるのは over-apply だと明示している
  • Axis A(issue 要件): issue bug(update): tag-channel target resolution fails where --sort=-creatordate cannot read objects #1918 本文はこの docstring の文言について何も述べていない。不一致の対象が存在しない
  • Axis B(規則違反): docstring の主張の射程を縛る規則が rules/** / skills/** に無い

つまり 評価者の見落としではない。 2 round とも、どの軸の射程にも入っていなかった。

(3) 穴の位置。 brake 1 の condition 2(rules/evolution/initiator-autonomy.md Governed surface)は tests/** を発火側に置き、その理由を「テストは何の check にも支えられていないので、読むことだけが検出器」と述べている。その「読む」を実行する軸が、散文については存在しない。 実行可能なコードとしては CI が検出器になるが、docstring は CI が読まない。

constraints

  • 固定軸の Scope を tests/** へ広げる解は取らない。 同 skill が除外理由を自分で述べており、除去テスト(behavior semantic の不変性)が成り立たない面へ持ち込むと、判定の根拠が無いまま flag だけが出る。同 skill の matching this axis to the firing side path-for-path over-applies it に正面から当たる
  • 対象は 規範的主張を述べている散文に限る。テストの意図説明・再現手順・先例への参照は対象外。docs/** は record 面として既に別扱い(rules/evolution/initiator-autonomy.md Governed surface の Excluded)
  • 新しい軸を足す解は最後。skills/evolution-parallel-agent-eval/SKILL.md Trigger, Axis selection が brake 1 path の軸を 3 本に固定しており、Do not add a third per-draft axis と明記している。この固定に触る解は、その literal ごと動かすことになる
  • 1 occurrence。rules/evolution/promotion-judgment.md の cluster 閾値は満たしていないが、これは memory 観測からの promotion ではなく brake 実行中に直接観測された spec gap であり、rules/task/task.mdCreate issue when: bug found, spec gap found の経路で起票している

差分候補(軸のみ)

  • (a) Axis B の Scope 側で拾う。 「主張の射程を縛る規則」が無いことが Axis B の空振りの原因なので、規則の側を作れば既存軸で拾える。軸は 3 本のまま
  • (b) tests/** の散文に置ける主張の種類を規定する。 規範的主張を禁じ、規範は rules/** 側に置いて test は参照のみとする。書く時点で塞ぐ形
  • (c) 軸追加は最後。上二つで閉じない場合のみ

関連

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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