flusso-kernel 0.17.0

The flusso kernel: the shared vocabulary every layer trades in (values, validated newtypes, index schemas and mappings, adapter options).
Documentation
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.17.0]https://github.com/alias2k/flusso/compare/flusso-kernel-v0.16.0...flusso-kernel-v0.17.0 - 2026-11-12

### Added

- *(schema)* an aggregate's column can be an arithmetic expression
- *(kernel)* script fields and input-only fields in the schema model
- *(config)* on: column pairs on joins, aggregates and via hops
- *(schema)* aggregates across several hops with via, and the exists op
- *(sink)* every key of a keyword map with subfields gets an exact .keyword subfield
- *(kernel)* subfields and indexed opt-outs on columns and joins, hashed only when off
- *(kernel)* adapters can declare per-index options

### Fixed

- *(kernel)* every accepted expression re-parses from its canonical text
- review findings for aggregate expressions
- review findings for via and exists
- *(kernel)* [**breaking**] a map carries its keys' plain-field mapping and a new content hash
- review fixes for index settings (owned blocks/hidden, shared schema hoisting)

### Other

- *(kernel)* pin the content hash of a map schema at revision 2
- say the root manual is the newest release and /main/ tracks main
- Merge remote-tracking branch 'origin/main' into feat/script-fields
- *(kernel)* link Display in the expression module doc
- the kernel README names Expression; CLAUDE.md lists /api/expression
- *(kernel)* name the subfields projection like is_indexed
- *(kernel)* no intra-doc link to the private map revision constant
- *(kernel)* Mapping::of_type is the one place a map key's mapping is built

## [0.16.0]https://github.com/alias2k/flusso/compare/flusso-kernel-v0.15.1...flusso-kernel-v0.16.0 - 2026-10-09

### Added

- *(kernel)* distinct on aggregates and filters on a through junction
- *(engine)* [**breaking**] build-once ingest engine and one sink engine per sink over a bidirectional stream
- *(cli)* generate the editor schema and Reference tables from adapter descriptions
- *(config)* [**breaking**] adapters own their configuration; port entries are type + options
- *(kernel)* #[derive(AdapterConfig)] in flusso-kernel-derive
- *(kernel)* [**breaking**] options tree, AdapterConfig, Secret as written, lock format 3
- *(query-derive)* [**breaking**] deprecate path= instead of deleting it
- improve upon claude skills
- add the publication management
- change the "run" command to follow the "cargo" pattern of updating the "lock" file
- DEPLOY.md for docker recipie
- license, security, coc, contributing and github templates
- rename flusso-search to flusso-query
- move files to correctly reflect dependencies
- create alias pointing to the latest index
- add belong_to
- start client, add geo
- rename config.toml to flusso.toml and flusso.bin to flusso.lock
- add compile functionality
- better opensearch defaults
- improve env vars handling and readme about sinks and sources
- backfill and renaming
- rebranding to storno
- update deps
- documentation

### Fixed

- address review — destructured Hash, empty junction filters keep the hash, stale junction filters cleared in the designer
- *(engine)* [**breaking**] review fixes — positions monotonic across streams, per-sink envelope stamping, supervisor loop

### Other

- *(engine)* share published envelopes via Arc, sink stamps own nam
- *(arch)* [**breaking**] lay out kernel / ports / adapters / engine / daemon and sdk/
- root README as a pitch, flusso-query README as a landing; track the Start here pages
- the lock is deterministic TOML; formats frozen for the major
- source TLS — configuration guide section, README, crate README, plugin skills
- document the visual schema designer
- lead README with the tagline, move AI disclosure below it
- consistency pass — fix factual errors and terminology drift
- rewrite all docs to the prose style guide
- clarify pre-commit hook formats the whole workspace
- add dev workflow tooling
- split into an mdBook manual + per-crate READMEs
- Merge pull request #9 from alias2k/feature/run-command-rewamp
- preparation for going public
- documentation
- add requirements section
- add SCHEMA.md
- readme
- readme and cleanup
- README

## [0.14.0]https://github.com/alias2k/flusso/compare/flusso-schema-core-v0.13.0...flusso-schema-core-v0.14.0 - 2026-08-14

### Added

- *(query-derive)* [**breaking**] deprecate path= instead of deleting it

## [0.13.0]https://github.com/alias2k/flusso/compare/flusso-schema-core-v0.12.0...flusso-schema-core-v0.13.0 - 2026-07-24

### Added

- *(core)* carry declared enum order on Column + Mapping.enum_order

## [0.11.0]https://github.com/alias2k/flusso/compare/flusso-schema-core-v0.10.1...flusso-schema-core-v0.11.0 - 2026-07-23

### Other

- document the visual schema designer

## [0.10.1]https://github.com/alias2k/flusso/compare/flusso-schema-core-v0.10.0...flusso-schema-core-v0.10.1 - 2026-06-26

### Other

- lead README with the tagline, move AI disclosure below it
- consistency pass — fix factual errors and terminology drift
- rewrite all docs to the prose style guide
- clarify pre-commit hook formats the whole workspace
- add dev workflow tooling
- split into an mdBook manual + per-crate READMEs

## [0.8.0]https://github.com/alias2k/flusso/compare/flusso-schema-core-v0.7.0...flusso-schema-core-v0.8.0 - 2026-06-23

### Fixed

- *(query)* per-type numeric kinds + kind-based values for every kind ([#45]https://github.com/alias2k/flusso/pull/45)

## [0.7.0]https://github.com/alias2k/flusso/compare/flusso-schema-core-v0.6.0...flusso-schema-core-v0.7.0 - 2026-06-22

### Fixed

- *(schema)* reject `doc_id` instead of silently ignoring it ([#38]https://github.com/alias2k/flusso/pull/38)
- *(schema)* honor `required` on to-one joins instead of forcing nullable ([#37]https://github.com/alias2k/flusso/pull/37)

## [0.5.0]https://github.com/alias2k/flusso/compare/flusso-schema-core-v0.4.0...flusso-schema-core-v0.5.0 - 2026-06-22

### Added

- *(core)* add first-class map type to the vocabulary

## [0.4.0]https://github.com/alias2k/flusso/compare/flusso-schema-core-v0.3.2...flusso-schema-core-v0.4.0 - 2026-06-19

### Added

- runtime index prefix to namespace all indices ([#24]https://github.com/alias2k/flusso/pull/24)

### Other

- move inline unit tests into sibling tests.rs modules
- *(core)* typed canonical value vocabulary between source and sink

### Added

- `validate_index_prefix` for the deployment-wide index prefix.

### Changed

- **`GenericValue` is now a fully-typed canonical value vocabulary** — the
  middle type between a source and a sink. Numerics are split by width
  (`SmallInt`/`Int`/`BigInt`, `Float`/`Double`, `Decimal`), temporals are split
  (`Date`/`Time`/`Timestamp`/`TimestampTz`), and `Uuid`/`Bytes` are first-class,
  so no semantic type is erased to a string in transit. Serde is now the
  **derived, format-agnostic** representation (externally tagged), so a value
  round-trips losslessly through any queue encoding — in as a `GenericValue`,
  out as the same `GenericValue`. Core picks no wire format.

## [0.3.1]https://github.com/alias2k/flusso/compare/flusso-schema-core-v0.3.0...flusso-schema-core-v0.3.1 - 2026-06-19

### Added

- improve upon claude skills

## [0.3.0]https://github.com/alias2k/flusso/compare/flusso-schema-core-v0.2.0...flusso-schema-core-v0.3.0 - 2026-06-18

### Added

- add the ids field support

## [0.2.0]https://github.com/alias2k/flusso/compare/flusso-schema-core-v0.1.1...flusso-schema-core-v0.2.0 - 2026-06-18

### Added

- add the publication management

### Other

- code hygene, removed useless comments

## [0.1.1]https://github.com/alias2k/flusso/compare/flusso-schema-core-v0.1.0...flusso-schema-core-v0.1.1 - 2026-06-17

### Added

- change the "run" command to follow the "cargo" pattern of updating the "lock" file

### Other

- Merge pull request #9 from alias2k/feature/run-command-rewamp