{"id":34852618,"url":"https://github.com/konnov/cyclic-buffer-challenge","last_synced_at":"2026-04-02T02:02:10.782Z","repository":{"id":327054739,"uuid":"1104667375","full_name":"konnov/cyclic-buffer-challenge","owner":"konnov","description":"Bug finding challenge for all of the tools around","archived":false,"fork":false,"pushed_at":"2025-12-01T13:10:58.000Z","size":29,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-04T01:29:41.910Z","etag":null,"topics":["aflplusplus","apalache","challenge","fuzzing","pbt","proptest","quint","tlaplus","tlc"],"latest_commit_sha":null,"homepage":"","language":"TLA","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/konnov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-26T14:19:41.000Z","updated_at":"2025-12-01T19:34:49.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/konnov/cyclic-buffer-challenge","commit_stats":null,"previous_names":["konnov/cyclic-buffer-challenge"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/konnov/cyclic-buffer-challenge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konnov%2Fcyclic-buffer-challenge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konnov%2Fcyclic-buffer-challenge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konnov%2Fcyclic-buffer-challenge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konnov%2Fcyclic-buffer-challenge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/konnov","download_url":"https://codeload.github.com/konnov/cyclic-buffer-challenge/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konnov%2Fcyclic-buffer-challenge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28035520,"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","status":"online","status_checked_at":"2025-12-25T02:00:05.988Z","response_time":58,"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":["aflplusplus","apalache","challenge","fuzzing","pbt","proptest","quint","tlaplus","tlc"],"created_at":"2025-12-25T19:28:19.243Z","updated_at":"2025-12-25T19:28:21.100Z","avatar_url":"https://github.com/konnov.png","language":"TLA","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Buggy Cyclic Buffer Challenge\n\nA bug finding challenge for all of the tools around. Are you tired of everyone\nselling you **the best tool in town**? Well, the truth is, there is no one tool\nthat works best for every problem. Here is a simple challenge that demonstrates\nwhat kind of compromises we have to make.\n\nWant to add your tool? Fork the repository and make a PR!\n\n*For professional consulting, verification reports, or adaptation of these\nmethods, see [konnov.phd][] and [protocols-made-fun.com][].*\n\n## The Challenge\n\nThe challenge is to find a bug in a simple cyclic buffer implementation. The\nbuffer has a fixed size (e.g., 10, 100) and supports two operations: `write` and\n`read` (or `put` and `get`). The bug is that the buffer does not correctly\nhandle the case when the buffer is full and a `write` operation is performed. In\nthis case, the buffer should either overwrite the oldest data or reject the\n`write` operation, but the buggy implementation allows overwriting without\nproper checks, leading to data loss.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"_assets/logo.svg\" alt=\"Cyclic Buffer Challenge Logo\" height=\"150\"\u003e\n\u003c/p\u003e\n\n## Approaches\n\nWe leverage different tools and techniques to find this bug, including model\nchecking, fuzzing, property-based testing, and random simulation.\n\n| Directory | Tool/Framework | Approach | Details |\n|-----------|---------------|----------|---------|\n| [`rust/proptest/`](rust/proptest/) | [proptest](https://docs.rs/proptest/latest/proptest/) | Property-based testing | [README](rust/proptest/README.md) |\n| [`c/`](c/) | [AFLplusplus](https://aflplus.plus/) | Fuzzing (binary \u0026 text inputs) | [README](c/README.md) |\n| [`tla/`](tla/) | [TLC](https://github.com/tlaplus/tlaplus/) | Breadth-first search, Random simulation | [README](tla/README.md) |\n| [`tla/`](tla/) | [Apalache](https://apalache-mc.org/) | Bounded model checking, Randomized symbolic execution | [README](tla/README.md) |\n| [`quint/`](quint/) | [Quint](https://quint-lang.org/) | Randomized simulation | [README](quint/README.md) |\n| [`quint/`](quint/) | [Quint](https://quint-lang.org/) + [Apalache](https://apalache-mc.org/) | Bounded model checking, Randomized symbolic execution | [README](quint/README.md) |\n\n\u003c!-- Links --\u003e\n\n[konnov.phd]: https://konnov.phd/\n[protocols-made-fun.com]: https://protocols-made-fun.com/","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkonnov%2Fcyclic-buffer-challenge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkonnov%2Fcyclic-buffer-challenge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkonnov%2Fcyclic-buffer-challenge/lists"}