v1.0.0-beta2 — Shooner
Pre-release⛵ A schooner is fast and lean where a ketch is sturdy — and Fleet's beta2 keeps that momentum across the whole platform: Skipper learns to detect and self-heal from spec drift, Crafter finally lints OpenAPI specs the same way it lints Ikanos capabilities, and Warden closes the loop with an auto-syncing OpenAPI action for every scaffolded capability. Ikanos itself ships its own infrastructure-focused beta2 in parallel (see the Ikanos release notes). Together, the Fleet's operator, editor, and scaffolding tools all move one step closer to GA.
What is the Naftiko Fleet?
The Naftiko Fleet is the Community Edition product for Spec-Driven Integration. It bundles the tools, documentation, and services needed to design, create, deploy, and manage a system of Naftiko capabilities — including the Ikanos framework, a VS Code extension, a Backstage integration, a Kubernetes integration, and a documentation & web portal.
A fleet is what you call a group of ships sailing together — here, a group of capabilities running and governed as one.
This v1.0.0-beta2 release coordinates the promotion of Skipper, Crafter, and Warden — each developed in its own repository — alongside hardening in the Fleet repository itself. Ikanos and Polychro ship their own beta2 in parallel; see their respective release notes.
✨ Highlights
Kubernetes integration — Spec Drift Detection & Capability Lifecycle (skipper#15)
The most significant Naftiko Skipper change since beta1: the operator now detects and self-heals from spec drift, and capabilities gain a proper stop/start lifecycle.
- Spec drift detection — a SHA-256 composite hash of the
specRefConfigMap, bind Secrets, and import ConfigMaps is computed and stored as anaftiko.io/spec-hashpod template annotation. When the hash changes, the running pod automatically rolls out — no manualkubectl rollout restartor reconcile-at annotation needed. ArescheduleAfter(5s)poll catches ConfigMap drift without requiring anEventSource, andspecHashis now exposed onCapabilityStatusand the CRD schema (Helm + manifests) - Stop capability via annotation —
kubectl annotate cap <name> naftiko.io/stopped=truescales the Deployment to 0 replicas and transitionsstatus.phasetoStopped(visible inkubectl get cap, endpoint becomes inaccessible); removing the annotation restarts the capability with its latest spec. Usespatch({spec:{replicas:0}})instead of thescale()API to avoid a GraalVM reflection issue; a newStoppedenum value anddeployments/scaleClusterRole permission ship with it
VS Code extension — OpenAPI Support (crafter#67)
The flagship Naftiko Crafter change: the extension now lints OpenAPI specs, not just Ikanos capabilities.
- OpenAPI support added the same way Spectral did it — schema validation via AJV, rules validation via Polychro — and the existing Ikanos-only validation was migrated onto this same unified architecture rather than living as a separate code path
- Legacy Ikanos-specific schema and rule handling code removed now that both formats share one pipeline
- Supported file extensions and editor modelines are now driven by configuration instead of being hardcoded
- Full test suite extended to reach the 100% coverage target on the new architecture
- README and walkthroughs updated to document OpenAPI support, closing out the epic
- Extension ID renamed from
naftiko.naftiko-craftertonaftiko.crafter(crafter#64)
Backstage integration — Automatic OpenAPI Sync & GA Wrap-Up
The flagship Naftiko Warden change: lifecycle OAS export management.
- New GitHub Action that regenerates and commits a scaffolded capability's exposed
openapi.yamlautomatically whenever its capability file changes — the source of the sync workflow now baked into every capability the Warden template scaffolds - Unit tests and a coverage-check CI job added for Warden's plugin system, failing the build if plugin coverage drops below the project's 100% target
- Template renamed from "Naftiko Warden" to "Ikanos Capability", with tags updated from
naftiko/warden/capabilitytonaftiko/ikanos/capability - Tech docs updated with a link to the Shipyard page documenting the Skipper–Warden integration
🔐 Fleet — GitHub App Tokens Replace PATs in Publish Workflows (partially closes ikanos#624)
Every cross-repo publish workflow in the Fleet repository itself now authenticates via a dedicated GitHub App instead of a long-lived personal access token — publish-naftiko-crafter-assets.yml and publish-naftiko-warden-assets.yml both mint short-lived, repository-scoped App tokens for their naftiko/crafter, naftiko/warden, and naftiko/polychro checkouts.
📖 Warden Capability Skeleton — Real Onboarding Docs
Every capability scaffolded by Warden now ships with actual documentation instead of an empty shell: new README.md, docs/index.md, and docs/backstage.md explain the generated capability file, the TechDocs/MkDocs setup, and the Backstage catalog-info.yaml files, plus the automatic OpenAPI-sync workflow now bundled in the skeleton. The Fleet publish pipeline was also fixed to stop deleting all *.md files when syncing templates from the Warden repository, so these new docs actually survive the sync.
🌙 CI / Badge Infrastructure
- Skipper (a private repository) cannot serve badges via
raw.githubusercontent.com— that endpoint has no way to authenticate against private content without an expiring token embedded in the URL. Badge delivery was switched to GitHub Pages instead, unlike the public Ikanos/Polychro repos which use a dedicatedbadgesbranch - Gist-based badge publishing removed from Skipper's quality gate (partially closes ikanos#587), mirroring the same migration already shipped in Ikanos and Polychro
- Dependabot enabled for Skipper (Maven/GitHub Actions), plus a batch update of 6 GitHub Actions (
actions/checkout3→7,azure/setup-helm4→5,docker/login-action3→4,docker/metadata-action5→6,docker/setup-buildx-action3→4,docker/build-push-action6→7)
📚 Documentation
- Top-level Fleet
README.mdlinks bumped from1.0.0-alpha4to1.0.0-beta1 - Capability template
${{ values.name }}.ikanos.ymlbumped to1.0.0-beta1, with its commented-out example updated to the current kebab-mapping style
⚠️ Known Limitations
- VS Code extension (Crafter) — OpenAPI linting ships alongside Ikanos support, but deep IDE integration for OpenAPI (inline diagnostics, quick fixes) is still being extended from the existing Ikanos experience
- Kubernetes integration (Skipper) — spec drift detection and the stop/start lifecycle are new; broader production hardening continues, and ArgoCD ApplicationSet integration remains available for early adopters via the Fleet repository
- Backstage integration (Warden) — the automatic OpenAPI-sync workflow commits directly to
main; ifmainis branch-protected against bot pushes, the commit strategy will need to switch to opening a pull request instead - Polychro — JaCoCo coverage check on
polychro-rulesetsis a pre-existing gap; fix planned for an upcoming release - Ikanos ships its own separate beta2 in parallel with this release — see its dedicated release notes for the engine/schema changelog
🔢 By the Numbers
- Fleet: 5 commits, 9 files changed, +251 / −26 lines
- Skipper: 11 commits, 21 files changed, +1,678 / −124 lines
- Warden: 6 commits, 15 files changed, +835 / −36 lines
- Crafter: 10 commits, 49 files changed, +7,480 / −545 lines
- 4 contributors across the coordinated release
🙏 Contributors
- @jeremnaf — Crafter OpenAPI support and extension rename, Warden OpenAPI auto-sync action, Warden template rename and GA wrap-up, Fleet publish-pipeline fix and skeleton docs, release coordination
- @farah-t-trigui — Skipper spec drift detection and stop-capability lifecycle, Skipper badge migration to GitHub Pages, Fleet's GitHub App migration for automated PRs
- @eskenazit — Ikanos version/schema sync automation across Warden and Crafter
Full Changelog: Fleet v1.0.0-beta1...v1.0.0-beta2 · Skipper · Warden · Crafter