Repository navigation
probbit check: one command and a GitHub Action for the rule lock - #31
Merged
Merged
Conversation
…line, exit 0/1/3, --json One command for CI: prove + fuzz a persona's rules (exactly what persona lint does, its body moved into lint_report unchanged) and replay every --strand. Added to the command table, so --help, help, completions and the man page list it. The dispatch example the tests use ships here; its README walk-through follows.
Installs probbit with install.sh (version input, or a prebuilt binary), runs probbit check --json, annotates broken rules and failing strands as errors and unproven rules as warnings with their seeds, uploads probbit-check.json (actions/upload-artifact@v4), and applies allow-unproven to exit 3. Windows runners stop with one clear error.
uses: ./ with the probbit built from the commit: the dispatch rule lock with a strand, the shipped tutor, and the install path (v0.8.2 must stop at the version gate).
…ured numbers README walk-through: with the routine habit every rule is held by construction on seeds 0-99; without it check exits 1 (15 broken seeds; the 9 unknown, unbroken ones alone exit 3).
… 1.78 again std::io::pipe() is stable only since 1.87; the readerless pipe is now the stdin of a child that has exited (Stdio::piped, Stdio::from). cargo +1.78.0 test --workspace --locked passes.
…e, the MSRV test fix)
… their own probbit-check.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
probbit checkturns the rule lock into one command and one CI step: vet the rules a persona must keep before its first task and after every policy update, then replay its strands.probbit check PERSONA [--props FILE] [--strand FILE]... [--seeds LIST] [--depth N] [--hours LIST] [--json]persona lint's pipeline (moved unchanged into one function both commands call) andlive verifyon each strand. No engine change, no new dependency.held,held_by_construction,broken seed N,unproven), one per strand (ok N events/FAIL line K: ...), thencheck: held H · broken B · unproven U · strands S/T.--jsonemits{persona, props, seeds, depth, hours, rules, strands, verdict}, with thepersona lintdocument underrules.--help,probbit help check, completions anddocs/probbit.1list it.action.yml(composite, "probbit check")persona,props,strands(newline-separated globs),seeds(0-99),depth,version(latest; install.sh),binary(a prebuilt probbit, used by the dogfood workflow until 0.8.3 is released),allow-unproven(false),json-artifact(true;actions/upload-artifact@v4, the only action it uses).::errorper broken rule and failing strand,::warningper unproven rule, with the seeds. Linux and macOS; Windows runners stop with one error line (README says so). A probbit withoutcheck(0.8.2) stops with a clear message..github/workflows/check.yml:uses: ./on ubuntu and macos with the probbit built from the commit (the dispatch example with a strand, the shipped tutor), plus the install path (v0.8.2 must stop at the version gate). ci.yml is untouched.examples/persona/dispatch-policy.yaml+dispatch-props.json: an agent that learns whether to act or ask first. All three rules areheld_by_constructionon seeds 0-99 (0.02 s). Without its routine habit,checkexits 1: the bound proves the routine rule for 76 of 100 individuals, the search breaks it on 15 of the 24 left (9 with a single event); the other 9 alone exit 3.Fixed:
cargo +1.78.0 test --workspace --lockedcompiles again (a test usedstd::io::pipe, Rust 1.87; it now takes a readerless pipe from an exited child's stdin).Tests: new
probbit-cli/tests/cli_check.rs(6 tests: exit 0/1/3 and 1-over-3, strands ok/tampered/unreadable, the--jsonshape, bad usage, the table). Workspace 322 passed / 0 failed / 1 ignored on stable and on Rust 1.78 (--locked); Python 44 OK; MSRV release build OK.CHANGELOG:
## 0.8.3 - unreleased. No tag, release or publish in this PR.