Skip to content
1 min read · 295 words

Interface: IdentifierUniquenessRule

Defined in: src/batteries/validation/types.ts:327

Requires uniqueness of identifiers across the selected primitive timeline.

Properties

PropertyTypeDescriptionDefined in
idstringStable identifier used in findings.src/batteries/validation/types.ts:331
kindOrderingPrimitiveKindPrimitive whose identifiers must be unique.src/batteries/validation/types.ts:333
renameStrategy?(previousId: string, memberIndex: number) => stringProduces a replacement identifier when mutate mode repairs a collision. Remarks Every member of a collision group shares ONE id — that is what makes it a collision — so previousId alone cannot distinguish them. memberIndex (0-based, ordered by timeline seq) is what a deterministic strategy varies on: without it a pure strategy would return the same replacement for every member, and the materialiser would reject its own repair. The strategy must be pure and total in BOTH arguments, and may not return an id already held elsewhere in the timeline; the materialiser verifies that and fails the repair rather than trusting it.src/batteries/validation/types.ts:345
severity?"blocking" | "advisory"See OrderRule.severity. Omitted means advisory, as on every other rule type. Opt into blocking — as the shipped tool_call_id_uniqueness profile does — when a collision makes the dispatch unsafe to assemble; an advisory finding is never repaired, so renameStrategy and the renumber-colliding-ids repair only take effect under blocking.src/batteries/validation/types.ts:352
surface?"dispatch" | "turn" | "both"Whether this rule applies on the dispatch surface, turn surface, or both. Omitted means the rule applies on both surfaces.src/batteries/validation/types.ts:354
type"identifierUniqueness"Discriminator selecting the cross-entry uniqueness evaluator.src/batteries/validation/types.ts:329