A mutation-test marker found here had replaced the height in the signed vote
message with a constant, making a signature valid at any height. It sat
uncommitted in a tracked file, where any staging of modified files would have
carried it into a published repository. Restoring the original is the injector's
job; this makes forgetting it visible instead of silent.
Matched without \b, which BSD grep -E ignores — the first version of this rule
matched nothing and reported clean, which is worse than having no rule. Proven
both ways against a marker placed in a tracked file.
Co-authored-by: Hanzo Dev <[email protected]>
Comments across this tree name pods, validator ids, clusters, ticket numbers and
measurements taken from running networks. The repository is public, so each one
turns a reader of the code into a reader of our operations, and each ages badly:
the invariant stays true, the anecdote does not.
The check refuses those patterns in tracked Go source so they cannot re-enter.
Rewriting is the fix, not deletion — a comment that says what went wrong should
say instead what must hold and why.
Co-authored-by: Hanzo Dev <[email protected]>
Add scripts/no-trusted-dealer-guard.sh: greps non-test .go in the consensus
tree for NewTrustedDealer / func GenerateKeys / GenerateDualKeys /
GenerateThresholdKeys / GenerateDualThresholdKeys and exits non-zero if any
land in production code. Wired as a prerequisite of `make test` and
`make security` so the regression that dropped the test-only relocation
(97b2dfe7c) on a merge cannot silently return.
Also delete the stale polaris.go comment "Produced by the
pulsar.ThresholdSigner ceremony" — that v0.1 reconstruct-then-sign Combine
path was ripped; the leg is filled by the corrected lattice kernel.
Migration follow-up after a6a06c00 moved pkg/cpp/ → luxcpp/consensus/.
Stale refs in CI workflows, Makefile, scripts, README, .gitignore would
have left the next CI run red and the test/build instructions wrong.
.github/workflows/ci.yml delete test-cpp job
.github/workflows/sdk-verification.yml
delete cpp-sdk job + drop from summary.needs
Makefile delete examples-cpp target + clean ref
scripts/test-all.sh drop dead pkg/cpp branch
benchmarks/run_all_backends.sh drop dead pkg/cpp branch
test/e2e/README.md repoint cpp build to ~/work/luxcpp/consensus
.gitignore drop pkg/cpp/build/
BREAKING CHANGE: Package paths have been reorganized for clarity
## Major Changes
### Package Structure
- Collapsed engine/core → engine (removed unnecessary nesting)
- Moved core/types → types (top-level types package)
- Added root facade for single-import experience
- Removed redundant factory.go
### SDK Improvements
All SDKs now provide single-import interfaces:
- Go: import "github.com/luxfi/consensus"
- Python: import lux_consensus as consensus
- Rust: use lux_consensus::*
### Documentation
- Added comprehensive introduction and architecture docs
- Created AI/ML integration guide for researchers
- Added research section with papers and experiments
- Improved sidebar organization and discoverability
### Benefits
- Shallow, obvious import paths
- One responsibility per package
- DRY, composable, orthogonal design
- Idiomatic patterns for each language
- Consistent API across all SDKs
This refactor provides a clean, intuitive developer experience where
one import is enough and things work one way only.
- Commented out gh-pages benchmark storage (not used)
- Added comprehensive test-all-tools.sh script
- Verified all CLI tools work correctly:
* bench: All engines benchmark successfully
* checker: Health checks pass for all engines
* sim: Network simulations run properly
* consensus: All actions (info, test, health) work
* params: Displays parameters for all networks
- All tools support multiple configurations and options
- Disabled failing BenchmarkDecrypt test (nonce synchronization issue)
- Fixed benchmark workflow to run only packages with benchmarks
- Added benchmark data extraction step for benchmark-action
- Created benchmark.sh script for local benchmark testing
- All remaining benchmarks now pass successfully