Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
65bf495
test: reproduce missing capture-bound review worksheet
seonghobae Sep 5, 2026
7cf8018
test: repair imports before measuring review regression
seonghobae Sep 5, 2026
063a99d
feat: validate a versioned capture-bound blank worksheet
seonghobae Sep 5, 2026
6bf92d2
test: require full-text context through external review verification
seonghobae Sep 5, 2026
d367658
test: expose duplicate keys before review JSON projection
seonghobae Sep 5, 2026
9e51038
feat: retain capture binding through review and approval boundaries
seonghobae Sep 5, 2026
fc882ef
fix: reject ambiguous review JSON and exercise full-text trust bounda…
seonghobae Sep 5, 2026
2a77a33
test: cover oversized context rejection during decision admission
seonghobae Sep 5, 2026
50dc154
test(zotero): reproduce missing full-text worksheet initializer
seonghobae Sep 5, 2026
21ef42d
feat(zotero): initialize private blank full-text worksheets
seonghobae Sep 5, 2026
35b7816
test: reproduce completed review overflow at exact size boundary
seonghobae Sep 5, 2026
e0744e0
fix: reserve decision headroom in actionable full-text views
seonghobae Sep 5, 2026
da406cf
Merge commit '21ef42dfc2a9f0dee1f81ca1e2a7c595f3f8958c' into codex/zo…
seonghobae Sep 5, 2026
656b8c4
docs: bind full-text review contracts and measured private evidence
seonghobae Sep 5, 2026
6f80c8d
docs: distinguish review binding progress from historical gaps
seonghobae Sep 5, 2026
4aabc6a
test(zotero): reject oversized private metadata output
seonghobae Sep 5, 2026
351a0c8
fix(zotero): bound private metadata writes
seonghobae Sep 5, 2026
0672ebe
test(zotero): restore valid permission-boundary JSON fixture
seonghobae Sep 5, 2026
ee9e263
fix(zotero): restore private JSON fixture
seonghobae Sep 5, 2026
0a70da9
test(zotero): specify bound full-text CLI review lifecycle
seonghobae Sep 5, 2026
3c08a44
docs: bind metadata output ceiling to current source
seonghobae Sep 5, 2026
2a92b71
feat(zotero): connect bound full-text review application and finaliza…
seonghobae Sep 5, 2026
d3fdaa5
test(zotero): reproduce private JSON diagnostic disclosure
seonghobae Sep 5, 2026
3fca6b2
Merge private full-text command flow while preserving owner repairs
seonghobae Sep 5, 2026
c23ac82
docs: trace private review commands and twenty audited owner contracts
seonghobae Sep 5, 2026
af48416
Merge concurrent metadata writer evidence without dropping review work
seonghobae Sep 5, 2026
3059c0e
test(zotero): independently expose enum diagnostic disclosure
seonghobae Sep 5, 2026
d5fda20
fix(zotero): keep private JSON parse diagnostics source-free
seonghobae Sep 5, 2026
2fadbda
Merge shared private JSON diagnostic repair after independent review
seonghobae Sep 5, 2026
6dc5f3c
docs: record verified private review command evidence
seonghobae Sep 5, 2026
2f28d5d
docs: audit five additional domain and document contract owners
seonghobae Sep 5, 2026
bbb9a8b
docs: preserve earliest-owner private artifact repair rationale
seonghobae Sep 5, 2026
b9c2506
Merge verified earliest-owner private boundary repairs into PR 38
seonghobae Sep 5, 2026
6db1ca4
docs: record verified earliest-owner repair cascade and audit gaps
seonghobae Sep 5, 2026
4fe8800
docs: specify approval ordering and audited identity evidence owners
seonghobae Sep 6, 2026
61bb211
merge(zotero): preserve original approval-order repair in full-text r…
seonghobae Sep 6, 2026
8e05765
docs: record verified approval-order cascade and current protected gates
seonghobae Sep 6, 2026
e2c3a9f
merge(research): inherit bounded metadata reads into PR #38
seonghobae Sep 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ ConceptWeave owns automatic, evidence-bound **Semantic Model Engineering**. Do n
- Preserve source evidence, truth status, and publication state separately.
- Keep Zotero full-text captures separate from metadata reports and approval receipts; restored captures require bounded verification, and local HTTP continuity is not peer authentication.
- Full-text review views are read-only evidence; never strip their outer binding into a metadata-only patch and claim full-text decision or approval provenance.
- Full-text decisions use the separate blank-start worksheet and atomic exact-view application; reverify the capture/report relation through finalization and whole-envelope governance. No reviewed-set downcast grants Zotero write authority.
- Offline full-text commands reuse the private-file boundary and pass completed-view bytes unchanged into atomic validation. Finalized files await external approval verification; no CLI command issues approval or writes Zotero.
- Published semantic truth is immutable; correction uses supersession/new release.
- Public Rust APIs require beginner-readable documentation.
- Owned production coverage target is 100% line/function/region/branch where tooling exposes it.
Expand Down
2 changes: 2 additions & 0 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ Research Intake's Zotero adapter retains optional full-text observations in a se

Its Full-Text Review View reuses capture verification and canonical pending selection to make exact text inspectable without changing earlier proposals. This bounded read projection is not an aggregate or a decision-application API; the metadata-only approval chain does not acquire full-text provenance from it.

The separate Full-Text Review Worksheet starts blank and retains one capture identity through atomic completed-view application, finalization and whole-envelope governance verification. Every boundary rechecks the capture against the complete report. The offline CLI exposes initialization, evidence-view creation, atomic application and finalization using those existing review cores and private-file helpers. Completed JSON bytes enter the owner parser unchanged, preserving duplicate-key detection. External approval verification remains a caller-owned library boundary; no CLI verifier, service or new source of semantic truth is introduced. Verified review still does not admit Zotero writes, whose exact change set requires independent authorization.

| Context | Type | Owns | Does not own |
| --- | --- | --- | --- |
| Source Observation | Supporting | immutable observations, parser receipts, evidence locations | source-system business truth |
Expand Down
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ All notable changes to ConceptWeave are documented here.

### Added

- Private review commands now show saved text, accept completed decisions without replacing earlier work, and prepare a complete review for independent approval verification. They do not supply decisions or approve a review.

- Private inspection of pending papers alongside their saved text, preserving missing material and leaving previous reports and decisions unchanged.

- Private, replayable paper-text capture for later research review, preserving unavailable material and leaving earlier reports and approvals unchanged.
Expand All @@ -32,6 +34,10 @@ All notable changes to ConceptWeave are documented here.

### Security

- Invalid private review files no longer expose rejected field names or values in error messages. File-role, size and access errors remain distinguishable.

- Completed text-review files reject changed evidence, stale decisions and duplicate fields before updating local work. Earlier approvals cannot silently acquire later text evidence.

- Local research requests bypass environment-configured proxies. This prevents unintended proxy forwarding; local peer authentication remains an explicit release limitation.

- Source receipts bind complete captured metadata and actual classifier inputs; earlier report and review artifacts require regeneration under the versioned digest representation.
Expand All @@ -41,4 +47,8 @@ All notable changes to ConceptWeave are documented here.

### Fixed

- Invalid or stale classification changes are rejected before redeeming approval, preserving it when a request cannot produce a valid plan.

- Oversized private review outputs fail before creating a file, so a successful save stays within the corresponding reader's size limit. Large saved-text captures retain their separate limit.

- Research reads accept valid responses exactly at their documented size limit while still rejecting oversized, incomplete or invalidly encoded responses.
2 changes: 2 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,5 @@ Keep domain logic in bounded domain modules, LLM/provider logic behind ports/ada
Zotero source capture must not alter the metadata report or renew its approval. Preserve private-file protections and the full bibliographic denominator, including missing and partial text.

The separate full-text review view does not authorize decisions or writes. Keep its evidence binding intact; existing metadata-only apply/finalization cannot establish full-text-reviewed approval.

Use the capture-bound blank-start worksheet for full-text decision work. Only the dedicated atomic view path may apply completed slots; finalization/evaluation reverify capture/report bindings and require whole-envelope external approval. Offline CLI view/application/finalization preserve that envelope and earlier files. They do not supply a reviewer, authenticate approval, or admit Zotero writes.
4 changes: 4 additions & 0 deletions THREAT_MODEL.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,4 +77,8 @@ PR #30 commit `9733d28` reproduced the inode-preserving final-component symlink

The optional full-text review view must not be confused with the metadata-only decision or approval artifacts. A required versioned outer envelope and strict legacy parsers prevent silent direct application; an intentional caller can still strip fields, so no full-text-reviewed approval is claimed. The complete capture is reverified before selecting text, unrelated parent text is excluded, and output serialization itself is bounded. The larger serialized-capture input ceiling is separate from the unchanged report/worksheet limit. Source text is untrusted data, never instructions, and source content must not be included in input-error diagnostics.

Capture-bound review uses separate required versioned payloads, with no import of previous metadata decisions. Atomic application permits only completed decision slots in the exact current view; recursive duplicate-key rejection precedes projection so a changed first field cannot hide behind a canonical later field. Finalization and evaluation revalidate the capture against the complete current report, including proposal records, before authority is contacted. Governance must authenticate the entire outer reviewed set and every label. Owner-only storage, private fields and hashes do not defeat a malicious local replacement or prove human review. Preserve old artifacts; stale views fail rather than overwrite concurrent work. These APIs neither implement authenticated governance nor authorize the independent Zotero write contract. Restoring report/capture/worksheet/approval JSON still requires caller-owned bounded private-file admission.

The offline full-text commands reuse those private readers and pass completed-view bytes unchanged into the duplicate-key-aware application boundary. Distinct argument strings do not replace opened-file identity checks. Metadata/review serialization must fit the inclusive 16 MiB reader limit before a new file is created; the larger capture remains a separate bounded artifact. Shared private JSON deserialization replaces syntax/type errors with static diagnostics, preventing unknown-field names or invalid enum values from echoing private material. Role, size and I/O errors remain distinguishable. Finalization writes only an input for independent verification, never an approval result. Test-only labels and receipts cannot be substituted for genuine campaign decisions or authority.

A capability is not release-ready while a valid security finding lacks a deterministic test or equivalent machine-verifiable contract, while required exact-head checks are non-terminal, or while the implemented transport cannot satisfy the advertised security claim. Documentation must describe residual risk without upgrading provider guarantees by inference.
3 changes: 3 additions & 0 deletions crates/conceptweave-zotero/src/full_text_capture.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ use crate::{
local_agent, validate_item_key, verify_server_id,
};
use serde::{Deserialize, Serialize};
#[path = "full_text_review.rs"]
mod full_text_review;
pub use full_text_review::*;
use sha2::{Digest, Sha256};
use std::collections::BTreeMap;
use std::fmt;
Expand Down
Loading