Skip to content

Releases

v0.20.0

Choose a tag to compare

@Smana Smana released this 04 Nov 20:20
8443a11

0.20.0 (2026-11-04)

Features

  • curate: a threat check on an entry's text withholds ready-to-merge (#609) (a55e781)
  • factory: factory.ca_file trusts a private CA; refresh exit code and queue cap (#611) (dfa08c9)

v0.19.1

Choose a tag to compare

@Smana Smana released this 04 Nov 15:52
46403ee

0.19.1 (2026-11-04)

Bug Fixes

  • factory: a drafted entry with an open PR and no fix files nothing on a repeat (#607) (4c77f25)

v0.19.0

Choose a tag to compare

@Smana Smana released this 04 Nov 12:23
f466d31

0.19.0 (2026-11-04)

Features

  • curate: ready-to-merge from verified evidence, rebuilt entry PRs and the Knowledge queue (#606) (263678c)
  • factory: an incident's entry is drafted once its fix is verified, and the verdict earns it trust (#605) (053a374)
  • kb: knowledge over HTTP, the entry's origin and resolution, lore kb resolve (#604) (0642d9d)

Bug Fixes

  • factory: log at Info the merge seen, the soak scheduled, the verdict posted, and an event that matches no incident (#601) (b730f1c)

v0.18.0

Choose a tag to compare

@Smana Smana released this 28 Oct 16:58
33445c7

0.18.0 (2026-10-28)

Features

  • investigate: a false positive caused by a rule or config defect in Git is action_suggested, not no_action (#599) (37af80c)

v0.17.0

Choose a tag to compare

@Smana Smana released this 28 Oct 06:36
745f848

0.17.0 (2026-10-28)

Features

  • eval: add a held-out case the prompt is not tuned against (#579) (d1c9158)
  • factory: RunLore as a client of the agent factory: findings to POST /v1/tasks, signed webhooks into the incident thread (#596) (4ec0a2f)
  • factory: RunLore verifies the factory's fix after a soak (#598) (53b6ffb)
  • providers: a decision model behind the recall reranker and curation dedup (#581) (c65a7ba)
  • serve: name the investigation tools the loop runs without, once at startup (#583) (540a8a8), closes #467

Bug Fixes

  • curator: meter and guard the dedup decider, cap the decider client's body read, fix the backend docs (#588) (f340b4e), closes #581
  • curator: show the dedup decider both resources, so it can answer the question it is asked (#586) (389b1bd), closes #581
  • eval: stop the held-out case from handing the model its own answer (#585) (69f79c1), closes #579
  • investigate: name the resource in a root cause, and report what a miss claimed (#578) (1912865)
  • recall: overlap the shadow arm, split the confidence histogram by choice (#587) (23c1ce4), closes #581

Documentation

  • specs: resolve the decision model's retention question, and state the cost (#580) (9704876)

v0.16.2

Choose a tag to compare

@Smana Smana released this 22 Sep 05:49
7f2da96

0.16.2 (2026-09-22)

Bug Fixes

  • providers: key and match StatefulSet replicas as one workload (#577) (119f0f7), closes #513

Documentation

  • agents: fix the dead design-doc link, refresh the layout map, guard AGENTS.md (#572) (2479df0)
  • changelog: state the raised token default the migration note announces (#576) (7c25bec)
  • website: add the cloud source to the homepage flow diagram (#573) (b1563e0)

v0.16.1

Choose a tag to compare

@Smana Smana released this 28 Aug 18:37
a39a0e5

0.16.1 (2026-08-28)

Bug Fixes

  • chart: grant list on resourceSpecRules, or list_resources ships denied (#566) (23ac825)

v0.16.0

Choose a tag to compare

@Smana Smana released this 28 Aug 11:47
c54eb88

0.16.0 (2026-08-27)

⚠ BREAKING CHANGES

  • notify: notify.silence.windows may now list more than 5 entries when notify.slack.silence_button is off. Nothing that validated before stops validating — the bound is only relaxed, so no working deployment breaks on upgrade. What to watch for: a Matrix-only deployment that adopts a longer preset list will fail validation at startup if notify.slack.silence_button is later enabled. The error names notify.silence.windows and the flag; trim the list to between 2 and 5 entries, or leave the flag off.

Features

  • gcp: add the GCP cloud provider — Cloud Audit Logs and GKE/MIG/Compute health (#561) (e0c75f2)
  • investigate: let cloud_what_changed ask for the failed calls only (#551) (1f5ece9)
  • notify: silence an investigation from Slack or Matrix (#556) (e3a3ec0)

Bug Fixes

  • gcp: allow the GKE metadata server by address, and warn when cloud config is inert (#563) (96688ac), closes #562
  • investigate: make a submitted finding account for its own verdict (#550) (741acae)
  • notify: make the Slack silence control legible, public, and durable (b68a503)
  • notify: stop cutting "what changed" mid-word (#552) (621fe65)
  • providers: collapse a CronJob run suffix to its controller family (#549) (bb6a188)

Documentation

  • silence: correct stale references and document prune's clock assumption (#557) (6d6b7b8)

Code Refactoring

  • httpx: one bounded drain idiom for every response body (cfedfd4)

v0.15.0

Choose a tag to compare

@Smana Smana released this 20 Aug 13:36
285bb20

0.15.0 (2026-08-20)

⚠ BREAKING CHANGES

  • gitops: a GitHub Enterprise install whose forge.github_api_url is an "api." subdomain (subdomain isolation) must now set forge.git_host to the host serving its git remotes. serve refuses to start until it does, rather than guessing and silently withholding the credential from every GitOps repository. Every other configuration — github.com, GHE at HOSTNAME/api/v3, GitLab — is untouched and needs no new key.
  • eval: investigation.max_tokens_per_investigation is now a CUMULATIVE ceiling over one investigation's model tokens (loop + verify, provider-reported), not a check on the next request's estimated size. The default is unchanged at 100000, so the same number binds far earlier than it used to: a tool-heavy investigation that resends a growing history every step can now stop after a handful of turns where it previously ran to max_steps. Runs that hit it report result="budget_exceeded" and deliver an unresolved stub naming the ceiling.
  • investigate: investigation.max_tokens_per_investigation is now a CUMULATIVE ceiling over one investigation's model tokens (loop + verify, provider-reported), not a check on the next request's estimated size. The default is unchanged at 100000, so the same number binds far earlier than it used to: a tool-heavy investigation that resends a growing history every step can now stop after a handful of turns where it previously ran to max_steps. Runs that hit it report result="budget_exceeded" and deliver an unresolved stub naming the ceiling.

Features

  • investigate: add list_resources so the model stops guessing object names (#544) (f8f01ea)
  • investigate: cap what one investigation may spend, in tokens and in dollars (#486) (8d26929)
  • investigate: read an object's spec, so config faults stop being inferred (#509) (967d462)
  • investigate: read the firing alert's own rule expression (#534) (a21b12c)
  • observability: panel the shutdown loss counter, and alert on two silent degradations (#542) (ee7e141)
  • providers: carry namespaced-ness from discovery, not a kind list (#540) (90a2ccc)
  • thread: answer questions in an investigation thread, with a cheap model (#484) (b65c2d9)
  • thread: route a knowledge-base announcement into the thread it came from (#502) (6496fa2)
  • thread: show what landed in the KB, and announce it to every sink (#485) (6e50f57)
  • thread: write knowledge back to the KB from a Matrix thread (#483) (6819083)
  • thread: write knowledge back to the KB from a Slack thread (#482) (98bda12)

Bug Fixes

  • chart: make the ClusterRole honest about what it grants (#521) (306d18c)
  • ci: pin the screenshot guard to the rendered card, not slack.go's history (#489) (54cf87d)
  • curate: group a recurrence by resource identity, not by its spelling (#539) (d50704a)
  • curator: stop drafting a resource recall can never match (#533) (484e4c3)
  • eval: account a failed call that was billed, and price verify at the model it calls (#525) (c5c516c)
  • eval: bound lore eval, and report what the CLI's model calls spend (#487) (0ef4507)
  • five correctness findings from the review programme (#517) (87682a7)
  • forge: ASCII-refuse the DERIVED forge git host, on both providers (#523) (bfe860e)
  • gitlab: give the note-append the guards its own doc claimed (#520) (92cb9ff)
  • gitops: confine the forge credential to the forge's own git host (#515) (3fa30db)
  • investigate: canonicalise the resource the MODEL names, not only the alert's (#538) (7609037)
  • investigate: charge failed calls and recall embeddings to the run's ceiling (#516) (658adb7)
  • investigate: close three escapes past the egress redaction chokepoint (#522) (ffa9aac)
  • investigate: match a cloud resource by identity, not by spelling (#535) (4dc27ce)
  • investigate: stop the GitOps tools reporting a scope limit as an absent object (#508) (eb33fb5)
  • investigate: stop what_changed reporting a scope limit as an absent change (#543) (0ed7806)
  • notify: bound the Matrix thread stamp, and the whole event with it (#526) (26e46e4)
  • notify: bound the progress ping and the delivered Matrix card (#514) (013fd34)
  • notify: don't render the alert's namespace as the resource's own (#536) (9938c50)
  • notify: make an inconclusive card explain itself (#530) (4b0cc1b)
  • notify: regenerate the card golden for the combination that broke main (#537) (b87ca8f)
  • notify: stop the delivery payload naming a namespace the resource is not in (#541) (813f3c0)
  • notify: tell the human when a knowledge write failed (#510) (9131d29)
  • server: stop a typed-nil thread handler from faking a live /slack/events (#500) (0dfb612)
  • telemetry: bucket the BM25 score histograms for a real corpus (#481) (d1cbc0b)
  • thread: close seven gaps between what a thread reports and what happened (#528) (fffb1a7)
  • thread: derive a note entry's identity from the note, not the finding (#499) ([8e74ea4](https://...
Read more

v0.14.0

Choose a tag to compare

@Smana Smana released this 14 Aug 14:46
23dabf8

0.14.0 (2026-08-14)

Features

  • chart: enable the knowledge commons in the standard profile (#464) (02b9fb3)

Bug Fixes

  • ci: check cross-page anchors, and fix three that were already broken (#468) (de26d0c)
  • curator: log the dedup score on every decision, not only when it fires (#480) (3977055)
  • eval: stop the nightly eval dying silently at its own timeout (#477) (cba3a9e)
  • recall: ground the adversarial review of a recalled finding (#476) (04f36dd)
  • recall: stop instant recall self-destructing after a single use (#475) (0280367)
  • recurrence: anchor suppression on a standing conclusive prior (#472) (19dc724), closes #471
  • website: enlarge the homepage screenshots in place instead of opening a new tab (#456) (d251ed4)

Documentation

  • add a worked Grafana MCP recipe (#463) (3916650)
  • ask for feedback where the demo ends (#461) (fd92e52)
  • chart: make the minimal profile's gitops engine and evidence gaps explicit (#470) (d25894b)
  • chart: say why instant recall is off in the standard profile (#466) (037b383)
  • chart: state the commons failure mode and correct two details (#465) (50cd4f9)
  • lead with the recall cost delta and the zero-setup trial (#460) (ae22452)
  • publish a roadmap and name the bus factor (#462) (dae9ca2)
  • security: make the security section index answer the question it exists for (#469) (3b57565)