Wire frozen tiny XML oracles into offline Idriç compiler acceptance - #74
Open
isomorphisms wants to merge 6 commits into
Open
isomorphisms wants to merge 6 commits into
isomorphisms wants to merge 6 commits into
Conversation
5 tasks
isomorphisms
marked this pull request as ready for review
September 7, 2026 17:40
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Advances #73 with one frozen synthetic XML canary and executable compiler acceptance. The current exact-head compiler receipt is verified, and the PR is ready for review.
Frozen contract — unchanged
The original
fixtures/xbrl/tiny-instance.xml,tiny-instance.oracle.json,README.md, and.gitattributesare unchanged by the implementation slice.936f6516b375941feb1f44ed2cdabfce7ee7d2793f473b0a5c09543a59330b4a.NetIncomeLoss:[190,203),[254,267); first match 190.[157,163),[239,244),[281,282).[1].[239,244),18000, integer18000, contextquarter, unitUSD. Revenue remains the sibling negative control.Executable slice
XbrlCanary.idric: actual runtime search, finite state/class scanning, tokenizer, bounded tree, lookup and decimal extraction. Reads the supplied file, not the oracle; contains no frozen offsets or numeric answer.xbrl_acceptance.py: fixture integrity; exact checkout/build provenance; isolated network namespace; current-compiler typecheck; one-step ANF emission/inspection; Chez compilation/execution; strict comparison of all four complete oracle objects; eleven deterministic derived runtime controls._/tests/xbrl/test_acceptance.py: sixteen host harness tests, explicitly separate from compiler execution. The added regression test covers the compiler's lowering of nullary enum dispatch to%constalt(...)in ANF..github/workflows/ci-edric-build.yml: check out the actual PR head, retain the existing fresh compiler bootstrap/focused tests, then run acceptance with networking disabled and upload its receipt/logs/artifacts even on failure.fixtures/xbrl/ACCEPTANCE.md: commands, bounds, stage contract and limitations.The four positive controls change income, change Revenue, prepend whitespace to shift offsets, and swap siblings. They compare complete derived observation objects. Seven rejection controls cover missing target, ampersand, mismatched close, truncated root, non-ASCII input, depth overflow and byte overflow. These are temporary probes derived from committed bytes, not live retrieval or new promoted corpus fixtures.
Receipt and scope
Every required stage must pass. Missing, skipped or failed stages cannot produce overall PASS; downstream unexecuted stages remain SKIP. A new attempt removes previous outputs. The receipt binds checkout/tree, source, fixture, oracle, runner, compiler/library manifest and emitted one-step artifact.
Current implementation head:
da5a3c9e0aacd44b9de81231c8f727c0dc0e8fc8.Run
34059620652completed against prior head8b6bb9ada06719a6d4ae0e6a39394b1d5e6e88ef: source layout, harness preparation, fresh compiler bootstrap/focused tests and core typecheck passed.compiler_iralone failed withmissing dispatch alternative: DataState. The retained one-step artifact contains the realstate_class_stepcase tree, but this ANF representation lowers the nullaryScanState/ByteClassconstructors to numeric%constalt(...)branches, so their source names do not survive. Commitda5a3c9erepairs only that representation-sensitive inspection: it still requires the exact source/compiler binding, nested finite dispatch, byte classification, scanner-to-dispatch call and recursive scan loop.Current exact-head rerun: source-layout run
34095911886and build/acceptance run34095911889both completed successfully againstda5a3c9e0aacd44b9de81231c8f727c0dc0e8fc8. Retained artifactxbrl-acceptance-da5a3c9e0aacd44b9de81231c8f727c0dc0e8fc8-34095911889(artifact10008861488, archive SHA-25617939869ae82afcc44bef79a388f3fa71340cb5e0bd68b00307ead84e2c29554) records overallPASS, with every required stagePASS. The emittedprogram.one-step(SHA-2563d776698f0cbd2a489aee6266757ef1da400fbc05a2417348314ca91873e8a19) is bound to the exact source and compiler head; its actual ANF definitions contain the repaired numeric%constalt(...)finite dispatch, byte classification, scanner-to-dispatch call and continuingscan_loop. Linux/Chez execution against the frozen fixture produced all four complete observation objects exactly matching the oracle, and all eleven derived controls passed inside the isolated network namespace. This is the verified current-head compiler acceptance receipt.The IR check is an ANF workload/structure witness, not a new first-class bulk-scan intrinsic or native instruction-selection proof. Runtime acceptance uses Linux/Chez. ARM/Thumb and follower backend execution remain NOT_VERIFIED, with no backend checkpoint advancement.
Boundary
No DNS, HTTP, SEC/EDGAR, taxonomy or other live lookup is part of fixture/compiler acceptance. Existing host-toolchain installation is separate preparation. XML namespace expansion, XBRL context/unit/taxonomy validation, entities, self-closing tags, declarations, comments, CDATA, recovery and real SEC input remain out of scope. Bounds: 4096 input bytes, 64 tokens, eight attributes per start tag and eight element levels.