Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 33 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,37 @@ the [versioning policy](https://teqpace-services.github.io/isopace/versioning/).

## [Unreleased]

## [1.0.0-rc.1] - 2026-06-09

First release candidate for `v1.0.0`. This is an **interim, feedback-seeking
tag under a "may still change" banner** — not the v1.0.0 contract itself. Per
the [roadmap to v1](ROADMAP-to-v1.md), it deliberately **narrows** what v1 will
freeze and is published to gather integration feedback before the API freeze:

- **Stable candidate — the core.** `iso8583`, `packager`, `fieldcodec`,
`lengthcodec`, and `render` are proposed for the v1 API freeze. Feedback is
solicited against these surfaces specifically.
- **Experimental — may still change.** The higher layers (`runtime`, `flow`,
`space`, `store`, `mux`, `link`, `listener`, `connector`, `gateway`, `teq`,
`vault`, `rbac`, `ops`) remain explicitly experimental and are **not** covered
by the rc's stability intent until they have soaked.
- **Production crypto (HSM) is not yet shipped.** The only `vault` backends are
software (`SoftVault`, `SealedVault`); the certified-HSM / PKCS#11 path
(roadmap B1) is outstanding. Do not treat the crypto path as production-ready.

No code change since `0.3.0` in the root module; the OpenTelemetry and SQL
adapters ship as separate modules (`adapters/otel`, `adapters/sql`) so the core
dependency graph stays empty. Still **stdlib-only**; every package is
`gofmt`/`go vet` clean and tested under `go test -race`.

### Added

- **`adapters/otel/` and `adapters/sql/`** — the first production integrations as
standalone modules (each its own `go.mod`): a `runtime.Observer` over the
OpenTelemetry SDK, and a `store.Store` over `database/sql` (driver chosen by the
integrator, so none enters the core graph). The root module remains
dependency-free.

### Changed

- **Docs:** corrected the `CoralPay` / `Zone` profile descriptions to state their
Expand Down Expand Up @@ -184,7 +215,8 @@ tested under `go test -race`.
authenticates in constant time; expose it only behind appropriate network
controls.

[Unreleased]: https://github.com/teqpace-services/isopace/compare/v0.3.0...HEAD
[Unreleased]: https://github.com/teqpace-services/isopace/compare/v1.0.0-rc.1...HEAD
[1.0.0-rc.1]: https://github.com/teqpace-services/isopace/compare/v0.3.0...v1.0.0-rc.1
[0.3.0]: https://github.com/teqpace-services/isopace/compare/v0.2.0...v0.3.0
[0.2.0]: https://github.com/teqpace-services/isopace/compare/v0.1.0...v0.2.0
[0.1.0]: https://github.com/teqpace-services/isopace/releases/tag/v0.1.0
18 changes: 10 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,16 @@ It is an independent, clean-room implementation in the spirit of
zero-copy decoding, a pluggable codec catalog, and goroutine-native concurrency.
The module is **stdlib-only** — no third-party dependency in the module graph.

> **Status: `v0.3.0` — acquirer-profiles release.** Adds the `CoralPay` and
> `Zone` ISO 8583:1987 switch profiles (each a clean-room layout composed from
> public ISO 8583:1987 field semantics), a prefix-keyed SHA-256 message MAC, and a
> fixed-width `tlv` codec. Feature-complete across the planned layers and tested
> under `-race`, but pre-1.0: the API may change between minor versions (see
> [`docs/versioning.md`](docs/versioning.md)). The software `Vault` backend is
> for development/testing — production PIN and key handling require a certified
> HSM.
> **Status: `v1.0.0-rc.1` — first release candidate.** An **interim,
> feedback-seeking** tag under a "may still change" banner — not the v1.0.0
> contract yet (see the [roadmap to v1](ROADMAP-to-v1.md)). It narrows what v1
> will freeze: the **core** — `iso8583`, `packager`, `fieldcodec`,
> `lengthcodec`, `render` — is a stability candidate and the surface we want
> feedback on; the **higher layers** (`runtime`, `flow`, `space`, `store`,
> transport, `gateway`, `teq`, `vault`, `rbac`, `ops`) remain **experimental**
> until they soak. The software `Vault` backend is for development/testing —
> **production PIN and key handling require a certified HSM, which is not yet
> shipped.** Still stdlib-only; tested under `-race`.

A product of **[Teqpace Services Ltd.](https://teqpace.com)**

Expand Down
13 changes: 8 additions & 5 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ building blocks needed to run a switch.
![License](https://img.shields.io/badge/license-AGPL--3.0%20%2F%20commercial-blue)
![Go](https://img.shields.io/badge/Go-1.26-00ADD8?logo=go&logoColor=white)
![Dependencies](https://img.shields.io/badge/dependencies-stdlib--only-success)
![Status](https://img.shields.io/badge/status-v0.3.0%20·%20pre--1.0-orange)
![Status](https://img.shields.io/badge/status-v1.0.0--rc.1-orange)
</p>

[Get started :material-rocket-launch:](getting-started.md){ .md-button .md-button--primary }
Expand All @@ -36,13 +36,16 @@ access, zero-copy decoding, a pluggable codec catalog, and goroutine-native
concurrency. The module is **stdlib-only** — there is no third-party dependency
anywhere in its graph.

!!! warning "Pre-1.0 — `v0.3.0`, the acquirer-profiles release"
!!! warning "`v1.0.0-rc.1` — first release candidate (interim, may still change)"

Feature-complete across the planned layers and tested under `-race`, but the
API may change between minor versions (see the
A feedback-seeking tag under a "may still change" banner — **not the v1.0.0
contract yet** (see the [roadmap to v1](https://github.com/teqpace-services/isopace/blob/main/ROADMAP-to-v1.md)).
It narrows what v1 will freeze: the **core** (`iso8583`, `packager`,
`fieldcodec`, `lengthcodec`, `render`) is a stability candidate; the
**higher layers** remain experimental until they soak (see the
[versioning policy](versioning.md)). The software `Vault` backend is for
development and testing — **production PIN and key handling require a
certified HSM.**
certified HSM, which is not yet shipped.**

## Why Isopace

Expand Down
2 changes: 1 addition & 1 deletion examples/simulator/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ import (
"github.com/teqpace-services/isopace/runtime"
)

const version = "0.3.0"
const version = "1.0.0-rc.1"

func main() {
posAddr := flag.String("addr", "127.0.0.1:8583", "ISO-8583 listen address")
Expand Down
Binary file added simulator
Binary file not shown.
Loading