Repository navigation
Releases
v0.2.0
What's Changed
- docs: state the first release and the found cause of the Windows module by @lusoris in #7
- chore: configure the update bot with the family preset and license its file by @lusoris in #9
- fix: skip the module byte comparison on a macOS host under the dated entry by @lusoris in #12
- chore(deps): update rust crate thiserror to v2.0.21 by @renovate[bot] in #10
- chore: name the shared CI repository by its new address in the update bot file by @lusoris in #13
- ci: build the gate engine from Praetor 6622361940dc by @lusoris in #14
- test: fail a Go test whose engine does not close cleanly by @lusoris in #15
- ci: build the gate engine from Praetor 3bbde07342bd and scan for secrets by @lusoris in #16
- test: plant a defect for every gate check that was never seen failing by @lusoris in #17
- test: hold the checkpoint hook scripts to the pinned engine and its tests by @lusoris in #18
- ci: hold changed settings to their source on the pull request by @lusoris in #19
- test: hold the wasm crate's public pieces and the Go engine's edges directly by @lusoris in #20
- test: compile and run the README's Go blocks in a consumer module by @lusoris in #22
- test: replay a chain the v0.1.0 module stored by @lusoris in #23
- test: hold a trap of the module to a blocked engine by @lusoris in #24
- ci: hold the Go that runs the binding's tests to its declared minimum by @lusoris in #26
- test: hold the two modes to their speed and their architectures by @lusoris in #27
- ci: pack the library crate in the gate as the release does by @lusoris in #25
- chore(deps): update rust crate serde_json to v1.0.152 by @renovate[bot] in #21
- ci: declare the pinned toolchain as the workspace rust-version by @lusoris in #28
- feat: adopt the Praetor docs:seo-portal facet by @lusoris in #30
- feat: compare the committed module up to function order by @lusoris in #31
- ci: build the gate engine from Praetor 82cd4ed60de9 by @lusoris in #33
- chore: extend the public horistes presets in renovate.json by @lusoris in #34
- chore(agents): give the engine personas their model tier by @lusoris in #36
- chore: take Rust 1.99.0 from the settings source by @lusoris in #37
- chore(deps): update rust crate wasmparser to v0.261.0 by @renovate[bot] in #32
- fix: drop milestone and decision numbers from crate sources by @lusoris in #38
- chore(deps): update rust crate wasmparser to v0.262.0 by @renovate[bot] in #40
- chore(deps): update rust crate serde_json to v1.0.154 by @renovate[bot] in #35
- chore(deps): update rust crate sha2 to v0.11.1 by @renovate[bot] in #39
- ci: regenerate the module and notices on dependency updates by @lusoris in #41
- ci(release): read the files back with the shared read-back by @lusoris in #42
- chore(deps): update dependency sigstore/cosign to v2.6.5 by @renovate[bot] in #43
- chore(deps): update dependency sigstore/cosign to v3 by @renovate[bot] in #44
- ci: lint the Go binding with golangci-lint and its complexity checks by @lusoris in #45
- ci: run semgrep and trivy in the gate with planted findings by @lusoris in #46
- refactor(tools): share the check helpers in one module by @lusoris in #50
- ci: keep the semgrep lock coherent by @lusoris in #53
- ci: give gosec its pinned configuration and clear its findings by @lusoris in #54
- ci(release): publish both crates to crates.io and tag the Go module by @lusoris in #56
- ci: hold the semgrep interpreter at the newest Python semgrep supports by @lusoris in #57
- chore(exceptions): name the measured cause of the Windows module gap by @lusoris in #58
- chore: pin the Praetor engine for hooks and CI, refresh adopted files by @lusoris in #59
- test: adopt cargo-mutants on changed code and close the survivors by @lusoris in #60
- refactor(tests): read the dependency closure through cargo_metadata by @lusoris in #61
- ci(semgrep): write the lock header in the form Renovate parses by @lusoris in #62
- ci: hold the public Rust API to the last release with cargo-semver-checks by @lusoris in #63
- build(wasm): build the Windows data section, retire its exception by @lusoris in #64
- chore: take Rust 1.99.1 from the settings source by @lusoris in #66
- chore(release): set the workspace version to 0.2.0 by @lusoris in #65
- fix(release): fetch the crates of every platform before the module check by @lusoris in #67
New Contributors
Full Changelog: v0.1.0...v0.2.0
v0.2.0-rc.1
What's Changed
- docs: state the first release and the found cause of the Windows module by @lusoris in #7
- chore: configure the update bot with the family preset and license its file by @lusoris in #9
- fix: skip the module byte comparison on a macOS host under the dated entry by @lusoris in #12
- chore(deps): update rust crate thiserror to v2.0.21 by @renovate[bot] in #10
- chore: name the shared CI repository by its new address in the update bot file by @lusoris in #13
- ci: build the gate engine from Praetor 6622361940dc by @lusoris in #14
- test: fail a Go test whose engine does not close cleanly by @lusoris in #15
- ci: build the gate engine from Praetor 3bbde07342bd and scan for secrets by @lusoris in #16
- test: plant a defect for every gate check that was never seen failing by @lusoris in #17
- test: hold the checkpoint hook scripts to the pinned engine and its tests by @lusoris in #18
- ci: hold changed settings to their source on the pull request by @lusoris in #19
- test: hold the wasm crate's public pieces and the Go engine's edges directly by @lusoris in #20
- test: compile and run the README's Go blocks in a consumer module by @lusoris in #22
- test: replay a chain the v0.1.0 module stored by @lusoris in #23
- test: hold a trap of the module to a blocked engine by @lusoris in #24
- ci: hold the Go that runs the binding's tests to its declared minimum by @lusoris in #26
- test: hold the two modes to their speed and their architectures by @lusoris in #27
- ci: pack the library crate in the gate as the release does by @lusoris in #25
- chore(deps): update rust crate serde_json to v1.0.152 by @renovate[bot] in #21
- ci: declare the pinned toolchain as the workspace rust-version by @lusoris in #28
- feat: adopt the Praetor docs:seo-portal facet by @lusoris in #30
- feat: compare the committed module up to function order by @lusoris in #31
- ci: build the gate engine from Praetor 82cd4ed60de9 by @lusoris in #33
- chore: extend the public horistes presets in renovate.json by @lusoris in #34
- chore(agents): give the engine personas their model tier by @lusoris in #36
- chore: take Rust 1.99.0 from the settings source by @lusoris in #37
- chore(deps): update rust crate wasmparser to v0.261.0 by @renovate[bot] in #32
- fix: drop milestone and decision numbers from crate sources by @lusoris in #38
- chore(deps): update rust crate wasmparser to v0.262.0 by @renovate[bot] in #40
- chore(deps): update rust crate serde_json to v1.0.154 by @renovate[bot] in #35
- chore(deps): update rust crate sha2 to v0.11.1 by @renovate[bot] in #39
- ci: regenerate the module and notices on dependency updates by @lusoris in #41
- ci(release): read the files back with the shared read-back by @lusoris in #42
- chore(deps): update dependency sigstore/cosign to v2.6.5 by @renovate[bot] in #43
- chore(deps): update dependency sigstore/cosign to v3 by @renovate[bot] in #44
- ci: lint the Go binding with golangci-lint and its complexity checks by @lusoris in #45
- ci: run semgrep and trivy in the gate with planted findings by @lusoris in #46
- refactor(tools): share the check helpers in one module by @lusoris in #50
- ci: keep the semgrep lock coherent by @lusoris in #53
- ci: give gosec its pinned configuration and clear its findings by @lusoris in #54
- ci(release): publish both crates to crates.io and tag the Go module by @lusoris in #56
- ci: hold the semgrep interpreter at the newest Python semgrep supports by @lusoris in #57
- chore(exceptions): name the measured cause of the Windows module gap by @lusoris in #58
- chore: pin the Praetor engine for hooks and CI, refresh adopted files by @lusoris in #59
- test: adopt cargo-mutants on changed code and close the survivors by @lusoris in #60
- refactor(tests): read the dependency closure through cargo_metadata by @lusoris in #61
- ci(semgrep): write the lock header in the form Renovate parses by @lusoris in #62
- ci: hold the public Rust API to the last release with cargo-semver-checks by @lusoris in #63
- build(wasm): build the Windows data section, retire its exception by @lusoris in #64
- chore: take Rust 1.99.1 from the settings source by @lusoris in #66
- chore(release): set the workspace version to 0.2.0 by @lusoris in #65
- fix(release): fetch the crates of every platform before the module check by @lusoris in #67
New Contributors
Full Changelog: v0.1.0...v0.2.0-rc.1
v0.1.0
First release of amussis-decision: a decision engine that gives a proposed action a risk level, holds it for a second person's approval where the level asks for one, writes every decision to a tamper-evident log, and has a kill switch.
Amussis is Latin for the mason's levelling board (ad amussim: "exactly"), pronounced ah-MOOS-sis. The engine comes from the operating-system repository cordanaLLM/Aegis-OS, where it is the crate aegis-justitia.
Use it
The files are on this page and on no package registry. Depend on the tag from Rust:
[dependencies]
amussis-decision = { git = "https://github.com/plurano/amussis", tag = "v0.1.0" }The Go binding embeds the engine as a WebAssembly module and needs no cgo. It has no module tag yet, so depend on the commit of this release:
go get github.com/plurano/amussis/bindings/go@c98aea06b6e12b93dde36c790e4a43ea2ec4e508Both lines were built and run against this release on Linux amd64 (Go 1.27.1, fetched directly from the forge).
Files
| File | What it is |
|---|---|
amussis-decision-0.1.0.crate |
The library as cargo package packs it. |
amussis-decision-0.1.0.wasm |
The module the Go binding embeds, rebuilt from the tag and compared byte for byte. |
amussis-decision-0.1.0.wasm.third-party-notices.txt |
The notices of every crate the module links and of the Rust standard library. |
amussis-decision-0.1.0.cyclonedx.json, .spdx.json |
The dependencies of the packed crate. |
checksums.txt, checksums.txt.sigstore.json |
The SHA-256 of the five files above, and the signature over that list. |
Check the files
sha256sum --check --strict checksums.txt
cosign verify-blob \
--certificate-identity https://github.com/plurano/amussis/.github/workflows/release-build.yml@refs/tags/v0.1.0 \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
--bundle checksums.txt.sigstore.json checksums.txt
gh attestation verify amussis-decision-0.1.0.crate --repo plurano/amussis \
--signer-workflow plurano/amussis/.github/workflows/release-build.ymlThe release run made the same three checks before it stored the files: each once on the file as built, and once on a changed copy or against the wrong workflow, which had to be refused.
Limits
- The library ships no durable store: the host supplies the sink, the signer and the clock. A file-backed store is planned for 0.2.0.
- Actions an earlier engine held are not carried over a restart from the stored log.
- A running engine has no call that lifts a halt; a halt is released by a restart from the stored log with an approval.
- The Go binding has run on Linux amd64, macOS arm64 and Windows amd64 only. A Windows host cannot rebuild the bytes of the committed module (#2).
The README has the interface, the tests behind each statement and the full list of limits.
v0.1.0-rc.1
What's Changed
- ci: run the gate on Linux, macOS and Windows as three required checks by @lusoris in #3
- ci: record the module build on three hosts to find why Windows differs by @lusoris in #4
New Contributors
Full Changelog: https://github.com/plurano/amussis/commits/v0.1.0-rc.1