Skip to content

v0.103.0

Choose a tag to compare

@github-actions github-actions released this 13 Jul 12:00
a31ad81

0.103.0 - 2026-07-13

Changed — BREAKING (the #75 window: the language tightens)

  • exec semantics never fork on a YAML type again (#570 · spec#78) —
    command: is argv-only (execve · per-element substitution: an
    interpolated value can never break out); the NEW shell: field is
    the explicit dangerous door (/bin/sh -c · pipes/redirects · the
    blocklist attaches HERE). Exactly one of the two; a string
    command: rejects with the migration teaching.
  • bare ${{ tasks.X }} is a validation error (NIKA-VAR-020) —
    the task result is a record, the projection set (.output/.status/
    .error/.duration_ms) is CLOSED; the envelope is not a value.
  • the gate algebra becomes normative (spec#78) — the when-status
    pattern is a propagation CHOICE (default gate: failure cancels the
    cascade · when-form: skip-once-then-continue), stated as a table.
  • the analyzer learns the argv world — lints 006/007 (timeout
    wrapper · shard signature) read argv heads/tokens.

Added

  • nika/semanticDocument — the LSP's vendor-prefixed custom
    request (capability-gated via experimental.nika): the canonical
    graph_format: 1 projection VERBATIM plus a span wrapper (task id →
    declaring token range). One projector, every surface — the graph
    moves to its own L0 member nika-graph (split from nika-schema
    at the 15k cap; the CLI keeps the renderers and re-exports), so
    inspect --format json, the LSP and future canvases read one truth.

What's Changed

  • feat(nika-lsp): the three 557 lanes — tools whitelist · task members · schema context by @ThibautMelen in #559
  • feat(pack): the vendoring lane materializes — sync-pack.sh + pack-resync heal by @ThibautMelen in #563
  • feat(nika-lsp): the outline reads the whole file — vars, env, secrets join by @ThibautMelen in #561
  • chore(pack): the pack follows the spec by @github-actions[bot] in #564
  • fix(nika-lsp): the island speaks DAG-003 — declared edges, the carve-out, the free block by @ThibautMelen in #560
  • feat(nika-lsp): the wave-2 lanes — for_each/when islands · the skills walk by @ThibautMelen in #562
  • chore(pack): the pack follows the spec by @github-actions[bot] in #567
  • fix(nika-lsp): the providers order answers to the spec token — and it was WRONG by @ThibautMelen in #566
  • style: em dashes out, house middots in by @ThibautMelen in #568
  • fix(ci): the deny leg drops the broken wrapper — binary direct, one lane by @ThibautMelen in #571
  • feat!(exec): the language tightens — argv|shell by field · the envelope is not a value by @ThibautMelen in #570
  • feat(lsp): nika/semanticDocument — one projector, every surface by @ThibautMelen in #565

Full Changelog: v0.102.0...v0.103.0