Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,17 @@ All notable changes to FAVA Trails are documented here.

## Unreleased

## [0.9.2] — 2026-10-25

Published on [GitHub](https://github.com/MachineWisdomAI/fava-trails/releases/tag/v0.9.2)
and [PyPI](https://pypi.org/project/fava-trails/0.9.2/) from tag commit
`5b7256f6ba9a16a25b893011a38321f338b8898a`. The gated release workflow built the
candidate once, ran the packaged checks on that exact wheel and sdist, and
matched the published PyPI hashes to the candidate before the GitHub release
was made public. This section lists the changes made on main since 0.8.0,
including the development candidates 0.9.0rc1 through 0.9.2rc1, which were
never published. See [runtime and upgrade guidance](docs/runtime-and-upgrade.md).

### Added
- Release-candidate publication route (#144): the existing `Release` workflow now accepts PEP 440 `vMAJOR.MINOR.PATCHrcN` tags alongside stable tags. The tag must equal the package version; RC GitHub Releases are marked prerelease and never `latest`. The updater enters the rc channel from a stable baseline only via a `Release-Channel: rc` PR-body line (0.8.3 -> 0.8.4rc1) and keeps suffix-only promotion.
- Local review for new installations (tracking issue fava-trails.org#33): `fava-trails bootstrap` now writes `trust_gate: llm-oneshot` and accepts `--review-endpoint`, `--review-model` and `--review-key-env`. With all three it writes the complete local OpenAI-compatible selection to the data repository's `config.yaml`; with any missing it writes only the policy and prints what to supply, and promotion fails closed with guidance. Endpoints with credentials, a query, a fragment or extra path segments are refused. Bootstrap never writes the per-machine config, never contacts the endpoint, and reports the effective selection and any per-machine override, exiting non-zero if the effective destination differs from the one requested. Existing configurations resolve exactly as before.
Expand Down
2 changes: 1 addition & 1 deletion blueprints/features/local_review_default.blueprint.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ date_added: 2026-10-24
- Design: approved at `fava-trails@dc7085a`, the revision the delivery coordinator reviewed and accepted under the operator's autonomous-delivery authority of 2026-10-24 ([recorded decision](https://github.com/MachineWisdomAI/fava-trails.org/issues/32#issuecomment-6388458186)). No human approval gate remains.
- Implementation: Implemented in fava-trails PR #153 (version 0.9.0-rc.1) in `models.py`, `cli.py`, `trust_gate.py`, `tools/navigation.py` and `server.py`. The pre-change behavior in the table below was observed at `fava-trails@0f7c01f`. Deviations from the proposal: none in behavior. Two details the proposal left open are fixed here: `--review-model` also refuses FAVA's two Decisions model ids, and the informational line is carried as `trust_gate_policy_note` on a failed `propose_truth` response.
- Evidence: fixture tests only, in `tests/test_local_review_default.py` (bootstrap options, endpoint refusals, machine-config overrides and exit status, each configuration row, promotion errors, explanation pass-through, Jev probability and threshold, down/401/malformed reviewers with no hosted fallback, timeout pass-through, doctor output), plus the three updated fixtures. The full suite passed on the PR head. Those fixtures do not show that any model gives useful rejection feedback. One separate run of the 0.9.0rc1 candidate against a real local model (two rejections with feedback, then approval and a superseding correction) is recorded in [the local review walkthrough](../../docs/local-review-walkthrough.md); it is one observation, not a benchmark.
- Release: a source merge only. Nothing is published to PyPI and no deployed MCP instance or stored record changed. Public documentation describes the local default as a source feature, names a published release only after that release is verified to contain it, and must not describe it as installed until then.
- Release: published as stable `v0.9.2` on 2026-10-25 from tag commit `5b7256f6ba9a16a25b893011a38321f338b8898a` ([GitHub release](https://github.com/MachineWisdomAI/fava-trails/releases/tag/v0.9.2), [PyPI](https://pypi.org/project/fava-trails/0.9.2/)). The release workflow built the candidate once, ran the packaged gates on the exact wheel and sdist, and matched the PyPI bytes to that candidate. No deployed MCP instance, client registration or stored record was changed by the release. Installed copies keep whatever version they already run until their operator upgrades, so a reader still confirms what loaded with `fava-trails version`.

## Problem and current behavior

Expand Down
4 changes: 2 additions & 2 deletions docs/documentation-ownership.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ Each fact has one authoritative source. Other documents summarize it and link to
| Operating rules: visibility modes, identity setup, replacement, interrupted-write guarantees and recovery | [governed-recall.md](governed-recall.md) | README fit-and-limits section, website, agent summaries |
| Why the lifecycle works as it does: flow, publication, failure behavior | [Review-and-recall lifecycle](../blueprints/features/review_and_recall_lifecycle.blueprint.md) | Website lifecycle pages, case study |
| The review gate's contract and the reasons behind it | [Review gate](../blueprints/modules/review_gate.blueprint.md) | Setup guide, README Choose a reviewer section |
| Which reviewer new installations use, and how existing configuration is preserved | [Local review default](../blueprints/features/local_review_default.blueprint.md) | Setup guide and README Choose a reviewer section. Describe it as a source feature, and name a published release only after that release is verified to contain it. Do not describe it as installed, and do not assume a default `pip install` includes it: the reader checks `fava-trails version`. |
| A recorded end-to-end walkthrough: local reviewer setup through rejection, revision, approval, recall and correction | [local-review-walkthrough.md](local-review-walkthrough.md) | README entry link, website operator guide. The candidate-evidence note records a locally built, unpublished candidate and stays as dated history. When a verified release contains these features, add a pointer to it; do not rewrite the note into a release claim or a model benchmark. |
| Which reviewer new installations use, and how existing configuration is preserved | [Local review default](../blueprints/features/local_review_default.blueprint.md) | Setup guide and README Choose a reviewer section. The first published release that contains it is the verified stable [v0.9.2](https://github.com/MachineWisdomAI/fava-trails/releases/tag/v0.9.2). Do not describe it as installed on an existing machine, and do not assume an older `pip install` includes it: the reader checks `fava-trails version`. |
| A recorded end-to-end walkthrough: local reviewer setup through rejection, revision, approval, recall and correction | [local-review-walkthrough.md](local-review-walkthrough.md) | README entry link, website operator guide. The candidate-evidence note records a locally built 0.9.0rc1 candidate that was never published, and stays as dated history. The verified stable [v0.9.2](https://github.com/MachineWisdomAI/fava-trails/releases/tag/v0.9.2) contains these features; it is a pointer, and the recorded run does not show that the published package behaves the same. Do not rewrite the note into a release claim or a model benchmark. |
| Runtime identity and upgrades | [runtime-and-upgrade.md](runtime-and-upgrade.md) | README upgrade notes |
| Maintainer release procedure: tag shape, Release workflow, vendor update | [CONTRIBUTING.md](../CONTRIBUTING.md) for the steps; `scripts/release-tag.py` and `.github/workflows/release.yml` for the rules they enforce | Release-candidate section of [runtime-and-upgrade.md](runtime-and-upgrade.md), [blueprint-maintenance.md](blueprint-maintenance.md) |
| When and how a version changes | [version-policy.md](version-policy.md) | CONTRIBUTING.md "Working in this repository" and "Release to PyPI" |
Expand Down
Loading