Component Contribution Guide¶
This guide covers contributing code and design to any component of the Naftiko Fleet. For contributing documentation, see Documentation Guide. For authoring tutorials, see Tutorial Authoring.
Repository map¶
| Component | Repository |
|---|---|
| Ikanos engine | github.com/naftiko/ikanos |
| Polychro linter | github.com/naftiko/polychro |
| Fleet (Crafter, Warden, Skipper) | github.com/naftiko/fleet |
Each component has its own CONTRIBUTING.md and AGENTS.md covering
repo-specific conventions. This page captures the cross-cutting rules.
Before you start¶
- Check for an existing issue. If a similar one is open, comment there rather than opening a duplicate.
- For features: open an issue or design discussion first. Direct PRs without prior alignment may be closed.
- For bug fixes: an issue is helpful but not required for small fixes.
Development environment¶
| Component | Toolchain |
|---|---|
| Ikanos | Java 21 LTS, Maven 3.9+ |
| Polychro | Java 21 LTS, Maven 3.9+, GraalVM 23 for native image builds |
| Polychro Action | Node.js 20+, TypeScript |
| Documentation | Zensical (pip install zensical) |
All Java components use the Restlet-style Maven structure under a root
pom.xml with module sub-projects.
Code conventions¶
Java¶
- Java 21 LTS — use
record, pattern matching, sealed types, etc. - Spotless format enforced via Maven (
mvn spotless:apply) - Null analysis via JDT — see memory/repo/ikanos-jdt-null-analysis.md
- Tests with JUnit 5 + AssertJ
YAML schemas¶
- Schema files live under
src/main/resources/schemas/ - Schema changes require a corresponding
polychro:governancerule addition or update
Commit messages¶
- Conventional Commits format:
feat:,fix:,docs:,refactor:,test:,chore: - Reference issue in the body:
Fixes #123orCloses #123
Submitting changes¶
- Fork the repository
- Create a topic branch off
main - Make your changes with tests
- Run the local checks:
- Open a PR against
main - CI runs unit tests, integration tests, native image builds (Polychro), and Polychro linting against any YAML changes
- A reviewer merges after approval and clean CI
Schema version policy¶
While in alpha (1.0.0-alpha*), schema versions can introduce breaking
changes between alphas, but each alpha is internally stable. Breaking
changes require:
- An entry in the component's
CHANGELOG.md - A migration note in the affected pages
- A
polychro:ai-safetyrule that catches the old shape, if feasible
License¶
By contributing, you agree that your contributions will be licensed under one of:
- The Apache License 2.0 — for contributions to Ikanos and Polychro, which are released as standalone OSS projects.
- The Naftiko Fleet Freeware EULA — for contributions to the Community-edition Fleet bundle (Shipyard, Crafter, Warden, Skipper baselines, VS Code extension, Backstage templates).
- The Naftiko Commercial License — for contributions to Standard- or Enterprise-edition premium features.
See Fleet → License for the full three-license picture.