Skip to content

test(core): Memory の strength の値域は 0 を含まないことを、isStrengthInRange と schema の両方で縛る - #2097

Merged
takecchi merged 1 commit into
mainfrom
test/memory-strength-excludes-zero
Oct 11, 2026
Merged

takecchi merged 1 commit into
mainfrom
test/memory-strength-excludes-zero

Conversation

@takecchi

Copy link
Copy Markdown
Owner

変異の記録の地図(#1963)で「厚い(自動)」とされていた packages/core/src/memory.ts を照合したところ、直接の記録は薄かった(PR #98 の isStrengthInRange の A1〜A3、#736・#764 の schema の数形)。そこで変異を15形当てた。そのうち4形が生き残り、2形は約束が書かれていた。この PR はその2形を塞ぐ。

生き残っていた変異

流したのは memory.ts に触れる core の試験11ファイル(701件)。

# 変異 結果
M1 isStrengthInRange の value > 0 を value >= 0 にする(0 を通す) 生き残り
M3 MemorySchema の strength: z.number().gt(0) を min(0) にする 生き残り

strength が 0 の入力を試す試験が無かった。(同じ回で生き残った M8〔空文字の tag を断る〕と M13〔decayBaseSeq を整数に限る〕は、約束が書かれていないので塞がず、別の Issue にまとめる。)

約束はすでに書かれている

  • Memory.strength の TSDoc: 値域は (0, MAX_STRENGTH](ADR 0078)。
  • isStrengthInRange の TSDoc: 0 を含めないのは、strength = 0 が「二度と引かれない」という意味になり、それは status: 'forgotten' がすでに表しているため。

足したもの

memory.test.ts に、0(範囲外)・Number.MIN_VALUE(範囲内)・MAX_STRENGTH(範囲内)の3点で、isStrengthInRange・MemorySchema・NewMemorySchema が同じ判定をすることを見る3件を足した。

変異で確かめたこと

  • main の実装: memory.test.ts 22件すべて緑。
  • M1: 「0」の1件が isStrengthInRange の行で赤。
  • M3: 「0」の1件が MemorySchema の行で赤。
  • prettier・eslint は通った。

…ema の両方で縛る

memory.ts に変異を当てたところ、isStrengthInRange の value > 0 を >= 0 にする形と、MemorySchema の strength の gt(0) を min(0) にする形が、memory.ts に触れる core の試験11ファイル(701件)のどこでも赤にならなかった。strength が 0 の入力を試す試験が無かった。

約束はすでに書かれている。Memory.strength の TSDoc と isStrengthInRange の TSDoc は、値域を (0, MAX_STRENGTH] とし、0 を含めない理由(status: 'forgotten' と同じことを言う道を2つ作らない)を書いている(ADR 0078)。0・Number.MIN_VALUE・MAX_STRENGTH の3点で、isStrengthInRange・MemorySchema・NewMemorySchema が同じ判定をすることを見る。
@takecchi
takecchi marked this pull request as ready for review October 11, 2026 12:14
@takecchi
takecchi enabled auto-merge (squash) October 11, 2026 12:14
@takecchi
takecchi merged commit bbf6301 into main Oct 11, 2026
37 checks passed
@takecchi
takecchi deleted the test/memory-strength-excludes-zero branch October 11, 2026 12:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant