{"id":24797506,"url":"https://github.com/dylanlott/richter","last_synced_at":"2026-07-14T02:31:49.330Z","repository":{"id":234934356,"uuid":"737939299","full_name":"dylanlott/richter","owner":"dylanlott","description":"a rules engine for simulating realtime trading card games","archived":false,"fork":false,"pushed_at":"2024-01-02T02:39:30.000Z","size":4,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-20T00:55:17.704Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dylanlott.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-01-02T02:39:21.000Z","updated_at":"2024-01-02T02:39:34.000Z","dependencies_parsed_at":"2024-04-21T17:08:27.625Z","dependency_job_id":"9c353204-0b2f-457a-95df-7967f2816628","html_url":"https://github.com/dylanlott/richter","commit_stats":null,"previous_names":["dylanlott/richter"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dylanlott/richter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dylanlott%2Frichter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dylanlott%2Frichter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dylanlott%2Frichter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dylanlott%2Frichter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dylanlott","download_url":"https://codeload.github.com/dylanlott/richter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dylanlott%2Frichter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35443979,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-14T02:00:06.603Z","response_time":114,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-01-30T01:28:30.527Z","updated_at":"2026-07-14T02:31:49.315Z","avatar_url":"https://github.com/dylanlott.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Richter\n\n\u003e a tiny rules engine in Go\n\nRichter is a tiny rules engine written as an experiment to analyze and evaluate arbitrary board states in trading card games.\n\nIts main goal is as a starting point for a full-bodied approach to board state management in a larger simulator or arena.\n\n## Design\n\nThe engine is designed around two phases: Analysis and Evaluation.\n\nAnalysis is focused on coming up with possible moves, while evaluation is focused around validating and applying a set of actions to the state.\n\nRules are composed of a condition function that is passed the current state and the card in question. From there, a bool is returned - true if the rule is met, false if the rule is not met and thus is an invalid action. Rules allow arbitrary logic to be written into conditions, enabling it to check the state for any possible value at evaluation time, as well as being able to peer up its own stack and sibling stacks.\n\nStacks are sets of cards that are being analyzed or evaluated. A set of stacks is a player's boardstate, and a collection of those players is a game.\n\n## Implementation\n\nThe `RunProcess` function starts the rules engine and offers read only access to the Analyzer, while safely offering atomic and exclusive write access to the Evaluation phase.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdylanlott%2Frichter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdylanlott%2Frichter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdylanlott%2Frichter/lists"}