Skip to content

test(core): observe の入力で空文字を断ると約束した欄を、一覧のとおりに縛る - #2095

Merged
takecchi merged 1 commit into
mainfrom
test/observe-empty-external-id-rejected
Oct 11, 2026
Merged

takecchi merged 1 commit into
mainfrom
test/observe-empty-external-id-rejected

Conversation

@takecchi

@takecchi takecchi commented Oct 11, 2026 •

Copy link
Copy Markdown
Owner

packages/core/src/observation.ts の ObserveInputSchema に当てた変異のうち、空文字の扱いの1形を塞ぐ。

生き残っていた変異

ObserveUtteranceInputSchema の externalId: z.string().min(1).optional() から min(1) を外す(空文字の externalId を通す)。observation.ts に触れる core の試験34ファイル(805件)と、observe( を呼ぶ92ファイル(1269件)がすべて緑のままだった。

既存の対照の試験(observe-whitespace-only-ids-still-accepted.test.ts の「対照: 同じ欄でも、空文字は断る」)は、utterance.subjectId と memory_usage.recallId の2欄しか見ていなかった。

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

Ctx の TSDoc(ctx.ts)は、observe の入力 schema が空文字を ZodError にする欄を列挙している。

  • 文字列が空文字だと断る: subjectId・externalId(4種類すべての kind。memory_usage は subjectId を持たない)、utterance の speaker・text、event の name、document の title・content、memory_usage の recallId
  • 配列の要素が空文字だと断る: subjectCandidates・memory_usage の usedMemoryIds など

足したもの

同じファイルに、この一覧の欄(本文の欄と、claimKey の入れ子の欄を除く12欄)を1欄ずつ空文字にして、断ることを見る it.each を足した。本文の欄(text・name・content)は ADR 0502 の試験が、claimKey の knownPredicates・knownSubjects の空文字の要素は zod-schema-constraints-tsdoc-edges.test.ts が、すでに見ている。

変異で確かめたこと

  • main の実装: 23件すべて緑。
  • 4種類の kind の externalId から min(1) を外す: 4つの kind の externalId の試験だけが、それぞれ赤(4件)。4か所を同時に外し、落ちた試験の名前で1対1に対応することを確かめた。
  • prettier・eslint は通った。

ObserveInputSchema(observation.ts)に変異を当てたところ、utterance の externalId から min(1) を外す形が、observation.ts に触れる core の試験34ファイルと、observe を呼ぶ92ファイルのどこでも赤にならなかった。既存の対照の試験は、空文字を断ることを utterance.subjectId と memory_usage.recallId の2欄でしか見ていなかった。

約束はすでに書かれている。Ctx の TSDoc(ctx.ts)は、observe の入力 schema が空文字を ZodError にする欄を列挙している。subjectId・externalId(4種類すべての kind)、utterance の speaker、document の title、memory_usage の recallId、配列の要素としての subjectCandidates・usedMemoryIds である。この一覧のとおりに1欄ずつ見る。
@takecchi
takecchi marked this pull request as ready for review October 11, 2026 11:29
@takecchi
takecchi enabled auto-merge (squash) October 11, 2026 11:29
@takecchi
takecchi merged commit 6ad35b1 into main Oct 11, 2026
37 checks passed
@takecchi
takecchi deleted the test/observe-empty-external-id-rejected branch October 11, 2026 11:36
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