Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
82450eb
test: stage optional joined browser filter proof in disposable KVM
erikleblansch Oct 8, 2026
2e4f452
test: protect host memory and retain joined browser receipts
erikleblansch Oct 8, 2026
e75f923
test: diagnose joined browser failures and prepare namespace access
erikleblansch Oct 8, 2026
7a039f3
docs: record first merged Citizen simulation and its limits
erikleblansch Oct 8, 2026
93aeb30
docs: retain third joined trial route-selection failure
erikleblansch Oct 8, 2026
e2aa069
test: await provider discovery inventory before route selection
erikleblansch Oct 10, 2026
fa18d11
docs: record browser startup failure after discovery convergence
erikleblansch Oct 10, 2026
397b5b8
test: retain closed browser initialization diagnostics
erikleblansch Oct 10, 2026
b84f339
docs: record merged Drizzli browser milestone and remaining network p…
erikleblansch Oct 10, 2026
34dc5cf
docs: retain failed browser session proof and verified VM cleanup
erikleblansch Oct 10, 2026
51f7867
test: validate closed browser protocol failure exports
erikleblansch Oct 11, 2026
a5dc03b
test: freeze verified Weather and Drizzli runtime inputs
erikleblansch Oct 11, 2026
c1418de
test: join protected Weather delivery to the real Drizzli UI
erikleblansch Oct 11, 2026
db5eb44
docs: record first joined Weather trial and precipitation evidence
erikleblansch Oct 11, 2026
93dc2a6
test: retain protected weather transfer before browser execution
erikleblansch Oct 11, 2026
44c5056
fix: preserve complementary chunks after slow provider probes
erikleblansch Oct 11, 2026
6a8275c
test: join precipitation and particulate delivery to native weather UI
erikleblansch Oct 11, 2026
c8b57d9
test: initialize optional topology bundle fixtures
erikleblansch Oct 11, 2026
adb9c14
fix(content): rediscover complementary providers within one deadline
erikleblansch Oct 11, 2026
92647d8
Merge remote-tracking branch 'origin/main' into feature/browser-filte…
erikleblansch Oct 11, 2026
5f82f61
test: require future weather coverage in joined delivery proof
erikleblansch Oct 11, 2026
cc5f355
test: preserve archive owner during weather profile dispatch
erikleblansch Oct 11, 2026
a1e77b4
test: retain closed Weather acquisition failure evidence
erikleblansch Oct 11, 2026
903db15
test: add bounded late-provider recovery topology proof
erikleblansch Oct 11, 2026
958a9b6
docs: record actual Overmorrow build and partial browser proof
erikleblansch Oct 11, 2026
9b602bb
fix: bound standalone provider VM scratch and memory
erikleblansch Oct 11, 2026
64ced81
docs: record Weather milestone and sequential provider trial
erikleblansch Oct 11, 2026
0f01713
docs: clarify merged Weather milestone wording
erikleblansch Oct 11, 2026
7ad108c
feat: retain bounded provider worker budget diagnostics
erikleblansch Oct 11, 2026
fa89523
test: require genuine resource readiness before adaptive transfers
erikleblansch Oct 11, 2026
a5e698c
docs: record Weather lifecycle milestone and resource-gated trial
erikleblansch Oct 11, 2026
dbbb197
test: add exact Overmorrow profile to joined weather delivery
erikleblansch Oct 11, 2026
c2fbcd8
test: admit exact late-provider capture interfaces
erikleblansch Oct 11, 2026
e175464
docs: record merged Overmorrow preparation and live cache follow-up
erikleblansch Oct 11, 2026
a03c3c8
test: repair late provider gate and retain failure stage
erikleblansch Oct 12, 2026
987c64c
docs: record corrected late provider trial in progress
erikleblansch Oct 12, 2026
2351288
test: accept disjoint late provider discovery snapshots
erikleblansch Oct 12, 2026
ebf0d07
fix: resume complementary cache coverage after resource pressure
erikleblansch Oct 12, 2026
2446359
test: isolate cancellation proof from prior bootstrap cooldown
erikleblansch Oct 12, 2026
ef91e5a
test: retain bounded Weather rate-limit diagnostics
erikleblansch Oct 12, 2026
c63ddf3
test: share late discovery's existing gate deadline
erikleblansch Oct 12, 2026
1fb1327
content: observe bounded pressure-retirement continuations
erikleblansch Oct 12, 2026
0e23140
test: separate signed-service readiness from late recovery
erikleblansch Oct 12, 2026
9b132f6
test: pin readiness dependency and retain current UI evidence
erikleblansch Oct 12, 2026
726fe69
docs: record successful protected cache sequence
erikleblansch Oct 12, 2026
9441b45
fix: preserve MPTCP routes after definite socket rejection
erikleblansch Oct 12, 2026
4ceee26
test: prepare bounded guest pressure observer
erikleblansch Oct 12, 2026
52a3a78
test: wire protected cache recovery under bounded CPU pressure
erikleblansch Oct 12, 2026
0f391c7
test: distinguish authenticated refresh in pressure proof
erikleblansch Oct 12, 2026
c48fba8
docs: record verified provider continuation under CPU pressure
erikleblansch Oct 12, 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
10 changes: 10 additions & 0 deletions .github/workflows/alpha-topology.yml
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,16 @@ jobs:
sh -n tests/integration/content-provider-filter-smoke.sh
python3 -B tests/integration/test-content-provider-filter-smoke.py
python3 -B tests/integration/test-content-provider-smoke.py
python3 -B tests/integration/test-content-provider-worker-budget.py
python3 -B tests/integration/test-content-provider-resource-ready.py
python3 -B tests/integration/test-content-provider-pressure.py
python3 -B tests/integration/test-content-provider-pressure-smoke.py
python3 -B tests/integration/test-content-provider-pressure-shell.py
python3 -B tests/integration/test-content-provider-pressure-wiring.py
sh -n tests/integration/content-provider-pressure-smoke.sh
python3 -B tests/integration/test-content-cancellation-smoke.py
sh -n tests/integration/content-provider-late-recovery.sh
python3 -B tests/integration/test-content-provider-late-recovery.py
sh -n tests/integration/content-provider-https-smoke.sh
python3 -B tests/integration/test-content-provider-https-smoke.py
sh -n tests/integration/content-mailbox-smoke.sh
Expand Down
16 changes: 16 additions & 0 deletions .github/workflows/quality.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,22 @@ jobs:
python3 -B tests/integration/transaction-abci-contract-tests.py
python3 -B tests/integration/transaction-abci-wiring-tests.py

- name: Check closed provider and Weather diagnostics without network access
run: |
python3 -B tests/integration/test-content-provider-worker-budget.py
python3 -B tests/integration/test-content-provider-resource-ready.py
python3 -B tests/integration/test-content-provider-pressure.py
python3 -B tests/integration/test-content-provider-pressure-smoke.py
python3 -B tests/integration/test-content-provider-pressure-shell.py
python3 -B tests/integration/test-content-provider-pressure-wiring.py
sh -n tests/integration/content-provider-pressure-smoke.sh
node --version
node -e 'if (Number(process.versions.node.split(".")[0]) < 22) process.exit(1)'
node --test tests/integration/test-weather-source-observer.mjs
python3 -B tests/integration/test-weather-products-delivery.py
python3 -B tests/integration/test-weather-products-delivery-shell.py
python3 -B tests/integration/test-weather-client-runner.py

- name: Check formatting and shell sources
run: |
cargo fmt --all -- --check
Expand Down
2 changes: 2 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,7 @@ and compute coordination belongs in the core.
| [Weather](https://github.com/VOLPAROSSA/volparossa-weather) | Direct public model data | Shared weather processing and measured forecast improvement. |
| [Cloud](https://github.com/VOLPAROSSA/volparossa-cloud) | OpenCloud | Private files, synchronization and server-independent access. |
| [Bank](https://github.com/VOLPAROSSA/volparossa-bank) | Financial protocol research | Participant-owned portfolios, payments and auditable corrections; no real-money service. |
| [Citizen](https://github.com/VOLPAROSSA/volparossa-citizen) | Participation and voting research | Proposals and referenda alongside existing institutions; synthetic procedure simulation first. |

[Application scope and current boundaries](docs/applications/APPLICATIONS.md)

Expand Down
64 changes: 2 additions & 62 deletions crates/volparossa-agent/src/content.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ mod object_policy;
mod parallel;
mod private_storage;
mod recent;
mod rediscovery;
#[cfg(test)]
mod refresh_tests;
mod replication;
Expand Down Expand Up @@ -759,68 +760,7 @@ impl ContentRuntime {
policy: &volparossa_policy::VerifiedManifest,
control_peer: libp2p::PeerId,
) -> Result<(Vec<String>, u64), ContentError> {
if complete(manifest, store)? {
return Ok((Vec::new(), 0));
}
let mut used = std::collections::BTreeSet::new();
let mut attempted = std::collections::BTreeSet::new();
let mut bytes = 0_u64;
if let Some(scope) = recent::RecentProviderScope::for_route(context, policy).await {
let recent = context
.content
.refresh_recent_provider_hints(scope, &context.discovery, Duration::from_secs(1))
.await;
attempted.extend(recent.iter().map(|provider| provider.peer_id));
let (providers, received) =
Self::pull_providers(context, manifest, store, policy, recent).await?;
used.extend(providers);
bytes = received;
if complete(manifest, store)? {
return Ok((used.into_iter().collect(), bytes));
}
}
let discovered = context
.discovery
.discover_content_providers(control_peer, 16)
.await;
let state = context.state.read().await;
if !state.roles().client
|| state
.active_policy(unix_millis())
.as_ref()
.map(volparossa_policy::VerifiedManifest::policy_hash)
!= Some(policy.policy_hash())
{
return Err(ContentError::Policy);
}
drop(state);
let providers = match discovered {
Ok(providers) => providers,
Err(DiscoveryError::Invalid) => return Err(ContentError::Invalid),
Err(DiscoveryError::Invalidated) => return Err(ContentError::Policy),
Err(
DiscoveryError::Busy
| DiscoveryError::Closed
| DiscoveryError::Timeout
| DiscoveryError::Unavailable,
) => {
// A later unavailable capability search cannot erase verified earlier bytes.
// Native callers still require complete reconstruction; HTTPS fills only gaps.
if bytes > 0 {
return Ok((used.into_iter().collect(), bytes));
}
return Err(ContentError::Unavailable);
}
};
let providers = providers
.into_iter()
.filter(|provider| !attempted.contains(&provider.peer_id))
.collect();
let (providers, received) =
Self::pull_providers(context, manifest, store, policy, providers).await?;
used.extend(providers);
bytes = bytes.checked_add(received).ok_or(ContentError::Invalid)?;
Ok((used.into_iter().collect(), bytes))
rediscovery::pull(context, manifest, store, policy, control_peer).await
}

/// Reuse the same bounded provider set after a name-metadata round; no second discovery.
Expand Down
Loading
Loading