Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

[TS PBT] Confirm and shrink witnesses from two-phase property search

Ouverte
#353 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
35/100
Type d'issue
Fonctionnalité
Clarté
Plutôt claire
Activité
Active
Stack technique
kotlin, typescript
Domaine
devtools, testing

Piste de recherche

Start with the candidate inputs from #352, JsConcreteValue, and the shared invocation contract from #384; trace them through the existing backend execution and reproduction path. Add focused tests using the existing adapters and codecs for replay classifications, explicit examples, and shrinking. Done means real TypeScript-runtime fixtures preserve values and aliases, minimized witnesses still violate the property, and unsupported or timed-out shrinking is reported without publishing unconfirmed counterexamples.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Part of #345. Direct-counterexample delivery depends on #352/#384. The core contract includes hypothesis replay through #398 and is required by #405. Generator-choice and command-sequence reduction are later integrations owned by #400/#402; their acceptance gates do not block core completion.

Goal

Confirm every symbolic candidate in original TypeScript and reuse backend shrinking while preserving exactly what the witness demonstrates.

Scope

  • Consume #352's extracted JsConcreteValue inputs; reuse the current backend invocation, codecs and process supervision.
  • Validate declared domain/generator support as applicable, execute the original precondition and original predicate using #384.
  • Keep outcomes distinct: confirmed original-property violation, confirmed hypothesis refutation with original property holding, no refutation/property holds, domain/precondition rejection, unrepresentable input, unsupported replay, nondeterminism, and property/engine/replay error.
  • A hypothesis replay checks the same program point, context, guard and relation that generated the symbolic target. A different invocation/site does not confirm it. A full original oracle is still required even for an intermediate-prefix target.
  • Preserve target/assertion/hypothesis identity and original input alongside replay status. An exception in a precondition is an error; predicate exceptions follow #384. Hypothesis refutation alone is not counted as a program defect.
  • Preserve special values, argument order and supported aliases/isolation without coercion. Generator-source/context revisions are pinned.
  • Feed eligible external witnesses to backend shrinking; inspect canShrinkWithoutContext or retained native context as appropriate. Explicit-example execution and a zero shrink count are not proof of minimality.
  • Use a target-specific reduction predicate: same original assertion failure, or same guarded hypothesis refutation. Recheck domain/admission and original predicate on the final result. Preserve the original confirmed witness if shrinking is unavailable, fails or times out.
  • For #400, preserve dependent generator construction/choice validity. For #402, reduce commands/arguments while retaining valid guards and the same failure. Add small adapters to backend facilities rather than a general custom shrinker.
  • Return both confirmed failing inputs and useful non-failing behavioral witnesses to #355 with provenance and a reproducible replay artifact. A replay token is not portable across arbitrary generator/backend revisions.
  • Replay/reduction share #354's monotonic deadline. Reserve validation budget and retain unconfirmed candidates when it expires.

Definition of Done

  • Real-runtime fixtures cover confirmed/spurious/rejected/unrepresentable inputs, exceptions, hypothesis-only refutation and unsupported shrinking.
  • At least one external supported witness actually shrinks and still reproduces the same target-specific failure.
  • Source/context mismatch, mutation isolation and core target-preserving reduction have explicit behavior tests. Generator-choice dependency and command-sequence reduction tests are delivered with #400/#402.
  • Artifacts retain original candidate, concrete classification, minimized result if any, reduction metric/attempts, backend revision and reproduction data.
  • No candidate is reported as a final fault before original-oracle replay; no hypothesis-only witness is counted as an original-property violation.
Langage dominant
Kotlin
Étoiles
33
Forks
27
Merge moyen
3 j 21 h
PR mergées (30 j)
88

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de UnitTestBot/usvm

Toutes les issues de UnitTestBot/usvm

Issues similaires

Plus d'issues Kotlin

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.