You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(api,extension): video-first mediaState, orchestrator race guard, provenance from snapshot
Align all platform adapters to give has_video precedence over has_images,
matching the SPEC: any detected video/iframe causes the post to be skipped
even when images are present. LessWrong, X, and Substack adapters were
previously images-first and are now corrected.
Other changes:
- Orchestrator: atomic updateMany guard prevents processing an investigation
that reached a terminal state between lease claim and start
- Post router: derive provenance from InvestigationInput snapshot for all
statuses, not just COMPLETE
- parseProgressClaims: fail-fast on malformed data instead of silent fallback
- page-content-decision: only auto-investigate for NOT_INVESTIGATED; interim
snapshots are display data
- CI: add .github/actions/** to path filters, drop Firefox XPI artifact
- README: add Wikipedia to supported platforms table
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: SPEC.md
+13-13Lines changed: 13 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -61,7 +61,8 @@ misleading.
61
61
62
62
v1 ships fact-checking for posts on LessWrong, X, Substack, and Wikipedia.
63
63
Investigations use post text plus attached images when available. Posts classified
64
-
as `has_video` (video/iframe detected and no extracted images) are skipped.
64
+
as `has_video` (any detected video/iframe embed) are skipped, even when text and
65
+
images are also present.
65
66
66
67
Users can trigger investigations in two ways (both async queued):
67
68
@@ -181,7 +182,7 @@ Four key design decisions:
181
182
4.**Investigations are multimodal for images.** When image attachments are
182
183
available, we include image URLs in the model input (`input_image`)
183
184
alongside text. Video is not analyzed in v1; posts classified as
184
-
`has_video` (video/iframe detected and no extracted images) are visibly
185
+
`has_video` (any detected video/iframe embed) are visibly
185
186
skipped.
186
187
5.**Edited posts use incremental updates.** If a post is edited and a prior
187
188
complete `SERVER_VERIFIED` investigation exists, we run an "update investigation"
@@ -279,9 +280,8 @@ The prompt principles (exact wording TBD):
279
280
system and will be selectively highlighted.
280
281
-**Claims must remain text-grounded.** Even when images are provided to the investigator, flagged
281
282
claims must still be exact verbatim quotes from the post text so DOM matching remains reliable.
282
-
-**Video is non-analyzable in v1.** Posts classified as `has_video` (video/iframe detected and no
283
-
extracted images) are skipped even when text is present. When extracted images are present, the
284
-
post is investigated using text + images, and video remains unanalyzed.
283
+
-**Video is non-analyzable in v1.** Posts classified as `has_video` (any detected video/iframe
284
+
embed) are skipped even when text is present and even when extracted images are present.
285
285
286
286
## 2.5 User Interface
287
287
@@ -1606,7 +1606,7 @@ interface PlatformContent {
1606
1606
externalId:string;
1607
1607
url:string;
1608
1608
contentText:string; // Client-observed normalized plain text; must be non-empty
1609
-
mediaState:"text_only"|"has_images"|"has_video"; // "has_video" means video/iframe detected and imageUrls is empty; text may still be present.
1609
+
mediaState:"text_only"|"has_images"|"has_video"; //Precedence: "has_video" if any video/iframe is detected; otherwise "has_images" when imageUrls is non-empty; otherwise "text_only".
1610
1610
imageUrls:string[];
1611
1611
imageOccurrences?:ImageOccurrence[]; // Positional image data; sent to API as observedImageOccurrences
1612
1612
metadata:Record<string, unknown>;
@@ -1653,9 +1653,9 @@ DOM manipulation is reliable.
0 commit comments