Repository navigation
uv tool install 'in-lockstep[anthropic]'
Provider extras: anthropic, openai, google, bedrock, all. Python 3.11 or newer.
What's Changed
- feat(workflows): the shipped processes are framework code, not copied source by @tpouyer in #261
- feat(cli): show-workflow replaces --eject, because reading is not forking by @tpouyer in #262
- docs: a documented snippet raised DuplicateWorkflow, and --eject is gone by @tpouyer in #276
- feat(detect): read Cargo.toml, go.mod, pom.xml and build.gradle, and decline by name by @tpouyer in #277
- fix(config): probe full ref paths, so a base branch with a slash resolves by @tpouyer in #278
- fix(review): check a finding's path and line against the change, not against nothing by @tpouyer in #279
- fix(ci): run provision here, and stop discarding doctor's verdict by @tpouyer in #280
- fix(record): every model call is kept, through a binding we did not build by @tpouyer in #281
- The mission named two things no objective carried, and Policy carried five fields nothing enforced by @tpouyer in #282
- feat(ci): the write verbs run under GitLab, and a citation that resolves by @tpouyer in #283
- fix(status): a control refusing is not the work going wrong, and a replay is not a judgment by @tpouyer in #284
- refactor(cli): name the composition root, and pin what it may decide by @tpouyer in #285
- fix(eval): harvest reads the shipped sidecar, and the first case is promoted by @tpouyer in #286
- feat(improve): the learning loop drafts one body, measures it against the corpus, and proposes it by @tpouyer in #287
- feat(report): group by asker, so a team can see whether people get consistent results by @tpouyer in #288
- fix(ai): a malformed structured reply is re-prompted once, with the parser's own words by @tpouyer in #290
- docs(extending): every documented snippet type-checks under the mypy an adopter runs by @tpouyer in #291
- fix(examples): the worked examples type-check, one invocation each, and the exemption is gone by @tpouyer in #292
- fix(tests): the suite type-checks under strict less disallow_untyped_defs, and the override that said so matches by @tpouyer in #293
- docs(needs): the closing section reads the ledger, and a test keeps it agreeing with the table by @tpouyer in #296
- fix(ruff): the default path list is a typed tuple, so a string there is refused before it unpacks by @tpouyer in #297
- feat(review): a lens is a declared object, and
init --reviewscaffolds a lens on request by @tpouyer in #298 - fix(retry): retire the action-level Retry middleware, which nothing constructed by @tpouyer in #299
- fix(outcome): GATE-OUT-2 holds on the clause that is real, and SKIPPED goes with the cache nobody wrote by @tpouyer in #300
- docs(objectives): the held gates no objective cites are counted, and the count is a two-sided ratchet by @tpouyer in #301
- fix(registry): a verb that needs a model capability is refused a model registered without it, by name by @tpouyer in #302
- fix(review): a mistyped --aspect is an error before the run id exists, and the marker escapes its argument by @tpouyer in #303
- feat(ledger): an opt-in local identity, so a team's local runs can be compared (GATE-TEAM-2) by @tpouyer in #304
- fix(ledger): a CI review's record reaches lockstep-history, or report says how many have not by @tpouyer in #305
- fix(history): a flagged rewrite can be acknowledged by name, and only then stops being an alarm by @tpouyer in #306
- docs(plan): the plan that completes the mission by @tpouyer in #320
- fix(ledger): a checkout with only the remote-tracking ref reads the shared ledger, and history --pull merges it by @tpouyer in #321
- fix(pytest): a run that reports nothing decides nothing, and run_tests refuses option-shaped paths by @tpouyer in #322
- fix(ledger): the sweep absorbs every bundle, not one per run by @tpouyer in #324
- fix(registry): the endpoint refusal compares what the client will dial by @tpouyer in #325
- fix(improve): a harvested case names its provider, and the after arm is re-asked through the shipped factory by @tpouyer in #326
- fix(docs): the documented body path resolves, doctor sees a bound body that cannot, and skills and contexts are documented by @tpouyer in #327
- fix(init): scaffolds decline where detection declined, derive the image, and stop lagging our own workflows by @tpouyer in #328
- fix(sandbox): model-staged tests run in a container or the run refuses by name by @tpouyer in #329
- fix(gitlab): four verbs on GitLab, parity in both directions, and no logic in any lifecycle workflow by @tpouyer in #330
- chore(dogfood): the Test container carries git, or no fix here can go green by @tpouyer in #331
- fix(dogfood): what this repository's first /fix on itself found by @tpouyer in #333
- fix(sandbox): a staged test's killed children are reaped, and the container sees the suite's tools by @tpouyer in #334
- fix(tests): the lifecycle module's ruff check resolves ruff the way selfcheck does by @tpouyer in #335
- fix(sandbox): the container runs as the host user, so the tree it is handed is writable by @tpouyer in #336
- fix(sandbox): the host uid inside the container has a name by @tpouyer in #338
- feat(ai): a session that makes no progress stops, instead of running to whichever ceiling comes first by @tpouyer in #339
- fix(ai): the idle ceiling is doubled before the first write, so reading is not cut off by @tpouyer in #340
- feat(ai): edit_file replaces one passage of a file and stages the result by @tpouyer in #341
- fix(fix): red is a claim about the tests alone, and a session reads what it staged by @tpouyer in #342
- fix(ledger): a reconcile or absorb refuses a run-id collision with different content instead of replacing the record by @github-actions[bot] in #343
- fix(propose): a fix's cover note reaches its pull request, and the title is the ticket's by @tpouyer in #344
- feat(review): each lens of the required check posts its own sticky comment on the pull request by @tpouyer in #345
- chore(dogfood): the loop has closed here, and a gate keeps it closed by @tpouyer in #346
- fix(review): the review-on-request job hands gh its token, and a gh that could not ask is not "not a pull request" by @tpouyer in #347
- feat(core): JoinResult and in-run fan-out, machine branches only by @tpouyer in #348
- chore(dogfood): the chat-ops review clause closed, and every bundle is uploaded under the name the sweep lists by @tpouyer in #349
- feat(ledger): GitLedger(shared=True) provides compare-and-set over the remote ref by @tpouyer in #350
- feat(core): ctx.park, ctx.human and the barrier tick by @tpouyer in #351
- feat(dogfood): the required review check is one fan-out over every bound lens, and improve parks on its own draft by @tpouyer in #352
- fix(ledger): the fixture refusal asks the remote what the branch already holds by @tpouyer in #353
- feat(dogfood): the required check runs review/all-lenses by @tpouyer in #354
- feat(evaluation): a rubric is parsed, and a verdict handed in settles it by @tpouyer in #355
- feat(judge): a routed, priced, recorded judge call by @tpouyer in #356
- feat(improve): the measuring arms judge their rubrics by @tpouyer in #357
- fix(judge): a judge nobody could reach decided nothing by @tpouyer in #358
- chore(evidence): the judge is routed at Haiku, and the promoted case carries its first verdict by @tpouyer in #359
- feat(detect): read the seven manifests GATE-TOOLING-3 names, deriving only what each toolchain guarantees by @tpouyer in #360
- feat(ledger): report --around compares the runs after a merged proposal with the runs before by @tpouyer in #361
- fix(ledger): a fan-out's lens steps carry their own subject and bill by @tpouyer in #362
- docs(objectives): O13 carries the mission's disciplined clause by @tpouyer in #363
- docs(ledger): the ratchet discharges on a collected test's name, and every row says what its test proves by @tpouyer in #364
- docs: every page says what main does now by @tpouyer in #367
- docs(gates): three rows stop pointing at a roadmap that exists in no file by @tpouyer in #368
- feat(report): the runs that carry a workflow id get a row each under "by workflow" by @tpouyer in #369
- feat(ai): a model can delegate one task to a nested session over a subset of its tools by @tpouyer in #370
- fix(adapters): a Test bound at a package directory runs there inside a materialised worktree by @tpouyer in #372
- chore(release): 0.3.1 by @tpouyer in #374
New Contributors
- @github-actions[bot] made their first contribution in #343
Full Changelog: v0.3.0...v0.3.1