Skip to content

Commit 52c4597

Browse files
author
Stephen Hope
committed
chore: bump to v1.7.3 — Cedar routing fix, RFC 0004, prompt terminology fix
Version bump, CHANGELOG entry, and RELEASE_NOTES_1.7.3.md covering the Cedar routing fix (all 5 policies reachable, qwen-flash swap), RFC 0004, the constitutional prompt γ/drift conflation fix, the PyPI author metadata fix, and the dev-onboarding deck PDF-to-HTML replacement. Also adds a version line to the top of README.md (version + links to release notes and changelog) — previously the README had no version indicator at all. Archived RELEASE_NOTES_1.7.2.md alongside the other historical release notes.
1 parent 8226fe1 commit 52c4597

5 files changed

Lines changed: 205 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,41 @@ Versioning follows [Semantic Versioning](https://semver.org/).
77

88
---
99

10+
## [1.7.3] — 2026-07-06
11+
12+
### Fixed
13+
14+
- **Cedar routing: all 5 policies now reachable (previously 2 of 5).**
15+
`action_type` (Cedar's adversarial/structured-output trigger) was being
16+
fed from `req.action`, a field with a completely different vocabulary —
17+
the two never overlapped, so the adversarial-pool policy was dead code
18+
reachable only in unit tests. Added a genuine, separate `action_type`
19+
field to `RoutedChatRequest`/`SessionStartRequest`. `cedar_route()` also
20+
now drops `None`-valued context fields before evaluation. All 5 policies
21+
verified live against the running qwen-intl deployment.
22+
- **Sovereign pool model swap.** `qwen-long` doesn't exist on the
23+
DashScope International account; `qwen-mt-plus` rejects `system`-role
24+
messages (incompatible with Helix's adapter). Replaced with
25+
`qwen-flash`, verified with a live system+user message pair.
26+
- **Constitutional prompt: γ/drift conflation removed from the prompt
27+
content itself**, not just docs/dashboard (which 1.7.1 already fixed).
28+
Rules 4.5 and 7 in `prompt.py` still used γ and "drift" in contexts
29+
that are actually about marker coverage. Wording only, no behavior
30+
change.
31+
- **PyPI author metadata.** Split `authors`/`maintainers` in
32+
`pyproject.toml` so PyPI displays Author correctly (was blank due to a
33+
PEP 621 name+email collapse into `Author-email` only).
34+
35+
### Added
36+
37+
- **RFC 0004: Cedar Model Routing** — documents Foundry's model-routing
38+
Cedar policy layer as a system distinct from RFC 0003's action-gating
39+
Cedar Gate.
40+
- **Dev onboarding deck replaced (PDF → HTML)** — the PDF had a
41+
fabricated "Drift Telemetry" taxonomy and a missing `[CONCLUSION]`
42+
marker; the HTML version fixes both plus one more gap found in review
43+
(an incomplete Four Invariants slide).
44+
1045
## [1.7.2] — 2026-07-05
1146

1247
### Added

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
# helix-adapter
44

5+
**Version 1.7.3** · [Release Notes](RELEASE_NOTES_1.7.3.md) · [Changelog](CHANGELOG.md)
6+
57
**Portable constitutional wrapper for any AI model.**
68

79
Wraps any inference backend with Helix epistemic markers, tamper-evident receipts,

RELEASE_NOTES_1.7.3.md

Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
# helix-adapter v1.7.3 Release Notes
2+
3+
**Released:** 2026-07-06
4+
**Branch:** spider-dev → main
5+
**PyPI:** `pip install helix-adapter==1.7.3`
6+
7+
---
8+
9+
## Overview
10+
11+
v1.7.3 is a **Cedar routing and documentation-accuracy release**. The
12+
headline fix makes Foundry's Cedar model-routing policies actually
13+
reachable end-to-end — three of five were either dead code or pointed at
14+
a nonexistent model before this release. The rest of the release closes
15+
gaps found during a docs/terminology audit: the constitutional prompt
16+
itself still had the γ/drift conflation the 1.7.1 cleanup was supposed to
17+
remove, and the dev-onboarding deck had fabricated content that didn't
18+
match anything actually implemented.
19+
20+
No changes to `HelixAdapter`, `MerkleTree`, or the receipt schema.
21+
`HelixSession`'s behavior is unaffected except for the prompt wording fix
22+
below (which changes prompt *text*, not the adapter's logic).
23+
24+
---
25+
26+
## What's Fixed
27+
28+
### Cedar routing — all 5 policies now reachable (previously 2 of 5)
29+
30+
`RoutedChatRequest` and `SessionStartRequest` conflated two different
31+
context fields under one name: `action_type` (Cedar's adversarial/
32+
structured-output routing trigger — `bash`/`execute`/`api_call`/`shell`
33+
or `write_file`/`edit_file`/`apply_patch`/`summarize`) was being fed from
34+
`req.action`, which only ever holds a completely different vocabulary
35+
(`analyze`/`search`/`write_file`/`summarize`/...) used by the static
36+
routing fallback. Since the two vocabularies never overlapped, the
37+
adversarial-pool policy could never fire through the actual API — it
38+
passed unit tests that built context dicts by hand, but was dead code in
39+
production.
40+
41+
Fixed by adding a genuine, separate, optional `action_type` field to both
42+
request models. `cedar_route()` also now drops `None`-valued context
43+
fields before evaluation, so an omitted `action_type` reads as genuinely
44+
absent to Cedar's `context has X` checks, rather than the literal string
45+
`"None"` (the evaluator's `str(v)` fallback for non-primitive types).
46+
47+
All 5 `routing.cedar` policies verified **live** against the running
48+
qwen-intl deployment — not just unit-tested — via temporary, immediately
49+
revoked debug API keys.
50+
51+
### Sovereign pool: qwen-long → qwen-flash
52+
53+
The `sovereign` pool (EU/multilingual locale routing) pointed at
54+
`qwen-long`, which doesn't exist on this DashScope International account
55+
(confirmed via the live model list — 148 models, no `qwen-long`). Tried
56+
`qwen-mt-plus` as a thematically better fit, but it's a translation-only
57+
endpoint that rejects `system`-role messages outright — incompatible
58+
with Helix's adapter, which always injects the constitutional prompt as
59+
a system message. Landed on `qwen-flash`, a general chat-completions
60+
model, verified with a real system+user message pair (not just a bare
61+
user message) before wiring it in.
62+
63+
### Constitutional prompt: γ/drift conflation removed from the prompt itself
64+
65+
The 1.7.1 terminology cleanup touched docs and the Foundry dashboard's
66+
display logic but never touched `prompt.py`'s actual content. Found via
67+
a website audit (the widget page renders the raw constitutional prompt):
68+
rules 4.5 and 7 still used γ and "drift" in contexts that are actually
69+
about marker coverage, not the constitutional convergence tolerance
70+
γ=0.17. This is the prompt every model reads on every turn, so the
71+
conflation was live in production, not just a docs inconsistency.
72+
73+
- "NO SELF-REPORTED DRIFT" / "γ-drift flags" → "NO SELF-REPORTED MARKER
74+
COVERAGE" / "marker-coverage flags"
75+
- "drift risk (γ)" → "marker-coverage risk"
76+
- "extra scrutiny on γ reporting is required" → "extra scrutiny on
77+
labeling discipline is required" (also resolves an internal
78+
contradiction — the model is told not to self-report coverage at all,
79+
so telling it to scrutinize its own "γ reporting" didn't make sense)
80+
81+
Wording only, no behavioral/logic change.
82+
83+
### PyPI author metadata
84+
85+
`pyproject.toml`'s `authors` entry combined name+email, which PEP 621
86+
collapses into a single `Author-email` field, leaving PyPI's displayed
87+
"Author" field blank. Split into `authors` (name only) and `maintainers`
88+
(name+email) so both fields populate. Verified via local sdist build.
89+
Takes effect on this release — PyPI's already-published 1.7.2 metadata
90+
is immutable and unaffected.
91+
92+
---
93+
94+
## What's New
95+
96+
### RFC 0004: Cedar Model Routing
97+
98+
Foundry's `routing.cedar` model-pool-selection policy layer had almost no
99+
dedicated documentation — a one-line mention in `foundry/README.md` and
100+
nothing distinguishing it from RFC 0003's action-authorization Cedar
101+
Gate, despite being an architecturally separate system (same policy
102+
engine, different question: which model handles this request, vs. is
103+
this action allowed to execute). RFC 0004 documents the schema, all 5
104+
routing policies, the `action`/`action_type` distinction, and the
105+
deliberate fail-open (routing) vs. fail-closed (Cedar Gate) difference.
106+
107+
### Dev onboarding deck: PDF → HTML
108+
109+
The PDF dev-onboarding deck had two content issues found on review: a
110+
fabricated "Drift Telemetry" taxonomy (four categories with invented
111+
automated actions — HALT/REMEDIATE/RESTATE/FLAG — that don't correspond
112+
to anything implemented, later expanded in a subsequent draft to seven
113+
categories using real commits as false corroborating evidence), and a
114+
marker table on one slide missing `[CONCLUSION]` while a different slide
115+
in the same deck had the correct five-marker table. The new HTML version
116+
fixes both: the fabricated telemetry section is gone, replaced with the
117+
actual implemented marker-coverage metric, and the marker table is
118+
complete everywhere. One additional gap found and fixed during review —
119+
the Four Invariants slide was only showing three of four tiles.
120+
121+
---
122+
123+
## Testing
124+
125+
Full suite: **141 passing**, zero regressions. Cedar routing fixes
126+
verified live (not just unit-tested) against the running qwen-intl
127+
deployment for all 5 policies plus the no-context static-default
128+
fallback. Prompt terminology fix verified via live redeploy — the widget
129+
page's rendered constitutional prompt confirmed to show the corrected
130+
text in production.
131+
132+
ruff + black clean on `src/ foundry/`.
133+
134+
---
135+
136+
## Breaking Changes
137+
138+
None. Fully backward compatible.
139+
140+
---
141+
142+
## Upgrade
143+
144+
```bash
145+
pip install --upgrade helix-adapter==1.7.3
146+
```
147+
148+
No configuration or environment changes required. If you deploy Foundry
149+
with a custom `routing.cedar`/`models.json`, double check any policy that
150+
relies on `action_type` — it now reads from a genuinely separate request
151+
field rather than mirroring `action`.
152+
153+
---
154+
155+
## What's Next
156+
157+
- Whether routing decisions should carry richer audit context (which
158+
specific policy matched, not just the resulting pool) into the
159+
receipt — raised in review, not yet implemented.
160+
- The `sovereign` pool's original brief (deep regulatory-text analysis,
161+
full-corpus Merkle auditing) implies a long-context model requirement
162+
that `qwen-flash` doesn't meet. Revisit pending budget/credit
163+
availability and confirmation of whether DashScope offers an actual
164+
long-context successor to `qwen-long`.
165+
- Website doc alignment is ongoing — repo and prompt content are now
166+
consistent; continue watching for any remaining stale terminology on
167+
the live site as it's found.

RELEASE_NOTES_1.7.2.md renamed to archive/release_notes/RELEASE_NOTES_1.7.2.md

File renamed without changes.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "helix-adapter"
7-
version = "1.7.2"
7+
version = "1.7.3"
88
description = "Portable constitutional adapter for any LLM. Forces epistemic markers, real-time drift detection, and tamper-evident receipts."
99
readme = "README.md"
1010
license = {text = "Apache-2.0"}

0 commit comments

Comments
 (0)