Repository navigation
feat: seed F# frontend conformance - #502
Draft
DamianReeves wants to merge 7 commits into
Draft
DamianReeves wants to merge 7 commits into
DamianReeves wants to merge 7 commits into
Conversation
Add planning artifacts only; no production code changes. - openspec/changes/add-fsharp-compile: steel thread for `morphir compile` with an F# frontend, refusal diagnostics, native classic and v4 IR builders and writers, project-file sources (--project-file), task records, compile --target, streaming --json-lines, and a MEP 0.2.0-draft.1 compileModel guest and host. Its corpus seeds the first Morphir Compatibility Kit suite (Gherkin). - openspec/changes/establish-morphir-compatibility-kit: morphir-dotnet as the home of the MCK and the conformance oracle (case data, not an implementation), with `morphir mck`. - docs/adr/0001: proposed decision that morphir-dotnet provides the default Morphir CLI and hosts the oracle, subject to the maintainers. - PRD for the default CLI: command parity, incremental delivery and measurable proof criteria.
Pin upstream compile and MEP inputs with provenance checks. Record the FCS compatibility failure and the disproved exact match-range join before production lowering depends on it. Refs #499.
Add portable Gherkin cases, checked matrices and independent observations. Preserve diagnostics and raw model payloads in deterministic reports. Refs #499
This branch has not been deployed
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.
Start the F# compile implementation with its portable conformance foundation. Production compiler binding and the
compilecommand remain in the following tasks.This change adds:
frontend-fsharpseed covering a mutable-binding refusal across IR versions 1–4 and all three source input kinds.Morphir.Conformance: the official Gherkin reader, closed vocabulary and tag validation, complete matrices with explained exclusions, and independent observation comparison.The branch includes the plan merged in #495 and the current main guidance from #501. Existing IR models, production command behavior and compiler/Core pins are unchanged. Gherkin 35.0.0 is already used transitively by Reqnroll; the central pin promotes the same version in existing lock files.
Validation:
Morphir.Conformance, with no handwritten code excluded.An earlier local full run hit the machine-home tripwire when a Rust CLI log appeared outside the test sandboxes. No test-isolation rule was weakened; the final full run passed.
OpenSpec progress is 4/53 tasks. This PR completes the tracking, fixture and MCK seed tasks; the match-reconstruction proof is already on main. Next are compile acceptance scenarios and native compilation contracts/builders/writers, followed by the in-process F# frontend.
Refs #499
Windows CI follow-up: preserve pinned upstream bytes under autocrlf, accept LF/CRLF manifests, and keep case-set bytes LF-stable. The regression failed before the fix; a disposable Git checkout with core.autocrlf=true now preserves every pinned hash and case artifact.