Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
4bff3fe
test(zotero): cover multilingual abstention
seonghobae Sep 4, 2026
b183a46
test(zotero): preserve multilingual fail-closed behavior
seonghobae Sep 4, 2026
28ca531
docs(zotero): record multilingual safety evidence
seonghobae Sep 4, 2026
e58ab32
Merge branch 'autoresearch/zotero-write-execution-receipt' into autor…
seonghobae Sep 4, 2026
81849c6
test(zotero): require multilingual vocabulary abstention
seonghobae Sep 4, 2026
27f9234
test(zotero): use explicit multilingual vocabulary fixtures
seonghobae Sep 4, 2026
6dada71
Merge branch 'autoresearch/zotero-write-execution-receipt' into autor…
seonghobae Sep 4, 2026
be9d7be
Merge current write-receipt RED contracts into multilingual abstention
seonghobae Sep 4, 2026
0473580
Merge repaired write receipt evidence into PR 16
seonghobae Sep 4, 2026
d69039b
chore(zotero): restack multilingual safety evidence
seonghobae Sep 4, 2026
1808b78
Merge Zotero version receipt binding into PR 16
seonghobae Sep 4, 2026
a4ae22c
merge(zotero): adopt current write-execution parent
seonghobae Sep 4, 2026
d02d0f9
merge(zotero): adopt current write-execution parent and gap baseline
seonghobae Sep 5, 2026
61ff1e2
merge(research): inherit verified source and proposal approval binding
seonghobae Sep 5, 2026
e291041
merge(research): inherit metadata transport owner repair into PR #16
seonghobae Sep 5, 2026
873c46b
merge(zotero): propagate validated approval ordering through PR 16
seonghobae Sep 5, 2026
044018c
merge(research): inherit bounded metadata reads into PR #16
seonghobae Sep 6, 2026
4f3ac52
merge: preserve multilingual abstention tests with execution safety r…
seonghobae Sep 6, 2026
84b27fb
docs(research): record multilingual successor verification without ca…
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
41 changes: 25 additions & 16 deletions crates/conceptweave-zotero/tests/review_contract.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,34 +20,43 @@ fn item(key: &str, title: &str, doi: &str) -> ZoteroItem {
#[test]
fn steward_abstention_reason_is_explicit_and_deterministic() {
let blank = item("A", "", "");
let multilingual = item("B", "온톨로지 정렬", "");
let unmatched = item("C", "Other evidence", "");
let matched = item("D", "Ontology alignment", "");
let multilingual = [
("B", "온톨로지 정렬"),
("C", "オントロジーアラインメント"),
("D", "本体对齐"),
("E", "căn chỉnh bản thể"),
("F", "alineación de ontologías"),
("G", "Ontologie-Ausrichtung für Wissensgraphen"),
("H", "alignement d’ontologies sémantiques"),
]
.map(|(key, title)| item(key, title, ""));
let unmatched = item("I", "Other evidence", "");
let matched = item("J", "Ontology alignment", "");

let report = classify_snapshot(
"9.0.6".into(),
None,
42,
vec![blank, multilingual, unmatched, matched],
);
let report = classify_snapshot("9.0.6".into(), None, 42, {
let mut items = vec![blank];
items.extend(multilingual);
items.extend([unmatched, matched]);
items
});

assert_eq!(
report.classified_items[0].abstention_reason,
Some(AbstentionReason::MissingClassificationMetadata)
);
assert!(report.classified_items[1..=7].iter().all(|item| {
item.proposed_disposition == Disposition::NeedsStewardReview
&& item.abstention_reason == Some(AbstentionReason::UnsupportedRuleVocabulary)
}));
assert_eq!(
report.classified_items[1].abstention_reason,
Some(AbstentionReason::UnsupportedRuleVocabulary)
);
assert_eq!(
report.classified_items[2].abstention_reason,
report.classified_items[8].abstention_reason,
Some(AbstentionReason::NoDeterministicRuleMatch)
);
assert_eq!(
report.classified_items[3].proposed_disposition,
report.classified_items[9].proposed_disposition,
Disposition::AlignmentVersioning
);
assert_eq!(report.classified_items[3].abstention_reason, None);
assert_eq!(report.classified_items[9].abstention_reason, None);
}

#[test]
Expand Down
20 changes: 20 additions & 0 deletions docs/product-technical-gap-baseline.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,26 @@ Remaining work: mandatory adoption by restoration, worksheet, duplicate and writ

## DDD fitness constraints

### PR #16 multilingual successor verification (2026-09-06)

Baseline `044018cef4e5d3e919b278a1cfebe56857863601` passed 87 tests/19 suites.
Normal merge `4f3ac52a27ff1090b94c63ff807ddb5bd9ce872f` retains that entire delta
and parent `42ddd81adf8d994f67a30f0c6b8383d637073c72`. Production source is identical
to the repaired parent; `review_contract.rs` is identical to the prior PR #16.
An independent static review confirmed all seven non-English cases, English
match, blank metadata and unmatched metadata remain without reduced assertions.
This is abstention safety, not multilingual classification or completed research.

Exact merged source passed 109 tests/19 result suites including three doctests,
strict all-target Clippy, warnings-denied rustdoc, format, CI-contract and diff
checks, plus the unchanged coverage gate: 185/185 functions, 1770/1770 normalized
regions and 320/320 normalized branches. Raw LLVM remains 1998/2050 lines,
2934/3014 regions and 280/320 branches, not 100%. Logs use the
`/tmp/conceptweave-pr16-scope-` prefix (`baseline`, `final`, `clippy`, `rustdoc`,
`coverage`, each with `.log`). No new production code, live write, paper decision,
approval, protected merge or release is claimed. Next owner is PR #17 authenticated
transport; it must preserve required bindings and indeterminate-request semantics.

### PR #15 execution-scope and uncertainty repair (2026-09-06)

Baseline `45e9c493` passed 87 tests/19 result suites; normal merge `2887f70`
Expand Down