Repository navigation
Releases: Juneo-Lab/decision-forge
Releases · Juneo-Lab/decision-forge
Release list
Decision Forge v0.3.2
Version 0.3.2 keeps published families in their splits across dataset versions and sends rule
conflicts that appear only at generated dimension values to review. Both fixes change what builds and
reviews produce: commit the new project.splits.lock.json next to each specification, regenerate
plan-recipe plans, and record conflict reviews again.
Changed
- Consolidate duplicated pipeline, CLI, ingestion, provider, and workflow code without changing any
dataset, export, plan, review fingerprint, or ingestion output, and cover twelve CLI failure paths. - Update GitHub Actions, mypy, and pre-commit hooks.
- Tell the project's story in the README and a new Why Decision Forge page: the missing
trust layer for AI agents, the three kinds of organizational data it requires, and where Decision Forge
fits in the data → model → organization stack.
Fixed
- Keep every published family in its split across dataset versions (#35). Rebuilding with
buildafter
adding scenario families could move existing families between train, development, and test, leaking
held-out examples into training. The first build now records each family's split in a split lock next
to the specification (project.splits.lock.json); later builds keep locked families in place, give
new families a stable per-family split, and remember removed families.build --locked-splitsfails
instead of creating or changing the lock. Plans fromplan-recipemade with older versions must be
regenerated. - Send allow/deny rule pairs to review when they overlap only at generated dimension values (#36). Conflict
witnesses were searched in seed states alone, so an override that appeared only in a generated
situation was labeled without review. The gate now searches every situation the build samples and
also queues pairs whose conditions cannot be proven disjoint, since synthesis can reach new states.
Conflict items reportoverlap,witness_count, and up to fivewitnesseswith their dimension
values; existing conflict reviews must be recorded again. Thanks to sunxiuguo for an independent fix in #44. - Attest only the wheel and sdist in the release workflow;
uv buildalso writesdist/.gitignore.
Decision Forge v0.3.1
Version 0.3.1 adds office, HTML, tabular, and OCR ingestion, fixes several integrity and portability
issues in the data pipeline, and is the first release built and attested by the release workflow.
Ingestion metadata has changed; recompile corpora into new output directories.
Added
- Add automatic source format detection and DOCX, XLSX, PPTX, HTML and CSV/TSV parsers with locations.
- Add image and per-page PDF OCR through local RapidOCR/PP-OCR small models, Tesseract, and explicitly
selected OpenAI-compatible vision endpoints. Keep model weights local during ingestion. - Preserve OCR model identity, confidence, bounding boxes, access metadata, cache integrity and attempt
journals. Require an explicit flag for OCR service calls and retain the business review gate. - Add real local PP-OCR inference tests and a fictional seven-format example generator.
- Add a tag-triggered release workflow that verifies version consistency, runs the test suite, builds and
smoke-tests the wheel, attests build provenance, creates a GitHub release from the changelog, and
optionally publishes to PyPI through trusted publishing. - Ship a
py.typedmarker so downstream type checkers use the package's inline annotations. - Add project URLs, supported Python versions, and typing classifiers to the package metadata, and
repository links to the citation file. - Add opt-in dependency review on pull requests (
DEPENDENCY_REVIEWrepository variable), CodeQL analysis
for Python and workflows, and OpenSSF Scorecard. - Declare the
type/andarea/label taxonomy in.github/roadmap.json; the roadmap publisher now
creates and updates those labels and applies them to roadmap issues without removing triage labels. - Label pull requests by area automatically from the files they change.
- Add
.editorconfigand.gitattributes(LF line endings, generated experiment artifacts), and a
definition-of-done checklist to the pull request template.
Changed
- Ingestion metadata and default format detection have changed. Recompile into a new output directory;
existing content-bound reviews are not transferred to newly parsed source snapshots. - Bound archive expansion, image pixels, page counts, spreadsheet traversal and normalized output.
- Run CI on pull requests, merge queues, and
mainonly, cancel superseded pull request runs, bound every
job with a timeout, and expose a singleCI resultstatus for branch protection. - Group Dependabot updates so related upgrades land in one lock-file change, and track pre-commit hooks.
- Validate workflow and Dependabot files in pre-commit.
Fixed
- Fix
compile-corpusfailing with "Source content hash changed" after spending its model budget when a
CSV/TSV, spreadsheet, office, HTML, PDF, or JSON/YAML value contains carriage returns. Parsed text now
uses\nline endings so stored snapshots read back with the recorded hash. - Re-derive every model-visible field of imported synthesis rows:
load_expansionnow rejects rows whose
question, policy context, candidates, verdicts, or ID differ from what the project produces, even when
accepted.jsonland its digest were rewritten together. - Accept compiler and corpus evidence whose quote differs from the source only in whitespace runs. Such
quotes were bound during compilation but produced aproject.jsonthat failed validation on load. - Count the recipe planner's available pool after the duplicate removal a build applies, so
plan-recipe
no longer reports quotas as feasible thatbuild --recipe-planthen rejects. - Hash exported JSONL files and Data Designer outputs as UTF-8 regardless of the platform locale.
- Close SQLite connections after runtime event ingestion, open the read-only event store through a
properly escaped file URI, and report missing or empty event stores as CLI errors instead of tracebacks. - Report non-object decision bindings in
evaluate-decisionsas a CLI error instead of a traceback.