{"id":34910978,"url":"https://github.com/kadubon/bottleneck-audit-toolkit","last_synced_at":"2026-01-13T21:01:07.843Z","repository":{"id":330551056,"uuid":"1123057872","full_name":"kadubon/bottleneck-audit-toolkit","owner":"kadubon","description":"Offline, fail-closed verifier for JSONL telemetry event logs. Emits deterministic audit certificates + human summaries with explicit claims/non-claims for bottleneck and integrity review.","archived":false,"fork":false,"pushed_at":"2025-12-26T08:33:00.000Z","size":50,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-27T20:26:26.010Z","etag":null,"topics":["ai","audit","bottleneck","checkpointing","distributed-training","event-logs","jsonl","mlops","offline-verification","performance-monitoring","silent-data-corruption","tail-latency","telemetry"],"latest_commit_sha":null,"homepage":"https://kadubon.github.io/github.io/","language":"Python","has_issues":false,"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/kadubon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"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-12-26T05:32:21.000Z","updated_at":"2025-12-26T07:23:54.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/kadubon/bottleneck-audit-toolkit","commit_stats":null,"previous_names":["kadubon/bottleneck-audit-toolkit"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/kadubon/bottleneck-audit-toolkit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kadubon%2Fbottleneck-audit-toolkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kadubon%2Fbottleneck-audit-toolkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kadubon%2Fbottleneck-audit-toolkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kadubon%2Fbottleneck-audit-toolkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kadubon","download_url":"https://codeload.github.com/kadubon/bottleneck-audit-toolkit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kadubon%2Fbottleneck-audit-toolkit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28400348,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-13T14:36:09.778Z","status":"ssl_error","status_checked_at":"2026-01-13T14:35:19.697Z","response_time":56,"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","audit","bottleneck","checkpointing","distributed-training","event-logs","jsonl","mlops","offline-verification","performance-monitoring","silent-data-corruption","tail-latency","telemetry"],"created_at":"2025-12-26T11:14:46.969Z","updated_at":"2026-01-13T21:01:07.826Z","avatar_url":"https://github.com/kadubon.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bottleneck Audit Toolkit (BATool)\n\n## DISCLAIMER / NO SUPPORT / NO WARRANTY / NO LIABILITY\n\nBATool is a research and audit tool. It is **not** a security boundary, safety guarantee, or compliance system.\nUse is entirely at your own risk. The authors and contributors accept **no warranty, no liability, and no support obligations**.\nIssues, PRs, and inquiries may be ignored or left unanswered.\n\nBATool is an **offline, fail-closed verifier** for **JSONL event logs**. It emits:\n\n- a deterministic, machine-readable **certificate** (JSON), and\n- a deterministic, human-readable **summary** (text),\n\nwhile separating **claims** (supported by the observed log) from **non-claims** (what cannot be supported, and why).\n\n## License\n\n- Code and tooling: **Apache-2.0** (see `LICENSE` and `NOTICE`)\n- TeX sources under `paper/`: **CC-BY-4.0** (see `paper/LICENSE` and file headers)\n\n## Quickstart (uv)\n\n```bash\nuv venv\nuv pip install -e ./verifier\nbatool verify --input ./examples/ok_run/events.jsonl --out /tmp/certificate.json --human /tmp/summary.txt\n```\n\n## Quickstart (pip)\n\n```bash\npython -m venv .venv\n. .venv/bin/activate\npip install -e ./verifier\nbatool verify --input ./examples/ok_run/events.jsonl --out /tmp/certificate.json --human /tmp/summary.txt\n```\n\n## Verdicts\n\n- `VERIFIED`: no reject/undecidable triggers, and at least one claim is made.\n- `UNDECIDABLE`: missing data or ambiguity (for example missing END events or clock skew beyond tolerance).\n- `REJECT`: schema violations, inconsistent run_id, duplicate event_id, tamper mismatch, or strict-mode failures.\n\nExit codes: `0` VERIFIED, `1` UNDECIDABLE, `2` REJECT.\n\n## Claims vs non-claims\n\n- Claims are explicitly supported by the observed data under this tool's validation rules.\n- Non-claims explain what could not be supported, and why.\n\nThis tool does **not** infer causality. It performs telemetry-visible checks and heuristic aggregation only.\nIt prefers `UNDECIDABLE` / `REJECT` over guessing.\n\n## Strict mode\n\nUse `--strict` to treat any clock decrease or missing END as `REJECT`. This is more conservative and intended for high-integrity pipelines.\n\n## Sample output (summary excerpt)\n\n```\nBATool Verification Summary\nVerdict: VERIFIED\nRun ID: run-ok-001\nInput Digest (sha256, KEYSORT_UTF8): 7f2b...\n\nClaims:\n- useful_compute_floor: 5 steps\n- dominant_time_component: ALLREDUCE_DOMINANT (evidence=high)\n- integrity: OK (contract_ok=true)\n\nNon-claims:\n- none\n```\n\n## Reference theory (DOIs)\n\nBATool implements a **reduced log-checking protocol** and a **minimal certificate format**. It does **not** implement the full\nstatistical guarantees or cryptographic integrity models described in the following references.\n\n- TLUC: \u003chttps://doi.org/10.5281/zenodo.18051330\u003e\n- SDC: \u003chttps://doi.org/10.5281/zenodo.18050287\u003e\n- MCCBE: \u003chttps://doi.org/10.5281/zenodo.18057956\u003e\n\nNot implemented (examples):\n\n- confidence sequences or coverage-in-time proofs\n- cryptographic authenticity or secure log signatures\n- power/cooling estimators or hardware trust anchors\n\n## Documentation\n\nSee `docs/` for:\n\n- certificate format (`docs/CERTIFICATE_FORMAT.md`)\n- threat model (`docs/THREAT_MODEL.md`)\n- versioning (`docs/VERSIONING.md`)\n- reproducibility steps (`docs/REPRODUCIBILITY.md`)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkadubon%2Fbottleneck-audit-toolkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkadubon%2Fbottleneck-audit-toolkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkadubon%2Fbottleneck-audit-toolkit/lists"}