diff --git a/CHANGELOG.md b/CHANGELOG.md
index 509d8b2da9..9302e15021 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,20 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
## [Unreleased]
+## [0.43.1] - 2026-05-03
+
+### Fixed
+- fix(link-daintree): fan-out fallback logic no longer silently drops presets when no vanilla provider has a matching `provider` field — the family gate is now correctly bypassed when the inferred family doesn't match any vanilla slot, falling back to all candidates sorted by daintree_preset_id then numeric suffix
+
+## [0.43.0] - 2026-05-02
+
+### Changed
+- refactor(install): manifest-driven CLI detection — `providers.json` now shipped empty and populated at install time from `~/.claude.json` MCP servers and PATH auto-detection
+
+### Fixed
+- fix(formal): resolve merge conflict markers in `.planning/formal/` JSON files that caused `extract-annotations.cjs` to fail with JSON parse errors
+- fix(formal): give `max_retries` a safe default value in `oauth-rotation.pm` — PRISM requires all constants to be defined
+
## [0.43.0-rc.1] - 2026-04-23 — next prerelease
### Changed
diff --git a/commands/nf/link-daintree.md b/commands/nf/link-daintree.md
index 92cb7b29d4..5702100b2d 100644
--- a/commands/nf/link-daintree.md
+++ b/commands/nf/link-daintree.md
@@ -482,7 +482,7 @@ function inferFamily(envObj) {
function findVanilla(agentName, family) {
const candidates = providersData.providers.filter(p => p.mainTool === agentName);
const familyMatch = family ? candidates.filter(p => p.provider === family) : candidates;
- const pool = familyMatch.length ? familyMatch : (family ? [] : candidates);
+ const pool = familyMatch.length ? familyMatch : candidates;
// Prefer provider without daintree_preset_id, then lowest numeric suffix
pool.sort((a, b) => {
const aIsClone = !!a.daintree_preset_id;
diff --git a/docs/assets/terminal.svg b/docs/assets/terminal.svg
index 2f61a2433b..b7913a8504 100644
--- a/docs/assets/terminal.svg
+++ b/docs/assets/terminal.svg
@@ -80,7 +80,7 @@
- nForma — Consensus before code. Proof before production. v0.43.0-rc.1
+ nForma — Consensus before code. Proof before production. v0.43.0
Built on GSD-CC by TÂCHES.
The task of leadership is to create an alignment of strengths
so strong that it makes the system’s weaknesses irrelevant.
diff --git a/package-lock.json b/package-lock.json
index d4f2a0a748..cbbfd7df17 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@nforma.ai/nforma",
- "version": "0.43.0-rc.1",
+ "version": "0.43.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@nforma.ai/nforma",
- "version": "0.43.0-rc.1",
+ "version": "0.43.0",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
diff --git a/package.json b/package.json
index d5d1b8da1a..cd103c7f23 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@nforma.ai/nforma",
- "version": "0.43.0-rc.1",
+ "version": "0.43.0",
"description": "nForma — Multi-agent coding orchestrator with quorum consensus and formal verification (TLA+, Alloy, PRISM). Consensus before code, proof before production.",
"bin": {
"nforma": "bin/nforma-cli.js",