{"id":28395744,"url":"https://github.com/orbitinghail/precept","last_synced_at":"2025-06-27T04:31:25.318Z","repository":{"id":285147362,"uuid":"957206455","full_name":"orbitinghail/precept","owner":"orbitinghail","description":"A testing utility for fuzzing and fault injection to discover erroneous and interesting states.","archived":false,"fork":false,"pushed_at":"2025-06-23T16:54:38.000Z","size":56,"stargazers_count":4,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-23T17:48:24.074Z","etag":null,"topics":["fault-injection","fuzzing","testing"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/orbitinghail.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE-APACHE","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,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-03-29T20:01:24.000Z","updated_at":"2025-06-23T16:54:42.000Z","dependencies_parsed_at":"2025-06-16T03:56:45.240Z","dependency_job_id":"6eb19eef-e757-4d02-8510-c63c242d528e","html_url":"https://github.com/orbitinghail/precept","commit_stats":null,"previous_names":["orbitinghail/precept"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/orbitinghail/precept","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orbitinghail%2Fprecept","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orbitinghail%2Fprecept/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orbitinghail%2Fprecept/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orbitinghail%2Fprecept/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/orbitinghail","download_url":"https://codeload.github.com/orbitinghail/precept/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orbitinghail%2Fprecept/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261528323,"owners_count":23172732,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["fault-injection","fuzzing","testing"],"created_at":"2025-05-31T20:36:54.942Z","updated_at":"2025-06-27T04:31:25.300Z","avatar_url":"https://github.com/orbitinghail.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003ePrecept\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://docs.rs/precept\"\u003e\u003cimg alt=\"docs.rs\" src=\"https://img.shields.io/docsrs/precept\"\u003e\u003c/a\u003e\n  \u0026nbsp;\n  \u003ca href=\"https://github.com/orbitinghail/precept/actions\"\u003e\u003cimg alt=\"Build Status\" src=\"https://img.shields.io/github/actions/workflow/status/orbitinghail/precept/rust.yml\"\u003e\u003c/a\u003e\n  \u0026nbsp;\n  \u003ca href=\"https://crates.io/crates/precept\"\u003e\u003cimg alt=\"crates.io\" src=\"https://img.shields.io/crates/v/precept.svg\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nThis crate is designed to be used in testing and development to aid in finding interesting and erroneous states. It can be used in concert with a guidance system to provide high signal fuzz testing.\n\nThe crate offers a few features:\n\n1. expectations: a set of macros that can be used to check that the program reaches certain states, and that those states are valid. these macros do not cause the program to crash like an assert would. rather they are emitted to a configured collector for later analysis or a configured guidance system to assist with fuzz testing. notably, these macros support tracking when a state is never reached is extremely helpful for automated fuzzing and verifying test correctness\n\n2. simulation: wrappers around time and randomness to support fast forwarding and better control over randomness when run within a guidance system\n\n3. fault injection: a fault injection system that allows a guidance system to trigger custom faults in a controlled manner\n\n## Credits\n\nPrecept is heavily inspired by the official [Antithesis Rust SDK].\n\n[Antithesis Rust SDK]: https://github.com/antithesishq/antithesis-sdk-rust/\n\n## License\n\nLicensed under either of\n\n- Apache License, Version 2.0 ([LICENSE-APACHE] or https://www.apache.org/licenses/LICENSE-2.0)\n- MIT license ([LICENSE-MIT] or https://opensource.org/licenses/MIT)\n\nat your option.\n\n[LICENSE-APACHE]: ./LICENSE-APACHE\n[LICENSE-MIT]: ./LICENSE-MIT\n\n### Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you shall be dual licensed as above, without any\nadditional terms or conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forbitinghail%2Fprecept","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Forbitinghail%2Fprecept","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forbitinghail%2Fprecept/lists"}