Skip to content

Equivalence oracle: the GnuCOBOL version every proof compares against is neither pinned nor recorded #4309

Closed

Description

@squid-protocol

Problem

Every equivalence proof (batch, CICS crucible, det ports) compares the Java port against GnuCOBOL running in gitgalaxy-gnucobol:3, built from tests/equivalence/gnucobol.Dockerfile:

FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y --no-install-recommends gnucobol3 gcc libc6-dev ...
  • The base image has a tag but no digest, and gnucobol3 has no version. CI rebuilds the image on every run (.github/workflows/cics-crucible.yml:121).
  • gnucobol-db2.Dockerfile builds FROM gitgalaxy-gnucobol:3, so it inherits the same gap.
  • No proof records which GnuCOBOL produced its expected results. Locally the image reports GnuCOBOL 3.1.2.0.

Debian stable rarely moves a package's version, so the practical risk today is low. But nothing would detect a change: a rebuilt image, a different base, or a local image built months ago could all produce different oracle behaviour (numeric edge cases, file status codes, collation), and every "proven" claim would silently rest on a different oracle.

Acceptance criteria

Related: #4048 (evidence record: the oracle fingerprint), #4050 (captured mainframe outputs as a second oracle), #4271 (compiler options).

Found while surveying existing provenance for the #4048 schema (2026-10-04).

Activity

  1. added
    enhancementNew feature, sensor, or structural signature
    testingUnit, integration, and E2E pipeline verification
    legacy-modernizationCOBOL refractor, dead-code extraction, and JCL forging
    priority: highCore feature broken, but workarounds exist
    on Oct 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature, sensor, or structural signaturelegacy-modernizationCOBOL refractor, dead-code extraction, and JCL forgingpriority: highCore feature broken, but workarounds existscope:infraCI, tooling, churn/factory, docs infrastructuretestingUnit, integration, and E2E pipeline verification

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions