| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat(research): citation graph + branch exploration + local synthesis | 5 个月前 | |
fix(research): strip Medium byline/image chrome from findings, cross-references, snippets Medium's author-byline and image chrome leaked into research output three ways: - key_findings: an orphan `](/@user?source=post_page--…)` link-close (the [label] was chopped by a paragraph split) survived stripMarkdownLinks and the bare-URL stripper (relative /@ URL). Strip orphan `](url)` fragments after the inline flatten. - cross-references + citation snippets: raw markdown tokenised avatar embeds (miro.medium.com/...resize:fill) and the "Press enter or click to view image in full size" caption into junk 3-grams ("https miro medium", "press enter click", "image full size") that surfaced as high-confidence "Where Sources Agree". New stripResearchChrome() (link-flatten + image-caption chrome removal) applied to cross-reference phrase extraction and all three citation-snippet sites. Cross-refs now report real corroborated facts; article prose is untouched. | 3 个月前 | |
fix(research): keep decimals intact when splitting citation claims The citation-graph sentence splitter treated '.' inside numbers like $62.3 as a boundary, so claim text started mid-number. Skip '.' only when flanked by digits; abbreviations remain a known limitation. | 2 个月前 | |
fix(research): trim trailing category nouns from comparison entities | 5 个月前 | |
test(research): failing tests for entity coverage and gap detection | 5 个月前 | |
feat(research): named-entity coverage check populates gaps Detects ALL_CAPS acronyms, CamelCase proper nouns, mixed-case+digit identifiers, and quoted phrases in the research question, then flags any entity not literally referenced by a planned sub-query as a structured {entity, reason} gap in brief.sections.gaps. | 5 个月前 | |
feat(research): widen standard-depth source breadth to 10-12 cited Raise DEPTH_CONFIG.standard minSources 10->15, maxSources 15->20, and the over-fetch buffer factor 0.4->0.6 (now an exported OVER_FETCH_BUFFER_FACTOR constant). On the niche live query the cross-encoder damps the whole pool negative, so the rank-based in-window keep (PR #125) was the only thing retaining canonical sources like sqlite.org/fts5.html — but the 10-source window plus a 0.4 buffer collapsed the retained set after the gates ate it, returning 10 retained / 5 cited with 56 rejected. Widening the window lets the rank-based keep readmit more on-topic/canonical sources into the 10-12 band. The three junk gates stay active and unchanged: the url-shape gate, the content gate, and the strict <0 score-floor on the TAIL beyond the breadth window. No absolute score-floor is reintroduced inside the window (the cross-encoder's absolute logits are miscalibrated per niche query; only its relative order is trusted in-window). Tests: - pipeline-breadth.test.ts: asserts the new 15/20/0.6 knobs (fails on 10/15/0.4) and the no-junk-leak invariant at the wider window (homepage/SERP/LinkedIn ranked inside the window survive the score-floor by rank but are dropped by url-shape; on the old window the on-topic yield is 7, below the 10-12 target). - pipeline-score-floor.test.ts: two existing fixtures encoded the old window size (junk at rank 10-13 was 'outside' the old 10-window); repositioned their off-topic junk to rank 15+ so it is genuinely outside the new 15-window and the tail <0 floor still drops it. | 4 个月前 | |
refactor(tests): mock extract-provider directly, drop dead pipeline shims Phase 6.3 layered a vi.mock of getExtractProvider on top of a vi.mock of extractContent so callers could migrate without rewriting 33 test files. With extractContent now a @deprecated facade with no production callers, the indirection adds nothing — replace the dual mock with a top-level extractMock spy wired straight into getExtractProvider(). Drops the pipeline.js mocks + stale extractContent imports across 33 files; behaviour unchanged. | 5 个月前 | |
feat(research): widen standard-depth source breadth to 10-12 cited Raise DEPTH_CONFIG.standard minSources 10->15, maxSources 15->20, and the over-fetch buffer factor 0.4->0.6 (now an exported OVER_FETCH_BUFFER_FACTOR constant). On the niche live query the cross-encoder damps the whole pool negative, so the rank-based in-window keep (PR #125) was the only thing retaining canonical sources like sqlite.org/fts5.html — but the 10-source window plus a 0.4 buffer collapsed the retained set after the gates ate it, returning 10 retained / 5 cited with 56 rejected. Widening the window lets the rank-based keep readmit more on-topic/canonical sources into the 10-12 band. The three junk gates stay active and unchanged: the url-shape gate, the content gate, and the strict <0 score-floor on the TAIL beyond the breadth window. No absolute score-floor is reintroduced inside the window (the cross-encoder's absolute logits are miscalibrated per niche query; only its relative order is trusted in-window). Tests: - pipeline-breadth.test.ts: asserts the new 15/20/0.6 knobs (fails on 10/15/0.4) and the no-junk-leak invariant at the wider window (homepage/SERP/LinkedIn ranked inside the window survive the score-floor by rank but are dropped by url-shape; on the old window the on-topic yield is 7, below the 10-12 target). - pipeline-score-floor.test.ts: two existing fixtures encoded the old window size (junk at rank 10-13 was 'outside' the old 10-window); repositioned their off-topic junk to rank 15+ so it is genuinely outside the new 15-window and the tail <0 floor still drops it. | 4 个月前 | |
test(research): align shell-completeness fixture to browser fetch_method | 3 个月前 | |
fix(research): C1 standard-depth breadth reliably cites >=6 clean sources Standard-depth research wobbled at 5-6 cited sources (sometimes fewer) because the score floor's strict < 0 rule dropped every candidate the cross-encoder damped slightly negative, keeping only the single top result. A moderately-relevant pool gets damped below zero across the board, so the floor collapsed breadth even when 6+ genuine on-topic survivors existed. Breadth keep: retain the top minSources best-ranked candidates by relaxing the floor to a clear-junk threshold (HARD_JUNK_FLOOR = -0.35) inside that window, so damped-but-relevant sources back-fill the slots while clearly off-topic junk (which lands distinctly lower) is still dropped. Outside the window the strict < 0 rule is unchanged. Wires up the previously-dead minSources depth knob (standard = 10). Keyless passthrough path (positive engine/RRF scores) is unaffected. Social-promo junk: drop a bare LinkedIn activity post (/posts/...activity-<digits>) via the url-shape filter, tagged social-promo and surfaced in rejected_sources. Keyed narrowly on the activity-<id> signature so long-form articles (/pulse/...) and other hosts' /posts/ article paths are never caught; include_domains is honored. | 4 个月前 | |
chore: remove internal dev-process references from tracked files Strip development breadcrumbs (codename, slice/phase/wave/flaw and audit-item tags, internal design-doc pointers) from source comments, SQL migration headers, tests, CHANGELOG, and a benchmark baseline. Correct stale diff/watch tool-schema comments that described them as unimplemented stubs. Reword to preserve the real rationale; no code, control-flow, or test-assertion changes. | 4 个月前 | |
test(research): make the citation-shift test a real mutation-killer The prior citation-alignment test fetched BOTH sources, so localSources === sources and the fetched-view remap was never exercised — the assertion passed vacuously. Add a fixture with a LEADING UNFETCHED source (top-ranked react row fails to fetch) so localSources omits it; the model's [2] must resolve to the SECOND FETCHED source (svelte), not the second full-array row (vue). Verified RED when the pipeline indexes the full sources array instead of localSources. | 4 个月前 | |
feat: cite key findings and heuristic summary per-claim in evidence-fallback brief The keyless (non-LLM) research render only cited 3 of 5 sections: the comparison-only Verdict/Comparison branches and cross-references (which need a phrase shared by 2+ sources). The dominant Key Findings section and the heuristic Summary branch emitted uncited bullets, so most sources never resolved to an inline [n] and per-claim citation density stayed low. buildKeyFindings now returns each finding's source index alongside the text; buildResearchBrief remaps it from the fetched-only view to the full sources array and exposes it as an optional parallel key_finding_sources array on ResearchBrief (the public key_findings string[] shape is unchanged). renderKeyFindings and the heuristic Summary branch weave a per-bullet [n] keyed on whether that finding has a resolved index, failing open (no fabricated index) when absent or out of range. Also remaps comparison tradeoffs and cross-reference source indices to the full sources base so a leading unfetched source no longer produces an off-by-one citation in the Verdict/Comparison/Agreement sections. | 4 个月前 | |
feat: cite key findings and heuristic summary per-claim in evidence-fallback brief The keyless (non-LLM) research render only cited 3 of 5 sections: the comparison-only Verdict/Comparison branches and cross-references (which need a phrase shared by 2+ sources). The dominant Key Findings section and the heuristic Summary branch emitted uncited bullets, so most sources never resolved to an inline [n] and per-claim citation density stayed low. buildKeyFindings now returns each finding's source index alongside the text; buildResearchBrief remaps it from the fetched-only view to the full sources array and exposes it as an optional parallel key_finding_sources array on ResearchBrief (the public key_findings string[] shape is unchanged). renderKeyFindings and the heuristic Summary branch weave a per-bullet [n] keyed on whether that finding has a resolved index, failing open (no fabricated index) when absent or out of range. Also remaps comparison tradeoffs and cross-reference source indices to the full sources base so a leading unfetched source no longer produces an off-by-one citation in the Verdict/Comparison/Agreement sections. | 4 个月前 | |
chore: remove internal dev-process references from tracked files Strip development breadcrumbs (codename, slice/phase/wave/flaw and audit-item tags, internal design-doc pointers) from source comments, SQL migration headers, tests, CHANGELOG, and a benchmark baseline. Correct stale diff/watch tool-schema comments that described them as unimplemented stubs. Reword to preserve the real rationale; no code, control-flow, or test-assertion changes. | 4 个月前 | |
fix(research,agent): route local-tier synthesis via additive backend param Replace the process.env.WIGOLO_LLM_PROVIDER set/restore bridge in synthesizeLocal (research) and the agent synthesis rung with the additive runLlmText `backend: { url, model }` override merged from C1. It routes a single call to the resolved endpoint reading/mutating NO process.env, so two concurrent tier syntheses can no longer corrupt a shared provider (cloud->local durable reroute). Adds Promise.all concurrency regression tests on both paths and updates routing assertions to the backend param. | 4 个月前 | |
feat(research): add report synthesis with sampling and fallback | 6 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 5 个月前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 5 个月前 | ||
| 5 个月前 | ||
| 5 个月前 | ||
| 4 个月前 | ||
| 5 个月前 | ||
| 4 个月前 | ||
| 3 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 6 个月前 |