Skip to content
Open
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
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "1.0.0-beta.63"
".": "1.0.0-beta.64"
}
91 changes: 91 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,97 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [1.0.0-beta.64](https://github.com/ScriptedAlchemy/tracedecay/compare/v1.0.0-beta.63...v1.0.0-beta.64) (2026-10-01)


### ⚠ BREAKING CHANGES

* **sessions:** session-temporal stores written by earlier builds are refused until `tracedecay wipe --stale --yes` resets them.
* **graph-db:** the test-helpers release_staging_rows_for_relational_head surface now applies production receipt semantics.
* **global-db:** registries created by v1.0.0-beta.63 and earlier carry graph_scopes.db_relpath. The schema contract refuses that shape as the reset-required state for the "project registry" authority and leaves the table untouched; run `tracedecay wipe --all --yes` to recreate the profile. The `db_relpath` field is removed from graph scopes in `projects context` JSON and the project_context MCP result.
* **global-db:** a registry whose code_projects table lacks the primary_root_platform, primary_root_bytes and primary_root_last_seen_at columns is no longer migrated in place. The daemon serves it in the reset-required state (authority "project registry"). Run `tracedecay wipe --all --yes` to recreate the profile.
* **branch:** `tracedecay_status` `branch_diagnostics` no longer reports `serving_db_path`, `serving_db_exists`, `live_branch_db_path`, `live_branch_db_exists`, `nearest_tracked_ancestor_db_path`, `nearest_tracked_ancestor_db_exists`, nor per-branch `db_file`, `db_path`, `db_exists`, `size_bytes`, `parent_db_path`, `parent_db_exists` and `warnings`. The `tracedecay://branches` resource drops `db_file` and `size_bytes` and lists branches by name. `tracedecay branch list` no longer prints a per-branch size or `missing-db` flag. `branch-meta.json` is written without `db_file`; older binaries read such metadata as corrupt and fall back to single-store mode.
* **sessions:** Codex admission ignores cursors of the retired per-session source identity; stores that still carry them beside observation rows must be reset with `tracedecay wipe --stale --yes`.
* **contracts:** tracedecay_signature, tracedecay_derives and tracedecay_test_map refuse `id`; send `node_id`. LexicalFieldV1 no longer decodes snake_case variant names. @tracedecay/sdk is bumped to 0.11.0.
* **global-db:** TRACEDECAY_ENABLE_GLOBAL_DB is no longer read. Use TRACEDECAY_DISABLE_GLOBAL_DB=1 to disable global accounting; an ENABLE=1 no longer overrides it, and ENABLE=0 no longer disables it. The dashboard accounting mode no longer reports enabled_by_env.
* **sessions:** lcm_status reports payload_gc.last_gc_status as null for a store whose GC never recorded a status, instead of deriving ok/partial/failed from last_error; the next GC pass records it.
* **cli:** `tool --json` successes (and first-class commands such as `tracedecay git status --json`) print the MCP tool result with the typed result under `structuredContent` instead of the bare application envelope.
* **graph-db:** graph format 7. Sealed stores and replays from format 6 are superseded and rebuild cold; there is no migration.
* **cli:** `tracedecay tool --json` refusals from typed application tools and from pre-owner failures print the MCP tool result with the record at `structuredContent.problem` instead of an application envelope or an untyped `{"problem": ...}` object. The problem detail union gains `daemon_unreachable`, and `@tracedecay/sdk` is 0.10.0.
* **host-admission:** group-commit hook admission fsyncs ([#2685](https://github.com/ScriptedAlchemy/tracedecay/issues/2685))
* **code-index:** `tracedecay gitignore` is removed and exits as an unknown command. index.git_ignore.v1 is retired, the settings patch no longer accepts git_ignore, and tracedecay_admin_project no longer has a gitignore_status action (@tracedecay/sdk 0.4.0). index.exclude.v1 and index.include.v1 now decide which files the code index, grep, ast-grep search and unmounted-files walks see, applied at the next daemon start.
* **sessions:** release retention in micros; GC owner rows only ([#2680](https://github.com/ScriptedAlchemy/tracedecay/issues/2680))
* **sessions:** retention.observation.reclaim_superseded_cursor_advances is removed; ObservationRetentionReport drops cursor_advances_reclaimed, cursor_advances_before and cursor_advances_after; LcmRetentionReport drops raw_rows_before and raw_rows_after.

### Features

* **graph-db:** publish small refreshes as layered generations ([#2695](https://github.com/ScriptedAlchemy/tracedecay/issues/2695)) ([8be35c1](https://github.com/ScriptedAlchemy/tracedecay/commit/8be35c10222f3e563061b98c93652442f214238f))
* **sessions:** publish typed LCM convergence in status ([#2717](https://github.com/ScriptedAlchemy/tracedecay/issues/2717)) ([c0fe494](https://github.com/ScriptedAlchemy/tracedecay/commit/c0fe49493ee659896414cfd9dcffee10d4b5dfd6))


### Bug Fixes

* **cli:** one typed tool-result shape for every --json refusal ([#2690](https://github.com/ScriptedAlchemy/tracedecay/issues/2690)) ([dcf2fad](https://github.com/ScriptedAlchemy/tracedecay/commit/dcf2fad5e5c3fae9949c7fb22f3212785545586e))
* **cli:** print every tool --json answer as the tool result ([#2716](https://github.com/ScriptedAlchemy/tracedecay/issues/2716)) ([79b6931](https://github.com/ScriptedAlchemy/tracedecay/commit/79b69312c8b8a425d874059882cf79eabf7e74c7))
* **code-index:** classify retries by type, not error text ([#2708](https://github.com/ScriptedAlchemy/tracedecay/issues/2708)) ([605402f](https://github.com/ScriptedAlchemy/tracedecay/commit/605402f158602dbccd78dd5e75faead4967797cc))
* **code-index:** free captured sources once a pass lets them go ([#2778](https://github.com/ScriptedAlchemy/tracedecay/issues/2778)) ([4e3e1d6](https://github.com/ScriptedAlchemy/tracedecay/commit/4e3e1d6d21411244429fcb5d62d0af5c94412c7b))
* **code-index:** honor index exclude/include, drop gitignore ([#2514](https://github.com/ScriptedAlchemy/tracedecay/issues/2514)) ([57da1e8](https://github.com/ScriptedAlchemy/tracedecay/commit/57da1e89f2a081acfe02fca3cf47424aac31f066)), closes [#2377](https://github.com/ScriptedAlchemy/tracedecay/issues/2377)
* **code-index:** keep status on the committed generation ([#2760](https://github.com/ScriptedAlchemy/tracedecay/issues/2760)) ([b11bc4d](https://github.com/ScriptedAlchemy/tracedecay/commit/b11bc4d592ac7736f298ee6df69bde67dc8cfe6d))
* **code-index:** retry a held store lock on its release ([#2768](https://github.com/ScriptedAlchemy/tracedecay/issues/2768)) ([fb7f652](https://github.com/ScriptedAlchemy/tracedecay/commit/fb7f6520a97a0eb1ab43e03c01d7e8d7dcdfdfd5))
* **code-index:** serve first search while restart graph warms ([#2739](https://github.com/ScriptedAlchemy/tracedecay/issues/2739)) ([f66f8a3](https://github.com/ScriptedAlchemy/tracedecay/commit/f66f8a394a94ff679299c9797de022f51bffb60d))
* **config:** report uncompilable stored index patterns as findings ([#2728](https://github.com/ScriptedAlchemy/tracedecay/issues/2728)) ([e27b73d](https://github.com/ScriptedAlchemy/tracedecay/commit/e27b73d7aa298cbfaae5ea757ae999ef422cf0f0))
* **contracts:** drop the id and snake_case wire spelling aliases ([#2722](https://github.com/ScriptedAlchemy/tracedecay/issues/2722)) ([240c971](https://github.com/ScriptedAlchemy/tracedecay/commit/240c97196297dac1528256d14e9edd294b5d7722))
* **daemon-protocol:** let a delivered reply win over a failed probe ([#2686](https://github.com/ScriptedAlchemy/tracedecay/issues/2686)) ([bf0e1fe](https://github.com/ScriptedAlchemy/tracedecay/commit/bf0e1fe5442efed56f36f9be02d09fe79a8aca16))
* **daemon:** close stores in one teardown, drop capacity retry ([#2751](https://github.com/ScriptedAlchemy/tracedecay/issues/2751)) ([54fb091](https://github.com/ScriptedAlchemy/tracedecay/commit/54fb0911a9d34fa5b2c86a8562ea5cd5c646d86c)), closes [#2476](https://github.com/ScriptedAlchemy/tracedecay/issues/2476)
* **daemon:** join dropped observability drains at shutdown ([#2665](https://github.com/ScriptedAlchemy/tracedecay/issues/2665)) ([410e8f8](https://github.com/ScriptedAlchemy/tracedecay/commit/410e8f8fb93e529b7365328f7516e2cb241a209e))
* **daemon:** serve doctor report over reset-required stores ([#2711](https://github.com/ScriptedAlchemy/tracedecay/issues/2711)) ([5dc246d](https://github.com/ScriptedAlchemy/tracedecay/commit/5dc246d2e4c476c1124c7f60c6961b0cd3079e09))
* **dashboard:** answer the story curate fixture with its receipt ([#2701](https://github.com/ScriptedAlchemy/tracedecay/issues/2701)) ([3abbb8e](https://github.com/ScriptedAlchemy/tracedecay/commit/3abbb8e343d02f0144f2cecab4b8fc59d931c5fb))
* **doctor:** open the project a lone doctor asks about ([#2743](https://github.com/ScriptedAlchemy/tracedecay/issues/2743)) ([4624623](https://github.com/ScriptedAlchemy/tracedecay/commit/46246233c50e2e62b5cd05f378493889192f49d9)), closes [#2713](https://github.com/ScriptedAlchemy/tracedecay/issues/2713)
* **doctor:** report ingest refusals informationally ([#2681](https://github.com/ScriptedAlchemy/tracedecay/issues/2681)) ([dd092c2](https://github.com/ScriptedAlchemy/tracedecay/commit/dd092c283da0ea34e9ef03ac8b45f559ff8a88b1))
* **feedback:** publish the advisory mount's own typed state ([#2724](https://github.com/ScriptedAlchemy/tracedecay/issues/2724)) ([a908b62](https://github.com/ScriptedAlchemy/tracedecay/commit/a908b62d6d50e70564a4996df846e2c1de9a23a0))
* **feedback:** wait for a reopened generation's source proof ([#2668](https://github.com/ScriptedAlchemy/tracedecay/issues/2668)) ([03ba683](https://github.com/ScriptedAlchemy/tracedecay/commit/03ba683fbcbdc4c6f090a6688c966476966a5496))
* **hooks:** keep hook spool locks free of durability barriers ([#2732](https://github.com/ScriptedAlchemy/tracedecay/issues/2732)) ([654d88d](https://github.com/ScriptedAlchemy/tracedecay/commit/654d88db174d4026c9e9b29fc52a21ded1607cc8))
* **hooks:** never fail a delivered hook on its receipt spool ([#2698](https://github.com/ScriptedAlchemy/tracedecay/issues/2698)) ([833a46c](https://github.com/ScriptedAlchemy/tracedecay/commit/833a46c08aa97d5f6079da1a275c4f8d5052ef4c))
* **hooks:** wake the drain when a delivery receipt is published ([#2759](https://github.com/ScriptedAlchemy/tracedecay/issues/2759)) ([3114485](https://github.com/ScriptedAlchemy/tracedecay/commit/3114485194db15661a22adb2fcc1f56cdf0bbcbd))
* **hosts:** report ETXTBSY spawn refusals on the first attempt ([#2719](https://github.com/ScriptedAlchemy/tracedecay/issues/2719)) ([72fa922](https://github.com/ScriptedAlchemy/tracedecay/commit/72fa9229977e20ad16be86471fe6065b520aadcb))
* **maintenance:** retire a removed worktree's scheduler first ([#2725](https://github.com/ScriptedAlchemy/tracedecay/issues/2725)) ([f528565](https://github.com/ScriptedAlchemy/tracedecay/commit/f528565d074f72d1acb45808de678c554a68bdfc))
* **mcp:** pin lcm convergence and schema template key ([#2758](https://github.com/ScriptedAlchemy/tracedecay/issues/2758)) ([bdd8a97](https://github.com/ScriptedAlchemy/tracedecay/commit/bdd8a974498d3dcd42b93c532473cd25d856c5c8)), closes [#2749](https://github.com/ScriptedAlchemy/tracedecay/issues/2749) [#2753](https://github.com/ScriptedAlchemy/tracedecay/issues/2753)
* **memory:** allocate SQLite and tree-sitter from mimalloc ([#2773](https://github.com/ScriptedAlchemy/tracedecay/issues/2773)) ([c36fa64](https://github.com/ScriptedAlchemy/tracedecay/commit/c36fa642c06879d26dc7ff3b4f1872eaa94b98f0))
* **memory:** charge and release the retained parse pool ([#2775](https://github.com/ScriptedAlchemy/tracedecay/issues/2775)) ([aa1e2d5](https://github.com/ScriptedAlchemy/tracedecay/commit/aa1e2d5b00e774f4049ba7c9faa053ff1976c3f5))
* **memory:** release idle thread heaps, charge graph owner pages ([#2727](https://github.com/ScriptedAlchemy/tracedecay/issues/2727)) ([f5b938b](https://github.com/ScriptedAlchemy/tracedecay/commit/f5b938b26f7097fb5e65717eb2319c73e0a62f56))
* **memory:** return idle index workers' heaps and drop built sources ([#2661](https://github.com/ScriptedAlchemy/tracedecay/issues/2661)) ([154a0eb](https://github.com/ScriptedAlchemy/tracedecay/commit/154a0eb604eed02a6fcb53bf82b72f8a06661f48))
* **memory:** wake refused work on the release it waits on ([#2771](https://github.com/ScriptedAlchemy/tracedecay/issues/2771)) ([7b364c8](https://github.com/ScriptedAlchemy/tracedecay/commit/7b364c8e7c2613edb530f796dfe7eec2e671b4ba))
* **runtime-core:** share in-flight checkout topology walks ([#2726](https://github.com/ScriptedAlchemy/tracedecay/issues/2726)) ([d06b068](https://github.com/ScriptedAlchemy/tracedecay/commit/d06b0688ca104401df709afdb1add51475adb8ad))
* **sessions:** read only the source objects a capture names ([#2777](https://github.com/ScriptedAlchemy/tracedecay/issues/2777)) ([da62880](https://github.com/ScriptedAlchemy/tracedecay/commit/da62880a34c0de111bc86bbe42efe4be1332a52f))
* **sessions:** release retention in micros; GC owner rows only ([#2680](https://github.com/ScriptedAlchemy/tracedecay/issues/2680)) ([fff453b](https://github.com/ScriptedAlchemy/tracedecay/commit/fff453b19f09fcd5650431eb717f906b2a9403c3))
* **sessions:** resume replaced transcripts by prefix digest ([#2737](https://github.com/ScriptedAlchemy/tracedecay/issues/2737)) ([ca59a36](https://github.com/ScriptedAlchemy/tracedecay/commit/ca59a3659ac52495b77f85d5b655b638507b9ece)), closes [#2712](https://github.com/ScriptedAlchemy/tracedecay/issues/2712)
* **store-runtime:** read seals without store or pool locks ([#2714](https://github.com/ScriptedAlchemy/tracedecay/issues/2714)) ([51aa2b8](https://github.com/ScriptedAlchemy/tracedecay/commit/51aa2b8968af3808beadf227b347861cb38aa436))
* **store-runtime:** type remote recovery fence interruptions ([#2718](https://github.com/ScriptedAlchemy/tracedecay/issues/2718)) ([1ecbdc2](https://github.com/ScriptedAlchemy/tracedecay/commit/1ecbdc26f72c75d54054c839085949567a2d1a2d))
* **test:** compile Windows check past unix-only helpers ([#2670](https://github.com/ScriptedAlchemy/tracedecay/issues/2670)) ([d01a884](https://github.com/ScriptedAlchemy/tracedecay/commit/d01a884765baee4858a5edd340f5d681a60b2dcd)), closes [#2663](https://github.com/ScriptedAlchemy/tracedecay/issues/2663)
* unwedge refresh joins and scope rollback under load ([#2677](https://github.com/ScriptedAlchemy/tracedecay/issues/2677)) ([0633913](https://github.com/ScriptedAlchemy/tracedecay/commit/0633913f0100b50bea9e74d81806b95c221e8d1f)), closes [#2667](https://github.com/ScriptedAlchemy/tracedecay/issues/2667)


### Performance Improvements

* **code-index:** re-resolve only references an edit can move ([#2770](https://github.com/ScriptedAlchemy/tracedecay/issues/2770)) ([a02c95a](https://github.com/ScriptedAlchemy/tracedecay/commit/a02c95a0d17a4c1114dfb6f4529fa2ba6e477e3b))
* **graph-db:** seal layers from a base row index ([#2754](https://github.com/ScriptedAlchemy/tracedecay/issues/2754)) ([363a5f7](https://github.com/ScriptedAlchemy/tracedecay/commit/363a5f7ca7e43e150a8d5fa55dd0c169e227d47b))
* **host-admission:** group-commit hook admission fsyncs ([#2685](https://github.com/ScriptedAlchemy/tracedecay/issues/2685)) ([73b0bf1](https://github.com/ScriptedAlchemy/tracedecay/commit/73b0bf1bcbe03597fd823e93c57c0b3f24b9c827))
* **runtime-core:** close idle stores concurrently at shutdown ([#2669](https://github.com/ScriptedAlchemy/tracedecay/issues/2669)) ([180200b](https://github.com/ScriptedAlchemy/tracedecay/commit/180200b89beb479a9e50fbc658a68393aa7e51b3))
* **sessions:** drive retention from cursors and candidates ([#2675](https://github.com/ScriptedAlchemy/tracedecay/issues/2675)) ([e3f179c](https://github.com/ScriptedAlchemy/tracedecay/commit/e3f179cdf4a600f530209d4855cf485a0c2eedc6))
* **sessions:** extend session generations, don't copy them ([#2761](https://github.com/ScriptedAlchemy/tracedecay/issues/2761)) ([9d91e64](https://github.com/ScriptedAlchemy/tracedecay/commit/9d91e647c1121aa2100a869267b5de034f3608ed))
* **sessions:** resume rewritten JSONL after the retained prefix ([#2767](https://github.com/ScriptedAlchemy/tracedecay/issues/2767)) ([3dfee41](https://github.com/ScriptedAlchemy/tracedecay/commit/3dfee4127eac3cc43b37f74f7af05fafff160d2b))


### Code Refactoring

* **branch:** delete per-branch database residue ([#2731](https://github.com/ScriptedAlchemy/tracedecay/issues/2731)) ([d04b269](https://github.com/ScriptedAlchemy/tracedecay/commit/d04b26982e751c4256de74f786e8b9f3491bfd19))
* **global-db:** drop graph_scopes.db_relpath ([#2747](https://github.com/ScriptedAlchemy/tracedecay/issues/2747)) ([ae7bed2](https://github.com/ScriptedAlchemy/tracedecay/commit/ae7bed286b2a2b8758843205562ae858f4362426))
* **global-db:** drop in-place registry column migrations ([#2741](https://github.com/ScriptedAlchemy/tracedecay/issues/2741)) ([ccef776](https://github.com/ScriptedAlchemy/tracedecay/commit/ccef7768c69fe2b53844cd95f355845ab50ea5dd))
* **global-db:** one opt-out variable for global accounting ([#2723](https://github.com/ScriptedAlchemy/tracedecay/issues/2723)) ([3d79ba6](https://github.com/ScriptedAlchemy/tracedecay/commit/3d79ba6b762f988baabc0ff2a8ab6206239d44bc))
* **graph-db:** delete the test-only sealed receipt denial ([#2755](https://github.com/ScriptedAlchemy/tracedecay/issues/2755)) ([09d89e3](https://github.com/ScriptedAlchemy/tracedecay/commit/09d89e367dbe2b7654fe986a12fdc4c7a76308ef))
* **sessions:** delete surviving legacy session readers ([#2715](https://github.com/ScriptedAlchemy/tracedecay/issues/2715)) ([5514288](https://github.com/ScriptedAlchemy/tracedecay/commit/55142887d51d46217f4d14cd0b4bd22e60daa9c9))
* **sessions:** delete the Codex v1 source-cursor replay ([#2730](https://github.com/ScriptedAlchemy/tracedecay/issues/2730)) ([611207f](https://github.com/ScriptedAlchemy/tracedecay/commit/611207f41fa7ceb16ea741442b454492723d48e2))

## [1.0.0-beta.63](https://github.com/ScriptedAlchemy/tracedecay/compare/v1.0.0-beta.62...v1.0.0-beta.63) (2026-09-29)


Expand Down
6 changes: 3 additions & 3 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ resolver = "3"
# inheritance table is the sanctioned single source of truth.
[workspace.package]
edition = "2024"
version = "1.0.0-beta.63"
version = "1.0.0-beta.64"

[workspace.dependencies]
# Opt-in profiler, pinned once for the whole workspace. Non-optional on purpose:
Expand Down
2 changes: 1 addition & 1 deletion server.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@
"source": "github"
},
"websiteUrl": "https://github.com/ScriptedAlchemy/tracedecay",
"version": "1.0.0-beta.63",
"version": "1.0.0-beta.64",
"packages": []
}
2 changes: 1 addition & 1 deletion version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.0.0-beta.63
1.0.0-beta.64
Loading