mirror of
https://github.com/luxfi/pulsar.git
synced 2026-09-24 00:25:52 +00:00
Per ~/.claude/CLAUDE.md ("papers/proofs/audits stay in LaTeX, never .md"
+ "NEVER write random summary files"), the six NIST MPTC submission
deliverables move from docs/ Markdown into spec/ LaTeX as
\input{...} chapters of pulsar-m.tex:
docs/nist-mptc-category.md -> spec/nist-mptc-category.tex
docs/patent-notes-draft.md -> spec/patent-notes.tex
docs/threat-model.md -> spec/threat-model.tex
docs/known-limitations.md -> spec/known-limitations.tex
docs/family-architecture.md -> spec/family-architecture.tex
docs/design-decisions.md -> spec/design-decisions.tex
Content preserved verbatim; only LaTeX-syntax stylistic edits.
pulsar-m.tex now \inputs each as its own section / appendix.
Go-source comments that referenced docs/* updated to spec/*.tex.
README + CONTRIBUTING refreshed.
GOWORK=off go test -count=1 ./... clean.
2.5 KiB
2.5 KiB
Contributing to Pulsar-M
What we accept
This is a NIST-MPTC-track repository. Until the 2026-Nov-16 package submission, contributions that align with the MPTC submission are highest priority:
- Specification clarity — text edits that disambiguate
spec/*.tex. - Reference implementation —
ref/go/. Boring, clear, no assembly, no clever abstractions. Match the spec section-by-section. - Test vectors —
vectors/*.json. Cross-validate against the FIPS 204 reference (output interchangeability is the headline claim). - Constant-time analysis —
ct/dudect/. Show, don't claim. - Lattice-estimator runs —
estimator/. Concrete classical + quantum security-strength tables. - Cryptanalysis — open an issue. We track external review explicitly.
What we don't accept
Until after the MPTC submission lands:
- New protocol features. Spec freeze is hard.
- Optimized implementations (AVX2, SIMD, hand-rolled assembly).
- HSM integration patches.
- Production-deployment patches.
- BLAKE3 hash-suite changes — the NIST profile uses SHAKE/cSHAKE/KMAC
exclusively. BLAKE3 deltas land in upstream
luxfi/pulsar, not here.
These reopen post-submission.
Process
- Open an issue first. Discuss the change before implementing.
- One concern per PR. Don't bundle spec edits with implementation changes. The MPTC review process treats them as separate artifacts.
- CI must pass. Build, test, KAT regeneration, dudect, lattice-estimator all green before merge.
- Sign your commits. GPG-signed, real name in
Signed-off-by. Patent-claim disclosures attach to commits.
Development setup
git clone https://github.com/luxfi/pulsar-m
cd pulsar-m
./scripts/build.sh
./scripts/test.sh
Spec build requires LaTeX (TeX Live 2024+):
cd spec/
latexmk -pdf pulsar-m.tex
Coding standards (Go reference)
- Go 1.22+.
- All logging via
github.com/luxfi/log. Nolog.Println,log.Fatalf,fmt.Printfin code that touches a secret. - All secret comparison via
crypto/subtleor local constant-time helpers. - All sampling via the central
pkg/samplinginterface. Directmath/randis forbidden. - Errors carry context via
fmt.Errorf("%w", err)not bare panics.
License
By contributing, you agree your contribution is licensed under Apache-2.0 and grant the patent license described in the Apache 2.0 §3.
For NIST MPTC submission: contributions are subject to the patent-claim
disclosures collected in spec/patent-notes.tex.