Skip to content

[TS PBT] Guide relational and metamorphic properties across multiple executions #401

Description

@CaelmBleidd

Part of the full #345 delivery. Builds on #395, #351/#352/#353 and the observation/projection contracts in #396/#398.

Delivery stage

This is a stage-two extension of #345. Complete and record the core assessment in #405 before accepting this extension's end-to-end integration and results. Literature, interface design and focused experiments may start earlier; the extension never blocks #355 or #405.

Reuse the completed core contracts. This issue owns any extension-specific changes to observation, binding, scheduling, replay, shrinking and feedback integration, with focused follow-up PRs; do not retroactively broaden #351/#352 or require already completed core issues to reopen. A negative or inconclusive pilot is recorded honestly and informs design; it does not silently cancel this full-roadmap obligation.

Publish a separately identifiable extension configuration and evaluate it against the same original oracle with the extension disabled. Its final held-out evaluation belongs to #357 and is reported separately from the development pilot.

Goal

Exploit human-written relations between executions, including round-trip, idempotence, commutativity and reference equivalence, as first-class search and observation contexts.

Scope

  • Reuse original TypeScript predicates that call the tested program multiple times. Add declarative relation/context metadata only where it enables pairing or selection; do not require a second manually rewritten oracle.
  • Model shared symbolic base inputs and the stated transformations between executions. Preserve correlation instead of treating the calls as independent random samples.
  • Specify when calls share predicate-local state and when independent runs need fresh state. Follow ordinary user-code semantics; never silently clone away intended aliasing/mutation.
  • Pair observed intermediate/results across related calls, preserving call identities, original inputs, transformations and assertion identity. Feed scoped relational hypotheses to [TS PBT] Infer property-relevant relational hypotheses from PBT observations #397/[TS PBT] Project observed relations and assertion goals into exact EtsIR bindings #398.
  • Compare direct search for the relational assertion with observation-guided search for its relevant intermediate relations. Correctly classify a false law/specification separately from a known implementation defect.
  • Include finite-float cases where a mathematical identity is false under JavaScript, NaN-sensitive equality, duplicate-sensitive collections and a relation requiring more than one execution.
  • Shrink the shared base input or related input tuple while preserving the transformation/relationship and the same failed assertion.

Definition of Done

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions