Skip to content

docs(as370): a fixture with a committed listing is an oracle input - #90

Merged
mgrossmann merged 1 commit into
mainfrom
docs/oracle-fixtures-are-frozen
Aug 29, 2026
Merged

docs(as370): a fixture with a committed listing is an oracle input#90
mgrossmann merged 1 commit into
mainfrom
docs/oracle-fixtures-are-frozen

Conversation

@mgrossmann

Copy link
Copy Markdown
Contributor

Follow-up to #87, which left tests/undefsym.s carrying a header that had become false the moment the fix landed.

The rule

IFOX00 prints a fixture's comment cards into the SOURCE STATEMENT column and numbers every statement from them. The fixture and its listing are therefore one artifact — edit a comment card alone and the listing's source column, and every statement number after it, are quietly wrong.

That is harmless today only because check.sh does not compare ifox-listing-undefsym.txt column by column. It is a planted failure for whoever wires it in, which listref/README.md asks for in three places.

Two rules, both now written down in tests/listref/README.md:

  1. Never edit a fixture in place — rewrite it and re-capture the listing in the same change.
  2. Write the header so it cannot go stale — describe the source and the oracle's behaviour, and say what as370 did in the past tense.

The second rule is already followed by the other fixtures without anyone having stated it: multi_csect.s ("as370 looked up the module's first section instead of…") and fltoracl.s (what the deck pins) both survive their own fix. undefsym.s was the only one written in the present tense about as370's then-current behaviour, and it was the only one that went stale.

Plus the one that cost the most time: keep every card inside column 71. A sixth comment card was tried on this fixture while closing #82, reached column 72, and under the continuation rule of #72 consumed UNDEFSYM CSECT outright — in the fixture for the diagnostic about symbols lost to exactly that rule. capture.py warns per line, but only once the job has run.

The re-capture

tests/oracle/capture.py on mvsdev, JOB02899. One job, --listing only, so nothing is left on the guest.

Against the JOB02870 capture the diff is exactly the five comment cards and IFOX's own timestamp — every object-code line, every statement number, the ESD, the RLD, both cross-references and the diagnostics page (NUMBER OF STATEMENTS FLAGGED = 4, HIGHEST SEVERITY 8) are byte-identical. So the fixture change is provably cosmetic and the oracle is consistent with it again.

Verification

No source change — as370.c is untouched, and the corpus gate says so (as370 source is unchanged against origin/main). tests/run.sh 41 OK / 0 failures, tests/listref/check.sh all four references still column-exact.

IFOX00 prints a fixture's comment cards into the SOURCE STATEMENT column and
numbers every statement from them, so the fixture and its listing are one
artifact. Editing a comment card alone leaves the listing's source column, and
every statement number after it, quietly wrong -- harmless while check.sh does
not compare that listing column by column, and a planted failure for whoever
wires it in, which listref/README.md asks for in three places.

undefsym.s was the case that made this explicit. Its header was written in the
present tense about as370's then-current behaviour ("as370 assembles zero and
says nothing") and read as a lie the day #82 landed. multi_csect.s and
fltoracl.s do not have that problem: they describe the source and say what as370
did in the past tense, which survives the fix.

So: rewrite the header to describe the source and the oracle, and re-capture the
listing in the same change rather than editing one side. Re-captured on mvsdev
as JOB02899 -- against JOB02870 nothing moved but those five cards and IFOX's own
timestamp, so every object-code line, statement number, the ESD, RLD, both
cross-references and the diagnostics page are unchanged.

Both rules are written down in listref/README.md, together with the one that cost
the most: keep every card inside column 71. A sixth comment card was tried on
this fixture while closing #82, reached column 72, and under the continuation
rule of #72 consumed `UNDEFSYM CSECT` outright -- in the fixture for the
diagnostic about symbols lost to exactly that rule.
@mgrossmann
mgrossmann merged commit bfa56fd into main Aug 29, 2026
2 checks passed
@mgrossmann
mgrossmann deleted the docs/oracle-fixtures-are-frozen branch August 29, 2026 06:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant