diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..8ea7608 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,72 @@ +# Changelog + +All notable changes to Signet will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +For release instructions and versioning procedures, see [`docs/RELEASING.md`](docs/RELEASING.md). + +--- + +## Deployed Contract Registry + +| Network | Contract | Contract ID | Deployed Date | Verification | +| ------------------- | ------------------- | ---------------------------------------------------------- | ------------- | -------------------- | +| **Stellar Testnet** | `identity-registry` | `CASFJHI5PQSRWS7JV25CF7FOMRKIVBP3RXRP3E2GH2CV4BCAG7FUJRCN` | — | Active (Soroban RPC) | +| **Stellar Mainnet** | `identity-registry` | _Pending deployment_ | _TBD_ | — | + +--- + +## [Unreleased] + +### Added + +- Area-based code review assignments via `.github/CODEOWNERS` ([#231](https://github.com/blockchain-maxis/signet/issues/231)). +- CI concurrency group to cancel superseded in-progress workflow runs on push ([#229](https://github.com/blockchain-maxis/signet/issues/229)). +- Release procedure documentation and versioning policy in `docs/RELEASING.md` ([#227](https://github.com/blockchain-maxis/signet/issues/227)). +- Identity Registry migration runbook in `docs/CONTRACT_MIGRATION.md` ([#308](https://github.com/blockchain-maxis/signet/pull/308)). +- Multi-device and per-address session revocation with Upstash Redis backend support ([#307](https://github.com/blockchain-maxis/signet/pull/307)). +- Contract error drift checker `scripts/check-contract-errors.mjs` guarding Rust contract error codes against UI translation sync ([#238](https://github.com/blockchain-maxis/signet/pull/238)). +- Live testnet E2E seam test for claim → resolve → profile flow ([#240](https://github.com/blockchain-maxis/signet/pull/240)). + +### Changed + +- Public SDK type surface stabilized ahead of `@signet/sdk@0.1.0` release ([#310](https://github.com/blockchain-maxis/signet/pull/310)). +- Health route `/api/health` now reports nonce and rate-limit store status dynamically ([#309](https://github.com/blockchain-maxis/signet/pull/309)). +- Connect wallet badge dynamically renders the active configured network from `NEXT_PUBLIC_STELLAR_NETWORK` ([#168](https://github.com/blockchain-maxis/signet/issues/168)). + +### Fixed + +- Added static `/handles` route to sitemap indexing ([#222](https://github.com/blockchain-maxis/signet/issues/222)). +- Smoke tests now rely on semantic heading selectors instead of brittle copy assertions ([#219](https://github.com/blockchain-maxis/signet/issues/219)). +- Extended contract instance TTL on read paths to prevent storage archival of active registries ([#242](https://github.com/blockchain-maxis/signet/pull/242)). + +--- + +## [0.1.0] — not yet tagged + + + +### Added + +- Initial release of Signet developer career record platform. +- **Identity Registry Contract** (`packages/contracts/identity-registry`): + - On-chain handle claim, transfer, and release methods with owner authorization (`require_auth`). + - Read-path TTL extension for bound records and contract instance. + - Comprehensive unit test suite and property-based invariant testing. +- **Web Application** (`apps/web`): + - Landing page, how-it-works guide, and public `/p/{handle}` profiles. + - Discovery directory at `/handles` reading direct Soroban events. + - Stellar Wallets Kit wallet connection and SEP-10 Sign-In With Stellar (SIWS) authentication. + - tRPC API endpoints for profile queries, handle resolution, and health reporting. +- **Indexer Worker** (`apps/indexer`): + - Horizon polling worker for deployment and operation indexing into PostgreSQL. + - Attestation event parser for on-chain identity binding events. +- **TypeScript SDK** (`@signet/sdk`): + - Read-only client for querying profiles, resolved handles, and platform health. diff --git a/README.md b/README.md index 8698089..a39bd27 100644 --- a/README.md +++ b/README.md @@ -196,6 +196,11 @@ set from the event stream. Both are CI gates ([`ci.yml`](.github/workflows/ci.yml)), alongside `lint`, `typecheck`, `build` and the wasm contract build. +## Releases and changelog + +- **[`CHANGELOG.md`](CHANGELOG.md)** — Record of notable changes, version history, and deployed contract addresses. +- **[`docs/RELEASING.md`](docs/RELEASING.md)** — Release procedure, Semantic Versioning policy, and tagging conventions. + ## License Signet is licensed under the Apache License 2.0 — see [`LICENSE`](LICENSE) for the diff --git a/docs/RELEASING.md b/docs/RELEASING.md new file mode 100644 index 0000000..657f22a --- /dev/null +++ b/docs/RELEASING.md @@ -0,0 +1,105 @@ +# Release Process & Versioning Policy + +This document defines the release procedure, versioning semantics, and tagging conventions for the Signet repository (`blockchain-maxis/signet`). + +--- + +## 1. Versioning Policy + +Signet follows [Semantic Versioning (SemVer 2.0.0)](https://semver.org/spec/v2.0.0.html) across all packages and on-chain contracts: `MAJOR.MINOR.PATCH`. + +```text +MAJOR (X.0.0) -> Breaking API changes, breaking contract storage layouts, or breaking schema migrations +MINOR (0.X.0) -> Backwards-compatible features, new API endpoints, non-breaking contract methods +PATCH (0.0.X) -> Backwards-compatible bug fixes, security patches, internal refactors +``` + +### Monorepo Scope Breakdown + +| Component | Scope | Version Reference | Version Impact | +| ----------------------- | --------------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | +| **`@signet/sdk`** | External TypeScript SDK | `packages/sdk/package.json` | Published to npm registry; breaking changes bump `MAJOR` | +| **`identity-registry`** | Soroban Rust contract | `packages/contracts/identity-registry/Cargo.toml` | On-chain bytecode deployed to permanent addresses; requires migration runbook if storage format changes | +| **`@signet/web`** | Next.js frontend & tRPC API | `apps/web/package.json` | Web application deployment; tracks overall platform release | +| **`@signet/indexer`** | Ingestion worker | `apps/indexer/package.json` | Background worker syncing events to Postgres | +| **`@signet/types`** | Shared type definitions | `packages/types/package.json` | Internal workspace dependency | + +--- + +## 2. Tagging Conventions + +All releases are tracked via Git tags pushed to `main`: + +- **Platform Releases**: `vX.Y.Z` (e.g. `v0.1.0`) — Tracks coordinated platform deployments. +- **SDK Package Releases**: `sdk-vX.Y.Z` (e.g. `sdk-v0.1.0`) — Tracks npm releases of `@signet/sdk`. +- **Contract Releases**: `contract-vX.Y.Z` (e.g. `contract-v0.1.0`) — Tracks verified contract build hashes and on-chain deployment references. + +--- + +## 3. Release Checklist & Step-by-Step Procedure + +### Phase 1: Pre-Release Verification + +Before tagging or releasing any component, verify that all CI gates and local suites pass cleanly: + +```bash +# 1. Monorepo lint, typecheck, tests, and build +pnpm lint +pnpm typecheck +pnpm test +pnpm build + +# 2. Documentation and error consistency checks +node scripts/check-docs.mjs +node scripts/check-contract-errors.mjs + +# 3. Contract unit tests and wasm size budget +cd packages/contracts +cargo test +cargo build --target wasm32v1-none --release +cd ../.. +``` + +### Phase 2: Update Version Numbers & Changelog + +1. Update version numbers in the target `package.json` or `Cargo.toml`. +2. Move unreleased changes in [`CHANGELOG.md`](../CHANGELOG.md) under a new dated release header `## [X.Y.Z] - YYYY-MM-DD`. +3. If a contract was deployed, record the contract ID and network in the Deployed Contract Registry table in [`CHANGELOG.md`](../CHANGELOG.md). +4. Commit the changes: + ```bash + git commit -m "chore(release): prepare vX.Y.Z release" + ``` + +### Phase 3: Tagging & GitHub Release + +Create an annotated Git tag and push it to the main repository: + +```bash +# Tag the release +git tag -a vX.Y.Z -m "Release vX.Y.Z" +git push origin vX.Y.Z + +# For SDK specific releases +git tag -a sdk-vX.Y.Z -m "Release @signet/sdk vX.Y.Z" +git push origin sdk-vX.Y.Z +``` + +Create a GitHub Release describing the changes and referencing the tag. + +### Phase 4: Package & Contract Deployment + +1. **Publishing `@signet/sdk`**: + ```bash + pnpm --filter @signet/sdk publish --access public + ``` +2. **Deploying / Upgrading Contracts**: + - Follow the migration procedures in [`docs/CONTRACT_MIGRATION.md`](./CONTRACT_MIGRATION.md) and [`docs/DEPLOYMENT.md`](./DEPLOYMENT.md). + - Verify on-chain contract initialization (`initialize(admin)`). + - Update `NEXT_PUBLIC_IDENTITY_REGISTRY_ID` in production environment variables. + +--- + +## 4. Roles & Responsibilities + +- **Who Tags & Publishes**: Releases may only be tagged and published by repository maintainers (`@blockchain-maxis`). +- **Review Requirements**: Pull requests modifying contracts, auth systems, or release workflows require approvals designated in `.github/CODEOWNERS`.