[TS PBT] Guide relational and metamorphic properties across multiple executions
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 25/100
- Issue-Typ
- Feature
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- javascript, typescript
- Bereich
- compilers, testing-qa
Rechercherichtung
Start by reading the completed core assessment in #405 and the observation/projection contracts in #396/#398, then review the related work in #395, #351/#352/#353 and #397. Define focused experiments for correlated multi-execution relations, shrinking and feedback, using the listed fixtures and original oracles. Done means the round-trip, idempotence and one additional relation have meaningful examples and separate held-out evaluation is prepared for #356/#357.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Current state (2026-10-14)
Audited against usvm main at 19866c959d.
Original predicates can already make multiple ordinary calls in one invocation. Dedicated cross-execution pairing, relational/metamorphic search contexts and feedback are not delivered by that baseline.
Remaining acceptance boundary
Add bounded execution/context pairing and replay-preserving relational targets with explicit alias/state isolation. Reuse original relational oracles and report observation/search capability without claiming a general persistent-state framework.
Original report and acceptance context, retained for traceability
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 #397/#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
- Round-trip and idempotence plus at least one of reference equivalence/commutativity have meaningful real or curated examples with original concrete oracles.
- A multi-execution observation changes a symbolic target and its candidate is confirmed through the complete TypeScript relation.
- Correlation, mutation/isolation, wrong relation scope and unsupported transformations have explicit fixtures.
- #356/#357 include paired held-out evaluation against the same relational properties with observation feedback disabled; no improvement is inferred merely from having a stronger oracle.
- Vorherrschende Sprache
- Kotlin
- Sterne
- 33
- Forks
- 27
- Ø Merge
- 3 T. 21 Std.
- Gemergte PRs (30 T.)
- 88
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus UnitTestBot/usvm
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
UnitTestBot/usvm#612 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 18/100
UnitTestBot/usvm#618 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 25/100
UnitTestBot/usvm#613 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 43/100
UnitTestBot/usvm#604 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
UnitTestBot/usvm#592 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in UnitTestBot/usvm
Ähnliche Issues
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 80/100
software-mansion/enriched-markdown#1033 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
enhancement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
-
enhancement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 67/100
Maintainer antworten meist innerhalb von 1 Tag
-
Improve navigation menuOffenapp
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
LawnchairLauncher/lawnicons#4180 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Kotlin extra warnings in GeneratedAppGlideModuleImplEvtl. vergeben @bacecek hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
Maintainer antworten meist innerhalb von 18 Tagen