Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
214 commits
Select commit Hold shift + click to select a range
05c9105
Document general page reader plan
devjoe Jun 28, 2026
da643bb
Research general page extraction options
devjoe Jun 28, 2026
1775d0d
Document current-region reader research
devjoe Jun 28, 2026
61160e3
Add parser dependency candidate research
devjoe Jun 28, 2026
4a5424a
Implement general page reader contracts
devjoe Jun 28, 2026
7ac806d
Add general page parser spike
devjoe Jun 28, 2026
b0e4927
Expand general page parser corpus
devjoe Jun 28, 2026
4ffd3aa
Complete general page synthetic corpus
devjoe Jun 28, 2026
4035ce4
Document general page pattern evidence boundary
devjoe Jun 28, 2026
3e77fd9
Add general page observation runner
devjoe Jun 28, 2026
fa22350
Summarize general page observation pass
devjoe Jun 28, 2026
51c3872
Align general page evidence statuses
devjoe Jun 28, 2026
b02ad50
Complete targeted general page observations
devjoe Jun 29, 2026
fdf204d
Decide general page parser route
devjoe Jun 29, 2026
5491285
Add parser-neutral evaluation contract
devjoe Jun 29, 2026
18efbd1
Merge branch 'main' into codex/general-page-reader-contract
devjoe Jun 29, 2026
02696ac
Add Truly heuristic parser baseline
devjoe Jun 29, 2026
bd08e21
Add General Page Reader evaluation v3
devjoe Jun 30, 2026
745841b
Anonymize real-world eval target ids
devjoe Jun 30, 2026
6145892
Add real-world eval diagnostics
devjoe Jun 30, 2026
6a54378
Add General Page Reader v4 fixtures
devjoe Jun 30, 2026
1476868
Harden General Page list-index detection
devjoe Jun 30, 2026
3c7fa27
Address General Page Reader review gates
devjoe Jun 30, 2026
f2c4401
Bump preview metadata for General Page Reader branch
devjoe Jun 30, 2026
26aa0af
Add General Page Reader review handoff
devjoe Jun 30, 2026
b6f1920
Add General Page Reader content script seam
devjoe Jun 30, 2026
f6db2a6
Add general page sidepanel MVP
devjoe Jun 30, 2026
9decf9c
Clarify page reader activation errors
devjoe Jun 30, 2026
a8f679c
Add general page reader CDP audit
devjoe Jun 30, 2026
861deea
Harden page reader runtime states
devjoe Jun 30, 2026
c9e8c57
Add reading action contract
devjoe Jun 30, 2026
5a28af9
Add General Page Reader quality review loop
devjoe Jul 1, 2026
ae0df6f
Improve General Page fallback block scoring
devjoe Jul 1, 2026
9ff12ee
Add General Page parser advisor contract
devjoe Jul 2, 2026
0201477
Codify General Page advisor runtime policy
devjoe Jul 2, 2026
fdb816d
Wire General Page parser advisor runtime
devjoe Jul 2, 2026
af72284
Add General Page selection target flow
devjoe Jul 2, 2026
46f0424
Re-extract General Page candidate block text
devjoe Jul 2, 2026
e970304
Add optional all-sites access for General Page Reader
devjoe Jul 2, 2026
25aeb40
Apply index density heuristic to semantic main roots
devjoe Jul 2, 2026
e29129b
Wire General Page model brief runtime
devjoe Jul 2, 2026
687f05a
Improve General Page CDP audit observations
devjoe Jul 2, 2026
a45e35c
Improve General Page quality fixtures
devjoe Jul 2, 2026
9826560
Add General Page quality gate
devjoe Jul 2, 2026
360eef6
Harden General Page extraction against review-observed traps
devjoe Jul 3, 2026
21506d9
Add Slice 6b current-region point-target spike
devjoe Jul 3, 2026
83abbed
Add user-confirmed screenshot analysis gated on vision probe
devjoe Jul 3, 2026
2e30756
Add live-DOM source mode to the product-quality review harness
devjoe Jul 3, 2026
d5e8b20
Add Codex acceptance handoff for 6b, screenshot flow, and live-DOM ha…
devjoe Jul 3, 2026
9dd7b99
Stabilize General Page current-region audit
devjoe Jul 3, 2026
f9c47d0
Harden privileged model request routing
devjoe Jul 3, 2026
18bcc02
Polish Page Web saved-session switching
devjoe Jul 3, 2026
458d839
Polish Page Web reading diagnostics
devjoe Jul 3, 2026
aef6467
Add live DOM false-ready parser regressions
devjoe Jul 3, 2026
fb43868
Align Page Web release documentation
devjoe Jul 3, 2026
7433ffb
Demote gated continue reading previews
devjoe Jul 3, 2026
df5cec0
Filter Page Web source link context
devjoe Jul 3, 2026
c4cbb66
Compact Page Web diagnostics
devjoe Jul 3, 2026
b3551b7
Audit Page Web diagnostics disclosure
devjoe Jul 3, 2026
5dc1467
Report Page Web browser QA matrix
devjoe Jul 3, 2026
72ce6d7
Include Page Web model audit in public checks
devjoe Jul 3, 2026
faa6084
Refresh Page Web unsupported action copy
devjoe Jul 3, 2026
0411476
Fix CWS checklist preview label
devjoe Jul 3, 2026
c8a3948
Resolve Page Web preview decisions
devjoe Jul 3, 2026
8cf2480
Clarify future parser runtime gates
devjoe Jul 3, 2026
2f81396
Document Page Web merge readiness
devjoe Jul 3, 2026
e4f3f93
Compact Page Web ready model context
devjoe Jul 3, 2026
99d85f2
Add current Page Web smoke review
devjoe Jul 3, 2026
c52f0c3
Add multi-tab Page Web smoke coverage
devjoe Jul 3, 2026
109f654
Audit Page Web responsive layout
devjoe Jul 3, 2026
9de383b
Check Page Web readiness handoff docs
devjoe Jul 3, 2026
5455551
Document Page Web review gate state
devjoe Jul 3, 2026
62fa30f
Surface Page Web design restraint audit
devjoe Jul 3, 2026
e3edd47
Clarify Page Web toolbar guidance
devjoe Jul 3, 2026
df98cbf
Audit Page Web no-grant guidance clarity
devjoe Jul 3, 2026
3fca693
Record clean Page Web audit evidence
devjoe Jul 3, 2026
ecf176c
Gate live Page Web smoke readiness
devjoe Jul 3, 2026
ba0818a
Record gated live Page Web smoke evidence
devjoe Jul 3, 2026
d6e9fb0
Require gated Page Web smoke docs
devjoe Jul 3, 2026
d1ba7a4
Refresh Page Web readiness evidence
devjoe Jul 3, 2026
fe854b6
Add non-uploadable CWS local smoke package
devjoe Jul 3, 2026
6231ca9
Record non-uploadable CWS smoke evidence
devjoe Jul 3, 2026
68fae8b
Quiet release helper git probes
devjoe Jul 3, 2026
4391f27
Clarify Page Web verification evidence wording
devjoe Jul 3, 2026
5f7a54a
Clarify CWS local smoke artifacts are non-submission
devjoe Jul 3, 2026
131cebe
Persist sanitized live page smoke summaries
devjoe Jul 3, 2026
e2d7ceb
Guard live smoke summaries against private fields
devjoe Jul 3, 2026
bc3e2aa
Audit Page Web interaction accessibility
devjoe Jul 3, 2026
9ac9d17
Bound General Page CDP audit phases
devjoe Jul 3, 2026
fedf284
Record General Page CDP audit phase log
devjoe Jul 3, 2026
96e0a21
Add threshold gates to current browser smoke
devjoe Jul 3, 2026
3b25c7f
Summarize General Page quality findings safely
devjoe Jul 3, 2026
019fddd
Plan General Page quality followups
devjoe Jul 3, 2026
68e5a5a
Cluster General Page quality followups
devjoe Jul 3, 2026
d4a158e
Cover utility-dense article roots
devjoe Jul 3, 2026
a74a0f3
Keep noisy fallback pages overview-only
devjoe Jul 3, 2026
5a8de01
Cover multi-article teaser hubs
devjoe Jul 3, 2026
cb889d7
Document Page Web UI readiness
devjoe Jul 3, 2026
7700096
Tighten General Page readiness docs gate
devjoe Jul 3, 2026
9c71f10
Add progress to General Page quality review
devjoe Jul 3, 2026
9e7ef37
Document Page Web screenshot privacy boundary
devjoe Jul 3, 2026
803aebf
Harden General Page CDP audit timeouts
devjoe Jul 3, 2026
57d612a
Focus advisory review on Page Web privacy
devjoe Jul 3, 2026
f5bb5e8
Pin GitHub Actions and add Dependabot
devjoe Jul 3, 2026
ed11944
Update General Page readiness evidence
devjoe Jul 3, 2026
80a0e9a
Align CWS Preview 12 release docs
devjoe Jul 3, 2026
05840b9
Record Preview 12 clean smoke evidence
devjoe Jul 3, 2026
75f1f6b
Refresh Page Web readiness evidence
devjoe Jul 3, 2026
b409370
Disclose Facebook response processing
devjoe Jul 3, 2026
ec81af2
Clarify Facebook response disclosures
devjoe Jul 3, 2026
2e86627
Clarify all-sites page access scope
devjoe Jul 3, 2026
370a44f
Broaden CWS advisory review evidence
devjoe Jul 3, 2026
6f75cc0
Clarify Claude review API failures
devjoe Jul 3, 2026
234582f
Record CWS asset evidence in package reports
devjoe Jul 3, 2026
9df983b
Refresh General Page readiness evidence
devjoe Jul 3, 2026
dc2497b
Refresh latest Page Web readiness evidence
devjoe Jul 3, 2026
6bcad09
Record remote mainline readiness check
devjoe Jul 3, 2026
94eae34
Add merge readiness branch gate
devjoe Jul 3, 2026
f4c4022
Record merge gate readiness evidence
devjoe Jul 3, 2026
e9f171b
Require mainline freshness for CWS package
devjoe Jul 3, 2026
c505333
Restore CWS local-smoke contract wording
devjoe Jul 4, 2026
8c3e31e
Clarify General Page review evidence
devjoe Jul 4, 2026
3ab9984
Tighten General Page evidence wording
devjoe Jul 4, 2026
4c8d517
Fix General Page release review blockers
devjoe Jul 4, 2026
12f2a70
Record General Page release review disposition
devjoe Jul 4, 2026
6dff1b0
Refine Page Web readiness and CWS disposition
devjoe Jul 4, 2026
6ec5b75
Fix general page popup ready indicator
devjoe Jul 4, 2026
43dfa69
Hide selector health badge from toolbar
devjoe Jul 4, 2026
01fff5b
Wait for Facebook audit readiness
devjoe Jul 4, 2026
d761e89
Recover Facebook heads-up ownership conflicts
devjoe Jul 4, 2026
fb32be3
Fix Facebook audit expanded heads-up handling
devjoe Jul 4, 2026
0337985
Improve general page recirculation cleanup
devjoe Jul 4, 2026
623637d
Show general page read elapsed time
devjoe Jul 4, 2026
640f540
Stabilize Facebook current audit reruns
devjoe Jul 4, 2026
b67b56a
Record general page review evidence
devjoe Jul 4, 2026
5c59591
Auto-read Page/Web when side panel is open
devjoe Jul 5, 2026
b186494
Prepare General Page Reader review freeze
devjoe Jul 5, 2026
46213d4
Validate general page reader review paths
devjoe Jul 6, 2026
44bf1af
Improve general page review rubric and metadata cleanup
devjoe Jul 6, 2026
134a965
Improve general page extraction from news review
devjoe Jul 6, 2026
98dfabe
Improve heading-anchored page extraction
devjoe Jul 6, 2026
f4824d7
Improve general page extraction corpus
devjoe Jul 6, 2026
96fb0fb
Validate general page extraction on fresh news set
devjoe Jul 6, 2026
807fc54
Validate English general page extraction
devjoe Jul 6, 2026
4bb7a2a
Prepare general page review evidence
devjoe Jul 6, 2026
973818e
Record Facebook live smoke evidence
devjoe Jul 6, 2026
3e9fc57
Record Facebook deep-read smoke coverage
devjoe Jul 6, 2026
80965b8
Use user-facing page reading copy
devjoe Jul 7, 2026
a05fc38
Accept safe teaser page scopes in audit
devjoe Jul 7, 2026
d7e0000
Polish general page reader review UI
devjoe Jul 7, 2026
a976a58
Restore feed sidepanel layout scope
devjoe Jul 7, 2026
5ad8c71
Move Feed Web tabs to toolbar
devjoe Jul 8, 2026
7626b3f
Refine general page reader sidepanel UX
devjoe Jul 9, 2026
d358f8d
Disclose Page/Web domain grant and auto-read in release docs
devjoe Jul 9, 2026
95a2042
fix(sidepanel): stabilize page reading transitions
devjoe Jul 10, 2026
116034a
feat(sidepanel): refine contextual reading UX
devjoe Jul 10, 2026
bed0fe4
feat(sidepanel): align web reading hierarchy
devjoe Jul 10, 2026
651a62e
Refine sidepanel reading continuity
devjoe Jul 10, 2026
810a603
Refine General Page reading context UX
devjoe Jul 11, 2026
ac08026
Preserve Web and Focus reading state
devjoe Jul 11, 2026
619e0ba
Add GPR UI and build freshness gates
devjoe Jul 11, 2026
89d9a89
Document General Page reading architecture
devjoe Jul 11, 2026
32dac26
Harden General Page command handoff
devjoe Jul 11, 2026
3c7b661
Canonicalize General Page analysis scopes
devjoe Jul 11, 2026
208e301
Project General Page reading presentation
devjoe Jul 11, 2026
3e9b611
Share focus-safe CDP audit transport
devjoe Jul 11, 2026
6bf58f5
Own Web Focus audit continuity scenario
devjoe Jul 11, 2026
9905e07
Audit quick reading mode structurally
devjoe Jul 11, 2026
63ea134
Harden meaningful navigation lifecycle audit
devjoe Jul 11, 2026
04444e7
Coordinate Page Reading analysis runs
devjoe Jul 11, 2026
376e0ce
Deduplicate Page Context guidance
devjoe Jul 11, 2026
5a963ad
Refine page reread and external actions
devjoe Jul 12, 2026
797c7a9
Add compact page analysis and claim investigation
devjoe Jul 13, 2026
de6db09
Add private grounding evaluation runner
devjoe Jul 13, 2026
917d96c
Record investigation guard outcomes in private evals
devjoe Jul 13, 2026
2fb84d1
Tighten claim materiality and atomicity
devjoe Jul 13, 2026
7de9c5b
Clarify low-stakes claim abstention
devjoe Jul 13, 2026
84e9294
Record GPR grounding holdout outcome
devjoe Jul 13, 2026
ea23737
Add atomic claim investigation contract
devjoe Jul 13, 2026
00be503
Simplify atomic page brief prompt
devjoe Jul 13, 2026
ba24af2
Freeze atomic investigation candidate v2
devjoe Jul 13, 2026
e9a81b3
Harden atomic claim candidate v2
devjoe Jul 13, 2026
1720a4a
Record candidate v2 evaluation outcome
devjoe Jul 13, 2026
ccbd7ae
Add evidence-first claim investigation contracts
devjoe Jul 14, 2026
4d0cc53
Align private planner runner with contract v2
devjoe Jul 14, 2026
d3e79c7
Clarify investigation modality and compound guards
devjoe Jul 14, 2026
ad1784a
Tighten investigation attribution and query safety
devjoe Jul 14, 2026
938c2e0
Ground investigation attribution in exact spans
devjoe Jul 14, 2026
29b55aa
Revert "Ground investigation attribution in exact spans"
devjoe Jul 14, 2026
56cfbd0
Balance planner attribution guidance
devjoe Jul 14, 2026
7d907fd
Honor reviewed atomic claims in private evals
devjoe Jul 14, 2026
2451157
Add private adaptive evidence retrieval runner
devjoe Jul 14, 2026
499a928
feat: add source-aware investigation evaluation contracts
devjoe Jul 15, 2026
838e988
feat: add query-free authority discovery evaluation
devjoe Jul 15, 2026
0ae1017
feat: separate claim verification action contracts
devjoe Jul 15, 2026
85ca8b4
Add background claim investigation actions
devjoe Jul 16, 2026
024579a
Refine reading brief semantics and loading audits
devjoe Jul 16, 2026
e15345e
Refine question actions and Feed loading continuity
devjoe Jul 16, 2026
1ecf137
Add product semantic audit runner
devjoe Jul 16, 2026
3f9331f
Improve semantic claim preparation auditability
devjoe Jul 16, 2026
7f78ab5
Add bounded semantic claim repair
devjoe Jul 16, 2026
25ae77d
Harden semantic verification actions
devjoe Jul 16, 2026
d8df921
Harden exact semantic claim preparation
devjoe Jul 16, 2026
6735eba
Harden investigation adapter protocol
devjoe Jul 16, 2026
241b0c6
Document v4 audit and harden UI check
devjoe Jul 17, 2026
5fa9f41
feat: refine claim investigation actions
devjoe Jul 18, 2026
d0cac04
feat: harden general page reading and investigation UX
devjoe Jul 18, 2026
bc4bdbf
test: align semantic audit with runtime batches
devjoe Jul 18, 2026
8705638
feat: add portable general page schema contract
devjoe Jul 19, 2026
e6a5fc6
feat: harden general page semantic contract
devjoe Jul 19, 2026
fa9bcb6
feat: add capability-receipted compact reading schema
devjoe Jul 19, 2026
4b1be23
revert: reject over-selecting reading prompt candidate
devjoe Jul 19, 2026
a1f9926
Show only adapter-approved page claims
devjoe Jul 19, 2026
f67a79b
Reveal approved page claims atomically
devjoe Jul 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
13 changes: 13 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
version: 2
updates:
- package-ecosystem: npm
directory: /
schedule:
interval: weekly
open-pull-requests-limit: 5

- package-ecosystem: github-actions
directory: /
schedule:
interval: weekly
open-pull-requests-limit: 5
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out
uses: actions/checkout@v4
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4

- name: Set up Node
uses: actions/setup-node@v4
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: "24"
cache: npm
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/release-alpha.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out
uses: actions/checkout@v4
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4

- name: Set up Node
uses: actions/setup-node@v4
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: "24"
cache: npm
Expand All @@ -26,7 +26,7 @@ jobs:
run: npm run release:alpha

- name: Upload Alpha artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: truly-alpha-artifacts
path: artifacts/alpha/*/
Expand Down
64 changes: 64 additions & 0 deletions CONTEXT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Truly Reading Context

Truly helps people inspect information quality in social feeds and ordinary web
pages. This language keeps extraction, analysis scope, and Side Panel behavior
consistent across product, runtime, tests, and review artifacts.

## Language

**Reading Surface**:
The page- or post-level content Truly can inspect, together with its source,
identity, extraction status, and warnings.
_Avoid_: Document payload, scraped page

**Page Reading Session**:
The session-only state for one browser tab and one meaningful page identity. It
owns the Reading Surface plus independent Web and Focus analysis scopes.
_Avoid_: Page history, saved article

**Web Workspace**:
The Side Panel view that explains the current Reading Surface as a whole page.
_Avoid_: Page mode, reader mode

**Focus Workspace**:
The Side Panel view that explains an explicitly selected Reading Target without
showing whole-page context as if it were the analysis subject.
_Avoid_: Selection mode, local mode

**Reading Target**:
An explicitly selected passage or current-region paragraph analyzed inside a
Page Reading Session.
_Avoid_: Highlight, snippet

**Page Context**:
The collapsible evidence Truly extracted from the whole Reading Surface,
including user-impact guidance, page text, source links, and technical details.
_Avoid_: Details, diagnostics card

**Reading Context**:
The concise model-assisted overview, checks, and follow-up questions presented
for the active Web or Focus analysis scope.
_Avoid_: AI summary, page brief

**Analysis Scope**:
The Web or Focus slot that owns advisor, analysis, screenshot, and target state
for a Page Reading Session.
_Avoid_: Mode state, active result

**Meaningful Navigation**:
A URL or document-identity change that makes the prior Reading Surface unsafe to
reuse. Hash-only and tracking-only changes are not meaningful navigation.
_Avoid_: Any URL change, refresh

**Reading Command Envelope**:
A consume-once, session-only instruction that identifies the tab, requested
reading action, request identity, and creation time without storing page text or
analysis output.
_Avoid_: Reading result cache, event queue

**Reading Analysis Coordinator**:
The Side Panel Module that plans model analysis for an Analysis Scope, including
eligibility, request identity, provider command, stale-result acceptance, and
success or error settlement. Ordinary text analysis and confirmed screenshot
analysis use the same Interface.
_Avoid_: Model helper, request wrapper
11 changes: 10 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
.DEFAULT_GOAL := help

.PHONY: help resume build build-dev verify check-public check-build release-preview release-review release-review-local-limited-context release-review-github release-review-local-repo-read release-review-local-read release-bump-cws-preview cws-review cws-review-local-limited-context cws-review-github cws-review-local-repo-read cws-review-local-read \
.PHONY: help resume build build-dev verify check-public check-build gpr-check gpr-ui-check release-preview release-review release-review-local-limited-context release-review-github release-review-local-repo-read release-review-local-read release-bump-cws-preview cws-review cws-review-local-limited-context cws-review-github cws-review-local-repo-read cws-review-local-read \
dev dev-all dev-daemon dev-reload dev-status dev-check dev-stop sync-headsup-css \
test-watch smoke-ollama-vision

Expand All @@ -9,6 +9,8 @@ help:
@echo ""
@echo " make resume Show repo state and common next commands"
@echo " make verify Run the public gate"
@echo " make gpr-check Run the fast General Page Reader development gate"
@echo " make gpr-ui-check Run deterministic background-CDP General Page UI checks"
@echo " make build Build the clean extension"
@echo " make build-dev Build and patch local dev shortcut"
@echo " make dev-all Run watch build + reload server"
Expand Down Expand Up @@ -55,6 +57,13 @@ verify check-public:
check-build:
npm run check:build

gpr-check:
npm run check:gpr

gpr-ui-check:
npm run dev:check:source
npm run audit:gpr-ui

release-preview:
npm run release:preview

Expand Down
13 changes: 10 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ Signals first. Context when needed. Handoff only by choice.

- Shows compact reading hints above supported posts.
- Expands hints into a one-sentence summary and reading risk cues.
- Reads the current web page from the side panel after a user action, using
`activeTab` or an explicit all-sites opt-in.
- Opens a side panel with context analysis, claims to check, follow-up
questions, and handoff tools.
- Checks Traditional Chinese wording with bundled zhtw-mcp when
Expand Down Expand Up @@ -64,12 +66,14 @@ After installation:

**Now**

- Browser extension preview for supported social feed surfaces.
- Browser extension preview for supported social feed surfaces and
user-triggered Page/Web reading.
- Public feedback, bug fixes, and stability.

**Next**

- More supported social feed surfaces and regular web pages.
- More supported social feed surfaces.
- More Page/Web quality hardening across real websites.
- Mobile reading workflows.
- Desktop reading workflows.

Expand All @@ -81,7 +85,8 @@ After installation:

- Chrome Manifest V3.
- Browser-local, local, or private model sources.
- UI support currently focuses on Facebook reading surfaces.
- UI support currently focuses on Facebook reading surfaces and explicit
Page/Web reads from the side panel.
- Public tests use synthetic fixtures.

## Model Sources
Expand All @@ -102,6 +107,8 @@ See [Model Setup](docs/model-setup.md).
- Truly is not a fact-checking authority.
- Model output can be wrong, incomplete, or biased.
- Site support is limited.
- Page/Web reading is user-triggered; Truly does not crawl pages in the
background or store full-page history.
- Some features depend on model availability.

## Privacy At A Glance
Expand Down
28 changes: 28 additions & 0 deletions docs/adr/0001-session-only-reading-command-envelope.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Use a session-only command envelope for cold Side Panel handoff

Status: accepted

The MV3 service worker may stop before the Side Panel is ready, so a timed
`runtime.sendMessage` retry is not a reliable handoff. Truly will store only a
consume-once Reading Command Envelope in `chrome.storage.session`, then use a
broadcast as an optional low-latency hint; the Side Panel consumes and removes
the envelope before starting extraction. The envelope may contain request,
tab, activation, and timestamp metadata, but never extracted page text, model
input, analysis output, screenshots, or Page Reading Session history.

## Considered Options

- Repeated timer broadcasts were rejected because Side Panel readiness and MV3
service-worker lifetime are not timer contracts.
- Persisting the latest reading result was rejected because it would violate
the current session-only privacy decision.
- Keeping the service worker alive was rejected because service-worker
suspension is a platform lifecycle, not an error to bypass.

## Consequences

- Side Panel cold-open recovery replays an instruction, not user content.
- Envelopes require request identity, a short expiry, consume-once removal, and
stale-tab validation.
- Durable Page Reading Session history still requires a separate privacy and
storage decision.
60 changes: 60 additions & 0 deletions docs/adr/0002-investigation-discovery-proof-boundary.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# ADR 0002: Separate discovery from proof

- Status: accepted for development evaluation
- Date: 2026-07-15
- Scope: General Page Reader claim investigation contracts only

## Context

Small, precise verification questions are useful for proof, but poor search
queries. Search must recover documents using entities, aliases, institutions,
time and jurisdiction, while proof must remain bound to the exact proposition.
Conflating the two creates two unsafe shortcuts: treating a good query as an
answer, or treating search exhaustion as evidence that a claim is false.

## Decision

1. `InvestigationCase` owns a separate `DiscoveryContext` alongside the event
frame and verification requirements. Discovery terms may locate documents;
they never satisfy a proof obligation.
2. Acquisition is planned as an obligation-driven `SourceFamilyPlan`. Every
mandatory obligation has a bounded non-fallback route. Canonical-record
obligations require a canonical route; independent-origin obligations
require lineage-diverse routes. Contextual routes are optional.
3. No case is forced to use all route families. A plan may use at most three
families, with explicit fallback relationships and budgets.
4. Every executed route produces an acquisition receipt. A receipt records the
attempted scope, covered source families and remaining blind spots, and is
permanently marked `evidenceProduced: false` and `verdictProduced: false`.
5. Only immutable fetched artifacts with exact answer spans can become proof
witnesses. Search snippets, result titles, route hypotheses and receipts are
not evidence.
6. Independent-origin proof is counted by lineage, not by URL, host or number of
excerpts. Multiple exact spans from the same lineage may jointly cover one
proposition; syndicated, translated or quoted derivatives still count as the
same origin. Every counted lineage must independently cover every required
facet, including modifiers, quantities, time and attribution.
7. Missing facets, ambiguous lineage, conflicting relations or insufficient
independent origins fail closed. The compiler withholds a certificate; it
does not infer a verdict.
8. This slice remains model-, transport- and UI-neutral. It adds no runtime
action, verdict, page-content persistence or analysis history.

## Evaluation boundary

- Planner development uses only the frozen 30-row private development split.
- Cohort and selection rules are preregistered before inspecting Planner v2
output.
- A matched paired audit uses the same cases, budgets and Proof Compiler for
baseline and candidate routes.
- Raw inputs, URLs, queries, documents and per-sample outputs stay under the
gitignored private-data boundary. Only anonymous aggregates may be tracked.
- Holdout data remains unopened until a candidate and gate are frozen.

## Consequences

Discovery may improve recall without weakening proof. The cost is more explicit
contracts: discovery context, source-family plans, lineage graphs, route
receipts and proof certificates must be validated independently. A completed
search can legitimately end in `insufficient_evidence`; that is a safe product
state, not a failed investigation and not a negative verdict.
84 changes: 84 additions & 0 deletions docs/adr/0003-source-aware-acquisition-candidate.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# ADR 0003: Compile source-aware acquisition from proof responsibilities

- Status: accepted for development evaluation
- Date: 2026-07-15
- Scope: non-runtime Claim Investigation acquisition candidate

## Context

Discovery Planner v2 separated search from proof and produced grounded route
plans, but its one-query open-web candidate did not beat the atomic baseline on
the frozen development cohort. Naming an authority in a query is not the same
as knowing which registry, official index, filing system or source family can
answer a verification question.

## Decision

1. Every mandatory proof obligation compiles into a question-specific
`SourceResponsibility`. Canonical answers, first-party answers, independent
corroboration and counterevidence remain distinct responsibilities even when
they belong to the same verification question.
2. A `TrustedLocatorCatalog` is the only path that may upgrade a route from
open-web fallback to a registry, authoritative domain index or direct URL.
Catalog entries require human-reviewed provenance, a review timestamp and a
source reference. Model output cannot add trusted domains or registries.
3. Catalog matching requires an exact normalized authority name already present
in the case, compatible language and jurisdiction, compatible document kind,
and the source family required by the responsibility.
4. Query portfolios are selected per responsibility from grounded case targets.
Independent-origin responsibilities prefer independent-report targets and
never reuse an official registry as proof of independent corroboration.
5. Missing or mismatched catalog coverage fails closed to an explicitly marked
open-web fallback. The planner does not guess an authority domain.
6. The plan and its routes remain discovery artifacts with
`evidenceProduced=false` and `verdictProduced=false`. Evidence admission,
proof certificates and findings retain their existing boundaries.
7. This candidate remains outside extension runtime and UI. Private-derived
queries are not sent to public search services by the evaluation workflow.

## Evaluation boundary

- Use a newly preregistered forward-development cohort that excludes all prior
v1 dev, v1 holdout, v2 holdout and Investigation Planner v2 rows.
- The first forward slice provided 16 Facebook rows and no unused news rows.
A later, separately preregistered news-only slice closed that surface gap
without reusing either holdout.
- Synthetic local fixtures may verify registry/domain execution semantics, but
cannot establish real-world acquisition lift.
- Do not open another holdout or expose a product action until a safe local or
user-mediated matched acquisition audit passes a frozen gate.

## Consequences

The system can now explain whether a route is based on a reviewed locator or is
still generic open-web discovery. This makes missing infrastructure visible and
prevents model confidence from masquerading as source knowledge. The cost is a
reviewed catalog lifecycle and separate cross-surface acquisition evidence.

## Development evaluation update (2026-07-15)

A human-reviewed Taiwan public-authority catalog and a query-free, frozen HTML
snapshot were created before model output was inspected. A fresh 12-row news
slice then produced 11 valid claim plans, 10 valid Investigation Case plans,
and five matched catalog routes across three cases. One claim plan and one case
plan failed the preregistered zero-invalid gate.

The matched audit gave baseline and candidate the same frozen 23-document pool,
one local query and at most two documents per arm. The candidate could restrict
its pool to the reviewed authority; no private-derived query left the process.
Automated passage selection returned eight candidates per arm. Single-reviewer
answerability review rejected all of them: the baseline contained unrelated
numeric matches, while the candidate reached the correct authority index but
not a passage that answered the claim. There were zero candidate-only answer
rescues and zero false closures.

This result keeps the ADR accepted as an architectural boundary, but fails the
candidate's development promotion gate. The next candidate must deepen
authority-local acquisition from index pages to dated announcements, records,
datasets or PDFs. It must not widen the reviewed catalog, relax passage
admission, open a holdout or enable a product action merely because authority
routing improved.

The follow-up query-free traversal architecture and its rejected 48-row
development candidate are recorded in
[ADR 0004](./0004-query-free-authority-local-discovery.md).
Loading
Loading