Repository navigation
[Global Ask] Add evidence-honest knowledge-cutoff scope #271
Description
Buyer problem
The Buyer-surface stack now preserves analysis-run knowledge_cutoff, per-post live_after_cutoff, and cutoff body evidence when a buyer opens a recorded run. Global Ask still assembles only the current live source_post state and exposes no first-class as-of scope.
A buyer asking “What did we know by 2026-01-15?” can therefore receive a current answer without a machine-verifiable statement that the cited body and semantic facts existed by that cutoff. Adding a date only to the prompt would be misleading; the retrieval boundary itself must be cutoff-aware.
Product contract
Add an optional, explicit Global Ask scope:
{
"question": "What did we know about Phoenix by the cutoff?",
"knowledge_cutoff": "2026-01-15T12:00:00Z"
}Retrieval
- Select only source records whose evidence was available at or before the cutoff.
- Resolve each selected post to the latest eligible
source_post_revision/snapshot at or before the cutoff. - Resolve persisted project, role/responsibility/affiliation, Keyman, graph, and content-artifact evidence against their own recorded/effective time contracts; do not join current facts into a historical answer.
- If a source existed but no historical body was retained, return an explicit
historical_body_unavailablelimitation rather than substituting the live body silently. - Keep all current visibility, tenant, ABAC, source-count, graph-fact, body-length, and MCP rate-limit bounds.
Response provenance
Each citation must expose enough structured metadata to distinguish:
- source identity;
- source revision/snapshot identity;
- evidence available time;
- requested knowledge cutoff;
- whether the live source has changed after the cutoff;
- any unavailable historical channel.
The synthesized answer must state whether it is fully cutoff-grounded, partially cutoff-grounded, or live-only. It must never call a live-only answer an as-of answer.
Browser and MCP parity
- Browser Global Ask and authenticated MCP use the same cutoff-aware source assembler.
- The MCP input schema and output schema version the new field explicitly.
- Omitting
knowledge_cutoffpreserves the current live-query contract.
RED→GREEN acceptance tests
- A post revised after cutoff contributes its retained cutoff body, not its live body.
- A post created after cutoff is excluded even when its current text matches strongly.
- Current semantic facts created after cutoff do not leak into a historical answer.
- Missing historical body returns an explicit limitation and never falls back silently.
- Two cutoffs against the same source produce deterministic, revision-specific citations.
- Unauthorized historical revisions remain unauthorized.
- Browser and MCP produce the same source IDs, revision IDs, cutoff, and limitation flags.
- Live queries without a cutoff remain backward compatible.
- Tests distinguish event/effective time from system/available time and prevent future-information leakage.
Scope boundary
Do not combine this with the semantic candidate retrieval patch (#268), MCP admission/CORS hardening (#269), conversation persistence, TEPP estimation, or arbitrary temporal inference. This slice is source selection, revision resolution, provenance, and honest limitation reporting only.
Buyer completion signal
A buyer can ask a dated question and audit exactly which retained evidence existed by that date, while the product explicitly refuses to fabricate a historical view from current data.
Activity
seonghobae commentedon Aug 20, 2026
Draft stacked implementation is #301 (
feat/global-ask-knowledge-cutoff-v2230) onto current #2646c4b1d5eb81e. Exact head106bc00197c80ffea3d499941d1c2f5c647d8dba. Optionalknowledge_cutoffonPOST /api/askuses coveringsource_post_revisionbodies; missing historical bodies are named, never replaced with the live rewrite. Live queries stay live-only. Independent exact-head APPROVE required. Do not self-approve. Does not mix into #287/#290, #276, or #270/#286.seonghobae commentedon Aug 20, 2026
Current implementation head is now PR #301 at 7a5fc4b; backend and frontend checks are green. This supersedes the older SHA in the prior issue note, but formal exact-head approval and protected merge remain outstanding.
feat: add evidence-honest Global Ask knowledge cutoff (v2.23.0) (#301)
[-][Buyer Gap] Add evidence-honest knowledge-cutoff scope to Global Ask[/-][+][Global Ask] Add evidence-honest knowledge-cutoff scope[/+]seonghobae commentedon Aug 25, 2026
Cutoff-aware Global Ask is implemented on current main (
04e6b610) as ADR 0216.POST /api/askaccepts optionalknowledge_cutoff. Omitting it keeps the live-query contract. A dated question retrieves posts available by that clock, cites the coveringsource_post_revision, and nameshistorical_body_unavailableinstead of substituting the live body.Independent APPROVE on the exact head is required before squash-merge.