v1.80.9
EvoMap/evolverv1.80.9May 16, 2026by autogame-17
AI Summary
Follow-up release ensuring GEP prompt schema enums flow from a single source of truth and hardening the deployment script to prevent publishing versions without GitHub releases.
Key Highlights
- GEP prompt schema enums now flow from `src/gep/schemas/protocol.js`.
- Fixed `scripts/deploy.sh` to fail fast before irreversible npm publish.
- Added test suite for schema prompt consistency.
- Removed stale synchronization warnings.
New Features
- Schema consistency enforcement.
- Deployment safety improvements.
Full Release Notes
## [1.80.9] - 2026-05-16 ### Fixed - **GEP prompt schema enums now flow from a single source of truth (#45, follows up #42).** v1.80.8 patched three hardcoded `repair|optimize|innovate` literals in `src/gep/prompt.js` after the `explore` category had been silently dropped from the LLM contract for months. This release makes the whole class of bug structurally impossible: a new `src/gep/schemas/protocol.js` is the single source of truth for every enum that appears both in JS validation code (`mutation.js`) and in the LLM-facing prompt schema (`prompt.js`). It re-exports `VALID_CATEGORIES` from `schemas/gene.js`, `VALID_OUTCOME_STATUSES` from `schemas/capsule.js`, plus declares `VALID_RISK_LEVELS` and `VALID_TRACE_STAGES`. `prompt.js`'s `SCHEMA_DEFINITIONS` is now generated by `buildSchemaDefinitions()` which interpolates `renderEnum()` / `renderEnumList()` calls instead of hardcoding each value. `mutation.js`'s `isValidMutation` and `normalizeMutation` import the enums instead of inlining them. The stale "keep this in sync with schemas/gene.js" warning comment in `solidify.js` is removed because the rule is now enforced by the type system, not by reader vigilance. A new test `test/schemaPromptConsistency.test.js` adds 4 cases that fail loudly if any future contributor reintroduces a hardcoded enum literal in `prompt.js`, drifts `protocol.js` from the underlying schema files, or removes a category from the canonical whitelist without auditing `strategy.js` presets. ### Hardened - **`scripts/deploy.sh` now fails fast before the irreversible `npm publish` step (#45).** The previous pipeline used `|| echo "WARN: ..."` after step 5 (`publish_public.js`) and step 6 (binary upload), which let a failed GitHub Release step be followed by a successful `npm publish` — leaving the registry pointing at a version with no GitHub release. `npm publish` cannot be undone, so this was a real one-way state. v1.80.8 actually hit it when `publish_public.js` failed with a missing-git-identity error in the temp publish repo, but deploy continued and shipped npm@1.80.8 anyway. Two layered defenses now apply: (1) step 5 exits 1 with an actionable error if `publish_public.js` returns non-zero, instead of `WARN`-and-continue; (2) step 7 runs `gh release view v$VERSION` as a precondition before invoking `npm publish` and refuses to ship if the GitHub Release is missing or in draft state. Step 7 itself also fails fast if `npm publish` errors. Step 6 (binary upload) intentionally keeps `WARN`-and-continue because binary upload is recoverable via `gh release upload --clobber` and missing binaries do not put the registry in an inconsistent state.