Discuss & contribute
Comment on any page
Section titled “Comment on any page”Every page on this site has a public comment box at the bottom, powered by
giscus and backed by GitHub Discussions on
muthuishere/cljgo. Sign in with your GitHub account and comment — each page
maps to its own discussion thread, and everything is visible to everyone at
github.com/muthuishere/cljgo/discussions.
Questions, corrections, and “this didn’t work on my machine” reports are all
welcome there.
File an issue
Section titled “File an issue”Bugs and feature requests go to
github.com/muthuishere/cljgo/issues.
For a bug, the ideal report is a minimal .clj file plus the output of both
legs — cljgo run file.clj and the compiled binary from
cljgo build file.clj — since any divergence between them is treated as a
release blocker. cljgo check file.clj --json output helps too: errors carry
registered diagnostic codes (see
error codes & diagnostics).
Where the decisions live
Section titled “Where the decisions live”cljgo is decision-logged. If you want to know why something is the way it is, the sources in the repo are, in authority order:
docs/adr/— the ADR decision log. Every non-trivial decision is a numbered ADR; decisions are superseded by newer ADRs, never edited away.design/00-architecture.md— cross-component contracts and the M0–M5 roadmap;design/01–07cover component internals (reader, data structures, analyzer/eval, emitter, interop, concurrency), anddesign/08is the Zig-model build/comptime direction.openspec/— active change proposals.
The architecture page is the guided tour.
The conformance discipline
Section titled “The conformance discipline”The bar for correctness is not “looks right” — it is JVM Clojure 1.12.5, the
semantic oracle. Every semantic behavior gets a file in conformance/tests/
with frozen expected output, verified against real JVM Clojure via the
clojure CLI and cited in a comment. The same files run twice on every
commit — once through the tree-walk evaluator and once AOT-compiled — and the
outputs must match byte-for-byte. A REPL↔binary divergence is the one
unforgivable failure mode.
If you contribute a semantic change, that is the shape it takes: a
conformance file, oracle-cited, passing on both harnesses. The repo gates
(go build ./... && go vet ./... && gofmt -l … && go test ./...) run before
every commit.
Start somewhere
Section titled “Start somewhere”- New here? Why cljgo, then install and the quickstart.
- Checking compatibility claims? Compatibility and benchmarks — every number is reproducible from the repo.
Questions or feedback on this page? Comment below with your GitHub account — comments are public and live in the project's GitHub Discussions.