Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
159 changes: 107 additions & 52 deletions CHANGELOG.adoc
Original file line number Diff line number Diff line change
@@ -1,52 +1,107 @@
// SPDX-License-Identifier: CC-BY-SA-4.0
// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath)
= Changelog: verisimiser
:toc:

All notable changes to verisimiser will be documented in this file.

This format is based on https://keepachangelog.com/en/1.1.0/[Keep a Changelog],
and this project adheres to https://semver.org/spec/v2.0.0.html[Semantic Versioning].

== [0.2.0] - 2026-05-30

=== Added
* JSON-family sidecar storage backend (`[sidecar].storage = "json"`) with a
`[sidecar].format` key — `plain` | `ld` (JSON-LD) | `ndjson` — at full
runtime parity with the SQLite path: hash-chained provenance (incl. forks),
temporal versioning, drift, and gc (#146, V-L2-F3).
* `sidecar::StorageKind` — single source of truth resolving
`[sidecar].storage` (+ `format`) to a backend; `validate`/`generate`/
`drift`/`gc` all defer to it.
* Cross-process write locking for the JSON sidecar (advisory `<path>.lock`
with stale-steal) plus documented atomic-rename durability (#150, V-L2-F4).
* `provenance <entity>` and `history <entity> [--at <RFC3339>]` CLI
subcommands now query the sidecar (sqlite + json) instead of stubbing
(#150, V-L2-F4).
* `examples/json-sidecar/` manifest demonstrating the NDJSON sidecar.

=== Changed
* `verisimiser generate` emits a `sidecar_schema.{json,jsonld,ndjson}`
scaffold for the json family (SQL backends still emit DDL).

== [0.1.0] - 2026-03-21

=== Phase 1 — RSR Compliance Sweep

=== Added
* Phase 1 complete — scaffold, CLI, manifest parser, codegen stubs, ABI types
* RSR compliance sweep — STATE.a2ml, contractiles, Justfile updated
* Bespoke contractile constraints for Database augmentation with VeriSimDB octad model domain
* Project-specific Justfile recipes

== [0.0.1] - 2026-03-20

=== Added
* Initial project scaffold from rsr-template-repo
* CLI with subcommands (init, validate, generate, build, run, info)
* Manifest parser (`verisimiser.toml`)
* Codegen engine (stubs — target-language-specific implementation pending)
* ABI module (Idris2 proof type definitions)
* Library API for programmatic use
* Full RSR template (17 CI workflows, governance docs, bot directives)
* README.adoc with architecture overview and value proposition
== Changelog

All notable changes to `+verisimiser+` will be documented in this file.

This file is generated from conventional commits by the
https://github.com/hyperpolymath/standards/blob/main/.github/workflows/changelog-reusable.yml[`+changelog-reusable.yml+`]
workflow (`+hyperpolymath/standards#206+`). Adopt the workflow in this
repo’s CI to keep this file in sync automatically — see
https://github.com/hyperpolymath/standards/blob/main/templates/cliff.toml[`+templates/cliff.toml+`]
for the canonical config.

The format follows https://keepachangelog.com/en/1.1.0/[Keep a
Changelog]; this project aims to follow
https://semver.org/spec/v2.0.0.html[Semantic Versioning].

=== [Unreleased]

==== Added

* feat(sidecar): cross-process advisory write locking + atomic-rename
durability for the JSON sidecar, and wire the `+provenance+`/`+history+`
CLI subcommands against sqlite + json sidecars (V-L2-F4, ADR-0013,
closes #150) (#151)
* feat(sidecar): JSON-family sidecar storage backend — plain JSON /
JSON-LD / NDJSON with SQLite-parity octad runtime (provenance
incl. forks, temporal, drift, gc); new `+[sidecar].format+` key and a
single `+StorageKind::resolve+` backend resolver (V-L2-F3, ADR-0012,
closes #146) (#148)
* feat(codegen): split sidecar DDL by dialect; reject json sidecar (#45)
(#133)
* feat(codegen): split sidecar DDL by dialect; reject json sidecar (#45)
(#131)
* feat(logging): tracing diagnostics with –log-format/–log-level (#51)
(#124)
* feat(codegen): split sidecar DDL by dialect; reject json sidecar (#45)
(#129)
* feat(codegen): parse DDL with sqlparser, drop hand-rolled scanner
(#38) (#123)
* feat(provenance): fork-first-class chain model — ADR-0010 (#31;
supersedes #32) (#122)
* feat(provenance): fork-first-class chain model — ADR-0010 (#31;
supersedes #32) (#121)
* feat(provenance): fork-first-class chain model — ADR-0010 (#31;
supersedes #32) (#120)
* feat(codegen): split sidecar DDL by dialect; reject json sidecar (#45)
(#113)
* feat(provenance): fork-first-class chain model — ADR-0010 (#31;
supersedes #32) (#109)

==== Fixed

* fix(rhodibot): automated RSR compliance fixes (#135)
* fix: restore sqlparser dependency and security policy compliance
* fix(ci): bump a2ml/k9-validate-action pins to canonical (standards#85)
(#114)
* fix(ci): sync hypatia-scan.yml to canonical (kill cd-scanner build
drift) (#108)
* fix(ci): remove duplicate top-level concurrency block in rust-ci
* fix(ci): CodeQL language-aware detect (replace hardcoded rust) (#105)
* fix(#26): unify ProvenanceRecord/ProvenanceEntry (#103)
* fix(provenance): domain-separated, length-prefixed hash over all
fields (#88)
* fix(manifest): TOML parse errors now report filename:line:col (#84)
* fix(codegen): validate every identifier before interpolation into DDL
(#83)

==== Changed

* refactor(rename): VQL → VCL + verisimdb → verisim

==== Documentation

* docs(readme): rewrite around concerns octad (V-L1-A2) (#99)
* docs(adr): 0009-build-path — cargo + Containerfile canonical; rest
experimental (#97)
* docs(adr): 0008-contractile-ci — informational only until a real
consumer exists (#96)
* docs(adr): 0007-access-control-model — prefix-typed principals,
deny-wins, typed predicate (#95)
* docs(adr): 0006-simulation-semantics — isolated snapshots + manual
merge (#94)
* docs(adr): 0005-lineage-acyclicity — enforce DAG at write time (#93)
* docs(adr): 0004-octad-ontology — concerns octad is canonical (#92)
* docs(adr): 0003-drift-categories — input, distance, threshold per
category (#91)
* docs(theory): provenance threat model (foundational doc for Step 2)
(#90)
* docs: add CONTRIBUTING-DEV.adoc (#74)

==== CI

* ci(spark): adopt estate SPARK Theatre Gate (standards#135) (#117)
* ci: redistribute concurrency-cancel guard to read-only check workflows
(#116)
* ci(rust): rewrite rust-ci.yml so the workflow actually registers (#89)
* ci: bump actions/upload-artifact SHA to current v4 (#23)
* ci: bump actions/upload-artifact SHA to current v4 (#18)

=== Pre-history

Prior commits to this file’s introduction are recorded in git history
but not formally classified into Keep-a-Changelog sections. To backfill,
run `+git cliff -o CHANGELOG.md+` locally using the canonical
https://github.com/hyperpolymath/standards/blob/main/templates/cliff.toml[`+cliff.toml+`]
— this is one-shot mechanical work.

'''''
80 changes: 0 additions & 80 deletions CHANGELOG.md

This file was deleted.

71 changes: 71 additions & 0 deletions CONTRIBUTING.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
== Contributing

Thank you for your interest in contributing! We follow a "`Dual-Track`"
architecture where human-readable documentation lives in the root and
machine-readable policies live in `+.machine_readable/+`.

=== How to Contribute

We welcome contributions in many forms:

* *Code:* Improving the core stack or extensions
* *Documentation:* Enhancing docs or AI manifests
* *Testing:* Adding property-based tests or formal proofs
* *Bug reports:* Filing clear, reproducible issues

=== Getting Started

[arabic]
. *Read the AI Manifest:* Start with `+0-AI-MANIFEST.a2ml+` (if present)
to understand the repository structure.
. *Environment:* Use `+nix develop+` or `+direnv allow+` to set up your
tools.
. *Task Runner:* Use `+just+` to see available commands
(`+just --list+`).

=== Development Workflow

==== Branch Naming

....
docs/short-description # Documentation
test/what-added # Test additions
feat/short-description # New features
fix/issue-number-description # Bug fixes
refactor/what-changed # Code improvements
security/what-fixed # Security fixes
....

==== Commit Messages

We follow https://www.conventionalcommits.org/[Conventional Commits]:

....
<type>(<scope>): <description>

[optional body]

[optional footer]
....

Types: `+feat+`, `+fix+`, `+docs+`, `+test+`, `+refactor+`, `+ci+`,
`+chore+`, `+security+`

=== Reporting Bugs

Before reporting: 1. Search existing issues 2. Check if it’s already
fixed in `+main+`

When reporting, include: - Clear, descriptive title - Environment
details (OS, versions, toolchain) - Steps to reproduce - Expected vs
actual behaviour

=== Code of Conduct

All contributors are expected to adhere to our
link:CODE_OF_CONDUCT.md[Code of Conduct].

=== License

By contributing, you agree that your contributions will be licensed
under the same license as the project (see LICENSE).
66 changes: 0 additions & 66 deletions CONTRIBUTING.md

This file was deleted.

11 changes: 11 additions & 0 deletions SECURITY.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
== Security Policy

=== Reporting a Vulnerability

*Email:* j.d.a.jewell@open.ac.uk

*Response timeline:* - Acknowledgement within 48 hours - Initial
assessment within 7 days - Fix or mitigation within 90 days

*Safe harbour:* We will not pursue legal action against security
researchers who follow responsible disclosure.
Loading
Loading