gsd-hermes v1.4.30 — Hermes Runtime Model Binding Receipts
gsd-hermes v1.4.30 — Hermes Runtime Model Binding Receipts
Release date: 2026-04-26
Package: gsd-hermes@1.4.30
Upstream GSD base: upstream/main@cd057255
Previous package: gsd-hermes@1.4.0
Tracker: #32
Summary
gsd-hermes@1.4.30 closes the gap between GSD resolver intent and Hermes child-agent runtime construction for per-agent model overrides. GSD now surfaces structured model binding receipts, validates unsupported explicit bindings before spawn, and documents the proof boundary between resolver/workflow metadata, Hermes child construction, safe provider diagnostics, and live provider wire-level enforcement.
This release intentionally remains conservative: it proves Hermes child AIAgent(model=...) construction for configured per-agent overrides, but it does not claim provider wire-level model=... enforcement unless a future sanitized provider request capture proves it.
Highlights
- Adds structured
model_binding_receiptsto plan-phase and execute-phase init payloads while keeping legacy flat*_modelfields for compatibility. - Establishes direct
delegate_task(model=...)and batchtasks[].modelas the Hermes child binding channels for GSD per-agent overrides. - Fails fast when an explicit Hermes model binding cannot be honored, naming the agent, configured model, runtime/channel, and suggested fix.
- Adds tests proving invalid explicit model tokens cannot silently fall back to parent/default model.
- Adds Hermes Agent tests proving GSD planner/executor model tokens reach child
AIAgent(model=...)construction. - Adds sanitized provider diagnostics helpers that redact API keys, tokens, passwords, authorization headers, client secrets, and credential-bearing URLs.
Proof boundary
| Evidence layer | Status in v1.4.30 | Notes |
|---|---|---|
| GSD resolver proof | Supported | model_overrides and profile/runtime paths serialize into structured receipts. |
| Workflow handoff proof | Supported | Init payloads display configured/resolved model and binding channel before dispatch. |
| Hermes child-construction proof | Supported by tests | delegate_task(model=...) and tasks[].model reach child AIAgent(model=...). |
| Safe provider diagnostics | Supported helper/test coverage | Only sanitized provider/model/proof metadata is retained. |
| Live provider wire-level proof | Not claimed | Requires future sanitized provider request instrumentation. |
runtime_enforced=unknown means provider wire-level proof has not been captured. It is not permission to silently fall back to the parent/default model.
User impact
Users who configure .planning/config.json with per-agent model_overrides on Hermes get clearer behavior:
- A supported explicit override is passed into the Hermes child construction channel and shown in receipts.
- An unsupported explicit override fails before spawn with actionable diagnostics.
- A child agent inheriting the parent/default model when an explicit override was configured is considered a bug.
Verification
Release validation should include:
npm run build:sdk
cd sdk && npx vitest run src/query/init.test.ts src/query/config-query.test.ts
cd ..
node --test tests/init.test.cjs tests/runtime-model-parity.test.cjs tests/workflow-size-budget.test.cjs tests/hermes-docs.test.cjs
npm run test:hermes
npm test
npm pack --dry-runHermes Agent companion validation:
cd /home/whiskey/.hermes/hermes-agent
.venv/bin/python -m pytest tests/tools/test_delegate.py tests/agent/test_auxiliary_codex_responses_conversion.py tests/agent/test_provider_diagnostics.py -q
.venv/bin/python -m py_compile tools/delegate_tool.py run_agent.py agent/provider_diagnostics.py agent/redact.py tests/tools/test_delegate.py tests/agent/test_provider_diagnostics.pyLinks
- Tracker issue: #32
- Upstream sync release notes: ./v1.4.0-upstream-sync-cd057255.md
- Hermes compatibility docs: ../hermes-compatibility.md