Skip to content

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 covered v0.13.1 at cfcab345 (2026-09-17)

Audience and Channels

AudienceWhy they careDelivery channel
HELIX plugin usersA new Discover artifact type for candidate research, and two new present-mode output kinds that render to HTML and PDFPlugin repo tag; marketplace update
Website readersThe principles page is rewritten as the H/E/L/I/X manifesto, and the artifact-type reference carries the new typeGitHub Pages rebuild
HELIX maintainersRelease tags are now created by CI from the merged manifest, and the seal gate no longer fails a build on an unsigned pageThis 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-analysis positions the product against rivals, current-state-inventory records what already exists, and tech-spike runs 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.
  • present gains 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 under deliverables/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.py reads 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.2 was tagged through the GitHub Releases UI against a commit whose three plugin manifests still declared 0.13.1. On merge of a chore(release): vX.Y.Z pull 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.yml stays 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

AreaWhat changedWho is affected
Artifact catalogcomponent-profile joins Discover with template, prompt, meta, and a researched PostgreSQL example; graph.yml gives it informs edges to tech-spike, adr, architecture, and concernsHELIX users researching a stack decision
Routingconcern-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 settleHELIX users
Present modeBrief 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 profileAnyone producing a client-ready document
Deliverable gatecheck-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 namesMaintainers and deliverable authors
ConventionsDocumentation 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 fromArtifact authors
WebsiteThe principles page is rewritten as the five-letter H/E/L/I/X manifestoWebsite readers
CIrelease-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 titleMaintainers

Fixes

Issue or symptomResolutionUser 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 tagTagging moved into CI, gated on the three manifests; v0.14.0 is the first tag created that wayConsumers 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.2The associative array became a case function and mapfile became a while-read loopContributors 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 sealAn 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 parseContributors without 1Password desktop access can change curated pages
The principles page linked to five per-principle pages that do not existLinks and the promise removed until those pages existThe 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.1 tag, the last tag whose manifests match their version. The website rebuilds from main and is not pinned to a tag.

Known Issues and Support

IssueWho is affectedWorkaround 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 taggedAnyone pinning a patch in that rangePin v0.14.0 or v0.13.1
Claim subject URIs for section index pages follow the source path shape (…/_index/) rather than the published URLVerifiers reading the URI fieldInformational 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 thereHosts rasterizing decks on Linuxdeck-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 passMaintainers reading review stateRe-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"
    }
  ]
}