Checkpoint source 7 workflows and in-progress diagram authoring redesign
Rust checks / check (ubuntu-latest) (push) Canceled after 0s
Rust checks / check (windows-latest) (push) Canceled after 0s

Preserve current core, source, REST, desktop, recovery, documentation and validation work, including AGENTS.md and the development summary. This is a work-in-progress checkpoint: the new compact palette has outstanding compilation errors and native acceptance; earlier passing gates retain their documented scope.
This commit is contained in:
Codex
2026-09-10 10:06:55 -07:00
parent 4b6b5fc197
commit e2ecfea69b
162 changed files with 17595 additions and 926 deletions
+23 -1
View File
@@ -1,7 +1,10 @@
//! Persisted view intent and pure visibility decisions over actual model identities.
//! Build `ViewIndex` once per accepted model revision. Preparing a view performs
//! set unions/reachability once; testing an edge never walks the model.
use crate::{Id, Kind, Layer, OccurrenceBody, Project, RelationKind, SharedBody};
use crate::{
ContextualLinkPurpose, Id, Kind, Layer, OccurrenceBody, Project, RelationBody, RelationKind,
SharedBody,
};
use serde::{Deserialize, Serialize};
use std::collections::{BTreeMap, BTreeSet};
@@ -401,6 +404,25 @@ impl BehaviorIndex {
_ => {}
}
}
let topology = crate::topology_context::TopologyIndex::new(p);
for relation in p.relations.values() {
if let RelationBody::ContextualLink {
owner,
source,
target,
purpose: purpose @ ContextualLinkPurpose::Exchange { exchange },
} = &relation.body
&& topology
.validate_link(*owner, source, target, purpose)
.is_ok()
{
let facts = index.facts.entry(*owner).or_default();
facts.exchanges.insert(*exchange);
if let Some(exchange) = p.relations.get(exchange) {
facts.work.extend([exchange.source(), exchange.target()]);
}
}
}
index
}