# gsd-hermes v1.9.0 — Hermes-first upstream sync

Target package: `gsd-hermes@1.9.0`

Upstream base: `gsd-build/get-shit-done@de25400b`

## Summary

v1.9.0 syncs `gsd-hermes` with the upstream GSD development line through `de25400b` while keeping the downstream Hermes-first contract intact.

The release repositions `gsd-hermes` clearly:

- it is a Hermes-first distribution of Get Shit Done;
- it preserves upstream GSD workflows and command semantics;
- it adds strict provider-routed execution for explicit `model_overrides`;
- it keeps local Hermes installs honest by using project-linked `./.gsd-hermes` + `skills.external_dirs` semantics.

## Key user-facing behavior

### Install

```bash
npx gsd-hermes@latest --hermes --global
npx gsd-hermes@latest --hermes --local
```

Local Hermes install remains project-linked mode:

```text
./.gsd-hermes/skills/...
~/.hermes/config.yaml -> skills.external_dirs
```

### Provider routing

```json
{
  "runtime": "hermes",
  "resolve_model_ids": "omit",
  "workflow": {
    "agent_execution_router": "provider-cli"
  },
  "model_overrides": {
    "gsd-executor": "openai/gpt-5.5",
    "gsd-verifier": "anthropic/claude-opus-4-7"
  }
}
```

Routing table:

| Model family | Driver |
| --- | --- |
| `openai/*`, `gpt-*` | `codex exec --model ...` |
| `anthropic/*`, `claude-*` | `claude -p --model ...` |
| unsupported | fail fast |

## Preserved downstream invariants

- Package identity remains `gsd-hermes`.
- CLI remains `npx gsd-hermes`.
- Hermes runtime remains first-class in installer, docs, tests, and release gates.
- `model_overrides` remains the source of per-agent model intent.
- `workflow.cross_ai_execution` remains a lower-priority legacy fallback and does not override valid provider-cli bindings.
- OpenAI/GPT model overrides must not silently execute through Claude CLI.
- Anthropic/Claude model overrides must not silently execute through Codex CLI.
- Trusted Publishing remains the preferred npm publish path.

## Verification checklist

- `node --test tests/hermes-install.test.cjs tests/hermes-lifecycle.test.cjs tests/hermes-provider-routing-regression.test.cjs tests/provider-cli-dispatch.test.cjs tests/agent-execution-router.test.cjs tests/multi-runtime-select.test.cjs`
- `npm run test:hermes`
- `npm test`
- `npm run lint:tests`
- `npm pack --dry-run --json`

## Publish checklist

1. Merge release PR to `main` after CI is green.
2. Create GitHub Release `v1.9.0`.
3. Run Trusted Publishing dry-run.
4. Run Trusted Publishing publish.
5. Verify npm:

```bash
npm view gsd-hermes version
npm dist-tag ls gsd-hermes
```
