Release Notes — HELIX v0.14.0
Example from HELIX’s own docs. This generated page comes from
docs/helix/. Use it to see the method in practice; start with the artifact-type catalog for reusable templates. Historical plans and reports may describe retired architecture.
Source identity (from
05-deploy/release-notes.md):
ddx:
id: release-notes
authoring:
home: repo
depends_on:
- deployment-checklist
review:
self_hash: 99574883788300395089b39ca0b1918d4a23f359269390fa4717bc0fc0c41f51
deps:
deployment-checklist: 78c9688645de24f33182dca537e13d0fb180abb4773ab85b48468e495a92bad1
reviewed_at: "2026-09-17T19:23:17Z"Release Notes — HELIX v0.14.0
Release Scope
- Release identifier or version:
v0.14.0 - Release date: 2026-09-22 (operator-driven; tagged at the merge commit)
- Rollout window or environment: HELIX plugin (Claude Code marketplace, Codex
plugin, Databricks Genie bundle, Grok Build) and the public website at
https://documentdrivendx.github.io/helix/ - Release owner: HELIX maintainer cutting the tag
- Source commit or build: the tag’s merge commit (tag
v0.14.0); previous release notes coveredv0.13.1atcfcab345(2026-09-17)
Audience and Channels
| Audience | Why they care | Delivery channel |
|---|---|---|
| HELIX plugin users | A new Discover artifact type for candidate research, and two new present-mode output kinds that render to HTML and PDF | Plugin repo tag; marketplace update |
| Website readers | The principles page is rewritten as the H/E/L/I/X manifesto, and the artifact-type reference carries the new type | GitHub Pages rebuild |
| HELIX maintainers | Release tags are now created by CI from the merged manifest, and the seal gate no longer fails a build on an unsigned page | This file and .github/workflows/release-tag.yml |
Highlights
component-profile, a Discover artifact type for candidate research. Discover had no type for reading the public record on a candidate technology, product, or managed provider before anyone spikes it.competitive-analysispositions the product against rivals,current-state-inventoryrecords what already exists, andtech-spikeruns one experiment. A profile consolidates the published record on one candidate and says how well it fits this project. One instance per candidate, so six candidates are six profiles that an ADR compares, and each can be researched in parallel and revised on its own.- The profile starts from the need, not the candidate. The record opens with Need and Required Capabilities drawn from the project’s own artifacts before any candidate documentation is read, then aligns capability by capability with a Settled-by line and a status word, scores the named alternatives on those same capabilities, and closes with a verdict drawn from disjoint definitions. Confidence caps at Medium while a design-defining capability is unknown. Every factual claim cites a numbered source or is marked as unpublished or as a third-party estimate; sources carry a class, an author or organisation, dates, and a Searched record, and documentation URLs are pinned to the version in scope. The catalog example profiles PostgreSQL against DepositMatch from 33 dated sources.
presentgains brief and one-pager kinds. Present mode could produce a deck. It now also produces a brief and a one-pager, rendered to HTML and PDF, with a candidate-briefing reference flow that uses label headings and a need-first introduction, and per-flow files underdeliverables/flows/.- A human-facing voice profile, and a gate that reads the flow.
The voice profile names mannered prose, negative parallelism, slogan
closers, shadowboxing, narration, copula avoidance, borrowed authority, and
terms of art stretched into metaphor, with a sample paragraph to match.
check-deliverable.pyreads the Story’s flow to choose between claim and label title rules, checks that visual cells carry numbers, and blocks bare-noun reversals, em dashes, copula avoidance, borrowed authority, bold-label bullets, counts and Title Case in headings, document narration, and any owner, date, or grade that no Sources row or Assumptions entry states. The renderers add no text the author did not write. - External standards are defined where they are first named. A project artifact named “SALI LMSS” across a dozen documents without saying what it was, and 24 of its 86 attributed labels turned out to be absent from the standard. The artifact-signal voice profile now requires that every external standard, vendor term, or acronym be defined on first use and linked to its resource summary, and a vocabulary attributed to a standard is generated by tooling from the standard’s published file rather than transcribed from memory.
- Release tags are created by CI.
v0.13.2was tagged through the GitHub Releases UI against a commit whose three plugin manifests still declared0.13.1. On merge of achore(release): vX.Y.Zpull request, CI now reads the version from the title, cross-checks it against all three manifests at the merge commit, and pushes the tag itself, so a tag can no longer precede a manifest bump.release-version-guard.ymlstays as a backstop for tags pushed by hand.
Required Actions Summary
- Users: none.
- Operators: none. The tag for this release is created by CI when the release pull request merges; do not create it through the Releases UI.
- Support: none.
Changes and Fixes
New or Improved
| Area | What changed | Who is affected |
|---|---|---|
| Artifact catalog | component-profile joins Discover with template, prompt, meta, and a researched PostgreSQL example; graph.yml gives it informs edges to tech-spike, adr, architecture, and concerns | HELIX users researching a stack decision |
| Routing | concern-resolution.md, actions/plan.md, and actions/evolve.md route an unchosen third-party candidate to a profile before a spike, so a spike is spent only on what reading cannot settle | HELIX users |
| Present mode | Brief and one-pager kinds with an HTML and PDF renderer, a candidate-briefing reference flow, per-flow files under deliverables/flows/, and a human-facing voice profile | Anyone producing a client-ready document |
| Deliverable gate | check-deliverable.py switches title rules on the Story’s flow and checks numbers in visual cells, unstated owners, dates, and grades, and the prose patterns the voice profile names | Maintainers and deliverable authors |
| Conventions | Documentation Voice gains “External standards and terminology”; modes/_authoring.md asks for the standards an artifact names and points at docs/resources/<slug>.md before drafting; resource-summary asks for the reusable definition and the file a derived vocabulary comes from | Artifact authors |
| Website | The principles page is rewritten as the five-letter H/E/L/I/X manifesto | Website readers |
| CI | release-tag.yml creates and pushes the release tag on merge of a chore(release): pull request, refusing to tag when the manifests disagree with the title | Maintainers |
Fixes
| Issue or symptom | Resolution | User or operator impact |
|---|---|---|
v0.13.2 was tagged against a commit whose manifests declared 0.13.1, and the v0.13.3 manifest bump merged before the auto-tag workflow reached main, so it never got a tag | Tagging moved into CI, gated on the three manifests; v0.14.0 is the first tag created that way | Consumers pinning v0.13.2 get a plugin that reports 0.13.1; 0.13.3 exists only as manifest content and is superseded here |
tests/validate-skills.sh failed under macOS’s default bash 3.2 | The associative array became a case function and mapfile became a while-read loop | Contributors on macOS can run the skill gate without installing a newer bash |
| The Innsigle seal gate failed CI on any page that was never sealed or was edited since its last seal | An unsigned or stale page warns everywhere, including CI; the gate still fails on a broken or wrong signature, an orphaned or ambiguous claim, or a claim the CLI cannot parse | Contributors without 1Password desktop access can change curated pages |
| The principles page linked to five per-principle pages that do not exist | Links and the promise removed until those pages exist | The internal link checker passes |
Breaking Changes and Required Actions
- None. Existing artifacts, modes, and installs are unaffected; this release adds a type, two output kinds, and gate coverage.
Migration or Rollback Guidance
- Migration: pull the tag. Nothing to regenerate for plugin consumers.
- Rollback: install the
v0.13.1tag, the last tag whose manifests match their version. The website rebuilds frommainand is not pinned to a tag.
Known Issues and Support
| Issue | Who is affected | Workaround or next step |
|---|---|---|
v0.13.2 and v0.13.3 are skipped: the v0.13.2 tag carries 0.13.1 manifests and 0.13.3 was never tagged | Anyone pinning a patch in that range | Pin v0.14.0 or v0.13.1 |
Claim subject URIs for section index pages follow the source path shape (…/_index/) rather than the published URL | Verifiers reading the URI field | Informational only; the digest and the Signed source line identify the page; reported upstream |
| Georgia and Trebuchet are absent on stock Linux LibreOffice, so the raster substitutes them there | Hosts rasterizing decks on Linux | deck-qa.py notes the missing typeface; use the technical or classic look |
| The review marker on this file is stale: it was written without a tracker review pass | Maintainers reading review state | Re-review the file with the tracker after the tag |
Support: open an issue at https://github.com/DocumentDrivenDX/helix.
References
- Deployment checklist:
deployment-checklist.md - Auto-tag workflow:
.github/workflows/release-tag.yml - Tag guard:
.github/workflows/release-version-guard.yml - Commit range:
git log v0.13.1..v0.14.0
Innsigle seal: model-primary by HELIX
The signature covers the markdown source of this page, not these HTML bytes. This page quotes that seal; verify it against the source file.
- Composition
- model-primary
- Issuer
- HELIX
helix - Signing key
ed25519:b0865d76d834a52c48506414d16f4e5a(build key)- Signed source
artifacts/release-notes.md- Signed
- 2026-09-23T14:11:58Z
- Content digest
sha256:142d10d0…231b7067
This build key is endorsed by the human key for build signing; the signature is not a detector and not a truth guarantee.
Raw attestation JSON
{
"payload": {
"innsigle": "1",
"type": "https://innsigle.dev/claim/colophon/v1",
"issued_at": "2026-09-23T14:11:58Z",
"issuer": {
"id": "helix",
"name": "HELIX",
"key_id": "ed25519:b0865d76d834a52c48506414d16f4e5a",
"key_url": "https://documentdrivendx.github.io/helix/.well-known/innsigle/keys.json"
},
"subjects": [
{
"uri": "https://documentdrivendx.github.io/helix/artifacts/release-notes/",
"digest": {
"alg": "sha256",
"value": "142d10d04ae6fbce28123a067d5a273595ed0e1e4f33f8d171f28956231b7067"
}
}
],
"colophon": {
"schema_version": "1",
"composition": "model-primary",
"ingredients": [
{
"kind": "model",
"name": "Claude",
"role": "draft"
},
{
"kind": "tool",
"name": "sloptimizer",
"role": "rewrite"
},
{
"kind": "human",
"name": "operator",
"role": "structure-edit"
}
],
"notes": null
}
},
"payload_encoding": "json",
"signatures": [
{
"key_id": "ed25519:b0865d76d834a52c48506414d16f4e5a",
"alg": "ed25519",
"sig": "5xPVKAv6LqZ1UxjadNhlj_Suv1-rdHMW_BIHb4eQAWlyj4TYpaKSp8k0Nm1qRuLRk_Fvdmq8y3QEVas0YUS0CQ",
"signed_at": "2026-09-23T14:11:58Z"
}
]
}