Skip to content

Tracking: cross-runtime emitter parity defects #49

Description

@sethjuarez

Tracking issue for every emitter defect surfaced during the Prompty cross-runtime parity effort (TypeScript, Python, C#, Go, Rust, Java, Swift). Filed together so they can be validated systematically rather than rediscovered one runtime at a time.

Suggested order

Ordered by dependency, not severity — several later items may resolve once the discriminator work lands.

Tranche 1 — discriminator dispatch (do first, widest blast radius)

These two share a root area and block Swift (#44). #37 has an unvalidated candidate fix already; its 3 remaining Rust failures are uninvestigated.

Tranche 2 — collection representation (specify once, fix together)

Both concern how collection optionality and emptiness are represented. They should be specified together with one shared cross-language fixture covering absent / explicit-empty / populated, rather than patched independently.

Tranche 3 — serialization and whitespace

Possibly one root cause. Check before fixing separately — both are whitespace/multiline-shaped, and C# multiline passes, which is a useful discriminator.

Tranche 4 — generated test emission

Both are generated-test defects rather than generated-model defects. #45 is compile-time and argues for a "generated tests compile" gate per backend.

Tranche 5 — remaining

Tranche 6 — Swift

Swift is pinned to 0.4.2 + a hand-written shim and was never exercised against 0.4.15+. Do it last, after #37/#38 land, and expect #48 to surface on top.

Working notes

Establish a baseline before any bump. The single most expensive mistake in this effort was bumping 0.4.2 → 0.4.15 across seven runtimes with no recorded baseline. Rust went 296/0 → 289/7, and the regression was initially misread as pre-existing. For each fix: stash, run the suite on the current pin, record exact pass/fail counts, then change one thing.

npm versions are immutable. Published: 0.4.9, 0.4.10, 0.4.13, 0.4.15. 0.4.160.4.18 are consumed locally. Any new release must be ≥ 0.4.19.

Verify in more than one backend. #37 reproduces identically in Go and Rust and is likely present in the others; several of these were only ever measured in a single language.

Provenance

Issue Raised by
#37 Go (initial report), Rust (independently reproduced)
#38 Rust / canonical vectors — independently reproduced during final triage
#39 Rust / model-samples workstream
#40, #41 Go runtime workstream
#42 canonical engine-ports workstream
#43 Python runtime workstream
#44 Swift runtime workstream
#45 Java runtime workstream
#46, #47 cross-runtime vector work
#48 observed during final triage

Only #37, #38, and #48 were independently reproduced during the final triage pass. The rest are reported from their originating workstream and are worth a quick confirmation before fixing — each issue notes its confidence level.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions