This is the maintainer operations guide for fractal-engine. The repo is a
library/runtime codebase; operational work means validating changes, managing
ignored artifacts, keeping tracked content public-safe, and recording enough
evidence for another maintainer to reproduce a result.
For ordinary changes:
git status --short
clojure -M:test
git diff --check
For docs-only changes, the offline suite may be skipped when the change does not
alter behavior. In that case, still run git diff --check and public-safety
scans on the tracked diff.
For provider-facing changes, add opt-in live validation:
clojure -M:live-test
Run live validation only with credentials that are intentionally available to the JVM and with the runtime governor configured explicitly.
For CLI/control-plane changes, validate through the shipped command seam:
clojure -M:cli help
clojure -M:cli config --config fractal.edn --pretty
clojure -M:cli run --config fractal.edn --session demo --message-file prompt.md --pretty
clojure -M:cli report --config fractal.edn --session demo --pretty
When the change affects live provider behavior or command semantics, run the full live command matrix from Live Validation and keep raw artifacts under an ignored relative directory.
Keep generated or sensitive artifacts out of tracked files. The repository already ignores common local outputs such as:
.fractal/;runs/;release-assets/;.env;Use ignored relative paths for live stores, temporary reports, and dogfood specimens. If a result needs to be tracked, create a sanitized summary rather than committing raw provider payloads, transcripts, logs, or local runtime state.
Before publishing a summary, check that it contains no:
Use a broad scan before committing public docs or reports:
git status --short
git diff --check
git grep --untracked -n -E 'secret|token|password|api[_-]?key|credential|auth' -- .
git grep --untracked -n -E '[[:alnum:]._%+-]+@[[:alnum:].-]+\.[[:alpha:]]{2,}' -- .
git grep --untracked -n -E '(^|[^[:alnum:]_])/(Users|home|var/folders)/' -- .
Review matches manually. The scan is designed to overmatch so maintainers catch mistakes before they become tracked history.
When reviewing generated reports, also inspect the staged diff directly:
git diff --cached
Do not rely only on file names; leaks often appear inside otherwise ordinary Markdown or EDN summaries.
After a live run:
Stop or close sessions through the API when the run created handles.
Confirm ignored artifacts are still ignored:
git status --short --ignored
Delete local scratch artifacts when they are no longer needed.
If keeping a specimen for later analysis, keep it under an ignored relative directory and record only a sanitized tracked summary.
Do not move raw live artifacts into tracked docs to make a report easier to review.
Release automation is tag-driven. A pushed v* tag runs
.github/workflows/release.yml at the tagged commit:
flowchart LR
Tag["Push v* tag"] --> Tests["Offline tests"]
Tests --> Jar["Build library jar"]
Jar --> Clojars["Publish to Clojars"]
Clojars --> Uber["Build CLI uberjar"]
Uber --> Smoke["java -jar target/fractal.jar help"]
Smoke --> GH["GitHub release asset"]
target/fractal.jar.Required repository secrets:
CLOJARS_USERNAMECLOJARS_PASSWORDThe release version is derived from the tag name without the leading v.
Local package checks:
clojure -T:build jar
clojure -T:build uber
java -jar target/fractal.jar help
Do not push a release tag until the branch is intentionally ready to publish. For ordinary branches or pull-request notes, report:
git status --short.When a validation run fails, record the smallest useful public-safe facts:
Keep private run material in ignored local storage. Tracked incident notes should be enough to reproduce the class of failure without exposing credentials, private inputs, or machine-specific details.
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |