Fountain Coach Gitowner-controlled · read only

Fountain-Store.git · FCIS_KIT.md

Fountain-Store.git / FCIS_KIT.md

revision 06e7d01a1e7042b0c4cef63c4321ad9a3fcc2659 · complete file

# FCIS-KIT Declaration — Fountain-Store

Declared under [FCIS-KIT](https://github.com/Fountain-Coach/.github/blob/main/docs/FCIS-KIT-Standard.md) v1.0,
requirement **FCIS-KIT-01**.

```
FCIS-KIT:
  owns:
    - FountainStore:     embedded ACID store — LSM engine, MVCC snapshots, WAL, secondary indexes,
                         and the change feed (StoreChange / changes()) added in v0.3.0
    - FountainFTS:       full-text search index over stored documents
    - FountainVector:    HNSW vector index over stored documents
    - FountainStoreHTTP: admin/HTTP surface over the store
  consumes:
    - kit: swift-secretstore
      mode: semver
      requirement: from "0.1.0"
  third-party-exceptions:
    - package: swift-nio
      capability: the HTTP server transport under FountainStoreHTTP
      why-not-owned: Apple-maintained networking infrastructure; an owned reimplementation would be a
                     server transport project, not a store
      accepted-by: pre-existing at adoption of FCIS-KIT (2026-08-02)
    - package: swift-crypto
      capability: hashing and checksums (WAL/SSTable block CRC, manifest integrity)
      why-not-owned: Apple-maintained cryptographic primitives; Hard Rule 1 forbids FFI, and this is the
                     pure-Swift route to them
      accepted-by: pre-existing at adoption of FCIS-KIT (2026-08-02)
```

## Notes on the seams

**The change feed is generic by construction** (FCIS-KIT-03). `StoreChange` carries
`(collection, id, sequence, kind)` and nothing else — it names *what changed*, never the value, and it knows
nothing of any consumer's vocabulary. A consumer maps `collection`/`id` back into its own domain on its own side
of the boundary. See `Sources/FountainStore/ChangeFeed.swift`.

**Consumers bind to seams, not to internals.** The public surface is `FountainStore`, `Collection<C>`, `Index<C>`,
`Snapshot`, `StoreChange` and the admin service. Nothing in this repository imports or is shaped by a consumer.

## Release history under this standard

| version | seam | notes |
| --- | --- | --- |
| v0.3.0 | `changes()` added; `Collection.put`/`delete`/`batch` routed through one transactional commit | First release cut under FCIS-KIT. Breaking behaviour: the `sequence:` parameter on `put`/`delete` is ignored — [release notes](https://github.com/Fountain-Coach/Fountain-Store/releases/tag/v0.3.0) |

Releases before v0.3.0 were tags without GitHub releases; FCIS-KIT-07 applies from v0.3.0 onward.

## Open compliance items

- Tags `v0.2.0-beta.1` through `v0.2.4` have no GitHub release and no notes naming their seams. They are
  historical; FCIS-KIT-07 is not applied retroactively, and this is recorded rather than backfilled.