Skip to content

feat: consolidate TraceDecay V2 PR8-PR13 delivery#421

Draft
ScriptedAlchemy wants to merge 1261 commits into
masterfrom
codex/tracedecay-total-redesign-plan
Draft

feat: consolidate TraceDecay V2 PR8-PR13 delivery#421
ScriptedAlchemy wants to merge 1261 commits into
masterfrom
codex/tracedecay-total-redesign-plan

Conversation

@ScriptedAlchemy

@ScriptedAlchemy ScriptedAlchemy commented Jul 10, 2026

Copy link
Copy Markdown
Owner

Summary

This draft PR is the consolidated delivery branch for TraceDecay V2 PR8 through PR13.

  • PR8: completed session/LCM temporal retrieval authority.
  • PR9/PR10: code intelligence, exact/lexical/graph retrieval, FastEmbed semantic projection, calibration, and byte-stable fallback.
  • PR11: application, policy, configuration, catalog, Git transaction, and feedback-cycle core.
  • PR12: CLI/MCP/HTTP/LSP production bindings and canonical diagnostics/impact readers.
  • PR13: Hook V2, Context Scout, host lifecycle/bundles, read-only GitHub/CI feedback, and agent proximity.

The branch also contains the supporting rusqlite runtime cutover, worktree-aware incremental indexing, storage retention/Doctor integration, and direct product tests required by the canonical V2 plans.

Verification

  • Focused PR8-PR13 product tests
  • cargo check --all-features
  • cargo test --all-features
  • cargo clippy --workspace --all-targets --all-features -- -D warnings
  • cargo fmt --all -- --check
  • Dashboard and host integration checks
  • Distribution/FastEmbed acceptance
  • Linux, macOS, and Windows CI

Current status: implementation is still being consolidated from the shared checkout and CI is red. This PR remains draft until the working tree is committed, broad verification is stable, and the historical conventional-commit blocker is resolved. It must not be merged in its current state.

Safety boundaries

GitHub review ingestion is read-only. Semantic indexing never blocks exact/lexical/graph retrieval and publishes only complete compatible generations. Local coordination logs, private transcript evidence, secrets, and ad hoc artifacts are excluded from commits.

@changeset-bot

changeset-bot Bot commented Jul 10, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 23ec93a

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

@ScriptedAlchemy ScriptedAlchemy added the WIP Work in progress; do not merge label Jul 10, 2026
@ScriptedAlchemy
ScriptedAlchemy force-pushed the codex/tracedecay-total-redesign-plan branch from e50f8f5 to 4f5ab66 Compare July 10, 2026 05:54
@ScriptedAlchemy

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 986f25cca6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docs/plans/2026-07-09-tracedecay-brain-rewrite.md Outdated
@ScriptedAlchemy
ScriptedAlchemy force-pushed the codex/tracedecay-total-redesign-plan branch 4 times, most recently from 5862bd6 to 53502de Compare July 11, 2026 16:52
@ScriptedAlchemy
ScriptedAlchemy force-pushed the codex/tracedecay-total-redesign-plan branch 4 times, most recently from 642a33a to 5f2f610 Compare July 23, 2026 17:06
@ScriptedAlchemy ScriptedAlchemy changed the title [WIP] Plan TraceDecay V2 brain rewrite feat: consolidate TraceDecay V2 PR8-PR13 delivery Jul 24, 2026
@ScriptedAlchemy
ScriptedAlchemy force-pushed the codex/tracedecay-total-redesign-plan branch from 76dee0f to 0258866 Compare July 24, 2026 17:16
ScriptedAlchemy and others added 15 commits July 24, 2026 20:31
…fects

The chrome audit reported 30 serious axe violations across the 72-shot sweep,
from two causes.

The light-theme accent was oklch L 0.5, which measures 4.44:1 against the nav
rail — fine for the fills it was designed for, a hair under AA for the 10px
channel numbers the new rail prints in it. Darkening the token to L 0.47 clears
4.5:1 on every light surface without touching hue or chroma, so the letterspaced
micro-caps survive exactly as drawn.

Loom's inspector strip hung a timestamp caption and an instruction line directly
inside its <dl>, which is neither a term nor a definition. The grid moves to the
wrapper and the <dl> becomes `display: contents`, so the list holds only dt/dd
groups while every readout stays a direct child of the same grid — identical
layout, honest semantics.

Also detaches the audit's dev server and signals its process group: `npx` never
forwarded SIGTERM to rsbuild, so the audit hung indefinitely after printing its
summary.

Co-Authored-By: Claude <noreply@anthropic.com>
Applies the reviewed defects that were still uncommitted:

- move_symbol passed the destination FILE path where publish_planned_source_edit
  takes the project ROOT, so every applied move hit ENOTDIR and reported
  EffectUnknown having written nothing.
- Source-edit publication created its temp file 0o600 and renamed it over the
  original, silently stripping the mode (a 0755 script became 0600). The
  original permissions are now restored on the open handle via fchmod, which
  umask cannot narrow.
- tracedecay_search short-circuited to an empty "unavailable" outcome whenever a
  scope prefix was set, so any serve launched from a subdirectory returned zero
  results for the whole session. The retrieval pipeline returns anchor-keyed
  candidates with no file path, so the scope cannot be applied as a post-filter;
  the search now runs and reports scope_prefix_applied: false instead.
- The JSONL Skip policy never reset continuing_oversized/max_record_bytes, so
  after one >16MiB record the rest of the batch was misclassified oversized,
  skipped, and the durable cursor advanced past it. Permanent transcript loss.
- A packaged crate ships app-dist but none of the frontend sources the build
  stamp hashes, so the stamp never matched and build.rs ran npm in a directory
  with no package.json: every cargo install failed. build.rs now treats the
  committed dist as authoritative when the sources are absent.
- Cancelling an LSP semantic request dropped read_message_until mid-frame and
  the broker returned the desynchronized client to its reuse slot, breaking
  every later request. Cancelled clients are now retired.
- evaluate_policy_route derived scope_match and required_effect_class from the
  candidate under test, so both routing gates compared a value against itself.
  Both are now caller-supplied.
- /api/storage/findings was typed as the Doctor projection but serializes
  {kinds, note}, so every response failed to parse and the Doctor attention dot
  could never light. Schema, consumers, fixtures and tests realigned.
- Restored the dashboard CI gates (typecheck, contracts:check, vitest, build);
  without them dashboard/src was never compiled or tested anywhere.
- A batch peer losing write authority settled every other member as
  MissingAuthority, blaming authorized requests for an unrelated revocation.
  Peers now settle as Faulted and keep any existing Final outcome.
- The reserved-health reader lane could never be replenished once retired, so a
  single transient failure left Doctor blind while the pool reported Ready.

Note: edits.rs and invocation.rs also carry pre-existing uncommitted branch work
that could not be separated from these hunks non-interactively. invocation.rs is
required here regardless - handlers.rs landed in 07326a2 with the new
evaluate_policy_route signature, so the matching call site must accompany it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…planes

The console rendered every quantity at one of two small sizes on a single
flat plane, so a surface had no place for the eye to land and no way to be
read except word by word. Three changes to the shared vocabulary:

- A display type tier (34/44/60px) with its own tracking and weight, set
  against the 0.16em legend at the other end of the scale.
- Three chassis planes -- well, face, raised -- on one fixed recipe of a
  single inset highlight plus a single soft shadow.
- The magnitude rail: a Meter primitive and a Readout fraction, so a printed
  number can also carry a length and a column becomes a distribution.

Also fixes a latent windowing bug: VirtualList estimated 36px rows while
DataRow measured 32px, offsetting every row of a list past the virtualization
threshold. Both now derive from --row-height-data.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The expression-level allow suppressed unreachable_code but not the capture
lint: liveness analysis resolves that level at the binding site, so CI kept
failing on runtime_service.rs:739 under -D warnings.
Both surfaces rendered thirty-odd rows at one size and one weight, so
nothing could be learned by looking -- only by reading each line. Trust,
recall count and message volume now each carry a printed figure AND a
length scaled to the heaviest row loaded, which is what turns a column of
near-identical three-digit numbers into a distribution.

Fixes three defects found in the audit gallery:
- Knowledge's facts tile printed 41,204 as the string "41…": a 26px numeral
  in a half-rail cell. Facts is the quantity the workspace exists to report,
  so it takes the display tier and the full rail in compact magnitude form.
- The HRR status cell was 36px wide and its own vocabulary does not fit:
  "no bank" and "stale" wrapped into the bar above them.
- The trust histogram printed every fifth bucket label at 9px as unreadable
  debris; a known 0-to-1 axis is ruled at its ends instead.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- KeyValueTree: minmax label column instead of fixed 8rem (was
  collapsing to one character per line at nesting depth); primitive
  arrays render as wrapped chips instead of index-labelled rows
- SettingsPage: single card now spans full width instead of half
- Delivery/Knowledge: StatTile rail stats go single-column + dense
  (grid-cols-2 in a 224px rail truncated REPOSITORIES/FACTS even at
  1440)
- StateChip: detail text wraps as a whole line instead of being
  squeezed word-by-word into a narrow leftover column
- Knowledge HrrCoverageBar: widen status column so 'no bank' doesn't
  wrap to two lines
- Sessions: hide the timestamp column below sm — at 320px it and the
  message count left no room for the session id at all
- Explorer: composed empty state (icon + heading + real source names)
  replacing a single bare sentence
kindColor was pinned at oklch L 0.78 -- tuned for the dark field -- and
kindRgb was baked once at construction. Two consequences: on the light theme
every node sat ABOVE its background, so forty overlapping translucent discs
accumulated into a white cloud with no structure in it; and flipping the
theme left every node wearing the other theme's lightness, because only the
edge and label colours were ever re-sampled.

The palette now measures which side of the substrate the field is on, kind
hues resolve to saturated ink on paper and lit bodies on graphite, and the
observer re-derives them when the medium changes sides.

Also pulls the resting corona in from 1.55x/2.9x the body to 1.38x/2.2x.
Sigma draws each companion as a hard-edged disc, so a corona is three
concentric steps and every step is a visible edge; at the old radii those
edges read as banding and turned a modest graph into a field of lollipops.
A strike still swells with all the room it had.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Require the displayed configuration revision on settings writes so stale dashboard edits fail instead of overwriting newer state.
Adopts and hardens the Explorer checkpoint from dc7c8f9d by
ScriptedAlchemy, preserving real graph, LCM, and memory response shapes.
Adopts the truthful freshness and pipeline presentation from checkpoint
1bc03353 by ScriptedAlchemy without inferring checkout branch topology.
Reverse the rejected checkpoint redesign, preserving the current idle index
summary, ranked seeds, and narrow filter behavior. Retain only the backend-
matched Hermes LCM search shape with focused regression coverage.
Keep only the freshness primitives independently used by Delivery and remove
unused operational-layout exports carried over from the unvetted checkpoint.
Accept the nullable session start time served by the savings endpoint and avoid
rounding duration labels across minute and hour boundaries. The preserved Loom
checkpoint itself is already harvested and superseded, so none is replayed.
Derive user-setting revisions from persisted user config and guard reload, compare, and write under one lock so concurrent edits cannot clobber each other or conflict with project-only changes.
Retain the adopted Explorer workspace while removing its forks of the shared
Meter and DataRow primitives. Explorer now consumes the same implementations
as the other dashboard workspaces through backward-compatible options.
Resolve selected project labels from the registry and avoid presenting
unproduced receipt, build, daemon, or synchronization state as fact.
Separate reported, tokenized, and estimated cost coverage; load canonical
fact details; and keep unavailable session stores distinct from empty data.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

WIP Work in progress; do not merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant