{"id":35419788,"url":"https://github.com/omnixs/orion","last_synced_at":"2026-02-04T13:45:03.953Z","repository":{"id":326704927,"uuid":"1101532139","full_name":"omnixs/orion","owner":"omnixs","description":"C++ DMN Business Rules Engine - Fast decision table evaluation with FEEL","archived":false,"fork":false,"pushed_at":"2026-01-13T16:37:46.000Z","size":34885,"stargazers_count":2,"open_issues_count":3,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-13T19:55:28.307Z","etag":null,"topics":["ai-generated-code","business-rules","cpp","cpp-library","cpp23","decision-tables","dmn","feel-expressions","rules-engine"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/omnixs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-21T20:11:18.000Z","updated_at":"2026-01-02T14:36:31.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/omnixs/orion","commit_stats":null,"previous_names":["omnixs/orion"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/omnixs/orion","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omnixs%2Forion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omnixs%2Forion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omnixs%2Forion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omnixs%2Forion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/omnixs","download_url":"https://codeload.github.com/omnixs/orion/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/omnixs%2Forion/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28602175,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T10:46:13.255Z","status":"ssl_error","status_checked_at":"2026-01-20T10:42:51.865Z","response_time":117,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-generated-code","business-rules","cpp","cpp-library","cpp23","decision-tables","dmn","feel-expressions","rules-engine"],"created_at":"2026-01-02T16:16:35.772Z","updated_at":"2026-02-04T13:45:03.945Z","avatar_url":"https://github.com/omnixs.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ORION — Optimized Rule Integration \u0026 Operations Native\n\n[![AI Generated](https://img.shields.io/badge/Code-100%25_AI_Generated-blueviolet)](CONTRIBUTING.md)\n[![Version](https://img.shields.io/github/v/release/omnixs/orion)](https://github.com/omnixs/orion/releases/latest)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE)\n[![CI](https://github.com/omnixs/orion/actions/workflows/ci-full.yml/badge.svg)](https://github.com/omnixs/orion/actions/workflows/ci-full.yml)\n[![C++](https://img.shields.io/badge/C%2B%2B-23-00599C?logo=cplusplus)](https://en.cppreference.com/w/cpp/23)\n[![DMN](https://img.shields.io/badge/DMN-1.5-orange)](https://www.omg.org/spec/DMN/)\n[![TCK](https://img.shields.io/badge/TCK%20Level%202-100%25-success)](dat/tck-baselines/2.1.1/)\n\n\u003cimg src=\"docs/orion.png\" align=\"right\" width=\"180\" alt=\"ORION Logo\"\u003e\n\nA native C++ implementation of the DMN™ (Decision Model and Notation) specification,\nfocusing on **decision tables** with an emphasis on performance, correctness, and simple integration.\n\n\u003e **🤖 AI-Generated Project:** All source code is generated by AI agents via task prompts. See [AI-Only Development Workflow](#ai-only-development-workflow) below.\n\n- **Language:** C++23\n- **License:** Apache-2.0 (see `LICENSE`)\n- **Status:** Early stage (APIs may evolve)\n- **DMN Compliance:** Level 1 and Level 2 compatible\n- **Goals:** fast rule evaluation, clean table model, clear extensibility points\n\n## Why Orion?\n\n- **Native C++23** - No JVM dependency, designed for high-performance backend integration\n- **DMN Standards Focus** - Implements DMN 1.5 Level 2 with 100% TCK compliance (126/126 tests)\n- **Lightweight \u0026 Embeddable** - Static library suitable for embedding in larger systems\n- **Production-Quality Testing** - 3,814 automated tests (279 unit + 3,535 TCK)\n- **AI-Only Codebase** - Demonstrates rigorous AI-generated code with human oversight\n\n## Download\n\nDownload the latest release from [GitHub Releases](https://github.com/omnixs/orion/releases/latest):\n\n- **Linux**: `orion-X.Y.Z-linux-x64.tar.gz`\n- **Windows**: `orion-X.Y.Z-windows-x64.zip`\n\nEach release includes:\n- Static libraries (`liborion_lib.a` / `orion_lib.lib`)\n- Headers (`include/orion/`)\n- CMake configuration files\n- Command-line tools (`orion_app`, `orion_tck_runner`)\n- TCK test baseline for the version\n- License files\n\n**Verify downloads** with the corresponding `.sha256` checksum files.\n\n## Features\n\n- Decision Table evaluation compatible with DMN L1/L2 (hit policies, FEEL expressions)\n- **Decision Requirements Graph (DRG)** evaluation with topological sorting and dependency resolution\n- Business Knowledge Models (BKM) support\n- Portable C++ API under `orion::api` namespace\n- FEEL (Friendly Enough Expression Language) expression evaluator\n- Pluggable logger interface (optional spdlog integration)\n- Deterministic tests and benchmarks\n- DMN TCK (Technology Compatibility Kit) test runner\n\n## Current Limitations\n\n**DMN Feature Coverage:**\n- ✅ Level 2: 100% (125/125 tests) - Decision tables with UNIQUE, FIRST, COLLECT hit policies\n- ⏳ Level 3: 11.2% (375/3,351 tests) - Partial FEEL expression support\n- ❌ Boxed expressions, decision services, and advanced DMN features not yet implemented\n\n**FEEL Language Support:**\n- ✅ Basic arithmetic, comparisons, boolean logic, string operations\n- ✅ Built-in functions: abs(), substring(), string length, matches()\n- ⏳ Limited date/time, list, and context operations\n- ❌ Advanced functions, quantified expressions (some, every)\n\n**API Stability:**\n- Version 2.1.1 released: FEEL function evaluation improvements\n- Breaking change from v1.x: evaluate() now uses nlohmann::json directly\n- Thread-safety: Single-threaded usage model (share-nothing across threads)\n- See [CHANGELOG.md](CHANGELOG.md) for version history\n- See [CHANGELOG.md](CHANGELOG.md) for version history\n\n## Quick Start\n\n### Prerequisites\n\n- C++23 compatible compiler (GCC 11+, Clang 15+, MSVC 2022+)\n- CMake 3.26 or later\n- vcpkg package manager\n\n**Dependencies** (automatically installed by vcpkg):\n- nlohmann-json - JSON library\n- PCRE2 - Perl-compatible regular expressions (for FEEL `matches()` function)\n- CTRE - Compile-time regular expressions (internal implementation)\n- spdlog - Logging framework\n- RapidXML - XML parsing\n- Boost.Test - Unit testing (dev only)\n- Google Benchmark - Performance testing (dev only)\n\n### Setup vcpkg\n\n```bash\ngit clone https://github.com/Microsoft/vcpkg.git ~/vcpkg\ncd ~/vcpkg\n./bootstrap-vcpkg.sh  # or bootstrap-vcpkg.bat on Windows\n```\n\n### Build Orion\n\n```bash\ngit clone https://github.com/omnixs/orion.git orion\ncd orion\n\n# Initialize DMN TCK test submodule (required for running tests)\ngit submodule update --init --recursive\n\n# Configure with vcpkg\ncmake -S . -B build \\\n  -DCMAKE_BUILD_TYPE=Release \\\n  -DCMAKE_TOOLCHAIN_FILE=~/vcpkg/scripts/buildsystems/vcpkg.cmake \\\n  -DVCPKG_TARGET_TRIPLET=x64-linux\n\n# Build\ncmake --build build -j\n\n# Run tests (fast selective mode - runs passing TCK tests only)\n./build/tst_orion --log_level=test_suite\n\n# Or run comprehensive mode (all TCK tests - slower)\nexport ORION_TCK_RUN_ALL=1\n./build/tst_orion --log_level=test_suite\n```\n\n**Note**: The DMN TCK (Test Compatibility Kit) is included as a git submodule in `dat/dmn-tck/`. \nIf you skip the submodule initialization, the build will succeed but some tests will fail due to missing test data files.\n\n**Performance Tip**: Unit tests run in selective mode by default (0.9s vs 25s), executing only passing Level 3 TCK tests. \nLevel 2 tests always run in full (DMN compliance requirement). Set `ORION_TCK_RUN_ALL=1` for comprehensive validation.\n\n### Minimal Usage Example\n\n```cpp\n#include \u003corion/api/engine.hpp\u003e\n#include \u003cnlohmann/json.hpp\u003e\n#include \u003ciostream\u003e\n\nint main() {\n    // Create the business rules engine\n    orion::api::BusinessRulesEngine engine;\n    \n    // Load DMN model from XML string or file\n    std::string dmn_xml = \"\u003c?xml version=\\\"1.0\\\"?\u003e...\";\n    auto result = engine.load_dmn_model(dmn_xml);\n    if (!result) {\n        std::cerr \u003c\u003c \"Error: \" \u003c\u003c result.error() \u003c\u003c std::endl;\n        return 1;\n    }\n    \n    // Create input context as JSON\n    nlohmann::json input = {\n        {\"age\", 25},\n        {\"category\", \"premium\"}\n    };\n    \n    // Evaluate decision (native JSON API - zero-copy)\n    nlohmann::json result = engine.evaluate(input);\n    std::cout \u003c\u003c \"Result: \" \u003c\u003c result.dump() \u003c\u003c std::endl;\n    \n    return 0;\n}\n```\n\nSee `docs/examples/consumer-project/` for a complete working example with build configuration.\n\n## Examples \u0026 Documentation\n\n- **[Architecture Overview](docs/architecture.md)** - Components, data flow, repository structure\n- **[Testing Guide](docs/testing.md)** - Build instructions, running unit tests and TCK\n- **[AI Development Story](docs/ai-dev-story.md)** - How this project was built using AI-only workflow\n- **[Consumer Project Example](docs/examples/consumer-project/)** - Integrate Orion into your CMake project\n- **[DMN Examples](dat/tst/)** - Sample DMN files for testing\n\n## Getting Help\n\n**Questions \u0026 Support:**\n- 🐛 **Bug Reports**: [Open an issue](https://github.com/omnixs/orion/issues/new) with reproduction steps\n- 💡 **Feature Requests**: [Open an issue](https://github.com/omnixs/orion/issues/new) describing use case\n- 📖 **Documentation**: See [docs/](docs/) for architecture, testing, and AI workflow guides\n- 💬 **Usage Questions**: [Open an issue](https://github.com/omnixs/orion/issues) with \"question\" label\n\n**Before Opening an Issue:**\n1. Check existing issues for duplicates\n2. Review [docs/testing.md](docs/testing.md) for test execution help\n3. Include DMN file, input JSON, and error messages for bug reports\n\n## Contributing\n\nWe welcome issues and PRs! Please read:\n\n- `CONTRIBUTING.md` (AI-only workflow, DCO, coding guidelines)\n- `CODE_OF_CONDUCT.md` (Contributor Covenant)\n\n**Note:** This project follows a strict **AI-Only Policy**. All source code changes must be generated by AI agents via task prompts.\n\n### AI-Only Development Workflow\n\nThis project uses a **two-phase task-based workflow**:\n\n**Phase 1: Create Task** (Planning)\n1. Create an issue describing the work\n2. Tell the AI: \"Create a task file for [goal] using [template]\"\n3. AI creates task file in `.github/tasks/` (may ask clarifying questions if needed)\n4. Review and refine the task file (directly or using AI)\n\n**Phase 2: Execute Task** (Implementation)\n1. Tell the AI: \"Execute\"\n2. AI creates feature branch, implements changes, runs tests, fills retrospective\n3. Review the PR and merge\n\n**Key files:**\n- `.github/copilot-instructions.md` - Complete AI agent instructions\n- `.github/prompts/*.md` - Task templates for different work types\n- `.github/tasks/*.md` - Individual task files (one per issue)\n\nSee `CONTRIBUTING.md` for complete details.\n\n## Security\n\nSee `SECURITY.md` for reporting vulnerabilities.\n\n## License\n\nCopyright (c) 2025 ORION contributors.\n\nLicensed under the Apache License, Version 2.0. See `LICENSE` for details.\n\n## Trademarks\n\nDMN™ is a trademark of the Object Management Group (OMG). Any other names are the\nproperty of their respective owners and used for identification only.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomnixs%2Forion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fomnixs%2Forion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fomnixs%2Forion/lists"}