Skip to content

e2e-evolve 2026-07-05: drain 4 backlog fixes from the DeepSeek-lane run (+ E3 runner-doc)#44

Merged
ryanxwy merged 5 commits into
mainfrom
e2e-evolve-20260705
Jul 5, 2026
Merged

e2e-evolve 2026-07-05: drain 4 backlog fixes from the DeepSeek-lane run (+ E3 runner-doc)#44
ryanxwy merged 5 commits into
mainfrom
e2e-evolve-20260705

Conversation

@ryanxwy

@ryanxwy ryanxwy commented Jul 5, 2026

Copy link
Copy Markdown
Owner

Backlog-drain from the 2026-07-04-run2 DeepSeek-lane live-e2e run (no open blockers this session). Each product fix ships with a deterministic regression that was independently verified to FAIL on old code / PASS on new (by the fixer + a fresh-context code-reviewer + the safety-auditor).

Fixes

  • BK1 · phase2/inventory_aggregator_scan (PIC-20260704r2-1) — resegmentModelTrim doubled a trim the LLM left in both the model and trim fields ("XLE XLE"), which classified as near and rendered broken. Guard the concat when trim is already a whitespace-bounded trailing run of model. Restores match_status='exact'. Powertrain guard untouched. Unit + real-DB workflow regression.
  • BK7-msrp · phase2/inventory_site_scan (PIC-20260704r2-7, msrp half) — null a cross-source MSRP that is inverted below the observed listed price (a mismatched-VDP mis-parse the same-page guards never see). Nulls the derived MSRP, keeps the observed price; markup signal untouched. Real-DB persist regression on both write arms.
  • BK2 · phase4/daily_digest (PIC-20260704r2-2) — add "digest" to the data.changed pulse for dealer_reply_extract + quote_pipeline (both write dealer_quotes), so the overview headline count refetches after an extract instead of showing a stale "0 quote(s)" next to a live best-OTD. No calc change. Real-service RunPubSub regression.
  • BK6 · phase0/ui (PIC-20260704r2-6) — skip the explicit getProfile for a null or no-longer-active pin (the useAsync.refetch bypasses enabled, so a "profiles" pulse fired GET /api/profiles/null / /<deleted-id> — console 404s). Guard inside the fetcher closure; the existing data[0] fallback is unchanged. Component regression through the real refetch bus.
  • BK3 · phase0/live_e2e (PIC-20260704r2-3, runner doc) — live-verified, no product change: the router's destructive downgrade is confidence-gated (DESTRUCTIVE_CONFIDENCE=0.85), not an unconditional phrase-match; a clear ask launches to the skill's own typed-YES gate. Reframe E3/J6/P6 + fix the stale router.ts line cite.

Gates

  • RUN_UI_FUNCTIONAL=1 bash scripts/green.shGREEN (incl. the UI functional lane).
  • Fresh-context code-reviewer: APPROVE, safety-auditor: SAFE (both separate from the fixer; both independently red-checked the fix/test pairing).
  • Fresh serve-live (deepseek lane) boots clean; read-route smoke green (/api/profiles, /api/digest, /__e2e/rows); server-404 on /api/profiles/null confirms BK6's client-skip is the correct fix.

Still-open backlog (recorded, not this session): BK7 cross-model trim leak (non-minimal — needs same-card provenance), PIC-20260704-3 aggregator kept-0 multi-word (a distinct classifyMatchStatus mismatch, needs live instrumentation).

ryanxwy added 5 commits July 5, 2026 11:01
…del and trim fields

The aggregator extract prompt pins the model, but the LLM sometimes leaves the
trim in BOTH fields (model "RAV4 XLE", trim "XLE"). resegmentModelTrim's blind
`${model} ${trim}` concat then doubled it ("RAV4 XLE XLE" -> trim "XLE XLE"),
which classified as 'near' (not 'exact') and rendered visibly broken. Guard the
concat: if trim is already a whitespace-bounded trailing run of model, re-split
from model alone. The powertrain asymmetric guard is untouched. A de-doubled
"XLE" restores match_status='exact'. Unit + real-DB workflow regression (both
fail on old code). Found: live-e2e 2026-07-04-run2 (PIC-20260704r2-1).
…he observed listed price

A scan persisted msrp=$19,991 with listed_price=$33,915 (listed > msrp, an
implausible MSRP for the car). The same-page harvest guards only catch an
inversion within one VDP snapshot; a cross-source pair (SRP-extracted price +
an MSRP fanned out from a possibly-mismatched VDP) slips through. Add a
write-time guard in the shared scan writer: when listed price > msrp, null the
derived MSRP and keep the observed price (mirrors the otd_total<=0 -> null
persist normalization). dealerMarkup is a separate labeled field, so the markup
signal is untouched; COALESCE upserts never clobber a prior-good msrp with the
null. Real-DB persist regression on both write arms. Found: live-e2e
2026-07-04-run2 (PIC-20260704r2-7, msrp half; cross-model trim leak stays open backlog).
…quote_pipeline

The overview headline ("N quote(s), lowest $X") re-aggregates from
dealer_quotes, but affectedKinds() mapped dealer_reply_extract to
[quotes,messages] only, so the Canvas digest fetch never refetched after an
extract wrote quotes — the count stayed stale ("0 quote(s)") until the next
daily_digest, while best-OTD self-healed from the live quotes fetch. Add
"digest" to the pulse for dealer_reply_extract and quote_pipeline (both write
dealer_quotes). GET /api/digest re-aggregates fresh, so the extra pulse is a
harmless refetch, no calc change. Real-service RunPubSub regression on both
skills. Found: live-e2e 2026-07-04-run2 (PIC-20260704r2-2).
…e pin

Canvas's explicit getProfile is bound to the session pin, and useAsync's
refetch() ignores its enabled flag (it gates only the mount effect). So a
"profiles" data.changed pulse re-fired getProfile(null) -> GET /api/profiles/null
on a STOP/clarify run, or getProfile(<deleted-id>) after a reset (the reset
pulse carries profile_id null and matches every registration; the pin never
clears since pipeline_reset runs as a workflow, not the shell purge) — each a
console 404 that accrued across a session. Guard inside the fetcher closure:
skip when profileId is null or not in the active profiles list. A skipped fetch
lands kind:'error', which the existing explicitActive fallback already treats as
'use newest-active data[0]' — no happy-path change. Component regression through
the real refetch bus (fails on old code). Found: live-e2e 2026-07-04-run2
(PIC-20260704r2-6).
…ence-gated

The runner doc described the 0.85 destructive downgrade as an unconditional
phrase-match to the clarify-run-explicit button and cited a stale line range
(router.ts:265-270, now the suggest-next header). The router is confidence-gated
(DESTRUCTIVE_CONFIDENCE=0.85, router.ts:248-254): only a route BELOW 0.85
downgrades to clarify; a CLEAR destructive ask ("reset everything") is rated
>=0.85 and launches straight to the skill's OWN typed-YES gate (the stronger
floor). Correct the line cites and reframe E3/J6/P6 to expect either outcome by
the phrase's clarity. live-verified, no product change (behavior is pinned by
router.test.ts and was observed live 2026-07-04-run2). Resolves PIC-20260704r2-3.
@ryanxwy
ryanxwy merged commit 1fdc0eb into main Jul 5, 2026
1 check passed
@ryanxwy
ryanxwy deleted the e2e-evolve-20260705 branch July 5, 2026 18:14
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.

1 participant