Skip to content
Merged

v0.2 #49

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
59 changes: 59 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,64 @@
# Changelog

## v0.2 — 2026-09-12

Behavior becomes accountable in two directions: back to the decision that asked for it,
forward to an outcome capable of contradicting it. Everything here was forced by
measurement — an outside review, then a repository measuring its own mechanism and
finding it hollow.

### Added

- **INV-027 OUTCOME-DECLARES-ITS-CHECK** — an Outcome names the Assertion that checks
whether it occurred. `OUTCOME_REFUTED` is an error and takes integrity to INVALID.
This is the only place in the model where reality can contradict it, and therefore
the first machine-produced evidence that a claim is **wrong** rather than stale.
- **INV-028 INTENT-IS-PROVENANCE** — a Flow cites the frozen record that asked for its
behavior. Verified by provenance, never by truth. No new record format: it cites the
ADRs, issues and commit trailers that already exist.
- **§6.4.1 splits INV-018** — *is the running system healthy* stays out of scope
permanently; *did the declared outcome occur* is verification, not monitoring.
- **Symbol-granular decay** — `git log -L` answers which symbol changed, using git's own
per-language funcname heuristics rather than a bound written here. Measured: 145 of
this repository's file-level decay events narrowed to 23; on a peer's TypeScript
repository, 132 narrowed to 39.
- **`observed_symbol`** — a hash of the cited symbol at the moment it was read, so an
observation survives the squash merge that deletes the commit it was made on.
- **`docs/DIRECTION.md`** — the north star and four horizons, each naming the
measurement that would kill it.

### Changed

- **`traceos init` reads no source file.** It used to write `repo-files.txt` — 2,758
paths indexed at step one, which is both a stored derived value (INV-001) and an
invitation to infer a model from the tree. Discovery is progressive: the boundary,
then one flow, then the evidence that flow's claims need. The coverage denominator is
derived from `--repo` when it is needed.
- **The three skills own three jobs** — model from evidence, scope of one change,
resolving contradictions. `traceos init` is named as a bootstrap operation alongside
Implementation and the validator in what is deliberately left out.
- **Narrowing and the ratchet report what they excluded** (INV-025): every reference
narrowing clears, every uncertain assertion behind a count, and why narrowing could
not answer when it could not.

### Fixed

- A reference the change touched but did not invalidate is no longer something to
discharge. Before, clearing the gate meant re-observing references that had not
changed — the rubber stamp INV-024 exists to prevent, generated by the gate itself.
- `validate_observation_refs` returned `None` and the whole suite passed, because
`validate()` with a real `Git` was only reachable through the CLI. There is now a test
that runs the validator against a real repository.

### Known and deliberate

The mechanism is built, tested and enforced. **The value claim is unproven**: nobody has
run the measurement in ADR-015 — three real incidents, would this have caught any before
they became one — and nobody has measured what it costs to keep a model current (#10).
The coverage ratchet remains unusable as a gate on a repository whose churn is not the
model (#43), and no mechanism here, or in any system compared against it, detects a claim
that is simply wrong (#42, #45).

## v0.1 — 2026-09-10

First complete semantic baseline for agent-oriented system reasoning. Defines how
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "hatchling.build"

[project]
name = "traceos"
version = "0.1.0"
version = "0.2.0"
description = "A semantic reasoning framework that lets AI agents trace semantic impact before a change and reconcile the model with reality after it"
readme = "README.md"
license = { file = "LICENSE" }
Expand Down