Skip to content

ostler: v2.0.0

Choose a tag to compare

@github-actions github-actions released this 11 Sep 20:48
· 0 commits to 589dfc38841eac36a651e01b330da180c9b7df42 since this release

2.0.0 (2026-09-11)

⚠ BREAKING CHANGES

  • core: bump stablemate config schema to v2
  • ostler: ostler.waivers, Okf.add_doctor_waiver, the waived field on doctor findings and the waivers epoch input are gone; a docs/doctor-waivers.json file is no longer read. Coverage waivers (coverage --waivers) are a different concern and stay.

Features

  • core: let a power tier scale every wall-clock budget (50b5081)
  • core: persist a nested config table, and groom's attend settings (3c51cca)
  • ostler: add known-defect, a code-fault record with two exits (8654c88)
  • ostler: add story-for-node query over code-ref trailers (9f89954)
  • ostler: admit mixed candidate status for internal-and-relevant (b3e6d18)
  • ostler: advance one file's watermark without rewriting the catalog (9ceae73)
  • ostler: ask one question about what a book owes its code (8c9d53b)
  • ostler: audit tier-1 candidates by default (6ed3e36)
  • ostler: autofix a null equals into an absent check (d97e6aa)
  • ostler: autofix drifted verify: test citations into tests: (51b83cd)
  • ostler: carry a story-conflict finding for the operator gate (cb894a6)
  • ostler: classify seed visual design (b582ed2)
  • ostler: classify story acceptance criteria (1496a39)
  • ostler: compile repeated families into qa obligations and plans (111a749)
  • ostler: concept judgment keys — rule:, prefers:, deprecates: (bba5372)
  • ostler: declare detail: on every implementation-bearing node type (c09a13d)
  • ostler: delete the doctor waiver register (7f427d6)
  • ostler: derive candidate links instead of echoing them in verdicts (188c7cd)
  • ostler: derive owning keys from the registry (1f402e1)
  • ostler: doctor checks for the judgment gap (b965a1b)
  • ostler: exempt field nodes from undeclared-obligation (df451fc)
  • ostler: extract PHP behavior candidates (1174c85)
  • ostler: extract TypeScript and TSX behavior candidates (fb73043)
  • ostler: give every declaration a content watermark (9368d3c)
  • ostler: identify stories in QA context packets (ec654da)
  • ostler: judgment and unspecified reach the qa context packet (ed75eee)
  • ostler: key spec dirs and story identity by the minted id (14664ea)
  • ostler: let a config: bullet own a declared configuration file (d87ad6f)
  • ostler: let a surface declare itself not exercised (a7af68a)
  • ostler: map diffs across source repositories (dea798f)
  • ostler: memoize behavior verdicts in the index (d762fb3)
  • ostler: migrate legacy stories on demand (c46c914)
  • ostler: name the port holder when a stack bring-up fails (cd0b008)
  • ostler: parse the one-per repeat grammar for generated elements (3a08fbb)
  • ostler: place each step in the recording and pull its frames (2742846)
  • ostler: prepare two-way behavior audit packets (efcdcbe)
  • ostler: query story and OKF provenance (43e3d6e)
  • ostler: read the qa stack from the book's ops nodes (ff0a324)
  • ostler: record owned stack processes and reap them across runs (c9da94d)
  • ostler: report duplicate-bullet instead of a locator collision (6dd7acc)
  • ostler: report uncited exported files without building a packet (ed273e0)
  • ostler: resolve stories by external key (51da445)
  • ostler: salvage the verdicts a short reply did answer (ed807b1)
  • ostler: seed reachability from the surface's root screen (4cdcb34)
  • ostler: template-outside-repeat doctor check (f6bff33)
  • ostler: trim audit packets to their scope and claim window (4a2abd3)
  • ostler: trim rows, import-graph walk, repo declaration (7a99e80)
  • ostler: unspecified bullet class with grounded citation (7b1a64f)
  • ostler: verify source context freshness (e6cf1d8)
  • ostler: warn unminted-claim on a claim no obligation carries (ce6bc00)
  • ostler: watermark the whole book, not only its cross-repo refs (77b8049)

Bug Fixes

  • ostler: adopted stacks must still pass seed and health gates (1f444c7)
  • ostler: bound extract recursion and read text off the source (190495e)
  • ostler: brief step failures with the exit code and stdout tail (fb58684)
  • ostler: competing-implementations needs a shared symbol (592b33b)
  • ostler: competing-implementations skips parts of one declared whole (dafc9e5)
  • ostler: exempt a verb alternation from unstated-precondition (a42ea79)
  • ostler: film a viewport recording at the viewport (0a70a5c)
  • ostler: film the app under test, not the operator's desktop (77852d1)
  • ostler: give every finding a ref that names one thing (35fd203)
  • ostler: ground Go struct fields and interface methods (2f65f25)
  • ostler: guard the member-name walk against an empty field path (3b313b3)
  • ostler: hold only stack runbooks to the stack shape (5e75d5d)
  • ostler: ignore state-dependent lifecycle alternatives (d53cef7)
  • ostler: judge a story by its sections, not by a shape stamp (17619ea)
  • ostler: keep audit packets under budget for long go functions (1bea8d9)
  • ostler: let a whole and its own parts cite one symbol (cc6ef89)
  • ostler: make the backlog and roadmaps configured doc roots (21a4d10)
  • ostler: mint a node id from the anchor GitHub renders (8e49593)
  • ostler: name the claim in an unstated-precondition finding (3f6d141)
  • ostler: pin tree-sitter below 0.26 to stop the audit segfault (bd8d0fd)
  • ostler: read failure names out of code spans, not raw prose (021d119)
  • ostler: read the semicolon signal off prose, not code spans (973c696)
  • ostler: read the semicolon signal outside parentheticals (949669b)
  • ostler: refuse a named-key subscript anywhere in a QA plan (b7298cf)
  • ostler: reject an excerpt whose bounds overrun its own text (29804f2)
  • ostler: report the missing Xvfb once, not twice (6e9f994)
  • ostler: retire pre-fix symbol tables from the index (0e8321e)
  • ostler: scope extract_book's read, not just its result (8bac76d)
  • ostler: skip claims under duplicate node ids in the audit (eb569d1)
  • ostler: stop probing "/" when a runbook declares no entry url (86b1eda)
  • ostler: stop scoring an aborted scenario as a caught defect (7058cc0)
  • ostler: stop the last section advertising a line it does not carry (f7c6d1e)
  • ostler: stop two detectors reporting findings no edit can clear (d3f8505)
  • ostler: stop unstated-precondition firing where no edit clears it (2aafe95)
  • ostler: teach the relation-subject slug shape at every surface (a2d3511)
  • ostler: warn about a missing stack only where something is served (5ccdb75)
  • paddock: skip .git when copying test fixtures (379271f)
  • repoint the guards and this repo's install at the regrouped library (4fc4e9e)
  • workhorse: keep a handoff's START in its flow, colour END apart (eb00514)

Performance Improvements

  • parallelize Python test suites (ee2f9f2)

Code Refactoring

  • base-library: drop the group stutter from skill sources (4681c89)
  • core: bump stablemate config schema to v2 (586d593)
  • core: move the clock port into shared plumbing (fa5a4f5)
  • ostler: answer the findings basedpyright reports (923de54)
  • ostler: expose the served-surface predicate (4820be9)
  • ostler: inject daemon lifecycle timing (e98cd61)
  • ostler: move "what changed since" next to the catalog (0defc23)
  • ostler: own the durable QA stack, hard-cut workhorse.stack (6191e5d)
  • workflows: give each okf_builder flow its own prompts (232d552)