Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
eeec424
test(extension): require reduced assurance for influenced attached tabs
seonghobae Aug 11, 2026
94abb95
test(extension): sync native host coverage with parent
seonghobae Aug 11, 2026
b8c76d9
feat(extension): classify reduced-assurance attached tabs
seonghobae Aug 11, 2026
231996f
docs(changelog): record attached-tab assurance boundary
seonghobae Aug 11, 2026
292736f
test(extension): require uncertainty-safe influence evidence name
seonghobae Aug 11, 2026
f6d57f8
fix(extension): avoid overstating absence of influence evidence
seonghobae Aug 11, 2026
204cedb
chore(extension): align attached-tab assurance with native-host autho…
seonghobae Aug 11, 2026
7ad0942
chore(extension): align attached-tab stack with native-host head
seonghobae Aug 14, 2026
ac194af
fix(extension): preserve native-host tree while realigning stack
seonghobae Aug 14, 2026
01b2557
fix(extension): retain native-host length bound during stack alignment
seonghobae Aug 14, 2026
1557041
chore(stack): refresh attached-tab dependency snapshot
seonghobae Aug 15, 2026
299662c
chore(stack): realign attached-tab assurance with native messaging au…
seonghobae Aug 15, 2026
04757d0
chore(stack): realign attached-tab assurance with current native mess…
seonghobae Aug 17, 2026
038f093
test(extension): preserve current native messaging parent during stac…
seonghobae Aug 17, 2026
4691de8
feat(extension): restore attached-tab assurance on current parent
seonghobae Aug 17, 2026
a1719ed
docs: restore attached-tab assurance changelog
seonghobae Aug 17, 2026
2412fb1
Merge current native messaging authority into attached-tab assurance
seonghobae Aug 17, 2026
cfd319f
test(browser): reconstruct attached-tab assurance on current parent
seonghobae Aug 24, 2026
fb74de2
feat(browser): classify attached-tab extension influence
seonghobae Aug 24, 2026
c34f513
fix(stack): realign attached-tab assurance with current host authority
seonghobae Aug 24, 2026
3548b1f
test(extension): realign attached-tab assurance RED
seonghobae Sep 1, 2026
ae3f2af
feat(extension): classify attached-tab extension assurance
seonghobae Sep 1, 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
50 changes: 50 additions & 0 deletions crates/originweave-core/src/attached_tab_assurance.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/// Browser control surface represented by assurance evidence.
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum BrowserAttachmentKind {
/// OriginWeave is attached to an existing person-controlled browser tab.
AttachedHumanTab,
/// OriginWeave operates in a task-isolated browser profile.
IsolatedProfile,
}

/// Trusted adapter evidence about extension influence on page state.
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ExtensionInfluenceEvidence {
/// The trusted adapter established that an extension can influence page state.
CanInfluencePageState,
/// This bounded rule has no trusted evidence of extension influence.
///
/// Absence of known influence is not proof that extensions are absent or unable
/// to interfere.
NoKnownExtensionInfluence,
}

/// A specific reason that one browser context has reduced assurance.
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ReducedAssuranceReason {
/// An attached human tab can be influenced by an existing browser extension.
AttachedTabExtensionInfluence,
}

/// Classify the narrow attached-tab extension-influence assurance reduction.
///
/// `None` means only that this specific rule found no such reduction; it is not
/// proof of full trust, extension absence, inability to interfere, or high
/// assurance.
#[must_use]
pub const fn classify_reduced_assurance(
attachment: BrowserAttachmentKind,
extension_influence: ExtensionInfluenceEvidence,
) -> Option<ReducedAssuranceReason> {
if matches!(
(attachment, extension_influence),
(
BrowserAttachmentKind::AttachedHumanTab,
ExtensionInfluenceEvidence::CanInfluencePageState
)
) {
Some(ReducedAssuranceReason::AttachedTabExtensionInfluence)
} else {
None
}
}
3 changes: 3 additions & 0 deletions crates/originweave-core/src/root.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ mod contracts;

pub use contracts::*;

mod attached_tab_assurance;
pub use attached_tab_assurance::*;

/// Stateless MCP routing validation that maps only explicit tools to typed actions.
pub mod mcp;
/// Deterministic fail-closed release benchmark acceptance aggregation.
Expand Down
37 changes: 37 additions & 0 deletions crates/originweave-core/tests/attached_tab_assurance.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
use originweave_core::{
BrowserAttachmentKind, ExtensionInfluenceEvidence, ReducedAssuranceReason,
classify_reduced_assurance,
};

#[test]
fn attached_human_tab_with_extension_influence_is_explicitly_reduced_assurance() {
assert_eq!(
classify_reduced_assurance(
BrowserAttachmentKind::AttachedHumanTab,
ExtensionInfluenceEvidence::CanInfluencePageState,
),
Some(ReducedAssuranceReason::AttachedTabExtensionInfluence)
);
}

#[test]
fn attached_human_tab_without_known_extension_influence_has_no_extension_reduction() {
assert_eq!(
classify_reduced_assurance(
BrowserAttachmentKind::AttachedHumanTab,
ExtensionInfluenceEvidence::NoKnownExtensionInfluence,
),
None
);
}

#[test]
fn isolated_profile_is_not_relabelled_by_attached_tab_rule() {
assert_eq!(
classify_reduced_assurance(
BrowserAttachmentKind::IsolatedProfile,
ExtensionInfluenceEvidence::CanInfluencePageState,
),
None
);
}
Loading