feat: consolidate TraceDecay V2 PR8-PR13 delivery#421
feat: consolidate TraceDecay V2 PR8-PR13 delivery#421ScriptedAlchemy wants to merge 1261 commits into
Conversation
|
e50f8f5 to
4f5ab66
Compare
|
@codex review |
There was a problem hiding this comment.
💡 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".
5862bd6 to
53502de
Compare
642a33a to
5f2f610
Compare
76dee0f to
0258866
Compare
…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.
Summary
This draft PR is the consolidated delivery branch for TraceDecay V2 PR8 through PR13.
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
cargo check --all-featurescargo test --all-featurescargo clippy --workspace --all-targets --all-features -- -D warningscargo fmt --all -- --checkCurrent 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.