Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 29 additions & 31 deletions compatibility/compiler-expectations.json
Original file line number Diff line number Diff line change
Expand Up @@ -232,18 +232,17 @@
},
{
"fixture": "synthetic/issue-46-unsupported",
"nativeStatus": "failure",
"classification": "unsupported",
"comparison": "diagnostic-code",
"nativeStatus": "success",
"classification": "match",
"comparison": "semantic-wir",
"evidence": [
"oracle:synthetic/issue-46-unsupported/oracle.json",
"provenance:synthetic/issue-46-unsupported/fixture.json",
"test:opy-rs::compiler::integration_tests::issue_46_oracle::issue_46_unsupported_primitive_fails_with_stable_source_attribution"
"test:opy-rs::compiler::integration_tests::issue_46_oracle::issue_46_literal_dict_lookup_matches_the_pinned_oracle"
],
"owner": "workshop-rs#123",
"note": "The released workshop-rs v0.1.16 contract keeps AssignMember for canonical memberAccess targets only; this dictionary-indexed OPY primitive still has no lossless OPY-owned lowering and remains explicitly rejected.",
"failureClass": "integration",
"diagnosticCode": "unsupported-integration-surface"
"owner": "opy-rs#145",
"note": "Literal dictionary lookups with literal keys are folded to their selected value, matching the pinned oracle; dictionary-indexed assignment targets remain outside this bounded lowering path.",
"semanticEquivalent": true
},
{
"fixture": "synthetic/issue-59-postfix-assignment",
Expand Down Expand Up @@ -612,17 +611,17 @@
},
{
"fixture": "synthetic/chase-keywords",
"nativeStatus": "failure",
"nativeStatus": "success",
"classification": "known-gap",
"comparison": "diagnostic-code",
"comparison": "semantic-wir",
"evidence": [
"oracle:synthetic/chase-keywords/oracle.json",
"provenance:synthetic/chase-keywords/fixture.json"
"provenance:synthetic/chase-keywords/fixture.json",
"test:opy-rs::compiler::integration_tests::issue_145_lowering::contextual_chase_lowering_matches_the_pinned_oracle"
],
"owner": "opy-rs#88",
"note": "The source semantic form is known, while the current canonical integration surface lacks a complete compiler contract.",
"failureClass": "integration",
"diagnosticCode": "unsupported-integration-surface"
"owner": "opy-rs#144",
"note": "The contextual chase forms lower to canonical chaseAtRate/chaseOverTime actions; the full corpus fixture still contains separate len/builtin and text-shape differences tracked by the builtin/member lowering stream.",
"semanticEquivalent": false
},
{
"fixture": "synthetic/declarations-rules",
Expand Down Expand Up @@ -681,31 +680,30 @@
},
{
"fixture": "synthetic/issue-28-string-modifiers",
"nativeStatus": "failure",
"classification": "known-gap",
"comparison": "diagnostic-code",
"nativeStatus": "success",
"classification": "match",
"comparison": "semantic-wir",
"evidence": [
"oracle:synthetic/issue-28-string-modifiers/oracle.json",
"provenance:synthetic/issue-28-string-modifiers/fixture.json"
"provenance:synthetic/issue-28-string-modifiers/fixture.json",
"test:opy-rs::compiler::integration_tests::issue_145_lowering::string_modifier_lowering_matches_the_pinned_oracle"
],
"owner": "opy-rs#88",
"note": "The source modifier surface exceeds the independently evidenced compiler baseline.",
"failureClass": "integration",
"diagnosticCode": "unsupported-integration-surface"
"owner": "opy-rs#145",
"note": "The compiler lowers the evidenced f/w/b/c literal string modifiers to canonical Custom String values; l/t remain translation-carried source constructs.",
"semanticEquivalent": true
},
{
"fixture": "synthetic/issue-28-syntax",
"nativeStatus": "failure",
"nativeStatus": "success",
"classification": "known-gap",
"comparison": "diagnostic-code",
"comparison": "compiler-contract",
"evidence": [
"oracle:synthetic/issue-28-syntax/oracle.json",
"provenance:synthetic/issue-28-syntax/fixture.json"
"provenance:synthetic/issue-28-syntax/fixture.json",
"test:opy-rs::compiler::integration_tests::issue_145_lowering::broad_supported_syntax_lowering_reaches_canonical_wir"
],
"owner": "opy-rs#88",
"note": "The broad syntax fixture exceeds the independently evidenced compiler baseline.",
"failureClass": "integration",
"diagnosticCode": "unsupported-integration-surface"
"note": "The supported issue-28 syntax slice lowers through the native canonical-WIR contract; the pinned oracle snapshot currently cannot be reparsed by the released Workshop parser because of its uppercase hexadecimal spelling, so full semantic comparison remains a declared #88 corpus boundary rather than an unowned OPY lowering gap."
},
{
"fixture": "synthetic/issue-29-directives",
Expand Down Expand Up @@ -773,8 +771,8 @@
"oracle:synthetic/issue-31-positive/oracle.json",
"provenance:synthetic/issue-31-positive/fixture.json"
],
"owner": "opy-rs#145",
"note": "The semantic HIR now materializes the implicit def subroutine declaration; optimizer/directive compiler parity remains a separate lowering gap.",
"owner": "opy-rs#88",
"note": "The semantic HIR now materializes the implicit def subroutine declaration; optimizer/directive compiler parity remains a separate lowering gap tracked by the parent compatibility program.",
"semanticEquivalent": false
},
{
Expand Down
4 changes: 2 additions & 2 deletions compatibility/differential-expectations.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@
{"fixture": "real-world/6v6-adjustments", "nativeStatus": "failure", "classification": "match", "ruleNames": false, "evidence": ["oracle:real-world/6v6-adjustments/oracle.json", "provenance:real-world/6v6-adjustments/fixture.json"], "note": "The full project now resolves included-file #!mainFile and #!defineMember directives; the failure case remains at the existing included settings-placement boundary."},
{"fixture": "synthetic/issue-35-integration", "nativeStatus": "success", "classification": "match", "ruleNames": true, "evidence": ["oracle:synthetic/issue-35-integration/oracle.json", "implementation-invariant:opy-rs::compiler-vertical-slice"], "note": "The OPY source implementation resolves the source fixture; the compiler test independently lowers it through canonical WIR validation and deterministic workshop-rs emission."},
{"fixture": "synthetic/issue-40-structural", "nativeStatus": "success", "classification": "match", "ruleNames": false, "evidence": ["oracle:synthetic/issue-40-structural/oracle.json", "implementation-invariant:opy-rs::compiler-structural-lowering"], "note": "The pinned oracle records subroutine source identity, deterministic explicit/implicit variable allocation, and player event filters; the compiler test independently asserts those structures in canonical WIR."},
{"fixture": "synthetic/issue-46-primitives", "nativeStatus": "success", "classification": "match", "ruleNames": false, "evidence": ["oracle:synthetic/issue-46-primitives/oracle.json", "implementation-invariant:opy-rs::compiler-primitive-lowering", "test:opy-rs::compiler-issue-46-native-wir-equivalence"], "note": "The pinned oracle records the evidenced assignment and modification lowering (including **= and single-level indexed forms), value expressions, array indexing (including the firstOf index-0 read normalization), not-comparison negation, implicit default variables at fixed Workshop slots, and non-null variable initializers; null-default initializer semantics and deeper indexed writes remain explicit follow-ups. The compiler test compares native lowered WIR directly with the parsed oracle WIR and asserts structural equivalence."},
{"fixture": "synthetic/issue-46-unsupported", "nativeStatus": "success", "classification": "match", "ruleNames": false, "evidence": ["oracle:synthetic/issue-46-unsupported/oracle.json", "implementation-invariant:opy-rs::compiler-primitive-lowering-limits"], "note": "Negative #46 probe: the source implementation resolves and the pinned oracle compiles the dict-indexed assignment, while the native compiler rejects the dict primitive with the stable source-attributed unsupported-integration-surface diagnostic."},
{"fixture": "synthetic/issue-46-primitives", "nativeStatus": "success", "classification": "match", "ruleNames": false, "evidence": ["oracle:synthetic/issue-46-primitives/oracle.json", "implementation-invariant:opy-rs::compiler-primitive-lowering", "test:opy-rs::compiler-issue-46-native-wir-equivalence"], "note": "The pinned oracle records assignment and modification lowering (including **= and single-level indexed forms), value expressions, array indexing (including firstOf index-0 normalization), not-comparison negation, implicit default variables at fixed slots, and non-null variable initializers; #145 additionally covers null-default omission and preserves float-zero initialization. Deeper indexed writes remain an explicit canonical-WIR boundary. The compiler test compares native lowered WIR directly with the parsed oracle WIR and asserts structural equivalence."},
{"fixture": "synthetic/issue-46-unsupported", "nativeStatus": "success", "classification": "match", "ruleNames": false, "evidence": ["oracle:synthetic/issue-46-unsupported/oracle.json", "implementation-invariant:opy-rs::compiler-literal-dict-lookup"], "note": "The source implementation and pinned oracle compile the literal dict lookup; native lowering folds the literal key selection to the canonical value. Dictionary-indexed assignment targets remain a separate canonical-WIR boundary."},
{"fixture": "synthetic/issue-59-postfix-assignment", "nativeStatus": "success", "classification": "match", "ruleNames": false, "evidence": ["oracle:synthetic/issue-59-postfix-assignment/oracle.json", "implementation-invariant:opy-rs::compiler-postfix-assignment", "test:opy-rs::compiler-issue-59-postfix-oracle-equivalence"], "note": "The pinned oracle accepts postfix ++/-- assignments on global, player, and single-level indexed variables; native HIR resolves the forms and the compiler matches the canonical WIR."},
{"fixture": "synthetic/issue-59-postfix-negative", "nativeStatus": "failure", "classification": "match", "ruleNames": false, "evidence": ["oracle:synthetic/issue-59-postfix-negative/oracle.json", "implementation-invariant:opy-rs::postfix-assignment-diagnostics"], "note": "The pinned oracle rejects prefix ++; native reports the stable source-attributed parse-error diagnostic, while prefix --x remains valid consecutive unary-minus syntax."},
{"fixture": "synthetic/issue-59-embedded-postfix-negative", "nativeStatus": "failure", "classification": "match", "ruleNames": false, "evidence": ["oracle:synthetic/issue-59-embedded-postfix-negative/oracle.json", "implementation-invariant:opy-rs::postfix-assignment-diagnostics"], "note": "The pinned oracle independently rejects the embedded postfix form; native reports the stable source-attributed parse-error diagnostic."},
Expand Down
2 changes: 1 addition & 1 deletion compatibility/fixtures/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ repository:
| `issue-28-*` | pure OPY syntax probes for switch, do-while, hex, membership, modifiers, dicts, comprehensions, lambda, and negative diagnostics |
| `issue-35-integration` | minimal OPY HIR to canonical Workshop WIR validation and deterministic emission slice |
| `issue-46-primitives` | #46 oracle-backed primitive lowering probe: assignments and modifications (including `**=`), expressions, indexing, format, initializers, implicit default variables at fixed slots; the snapshot constrains the native compiler through structural equivalence |
| `issue-46-unsupported` | #46 negative probe: a dict-indexed assignment the compiler rejects with the stable source-attributed diagnostic while the oracle compiles it |
| `issue-46-unsupported` | #145 literal dictionary lookup probe retained from #46: the compiler folds literal key hits and misses to the oracle's selected value or `Null`; dictionary-indexed assignment targets remain a separate boundary |
| `issue-59-postfix-assignment` | #59 oracle-backed postfix `++`/`--` assignment probe for global, player, and single-level indexed variables; the snapshot constrains native lowering through canonical WIR equivalence |
| `issue-59-postfix-negative` | #59 pinned negative probe for rejected prefix `++` with a stable source-attributed parse diagnostic; prefix `--x` remains valid consecutive unary-minus syntax |
| `issue-59-embedded-postfix-negative` | #59 pinned negative probe for the rejected embedded postfix form with a stable source-attributed parse diagnostic |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@
"id": "synthetic/issue-46-unsupported",
"category": "synthetic",
"features": [
"compilation/opy-primitive-lowering-limits"
"compilation/opy-literal-dict-lookup"
],
"source": "source.opy",
"expectedStatus": "success",
"provenance": {
"kind": "original",
"origin": "opy-rs Issue #46 negative primitive-lowering probe (source implementation resolves; compiler rejects the dict primitive with a stable source-attributed diagnostic)",
"origin": "opy-rs Issue #145 literal dictionary lookup lowering probe, retained from the Issue #46 source fixture",
"license": "AGPL-3.0-or-later",
"redistributable": true
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,19 @@
"exitCode": 0,
"status": "success",
"stdout": "",
"workshop": "variables {\n global:\n 0: total\n}\n\nrule (\"negative primitive\") {\n event {\n Ongoing - Global;\n }\n actions {\n Set Global Variable(total, 1);\n }\n}\n",
"workshopExact": "variables {\n global:\n 0: total\n}\n\nrule (\"negative primitive\") {\n event {\n Ongoing - Global;\n }\n actions {\n Set Global Variable(total, 1);\n }\n}\n\n",
"workshopSha256": "6dca165c13c5671af194d53c8ba2acf729cc7f346ae1aa732622af8e589f2fd0"
"workshop": "variables {\n global:\n 0: total\n 1: missing\n}\n\nrule (\"negative primitive\") {\n event {\n Ongoing - Global;\n }\n actions {\n Set Global Variable(total, 1);\n Set Global Variable(missing, Null);\n }\n}\n",
"workshopExact": "variables {\n global:\n 0: total\n 1: missing\n}\n\nrule (\"negative primitive\") {\n event {\n Ongoing - Global;\n }\n actions {\n Set Global Variable(total, 1);\n Set Global Variable(missing, Null);\n }\n}\n\n",
"workshopSha256": "e16aff00ef53d93b806d1341b5addab18b3fe47b4f7c9fb9e7f8f4f3fe24217d"
},
"fixture": "synthetic/issue-46-unsupported",
"input": {
"files": [
{
"path": "source.opy",
"sha256": "caade82a453fa41ec5d2b19736b5b324a7a5d70773d9bff47e8634dd2f8dce8b"
"sha256": "858a5a3963c0f1be453fd00f14eff1d787faeccb8b9e8d07be38f77fed482509"
}
],
"sha256": "e1098bbb12f41d6ef22e12c4a285433950a34c91f59a6e1e5cd3c61978a7ac16",
"sha256": "f9047c8a722d1577770c6a74a5c7136580248287741e85a799ca5a823295d7d3",
"source": "source.opy"
},
"oracle": {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
globalvar total
globalvar missing

rule "negative primitive":
@Event global
total = {"a": 1, "b": 2}["a"]
missing = {"a": 1, "b": 2}["c"]
Loading
Loading