Skip to content

fix: refuse non-final schemas instead of cutover shims - #1503

Closed
ScriptedAlchemy wants to merge 4 commits into
codex/tracedecay-total-redesign-plan-reopenedfrom
cursor/outcome-oriented-execution-aacd
Closed

ScriptedAlchemy wants to merge 4 commits into
codex/tracedecay-total-redesign-plan-reopenedfrom
cursor/outcome-oriented-execution-aacd

Conversation

@ScriptedAlchemy

@ScriptedAlchemy ScriptedAlchemy commented Sep 17, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • Merged latest feat: TraceDecay V2 delivery (PR8–PR13) + daemon performance, memory, and reliability overhaul #707 tip 3e6167b265 (test(code-index): re-pin partitioned codec onto extractor.rust.v8) into this branch. Merge commit ec0a39987c. No conflicts.
  • Review lens remains outcome-oriented-execution: family wire schema only, and non-final temporal stores return ResetRequired before conversion.
  • Tip compile breaks (CodeIndexDemandAdmissionV1::NotApplicable, missing reused on ChangedCodeChunkSetV1) are absorbed from the tip and no longer reproduce.
  • Publication pointer memo no longer treats equal length and mtime as identity. A same-size restore of the observed pointer was refused as CompareAndSwap.

This PR targets codex/tracedecay-total-redesign-plan-reopened only. It does not merge #707 or this branch to master.

Motivation

Plan 12 / Plan 21 say source-only aliases and earlier persisted shapes change in place or return ResetRequired. Cutover decoders and unreleased store conversions are transitional stability, not the end state.

The publication memo violated the same rule the scheduler already states for source freshness: equal length and mtime are a negative cache, not proof of currency.

Changes

  • crates/tracedecay-contracts / MCP handlers: family schema is the only similar/redundancy wire. Protocol range is 1..=1.
  • crates/tracedecay-global-db: delete v3 and pre-recovery v4 conversions. ResetRequired before mutation.
  • publication_store.rs: compare the pointer digest before memo reuse. The failing test now restores the observed identity under a preserved mtime.

Findings not changed

Left in place so this PR stays one end-state cut:

  • tracedecay-runtime-core still converges released v34/v35 project stores in place.
  • Registered code_projects still adds primary-root columns for the released 8-column shape.
  • migrate_retired_mutation_copy_tables still rewrites retired external-source rows.
  • Opening a legacy registered checkout still writes a durable repository-identity marker.

Test plan

  • cargo test -p tracedecay-mcp --lib clone_lanes_report_one_unavailable_wire_protocol — pass (previously blocked by the tip compile errors; those are gone)
  • cargo test -p tracedecay-code-index-runtime --lib publication_store:: — 27 passed, including publication_over_an_undecodable_active_generation_refuses_a_moved_pointer after the digest fix
  • cargo test -p tracedecay-contracts --lib similar_and_redundancy_reject_retired_request_shapes — pass
  • cargo test -p tracedecay-contracts --test contracts_suite similar_and_redundancy_keep_one_current_protocol_revision — pass
  • cargo test -p tracedecay-global-db --lib admission:: — 30 passed
  • full workspace nextest not run
  • CHANGELOG is release-please owned; no [Unreleased] section to edit

Checklist

  • No secrets, credentials, or .env files included
  • Breaking change: non-final temporal stores and retired similar/redundancy spellings fail closed. Operator reset is the planned path; stored bytes are not mutated.
Open in Web Open in Cursor 

cursoragent and others added 2 commits September 17, 2026 01:27
The family schema is the only current similar/redundancy contract.
Retired shapes and field aliases were cutover compatibility, not a
delegating released facade.

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Published v3 and unreleased pre-recovery v4 stores return ResetRequired
before conversion. Only the final temporal shape is admitted.

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
@changeset-bot

changeset-bot Bot commented Sep 17, 2026 •

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 71bfb5a

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

cursoragent and others added 2 commits September 17, 2026 01:48
…plan-reopened' into cursor/outcome-oriented-execution-aacd

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
Equal length and mtime are not the incumbent pointer. A same-size
restore inside one timestamp quantum was refused as CompareAndSwap.

Co-authored-by: Zack Jackson <ScriptedAlchemy@users.noreply.github.com>
@ScriptedAlchemy

Copy link
Copy Markdown
Owner Author

Integrated or superseded directly on the #707 branch at ff36c4f; follow-up compile/typecheck regressions were fixed on that branch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants