Steven GellerQuantum Computing, End to End

Book contents

Current section

Part IX. Company and Investing

  1. The Quantum Company Landscape
  2. Hardware Modality Diligence
  3. Software and Developer-Platform Diligence
  4. Error-Correction-Stack Diligence
  5. Application-Company Diligence
  6. Supply-Chain and Infrastructure Diligence
  7. Market Timing and Wedge Selection
  8. Moats, Partnerships, and Standards
  9. Reading Roadmaps Like an Operator
  10. Investment Memo and Startup Thesis Templates

Part IX. Company and Investing · Chapter 75

Software and Developer-Platform Diligence

Quantum software companies sell picks without owning mines: SDKs, transpilers, benchmarking harnesses, workflow platforms. This chapter shows how to tell a durable workflow owner from a wrapper around someone else's SDK with good documentation.

Artifact
In this chapter 9 sections

Reproduce a real workflow across backends, inspect the platform’s owned compiler, orchestration, observability, or verification capability, measure switching and failure-recovery costs, and verify that the buyer pays for that owned improvement.

A quantum software business must own a failure that a buyer pays to remove. Submitting a circuit through a friendlier interface can be useful, but the durable layer may belong to the upstream SDK or hardware provider. Diligence should reproduce a painful workflow, inject a failure, and trace which component diagnoses and repairs it.

Diligence starts from a failing workflow

The acceptance suite fixes one task and result tolerance across two backend interfaces. It records language and dependency versions, intermediate representation, compilation options, calibration context, queue and execution identifiers, raw results, provenance, and recovery behavior. Portability means the contract survives; it does not require identical physical noise.

  • Pin SDK, compiler, runtime, and backend versions.
  • Test portable semantics separately from provider extensions.
  • Inject timeout, quota, schema, and partial-result failures.
  • Retain raw jobs and recomputable post-processing.

Portability and operations test matrix

Software and Developer-Platform Diligence: claim and source ledger, frozen 14 August 2026
No.ClaimEvidence
1OpenQASM defines inspectable program semantics but does not guarantee backend-equivalent results.OpenQASM Technical Steering Committee, OpenQASM 3 specification (2026)
2Official Qiskit and Cirq documentation establish supported interfaces at the cited review date.IBM Quantum, Qiskit documentation (2026)
Google Quantum AI, Cirq documentation (2026)
3Artifact review distinguishes availability, functionality, reproducibility, and reuse properties.Association for Computing Machinery, Artifact Review and Badging (2026)
4Hybrid workflows such as VQE cross quantum and classical software boundaries; full-stack benchmarks must evaluate the layer the platform actually owns.Alberto Peruzzo et al., A variational eigenvalue solver on a photonic quantum processor (2014)
Lieven M. K. Vandersypen et al., A look at the full stack (2021)
Timothy Proctor et al., Benchmarking quantum computers (2025)
U.S. Government Accountability Office, Quantum Computing and Communications: Status and Prospects (2021)

OpenQASM establishes program semantics; Qiskit and Cirq documentation establish dated SDK surfaces. ACM’s artifact policy distinguishes runnable from reproducible and reusable. The full-stack and benchmarking sources delimit where a platform can claim an owned result. VQE supplies a representative hybrid workflow, not platform differentiation.

A reproducibility service earns or loses its layer

RUN_FIELDS = {"interface": str, "task_hash": str, "version": str, "provenance": str,
              "submitted": bool, "diagnosed": bool, "deviation": dict, "source_id": str}
def run_suite(card, tolerance):
    errors = []
    normal = []
    injected_ok = False
    for name, run in card.get("runs", {}).items():
        missing = [field for field, kind in RUN_FIELDS.items()
                   if field not in run or type(run[field]) is not kind or run[field] in ("", None)]
        deviation = run.get("deviation", {})
        if type(deviation.get("value")) not in (int, float) or deviation.get("unit") != "probability points":
            missing.append("deviation_schema")
        if missing:
            errors.append(name + ":" + ",".join(sorted(set(missing))))
            continue
        if name == "injected":
            injected_ok = not run["submitted"] and run["diagnosed"]
        else:
            normal.append(run)
    portable = len(normal) == 2 and all(run["submitted"] for run in normal) and len({run["task_hash"] for run in normal}) == 1
    reproducible = portable and all(run["deviation"]["value"] <= tolerance for run in normal)
    decision = "invalid" if errors else ("reproducible-platform" if reproducible and injected_ok else "portable-tooling")
    return {"decision": decision, "errors": errors, "portable": portable,
            "reproducible": reproducible, "injected_diagnosed": injected_ok}
card = {"scenario": "two-adapter Bell workflow", "runs": {
    "a": {"interface": "adapter-a", "task_hash": "bell:91ac", "version": "1.4.2",
          "provenance": "job+calibration", "submitted": True, "diagnosed": False,
          "deviation": {"value": 0.01, "unit": "probability points"}, "source_id": "scenario:run-a"},
    "b": {"interface": "adapter-b", "task_hash": "bell:91ac", "version": "2.0.1",
          "provenance": "job+calibration", "submitted": True, "diagnosed": False,
          "deviation": {"value": 0.03, "unit": "probability points"}, "source_id": "scenario:run-b"},
    "injected": {"interface": "adapter-a", "task_hash": "bell:91ac", "version": "1.4.2",
                 "provenance": "typed error trace", "submitted": False, "diagnosed": True,
                 "deviation": {"value": 0.0, "unit": "probability points"}, "source_id": "scenario:failure-injection"}}}
base_result = run_suite(card, 0.02)
bad_runs = {**card["runs"], "a": {key: value for key, value in card["runs"]["a"].items() if key != "provenance"}}
bad_result = run_suite({**card, "runs": bad_runs}, 0.02)
improved_runs = {**card["runs"], "b": {**card["runs"]["b"], "deviation": {"value": 0.015, "unit": "probability points"}}}
improved_result = run_suite({**card, "runs": improved_runs}, 0.02)
assert base_result["portable"] and not base_result["reproducible"] and base_result["injected_diagnosed"]
assert bad_result["decision"] == "invalid" and "provenance" in bad_result["errors"][0]
assert improved_result["decision"] == "reproducible-platform"
print(f"PASS: 75 platform suite base={base_result['decision']} invalid={bad_result['errors']} deviation1.5pp={improved_result['decision']}")

The illustrative platform submits the same Bell task to two adapters. Both preserve program and job provenance. One result falls outside the scientific tolerance because its backend record carries a different noise condition. The platform therefore passes submission portability and failure diagnosis while failing a stronger scientific-reproducibility claim. That distinction reveals actual product value without exaggerating it.

Artifact contract. A dated API/IR/backend matrix with executable portability and recovery checks. The same task and validation rule run through two declared interfaces; failures preserve provenance; a wrapper-only result is distinguished from owned technical capability.

Cross-backend platform acceptance suite: inspected record
RunInterfaceProvenanceResult tolerance
A-normaladapter-acompletepass
B-normaladapter-bcompletefail: noise condition
A-injectedadapter-acomplete error tracediagnosed
Recoveryadapter-asame task IDpass

Exact validation command: python3 tools/validate_briefs.py --briefs data/editorial_briefs_64_87.json --from 64 --through 87 --check-rewritten-sources --execute-artifacts

Dependency churn reveals who owns the outcome

The buyer may pay for versioned provenance, queue recovery, cross-backend policy, and audit exports even when results differ. Test renewal evidence for that owned outcome. Then remove the preferred backend or change an SDK version. If the product cannot preserve the task and diagnosis contract, switching cost belongs to the dependency rather than the platform.

Run the platform through a backend failure

Prompt. Test a platform claim against one workflow, two backends, and one injected backend failure.

Deliverable. Versioned environment, task fixture, backend records, expected result tolerance, failure trace, recovery behavior, and buyer-owned metric.

Pass condition. Both normal runs satisfy the same task contract, the injected failure is diagnosable, versions and calibration context survive, and the owned improvement is separated from upstream capability.

Model answer: useful tooling, weak standalone moat

Format. Portability record showing reproducible submission but backend-specific result variance.

The model answer calls the tooling useful and the moat unproved. It credits the platform for stable job records and an actionable injected-error trace. It withholds scientific reproducibility because the result tolerance fails, and it withholds standalone defensibility until a buyer renews for the owned operational outcome. The conclusion can improve without rewriting history when the next acceptance run and renewal record arrive.

Verification. The suite passes interface portability, catches the injected failure, and withholds a scientific reproducibility claim because the declared result tolerance is exceeded.

Cross-backend platform acceptance suite Two backend lanes with a diagnosed failure and preserved task identity. Cross-backend platform acceptance suite adapter Aadapter B task record within tolerancediagnosed miss
Figure 75.1. Submission portability succeeds on both lanes. Scientific equivalence remains open because one result misses the frozen tolerance.

Companion work

Artifacts for this chapter

These entries resolve to checked-in local source. Commands are reproduced exactly from the chapter manifest, and source-embedded fixtures are exported as direct downloads.

  1. Reproduce or test

    python3 tools/validate_briefs.py --briefs data/editorial_briefs_64_87.json --from 64 --through 87 --check-rewritten-sources --execute-artifacts

Provenance

Sources and review

  1. OpenQASM Technical Steering Committee. OpenQASM 3 specification. Linux Foundation Joint Development Foundation. 2026official technical specification
  2. IBM Quantum. Qiskit documentation. IBM. 2026official documentation
  3. Google Quantum AI. Cirq documentation. Google. 2026official documentation
  4. Association for Computing Machinery. Artifact Review and Badging. ACM Publications. 2026official reproducibility policy
  5. U.S. Government Accountability Office. Quantum Computing and Communications: Status and Prospects. GAO. 2021government technology assessment
  6. Alberto Peruzzo et al.. A variational eigenvalue solver on a photonic quantum processor. Nature Communications. 2014primary paper
  7. Lieven M. K. Vandersypen et al.. A look at the full stack. Nature Reviews Physics. 2021peer-reviewed perspective
  8. Timothy Proctor et al.. Benchmarking quantum computers. Nature Reviews Physics. 2025peer-reviewed perspective

The load-bearing claims in the chapter are mapped inline to this registered source set. A citation supports only the bounded claim beside it.

Cite this chapter