Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
9820a7f
chore: add Psyche G2 foundation crates
BunsDev Aug 8, 2026
3926cea
feat(core): add canonical contract primitives
BunsDev Aug 8, 2026
0b6de09
feat(core): define minimum Psyche v1 records
BunsDev Aug 8, 2026
b7ad038
fix(core): close v1 record validation gaps
BunsDev Aug 8, 2026
24765ee
fix(core): preserve canonical numeric identity
BunsDev Aug 8, 2026
e1d2d44
fix(core): validate every serialized integer
BunsDev Aug 8, 2026
4e75c2d
fix(core): harden canonicalization failures
BunsDev Aug 8, 2026
ba25a69
fix(core): canonicalize one validated serialization
BunsDev Aug 8, 2026
830dbcb
fix(core): canonicalize each source once
BunsDev Aug 8, 2026
4309a95
feat(core): fail closed on unsupported records
BunsDev Aug 8, 2026
7abcd27
fix(core): reject ambiguous canonical JSON
BunsDev Aug 8, 2026
a6c43f7
fix(core): support arbitrary precision safely
BunsDev Aug 8, 2026
a570bb8
fix(core): preserve decode rejection precedence
BunsDev Aug 8, 2026
bb39342
fix(core): reject nested duplicate keys
BunsDev Aug 8, 2026
5dc3b69
feat(store): add forward-only foundation migration
BunsDev Aug 8, 2026
26c2207
fix(core): enforce strict direct JSON validation
BunsDev Aug 8, 2026
0695e24
fix(store): harden database open authority
BunsDev Aug 8, 2026
b0e39e4
fix(store): harden foundation database open
BunsDev Aug 8, 2026
7a469f5
fix(store): serialize database initialization
BunsDev Aug 8, 2026
dd1e100
fix(store): keep error chains payload-free
BunsDev Aug 8, 2026
a5453f4
feat(store): persist records and revisions
BunsDev Aug 8, 2026
44feeb0
fix(store): fail closed across database recovery
BunsDev Aug 8, 2026
e64751a
fix(store): validate persisted revision chains
BunsDev Aug 8, 2026
d3092b5
fix(store): restore approved database open contract
BunsDev Aug 8, 2026
f92181b
fix(store): freeze canonical timestamp representations
BunsDev Aug 8, 2026
cee705c
fix(store): authenticate transition history
BunsDev Aug 8, 2026
416e3be
fix(store): reinstate fail-closed recovery
BunsDev Aug 8, 2026
e1960fe
feat(store): add quarantine and safe retention
BunsDev Aug 8, 2026
a2910d8
fix(store): retain approved database path policy
BunsDev Aug 8, 2026
dcdc68c
test(store): cover cancellation evidence mutations
BunsDev Aug 8, 2026
d23668f
test(store): preserve Task 7 gate names
BunsDev Aug 8, 2026
d26d078
fix(store): validate quarantine audit integrity
BunsDev Aug 8, 2026
9ddb9b5
fix(store): snapshot quarantine integrity reads
BunsDev Aug 8, 2026
e036039
fix(store): persist quarantine integrity metadata
BunsDev Aug 8, 2026
1a6da58
fix(store): preserve frozen quarantine schema
BunsDev Aug 8, 2026
dcb8d4a
Revert "fix(store): preserve frozen quarantine schema"
BunsDev Aug 8, 2026
c6afa77
Revert "fix(store): retain approved database path policy"
BunsDev Aug 8, 2026
c0992ba
fix(store): bind immutable quarantine metadata
BunsDev Aug 8, 2026
ebc84e1
fix(store): validate quarantine before dedupe
BunsDev Aug 8, 2026
c3afb36
feat(ports): add deterministic behavior boundaries
BunsDev Aug 8, 2026
536a83b
feat(ports): add behavior-level fakes
BunsDev Aug 8, 2026
cc9b6d4
feat(ports): add behavior-level fakes
BunsDev Aug 8, 2026
5bba548
feat(ports): add behavior-level fakes
BunsDev Aug 8, 2026
41affe3
fix(ports): enforce durable scripted outcomes
BunsDev Aug 8, 2026
11fd8cb
fix(ports): honor durable lookup contracts
BunsDev Aug 8, 2026
8296d1a
fix(test): expose adapter-neutral observations
BunsDev Aug 8, 2026
262aa62
fix(test): harden durable conformance fakes
BunsDev Aug 8, 2026
4bfe0f3
fix(test): isolate termination replay scripts
BunsDev Aug 8, 2026
2483438
fix(ports): bind authority and session evidence
BunsDev Aug 8, 2026
671f94f
test(conformance): add reusable foundation suites
BunsDev Aug 8, 2026
8525629
test(g2): add reusable state-machine suites
BunsDev Aug 8, 2026
3f485fc
test(g2): prove store crash and migration atomicity
BunsDev Aug 8, 2026
86d2a0a
feat(runtime): bind lifecycle to durable store
BunsDev Aug 8, 2026
0195401
test(runtime): align G2 checkpoint evidence name
BunsDev Aug 8, 2026
b39b6d7
chore(msrv): raise Psyche MSRV to 1.88
BunsDev Aug 8, 2026
782208d
docs: wire Psyche G2 evidence
BunsDev Aug 8, 2026
31eba3d
fix: authenticate local store foundation
BunsDev Aug 8, 2026
25abbfb
docs: freeze delivery v1 field order
BunsDev Aug 8, 2026
a22e995
fix: harden store trust boundary
BunsDev Aug 8, 2026
94fe926
test: escape runtime config paths portably
BunsDev Aug 8, 2026
22824e4
test: serialize runtime paths as TOML
BunsDev Aug 9, 2026
72b9223
test: isolate runtime store fixtures
BunsDev Aug 9, 2026
b4e0a1c
test: normalize G2 evidence lifecycle fixtures
BunsDev Aug 9, 2026
f0bd56d
docs: attest Psyche G2 evidence
BunsDev Aug 9, 2026
75877d7
fix: verify G2 evidence in shallow CI
BunsDev Aug 9, 2026
29842fa
docs: attest Psyche G2 evidence
BunsDev Aug 9, 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
52 changes: 26 additions & 26 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,20 +23,12 @@ jobs:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v4
# Pinned to the MSRV rather than `@stable`, and stated explicitly rather
# than left to the action's default: `rust-toolchain.toml` already pins
# 1.85.0 and takes precedence over whatever cargo is invoked through, so
# `@stable` would download a toolchain the build then never uses — a
# slower job that silently tests nothing about the version we ship.
# The two pins must agree; Step 4 is what catches it if they drift.
#
# Verified: this action runs `rustup default <toolchain>` and does NOT
# export RUSTUP_TOOLCHAIN, so `rust-toolchain.toml` really does win. That
# is why the pin here is documentation rather than mechanism — and why the
# `supply-chain` job below has to escape it explicitly.
# `rust-toolchain.toml` controls the cargo/rustc version used in this
# checkout. The action pin avoids a redundant download; keep both pins
# aligned with the workspace MSRV.
- uses: dtolnay/rust-toolchain@master
with:
toolchain: "1.85.0"
toolchain: "1.88.0"
components: rustfmt, clippy
# `RUSTFLAGS` is part of this action's cache key (it hashes every env var
# whose name starts with CARGO/CC/CFLAGS/CXX/CMAKE/RUST). Setting it at
Expand All @@ -50,27 +42,35 @@ jobs:
run: cargo clippy --workspace --all-targets -- -D warnings
- name: Tests
run: cargo test --workspace --locked
- name: G2 state machine (fixed seed)
env:
PROPTEST_CASES: "2048"
PROPTEST_RNG_SEED: "00000000000000000000000000000000"
run: cargo test -p psyche-test-support --test state_machine
- name: G2 reusable conformance
run: cargo test -p psyche-test-support --test conformance
- name: G2 migrations
run: cargo test -p psyche-store --test migrations
- name: G2 crash recovery
run: cargo test -p psyche-store --features test-fault-injection --test crash
- name: G2 fault-injection clippy
run: cargo clippy -p psyche-store --all-targets --features test-fault-injection -- -D warnings
- name: G2 evidence checker unit tests
run: python3 scripts/check-g2-evidence-test.py
- name: G2 evidence relationships
env:
GH_TOKEN: ${{ github.token }}
run: python3 scripts/check-g2-evidence.py

supply-chain:
name: Dependency audit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# NOT the MSRV pin, unlike the `rust` job. cargo-deny is a tool we run
# against the tree, not something we ship, so its build toolchain says
# nothing about what we support. It also cannot use the pin: cargo-deny
# 0.19.8 declares rust-version 1.88.0, and `cargo install` under 1.85.0
# refuses outright —
# error: cannot install package `cargo-deny`, it requires rustc 1.88.0
# or newer, while the currently active rustc version is 1.85.0
# No `components`: this job never runs fmt or clippy.
# cargo-deny is tooling, not a shipped dependency. The action and the
# explicit `+stable` install select its toolchain independently of the
# workspace pin. No components are needed here.
- uses: dtolnay/rust-toolchain@stable
# `+stable` is load-bearing, not decoration. `rust-toolchain.toml` sits at
# the repo root and outranks `rustup default`, so a bare `cargo install`
# here would run under 1.85.0 and hit the error above no matter which
# toolchain the step above installed. An explicit `+toolchain` is the one
# thing that outranks the toolchain file.
#
# Installed directly rather than via a third-party action: it is the same
# binary and the same command engineers run locally in Task 7 Step 2, so
# there is no CI-only path, and it adds no extra action to trust. Pinned
Expand Down
Loading
Loading