Skip to content
Sprint projectMay 25, 2026Saudi Arabia

DiffSpec-PBT

Fatimah Emad Eldin · Team DiffSpec-PBT

Submitted to The Secure Program Synthesis Hackathon. Sprint projects are early-stage work by participants, not Apart Research publications.

Prompt independent LLM spec authors for the same natural-language requirement. Use property-based testing on each spec pair to surface inputs/outputs where they disagree. Each disagreement is a concrete counterexample of intent drift, classified by type. Any OpenAI-compatible endpoint can serve as an author; the eval harness runs all pairs among committed fixture aliases.

Reviews

Judging this Sprint?

Review this project

Your public critique appears on this page without your name. Your private critique is not published; only the Apart team reads it. If you agree below, we share your review with grantmaking.ai (opens in new tab) and the Transformative AI Fund so strong projects can be funded.

Not shown on this page.

Shown on this page, without your name.

Only the Apart team reads this, and funders if you agree below.

Share my name publicly on grantmaking.ai *
Share my private critique with funders *

How much would this matter for AI safety if it worked? How innovative is it? For scores of 4-5: is this actually new to the field, or replicating recent work?

Scoring guide
  1. 1Negligible. No clear problem addressed, or no meaningful novelty.
  2. 2Limited. Addresses a real problem but with a generic or well-trodden approach. Incremental at best.
  3. 3Moderate. Clear problem with a reasonable approach; some novelty in framing or method beyond routine application of existing tools.
  4. 4Significant. Important problem with an original approach, or identifies a neglected problem area. A valuable contribution others could build on.
  5. 5Exceptional. Tackles a critical AI safety problem with a genuinely novel approach, or opens a new research direction. Clear theory of change. You'd be excited to share this with researchers in the area.

How sound are methodology, implementation, and findings?

Scoring guide
  1. 1Seriously flawed. Methodology broken, results uninterpretable, or implementation doesn't work.
  2. 2Weak. Approach has significant gaps: missing validation, flawed experimental design, or incomplete implementation.
  3. 3Competent. Technically solid given the short duration. Methodology makes sense, results are interpretable, limitations acknowledged, work builds toward clear conclusions.
  4. 4Strong. Thorough methodology with convincing validation. Results clearly support conclusions. Immediately useful for future work.
  5. 5Exceptional. Ambitious scope executed rigorously. Surprising findings, novel methods, or unusually robust validation.

How clearly are work, findings, and impact potential communicated?

Scoring guide
  1. 1Incomprehensible. Cannot determine what the project is actually claiming or doing.
  2. 2Hard to follow. Key information buried, missing, or diluted by excessive length. Significant effort to extract main points.
  3. 3Clear enough. Can understand the problem, approach, and results without undue effort. Core content clearly present: problem, method, findings, limitations.
  4. 4Well presented. Easy to follow, well-structured, appropriate level of detail. Target audience would get it quickly.
  5. 5Exceptionally clear. A pleasure to read. Complex ideas made accessible. Could serve as a model for how to present this type of work.

  1. This paper presents a very neat and cleanly implemented pbt-based validation methodology for LLM outputs. The proposal is such that given a natural language spec and an implementation, several llms are asked to generate pre/post specs for the program. The analysis then performs a pairwise comparison of the specs and uses random inputs to surface discrepancies between the specs.

    One comment I would have is that the paper's motivation of sound/over/underspecified specifications might need a bit more iteration. From the paper, as I understand, the terms are defined as follows:

    - for any input,output pair, if the input passes the precondition of all specs, then every spec should accept, and a rejection indicates that a spec is overconstrained

    - for any input, output pair, if a mutated copy of the output is rejected by any spec, then every spec should reject, and an accepting spec is underconstrained.

    This fails to handle cases when the specification generated by a tool is incorrect. Consider a sorting spec that asserts that all its outputs are positive, If a mutation replaces the first element of the output with a negative number, then the other specifications would accept, and the erroneous specification would reject, leading this methodology to mark the other specifications as underconstrained.

    Read full reviewShow less
  2. This is an interesting idea with a well-thought out execution and empirical examination. A difference between two independent specs provides assurances that at least one of them is wrong, escaping what might be thought a circularity in SPS generally needing a golden reference to have confidence in a written spec. The writeup was clear and honestly described strengths and weaknesses with the results and implementation, and allowed easy comprehension of what has been achieved.

    It is implied in discussion, but the description of the LLM as an 'oracle' in this project overstates what purpose it serves - it's a disagreement detector, not an arbiter of truth. This is still pretty neat!

    Using the unmodified 'real world' task was a nice confirmation of the methods and adds significant weight to the credibility.

    I would be interested to see what the correlation is between frontier models - since a) this will remove all the Python coding issues, probably and b) I'm concerned that that shared training data + increasingly similar training methods might just make all the failures correlate highly, obviating the usefulness of this approach.

    Read full reviewShow less

Cite this project

@misc{eldin2026diffspecpbt,
  title = {{DiffSpec-PBT}},
  author = {Fatimah Emad Eldin},
  year = {2026},
  month = may,
  note = {Submitted to The Secure Program Synthesis Hackathon, an Apart Research Sprint},
  howpublished = {\url{https://apartresearch.com/sprints/projects/diffspecpbt-3wba}},
  url = {https://apartresearch.com/sprints/projects/diffspecpbt-3wba}
}

Build something like this at the next Sprint

AI Collusion Research Sprint · Oct 23 - 25, 2026