Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
3384881
chore(rust): scaffold the cargo workspace, pin the 1.99.1 toolchain a…
chappie-daemon Oct 17, 2026
519d476
feat(core): carry the domain type surface with labelled stubs
chappie-daemon Oct 17, 2026
96938e9
feat(config): implement the settings family end to end
chappie-daemon Oct 17, 2026
4895d67
style(rust): apply cargo fmt
chappie-daemon Oct 17, 2026
ea3a1de
fix(config): satisfy clippy across the crate
chappie-daemon Oct 17, 2026
2b9ce50
feat(storage): repository traits, backend resolution and the LMDB env…
chappie-daemon Oct 17, 2026
fbd82d8
feat(relay): wire-handler and event-strategy skeletons
chappie-daemon Oct 17, 2026
cf66de6
feat(services): service, payment-processor and monitor skeletons
chappie-daemon Oct 17, 2026
13ab185
feat(admin): controller, route and middleware skeletons
chappie-daemon Oct 17, 2026
75d3964
feat(cli): the config subcommands and the command skeleton
chappie-daemon Oct 17, 2026
d405463
feat(daemon): the nostreamd runtime with a single acceptor and drain-…
chappie-daemon Oct 17, 2026
05ccde9
chore(ci): the Rust Checks job, ADR 0001 and the Rust ignore entries
chappie-daemon Oct 17, 2026
abe1952
fix(daemon): no expect in the signal path (strict clippy)
chappie-daemon Oct 17, 2026
9666b32
fix(ci): check rewrite/main on push (spec R21.4)
chappie-daemon Oct 17, 2026
b23c027
fix(storage,core,relay): dyn-compatible repository traits and review …
chappie-daemon Oct 17, 2026
e81b331
fix(daemon,core): serve on the defaults, wire --log-level, surface wo…
chappie-daemon Oct 17, 2026
60b3560
fix(admin,daemon,ci): the full admin surface, corrected ADR premise, …
chappie-daemon Oct 17, 2026
f4ee642
fix(config,core): type the secret-bearing fields as Secret
chappie-daemon Oct 17, 2026
5ec1efb
fix(config): keep operator scalars out of the typed-schema message; r…
chappie-daemon Oct 17, 2026
33dd646
fix(daemon): --check returns before telemetry and serve (round-3 P0)
chappie-daemon Oct 17, 2026
c3d1cb0
fix(config,core): subtree-rooted redaction, file-as-config-dir findin…
chappie-daemon Oct 17, 2026
e6759b5
fix(storage,ci): every heed precondition named and located; checkout …
chappie-daemon Oct 17, 2026
e48bf97
fix(core): allow the formatting-only carrier fields (clippy)
chappie-daemon Oct 17, 2026
1be80b2
fix(config,daemon,storage): round-4 review items
chappie-daemon Oct 17, 2026
bb659c0
fix(config): accept a symlinked config dir; find dangling links with …
chappie-daemon Oct 17, 2026
725bb39
fix(config): trim separator bytes, not components, in the lstat helper
chappie-daemon Oct 17, 2026
9489c3f
fix(config): drop the duplicate OsStrExt import (clippy)
chappie-daemon Oct 17, 2026
893ba79
fix(config): make the windows trim safe and cover it on every platform
chappie-daemon Oct 17, 2026
1a5eac2
fix(capture): resolve ts-node from the capture tree
chappie-daemon Oct 17, 2026
38023f2
fix(config): parse webhook URLs with the WHATWG URL parser
chappie-daemon Oct 17, 2026
1d954a2
fix(config): refuse what the loader cannot read or cannot hold
chappie-daemon Oct 17, 2026
54e6514
fix(config): name the period, not the valid rate, when both are fract…
chappie-daemon Oct 18, 2026
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
11 changes: 11 additions & 0 deletions .changeset/rust-foundation-005.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
---

fix(config): name the field whose number does not fit, not a valid neighbour

The loader's numeric walk read a field's type off the serialized defaults, where
`serialize_js_number` writes an integral `f64` as an integer because that is how
JavaScript represents it. So a valid `targetEventsPerSecond: 10.5` beside a
fractional `periodMs` was refused as "must be a whole number" while the actual
bad field went unreported. Every `f64` the schema declares is now restored to its
declared type before the walk runs, and a guard test keeps that list complete.
4 changes: 4 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,7 @@ postgresql.conf
test/integration/docker-compose.yml
# website tooling (not part of the relay image)
website

# Rust workspace (not part of the relay image)
crates
target
47 changes: 47 additions & 0 deletions .github/workflows/checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ on:
push:
branches:
- main
- rewrite/main

concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
Expand All @@ -20,6 +21,7 @@ jobs:
pull-requests: read
outputs:
src: ${{ steps.filter.outputs.src }}
rust: ${{ steps.filter.outputs.rust }}
steps:
- uses: actions/checkout@v4
with:
Expand All @@ -39,6 +41,15 @@ jobs:
- 'Dockerfile*'
- 'docker-compose*.yml'
- '.nvmrc'
- 'resources/default-settings.yaml'
- '.github/workflows/checks.yml'
rust:
- 'crates/**'
- 'Cargo.toml'
- 'Cargo.lock'
- 'rust-toolchain.toml'
- 'resources/default-settings.yaml'
- 'scripts/rust.sh'
- '.github/workflows/checks.yml'

commit-lint:
Expand Down Expand Up @@ -207,6 +218,42 @@ jobs:
github-token: ${{ secrets.GITHUB_TOKEN }}
parallel-finished: true

rust-checks:
name: Rust Checks
runs-on: ubuntu-latest
needs: changes
if: needs.changes.outputs.rust == 'true'
permissions:
contents: read
steps:
# SHA-pinned (v4.4.0) with the workflow token not persisted into the clone — the
# other two Rust actions are pinned the same way; the pre-existing Node jobs keep
# their own checkout lines.
- name: Checkout
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
with:
persist-credentials: false
# rust-toolchain.toml is read automatically by the action's discovery (no toolchain-file
# input exists; passing one only warns). Both actions are SHA-pinned per the house
# convention the docker/* actions below already follow.
- name: Install Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@166cdcfd11aee3cb47222f9ddb555ce30ddb9659 # v1.17.0
- name: Cache cargo
uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2
- name: Check formatting
run: cargo fmt --all --check
- name: Clippy (all targets)
run: cargo clippy --workspace --all-targets --all-features -- -D warnings
- name: Clippy (strict, lib+bins)
run: >-
cargo clippy --workspace --lib --bins --all-features --
-D warnings -D clippy::unwrap_used -D clippy::expect_used
-D clippy::todo -D clippy::unimplemented -D clippy::panic
- name: Tests
run: cargo test --workspace --all-features
- name: Release build
run: cargo build --workspace --all-features --release

changeset-check:
name: Changeset Required
runs-on: ubuntu-latest
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -52,3 +52,6 @@ docker-compose.overrides.yml

# Code coverage report output
coverage-report/

# Rust
/target/
Loading
Loading