Skip to content

Ikanos v1.0.0-beta1 — "Ketch"

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 29 Jun 14:19

Ikanos v1.0.0-beta1 — "Ketch" ⚓ — Release Notes

⚓ A ketch is a sturdy two-masted vessel built for longer voyages — and beta1 is exactly
that: the first release confident enough to leave the alpha harbor. After four alpha
releases that hardened the spec, the engine, and the agent toolchain, beta1 ships the
Binary Content feature end-to-end (spec → engine → MCP → REST), closes the last
known native-image gaps, and adds first-class CI quality automation. The spec is stable
enough for real integrations.

What is Ikanos?

Ikanos is the first open-source engine for Spec-Driven Integration.
Capabilities are declared entirely in YAML — no Java, no code generation, no compilation
step. The engine reads the spec at startup and immediately serves it as a multi-protocol
server: MCP, Skill, REST, and Control. The spec is the artifact and the runtime contract.

Ikanos comes from the Greek ικανός — capable.

This v1.0.0-beta1 release builds on v1.0.0-alpha4 ("Yawl") with a focus on
feature completeness: the Binary Content blueprint ships across all four phases (spec,
engine, REST, MCP), native-image stability is fully resolved, and the version-sync
machinery is drift-proof. It introduces no breaking schema change since alpha3 —
a deliberate signal that the spec is maturing toward stability.

🌐 Ecosystem

Polychro — Spec Linting for Ikanos Capabilities

Polychro remains the companion spec linting engine
for the Ikanos ecosystem. It validates Ikanos capability files against rulesets declared in
YAML, surfacing diagnostics as SARIF, JSON, or LLM-native output — directly inside your
editor, CI pipeline, or AI agent. See the Polychro release notes for its own changelog.

✨ Highlights

🗂️ Binary Content — End-to-End (#598)

The flagship feature of beta1: capabilities can now declare, serve, and document binary
outputs natively — without any Java or custom serialization code.

The feature shipped in four sequential phases:

  • Phase 0 — Spec (1e18090,
    9848133): new binary-content schema
    fields (mimeType, encoding, maxBinarySize) added to consumed and exposed output
    parameters; reviewed and tightened in the same PR
  • Phase 1 — Engine (b98bd1c):
    binary-content runtime core wired into the orchestration pipeline — MIME dispatch,
    base64/raw byte handling, size capping
  • Phase 2 — REST (270ce46):
    binary outputs promoted to first-class citizens in the REST adapter — correct
    Content-Type headers, streaming, and OpenAPI documentation generated from the spec
  • Phase 3 — MCP (eda1dca,
    4ec4ca6,
    b3965c8): MCP tool results and
    resource contents return BlobResourceContents for binary payloads — dynamic resources,
    static resources, and tool outputs all covered
  • Adapter cap (5e93a28):
    maxBinarySize is wired through REST and MCP exposures so each adapter can enforce its
    own size limit independently

🔧 Native CLI — Fully Fixed (#581, #594)

The native-image regressions that affected alpha4 are fully resolved in beta1:

  • Complete GraalVM reflect-config.json for serve (Restlet/Jetty) and validate
    (MaxLengthValidator) — ClassNotFoundException / NoSuchMethodException gone
    (4daac7a)
  • Conditional Jetty reflection classes registered correctly — fixes the intermittent
    serve crash on some JVM distributions
    (f595aa0)
  • CI job now checks out sources so the native-regression fixture resolves at test time
    (d6d8daa)
  • A real-HTTP regression guard snippet is documented to prevent future regressions
    (d3b2df1)

🌙 CI / Quality Automation

  • Dependabot enabled for Ikanos — automated dependency update PRs for Maven and GitHub
    Actions (ca41daf)
  • Slack notifications on nightly failures — the quality-gate now pages the team when a
    nightly run fails (dcfd891)
  • @Nonnull annotations added to OTel SpanProcessor / MetricReader overrides so JDT
    null analysis stays clean (f93cfdf)

🧷 Beta1 Migration & Version-Sync Hardening

The hop from alpha4 to beta1 closed the remaining version-sync gaps:

  • Remaining hardcoded spec versions removed from test fixtures across multiple passes
    (467ea5b,
    188bd7d,
    d1e97a6)
  • scripts/sync-ikanos-version.py extended with additional search paths to cover all
    fixture locations (1829644)
  • .env.local added to .gitignore to prevent machine-specific environment paths from
    leaking (0003739)

📚 Documentation

  • README restructured around reader personas (operator, integrator, contributor) for
    faster onboarding (406b47b). Thanks Priyatham Kattakinda for the suggestion.
  • Links tightened and converted to relative Shipyard docs paths
    (f4cc10b)
  • Links updated to point to shipyard.naftiko.io/ikanos/1.0.0-alpha4 then to the live
    Playground (b3adad3,
    8f27d35)
  • Apache 2.0 License badge added to README
    (d185668)
  • Binary-content cookbook reference added to the skills documentation
    (8740fd1)
  • bugfix SKILL.md updated with lessons from beta1 workflow
    (87608f0)

⚠️ Known Issues & Limitations

  • CLI pre-built binary installation — running the CLI binary directly is not
    straightforward on macOS (Gatekeeper quarantine requires xattr -dr com.apple.quarantine
    or system approval) and on Windows (SmartScreen warning, unsigned binary). Workaround: run
    via java -jar ikanos.jar from the JAR instead (#281)
  • Reverse tunnel remains declarative-only in the schema — capabilities that declare
    tunnel: parse and validate today, but the engine still dials the public baseUri
    directly until the embedded tunnel feature is enabled. Use the sidecar pattern from the
    Reverse Tunnel guide for production today.
  • CLI pre-built binaries available for macOS ARM64, Linux AMD64, Linux ARM64, and
    Windows AMD64.

🔢 By the Numbers

  • 34 commits merged since v1.0.0-alpha4
  • 138 files changed, +6,406 / −288 lines
  • 4 contributors

🙏 Contributors

Huge thanks to the team for shipping this release:

  • @jlouvel — Binary Content end-to-end (spec → engine → REST → MCP), README restructuring, documentation, release coordination
  • @eskenazit — Native CLI fixes (#581, #594), beta1 version-sync hardening, regression guard documentation
  • @farah-t-trigui — Dependabot setup, Slack nightly notifications, version-sync script extension
  • @jeremnaf — Release coordination

Full Changelog: v1.0.0-alpha4...v1.0.0-beta1