0%

Section 01: Backend-conditional skip attribute: grammar + ori_ir AST field + parser.

Goal

Backend-conditional skip attribute: grammar + ori_ir AST field + parser.

Implementation Sketch

Grammar/parse: reuse the existing keyed-attribute parsing that backs #compile_fail(code:, message:, line:, column:) (ExpectedError in ori_ir/src/ast/items/function.rs). AST: a ori_ir-local backend enum (ori_ir must not depend on oric’s runner Backend). Runner: oric/src/test/runner/mod.rs already carries config.backend (Backend::Interpreter | Backend::LLVM) — gate there. Disposition: .claude/rules/test-disposition.md — a per-backend skip still references a governing decision/bug, never untracked.

Spec References

ori_ir/src/ast/items/function.rs (TestDef.skip_reason + ExpectedError keyed-attr); oric/src/test/runner/mod.rs (Backend enum + config.backend); .claude/rules/test-disposition.md; .claude/rules/tests.md §Negative Testing / Attributes.

Work Items

  • TDD-first: author parser tests pinning #skip(backend: "llvm", reason: "...") keyed form (reuse the #compile_fail(code:, message:) keyed-attr parsing) AND that a missing/blank reason is rejected. Confirm they fail pre-impl.
  • Add the AST field to TestDef (ori_ir/src/ast/items/function.rs) — a per-backend skip carrier (e.g. skip_backends: Vec<TestBackend> with a ori_ir-local backend enum, since ori_ir cannot depend on oric’s runner Backend) keyed to its reason; parse the keyed attr into it. Keep skip_reason (both-backend skip) working unchanged.

Fresh intel (regenerated)

{ “schema_version”: 1, “target”: { “kind”: “plan-section”, “ref”: “backend-conditional-test-disposition/s-48b37bee” }, “generated_at”: “2026-06-24T21:53:37.000853+00:00”, “graph_state”: { “head_sha”: “f866f681”, “last_code_import_at”: “2026-06-24T21:53:07.464Z”, “embedding_stale”: false, “insights_stale”: false, “cpg_stale”: false }, “surfaces”: {}, “summary”: “intel-package[plan-section:backend-conditional-test-disposition/s-48b37bee] agent-authored dossier”, “degraded”: false, “dossier”: { “objective_symbols”: [], “tiers”: {}, “agent_authored”: true, “difficulty”: { “class”: “routine”, “research_online”: false, “research_mode”: “auto”, “signals”: [], “plan_dir”: “/home/eric/projects/ori_lang/plans/backend-conditional-test-disposition” } } }

(full dossier: attribute-grammar—s-48b37bee.intel.json)