Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bc69c6d449 | ||
|
|
e144e32e99 | ||
|
|
ef28f1784e | ||
|
|
8e59309cbc | ||
|
|
046cdc1b46 | ||
|
|
0e83157e09 |
@@ -5417,17 +5417,11 @@ impl App {
|
||||
self.pan = iced::Vector::new(30., 30.);
|
||||
return;
|
||||
}
|
||||
let mut geometry = oa_core::routing::route_diagram(
|
||||
let geometry = oa_core::routing::route_diagram(
|
||||
self.project(),
|
||||
&self.project().diagrams[&self.active_diagram.unwrap()],
|
||||
&view,
|
||||
);
|
||||
crate::diagram::apply_label_experiment(
|
||||
self.project(),
|
||||
&self.project().diagrams[&self.active_diagram.unwrap()],
|
||||
&view,
|
||||
&mut geometry,
|
||||
);
|
||||
let left = geometry.bounds.position.x;
|
||||
let top = geometry.bounds.position.y;
|
||||
let right = left + geometry.bounds.size.width;
|
||||
@@ -5611,6 +5605,7 @@ fn write_snapshot_inner(
|
||||
.map_err(|errors| crate::document::DocumentError::Source(errors).to_string())?,
|
||||
);
|
||||
}
|
||||
let has_original_destination = previous.is_some();
|
||||
let previous = previous.filter(|disk| {
|
||||
path.parent()
|
||||
.filter(|p| !p.as_os_str().is_empty())
|
||||
@@ -5621,14 +5616,33 @@ fn write_snapshot_inner(
|
||||
== Some(&disk.root)
|
||||
&& entry == disk.bundle.entry
|
||||
});
|
||||
// A missing-file expectation colliding with an existing destination is
|
||||
// not evidence that an observed dependency changed outside the editor.
|
||||
// Keep save_project's conflict reporting unchanged for that latter case.
|
||||
let saving_existing = previous.is_some();
|
||||
let destination_error = |error: source_files::SourceFileError| match error {
|
||||
source_files::SourceFileError::Conflict(paths) => {
|
||||
let guidance = if saving_existing {
|
||||
"Review the new included file's destination before saving."
|
||||
} else if has_original_destination {
|
||||
"Choose a fresh directory for Save As, or use Save All to update the open project's current entry."
|
||||
} else {
|
||||
"Choose a fresh directory for Save As."
|
||||
};
|
||||
format!(
|
||||
"Source destination files already exist: {paths:?}. Existing files are protected. {guidance}"
|
||||
)
|
||||
}
|
||||
other => other.to_string(),
|
||||
};
|
||||
let mut disk = match previous {
|
||||
Some(disk) => disk,
|
||||
None => source_files::new_project(&path, LIMITS).map_err(|e| e.to_string())?,
|
||||
None => source_files::new_project(&path, LIMITS).map_err(&destination_error)?,
|
||||
};
|
||||
for path in snapshot.bundle.files.keys() {
|
||||
if !disk.expectations.contains_key(path) {
|
||||
source_files::expect_new_file(&mut disk, path, LIMITS)
|
||||
.map_err(|e| e.to_string())?;
|
||||
.map_err(&destination_error)?;
|
||||
}
|
||||
}
|
||||
Some(source_files::save_project(&disk, &snapshot, LIMITS).map_err(|e| e.to_string())?)
|
||||
|
||||
@@ -1,5 +1,148 @@
|
||||
use super::*;
|
||||
|
||||
fn saved_multifile_app(directory: &std::path::Path) -> (App, Id, PathBuf) {
|
||||
let mut project = Project::empty();
|
||||
let activity = project
|
||||
.add_element(Kind::Activity, Layer::Oa, "Assess incident", None)
|
||||
.unwrap();
|
||||
let mut app = App::with_project(project);
|
||||
let path = directory.join("project.arcadia");
|
||||
complete_save(&mut app, path.clone());
|
||||
assert!(app.document.bundle().files.len() > 1);
|
||||
(app, activity, path)
|
||||
}
|
||||
|
||||
fn rejected_save_preserves_editor(app: &mut App, path: PathBuf) -> String {
|
||||
let snapshot = app.document.snapshot();
|
||||
let revision = app.document.revision();
|
||||
let undo = app.document.can_undo();
|
||||
let redo = app.document.can_redo();
|
||||
let draft = app.source_workspace.text().to_owned();
|
||||
let original_path = app.path.clone();
|
||||
let dirty = app.dirty();
|
||||
let result = write_snapshot(
|
||||
app.canvas_document,
|
||||
revision,
|
||||
snapshot.clone(),
|
||||
path,
|
||||
app.disk_project.clone(),
|
||||
);
|
||||
let error = match result {
|
||||
Err(error) => error,
|
||||
Ok(_) => panic!("Expected collision refusal"),
|
||||
};
|
||||
let _ = app.update(Message::Saved(Err(error.clone())));
|
||||
assert!(Arc::ptr_eq(&snapshot, &app.document.snapshot()));
|
||||
assert_eq!(app.document.revision(), revision);
|
||||
assert_eq!(app.document.can_undo(), undo);
|
||||
assert_eq!(app.document.can_redo(), redo);
|
||||
assert_eq!(app.source_workspace.text(), draft);
|
||||
assert_eq!(app.path, original_path);
|
||||
assert_eq!(app.dirty(), dirty);
|
||||
error.message
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn same_root_new_entry_collision_preserves_files_draft_and_history() {
|
||||
let directory = tempfile::tempdir().unwrap();
|
||||
let (mut app, activity, original) = saved_multifile_app(directory.path());
|
||||
let bytes: Vec<_> = app
|
||||
.document
|
||||
.bundle()
|
||||
.files
|
||||
.keys()
|
||||
.map(|p| (p.clone(), std::fs::read(directory.path().join(p)).unwrap()))
|
||||
.collect();
|
||||
app.execute(Command::Rename(activity, "Review incident".into()));
|
||||
app.execute(Command::Rename(activity, "Evaluate incident".into()));
|
||||
let _ = app.update(Message::Undo);
|
||||
assert!(app.document.can_undo() && app.document.can_redo());
|
||||
let cursor = app.source_workspace.files[&app.source_workspace.entry].cursor;
|
||||
app.source_workspace.edit(
|
||||
format!("{}\n// retained draft", app.source_workspace.text()),
|
||||
cursor,
|
||||
);
|
||||
let destination = directory.path().join("renamed.arcadia");
|
||||
let error = rejected_save_preserves_editor(&mut app, destination.clone());
|
||||
assert!(error.contains("already exist") && error.contains("Save All"));
|
||||
assert!(!error.contains("changed outside"));
|
||||
assert!(!destination.exists());
|
||||
assert_eq!(app.path, Some(original));
|
||||
for (path, expected) in bytes {
|
||||
assert_eq!(
|
||||
std::fs::read(directory.path().join(path)).unwrap(),
|
||||
expected
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn fresh_root_existing_include_is_protected_before_any_bundle_write() {
|
||||
let original = tempfile::tempdir().unwrap();
|
||||
let destination = tempfile::tempdir().unwrap();
|
||||
let (mut app, activity, _) = saved_multifile_app(original.path());
|
||||
app.execute(Command::Rename(activity, "Review incident".into()));
|
||||
let fragment = app.document.compiled().index.declarations[&activity]
|
||||
.path
|
||||
.clone();
|
||||
let collision = destination.path().join(&fragment);
|
||||
std::fs::create_dir_all(collision.parent().unwrap()).unwrap();
|
||||
std::fs::write(&collision, b"// independent destination work").unwrap();
|
||||
let target = destination.path().join("copy.arcadia");
|
||||
let error = rejected_save_preserves_editor(&mut app, target.clone());
|
||||
assert!(error.contains(&fragment) && error.contains("fresh directory"));
|
||||
assert!(!error.contains("changed outside"));
|
||||
assert!(!target.exists());
|
||||
for path in app.document.bundle().files.keys() {
|
||||
let file = destination.path().join(path);
|
||||
if path == &fragment {
|
||||
assert_eq!(
|
||||
std::fs::read(file).unwrap(),
|
||||
b"// independent destination work"
|
||||
);
|
||||
} else {
|
||||
assert!(!file.exists(), "Unexpected write: {path}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn observed_dependency_change_remains_external_conflict_and_normal_saves_work() {
|
||||
let original = tempfile::tempdir().unwrap();
|
||||
let fresh = tempfile::tempdir().unwrap();
|
||||
let (mut app, activity, path) = saved_multifile_app(original.path());
|
||||
app.execute(Command::Rename(activity, "Review incident".into()));
|
||||
complete_save(&mut app, path.clone());
|
||||
assert!(!app.dirty());
|
||||
let fragment = app.document.compiled().index.declarations[&activity]
|
||||
.path
|
||||
.clone();
|
||||
let entry_before = std::fs::read(&path).unwrap();
|
||||
let original_fragment = std::fs::read(original.path().join(&fragment)).unwrap();
|
||||
std::fs::write(original.path().join(&fragment), b"// external edit").unwrap();
|
||||
app.execute(Command::Rename(activity, "Evaluate incident".into()));
|
||||
let error = rejected_save_preserves_editor(&mut app, path.clone());
|
||||
assert!(error.contains("changed outside") && error.contains(&fragment));
|
||||
assert!(!error.contains("fresh directory"));
|
||||
assert_eq!(std::fs::read(&path).unwrap(), entry_before);
|
||||
assert_eq!(
|
||||
std::fs::read(original.path().join(&fragment)).unwrap(),
|
||||
b"// external edit"
|
||||
);
|
||||
// Restore the observed bytes, then exercise the legitimate existing Save All.
|
||||
std::fs::write(original.path().join(&fragment), original_fragment).unwrap();
|
||||
complete_save(&mut app, path);
|
||||
assert!(!app.dirty());
|
||||
let model = app.project().clone();
|
||||
let target = fresh.path().join("copy.arcadia");
|
||||
complete_save(&mut app, target.clone());
|
||||
let saved = source_files::load_project(&target, LIMITS).unwrap();
|
||||
let compiled = source_project::compile_bundle(&saved.bundle, LIMITS).unwrap();
|
||||
assert_eq!(compiled.decoded.project, model);
|
||||
assert_eq!(&saved.bundle, app.document.bundle());
|
||||
assert!(!app.dirty());
|
||||
}
|
||||
|
||||
fn complete_save(app: &mut App, path: PathBuf) {
|
||||
let receipt = write_snapshot(
|
||||
app.canvas_document,
|
||||
|
||||
@@ -37,9 +37,6 @@ mod port_hit_tests;
|
||||
#[path = "diagram/view_options_tests.rs"]
|
||||
mod view_options_tests;
|
||||
|
||||
#[path = "diagram/label_layout_experiment.rs"]
|
||||
mod label_layout_experiment;
|
||||
|
||||
#[path = "diagram/port_labels.rs"]
|
||||
mod port_labels;
|
||||
pub use port_labels::PortLabels;
|
||||
@@ -91,14 +88,8 @@ pub struct State {
|
||||
cache: RefCell<Option<CachedScene>>,
|
||||
}
|
||||
struct Scene {
|
||||
label_layout: Option<label_layout_experiment::Layout>,
|
||||
profile: label_layout_experiment::Profile,
|
||||
font_version: Option<iced::advanced::graphics::text::Version>,
|
||||
work: Option<Arc<crate::app::allocation_drag::Preview>>,
|
||||
view: ProjectedView,
|
||||
/// Core routing is the gesture baseline. Presentation-only wrapping must
|
||||
/// never become a frozen label in a later core preview.
|
||||
core_routed: Arc<RoutedView>,
|
||||
routed: Arc<RoutedView>,
|
||||
}
|
||||
struct CachedScene {
|
||||
@@ -523,14 +514,6 @@ impl DiagramCanvas<'_> {
|
||||
}
|
||||
}
|
||||
fn scene(&self, state: &State) -> Arc<Scene> {
|
||||
self.scene_with_profile(state, label_layout_experiment::profile())
|
||||
}
|
||||
fn scene_with_profile(
|
||||
&self,
|
||||
state: &State,
|
||||
profile: label_layout_experiment::Profile,
|
||||
) -> Arc<Scene> {
|
||||
let font_version = label_layout_experiment::font_version(profile);
|
||||
if let Some(preview) = self.work_preview()
|
||||
&& state
|
||||
.work
|
||||
@@ -539,32 +522,13 @@ impl DiagramCanvas<'_> {
|
||||
{
|
||||
if let Some(scene) = state.work_cache.borrow().as_ref()
|
||||
&& scene.work.as_ref().is_some_and(|p| Arc::ptr_eq(p, preview))
|
||||
&& scene.profile == profile
|
||||
&& scene.font_version == font_version
|
||||
{
|
||||
return scene.clone();
|
||||
}
|
||||
let core_routed = preview.routed.clone();
|
||||
let mut routed = core_routed.clone();
|
||||
let label_layout = if profile == label_layout_experiment::Profile::Baseline {
|
||||
None
|
||||
} else {
|
||||
label_layout_experiment::apply(
|
||||
preview.project(),
|
||||
&preview.placement.diagram,
|
||||
&preview.placement.view,
|
||||
Arc::make_mut(&mut routed),
|
||||
profile,
|
||||
)
|
||||
};
|
||||
let scene = Arc::new(Scene {
|
||||
label_layout,
|
||||
profile,
|
||||
font_version,
|
||||
work: Some(preview.clone()),
|
||||
view: preview.placement.view.clone(),
|
||||
core_routed,
|
||||
routed,
|
||||
routed: preview.routed.clone(),
|
||||
});
|
||||
*state.work_cache.borrow_mut() = Some(scene.clone());
|
||||
return scene;
|
||||
@@ -590,8 +554,6 @@ impl DiagramCanvas<'_> {
|
||||
&& cache.preview == preview
|
||||
&& cache.route == route
|
||||
&& cache.port == port
|
||||
&& cache.scene.profile == profile
|
||||
&& cache.scene.font_version == font_version
|
||||
{
|
||||
return cache.scene.clone();
|
||||
}
|
||||
@@ -601,7 +563,7 @@ impl DiagramCanvas<'_> {
|
||||
self.project.diagrams[&self.diagram].clone()
|
||||
};
|
||||
let view = self.projected(&diagram);
|
||||
let core_routed = Arc::new(
|
||||
let routed = Arc::new(
|
||||
if let Some(gesture) = state
|
||||
.route_drag
|
||||
.as_ref()
|
||||
@@ -618,25 +580,9 @@ impl DiagramCanvas<'_> {
|
||||
route_diagram(self.project, &diagram, &view)
|
||||
},
|
||||
);
|
||||
let mut routed = core_routed.clone();
|
||||
let label_layout = if profile == label_layout_experiment::Profile::Baseline {
|
||||
None
|
||||
} else {
|
||||
label_layout_experiment::apply(
|
||||
self.project,
|
||||
&diagram,
|
||||
&view,
|
||||
Arc::make_mut(&mut routed),
|
||||
profile,
|
||||
)
|
||||
};
|
||||
let scene = Arc::new(Scene {
|
||||
label_layout,
|
||||
profile,
|
||||
font_version,
|
||||
work: None,
|
||||
view,
|
||||
core_routed,
|
||||
routed,
|
||||
});
|
||||
*state.cache.borrow_mut() = Some(CachedScene {
|
||||
@@ -649,23 +595,7 @@ impl DiagramCanvas<'_> {
|
||||
scene
|
||||
}
|
||||
fn begin_route(&self, state: &mut State, world: Point, handle: Handle, route: EdgeRoute) {
|
||||
self.begin_route_with_profile(
|
||||
state,
|
||||
world,
|
||||
handle,
|
||||
route,
|
||||
label_layout_experiment::profile(),
|
||||
);
|
||||
}
|
||||
fn begin_route_with_profile(
|
||||
&self,
|
||||
state: &mut State,
|
||||
world: Point,
|
||||
handle: Handle,
|
||||
route: EdgeRoute,
|
||||
profile: label_layout_experiment::Profile,
|
||||
) {
|
||||
let baseline = self.scene_with_profile(state, profile).core_routed.clone();
|
||||
let baseline = self.scene(state).routed.clone();
|
||||
state.route_drag = Some(Gesture {
|
||||
context: self.context,
|
||||
start: world,
|
||||
@@ -1425,27 +1355,16 @@ impl canvas::Program<Message> for DiagramCanvas<'_> {
|
||||
Size::new(label.bounds.size.width, label.bounds.size.height),
|
||||
Color::WHITE,
|
||||
);
|
||||
if let Some(layout) = scene
|
||||
.label_layout
|
||||
.as_ref()
|
||||
.filter(|_| edge.id == label_layout_experiment::edge_id())
|
||||
{
|
||||
for line in layout.canvas_lines(if active { style::TEAL } else { style::MUTED })
|
||||
{
|
||||
f.fill_text(line);
|
||||
}
|
||||
} else {
|
||||
f.fill_text(Text {
|
||||
content: label.text.clone(),
|
||||
position: point(label.center),
|
||||
color: if active { style::TEAL } else { style::MUTED },
|
||||
size: 13.into(),
|
||||
align_x: iced::widget::text::Alignment::Center,
|
||||
align_y: iced::alignment::Vertical::Center,
|
||||
max_width: f32::INFINITY,
|
||||
..Default::default()
|
||||
});
|
||||
}
|
||||
f.fill_text(Text {
|
||||
content: label.text.clone(),
|
||||
position: point(label.center),
|
||||
color: if active { style::TEAL } else { style::MUTED },
|
||||
size: 13.into(),
|
||||
align_x: iced::widget::text::Alignment::Center,
|
||||
align_y: iced::alignment::Vertical::Center,
|
||||
max_width: f32::INFINITY,
|
||||
..Default::default()
|
||||
});
|
||||
}
|
||||
if let Some(relation) = project.relations.get(&edge.id) {
|
||||
for end in routing::association_end_geometry(relation, routed) {
|
||||
@@ -2024,30 +1943,7 @@ impl std::fmt::Display for ExportError {
|
||||
}
|
||||
impl std::error::Error for ExportError {}
|
||||
|
||||
/// Private opt-in trial adapter for consumers that already own routed geometry.
|
||||
pub(crate) fn apply_label_experiment(
|
||||
p: &Project,
|
||||
diagram: &Diagram,
|
||||
view: &ProjectedView,
|
||||
routed: &mut RoutedView,
|
||||
) {
|
||||
let _ = label_layout_experiment::apply(
|
||||
p,
|
||||
diagram,
|
||||
view,
|
||||
routed,
|
||||
label_layout_experiment::profile(),
|
||||
);
|
||||
}
|
||||
|
||||
pub fn export_svg(p: &Project, diagram: Id) -> Result<String, ExportError> {
|
||||
export_svg_with_profile(p, diagram, label_layout_experiment::profile())
|
||||
}
|
||||
fn export_svg_with_profile(
|
||||
p: &Project,
|
||||
diagram: Id,
|
||||
profile: label_layout_experiment::Profile,
|
||||
) -> Result<String, ExportError> {
|
||||
let d = p
|
||||
.diagrams
|
||||
.get(&diagram)
|
||||
@@ -2056,8 +1952,7 @@ fn export_svg_with_profile(
|
||||
return Err(ExportError::UnsupportedScenario(diagram));
|
||||
}
|
||||
let view = project_view(p, diagram);
|
||||
let mut routed = route_diagram(p, d, &view);
|
||||
let label_layout = label_layout_experiment::apply(p, d, &view, &mut routed, profile);
|
||||
let routed = route_diagram(p, d, &view);
|
||||
let left = routed.bounds.position.x - 30.;
|
||||
let top = routed.bounds.position.y - 30.;
|
||||
let right = routed.bounds.position.x + routed.bounds.size.width + 30.;
|
||||
@@ -2134,12 +2029,7 @@ fn export_svg_with_profile(
|
||||
.join(" ");
|
||||
svg.push_str(&format!("<path data-edge=\"{}\" d=\"{path}\" fill=\"none\" stroke=\"#8999a9\" stroke-width=\"1.5\"{dashed}{arrow}><title>{}</title></path>",edge.id,escape(p.named(edge.id))));
|
||||
let label = &route.label;
|
||||
if let Some(layout) = label_layout
|
||||
.as_ref()
|
||||
.filter(|_| edge.id == label_layout_experiment::edge_id())
|
||||
{
|
||||
svg.push_str(&layout.svg());
|
||||
} else if !label.text.is_empty() {
|
||||
if !label.text.is_empty() {
|
||||
svg.push_str(&format!("<rect x=\"{}\" y=\"{}\" width=\"{}\" height=\"{}\" fill=\"white\"/><text x=\"{}\" y=\"{}\" text-anchor=\"middle\" dominant-baseline=\"central\" font-family=\"sans-serif\" font-size=\"13\" fill=\"#637487\">{}</text>",label.bounds.position.x,label.bounds.position.y,label.bounds.size.width,label.bounds.size.height,label.center.x,label.center.y,escape(&label.text)));
|
||||
}
|
||||
if let Some(relation) = p.relations.get(&edge.id) {
|
||||
|
||||
@@ -421,19 +421,14 @@ fn coincident_attachment_handles_honor_explicit_end_choice() {
|
||||
EdgeEnd::Target,
|
||||
)));
|
||||
let c = canvas(&app, 1.);
|
||||
let core_routed = Arc::new(route_diagram(
|
||||
c.project,
|
||||
&c.project.diagrams[&c.diagram],
|
||||
&projection::project_view(c.project, c.diagram),
|
||||
));
|
||||
let mut scene = Scene {
|
||||
label_layout: None,
|
||||
profile: label_layout_experiment::Profile::Baseline,
|
||||
font_version: None,
|
||||
work: None,
|
||||
view: projection::project_view(c.project, c.diagram),
|
||||
routed: core_routed.clone(),
|
||||
core_routed,
|
||||
routed: Arc::new(route_diagram(
|
||||
c.project,
|
||||
&c.project.diagrams[&c.diagram],
|
||||
&projection::project_view(c.project, c.diagram),
|
||||
)),
|
||||
};
|
||||
let routed = Arc::make_mut(&mut scene.routed);
|
||||
let edge = routed.edges.get_mut(&c.selected).unwrap();
|
||||
|
||||
@@ -1,767 +0,0 @@
|
||||
//! Explicit, one-fixture visual experiment. No persisted formatting policy.
|
||||
use super::*;
|
||||
use iced::advanced::{graphics::text as graphics_text, text as shaped};
|
||||
use shaped::Paragraph as _;
|
||||
use std::sync::{Mutex, OnceLock};
|
||||
|
||||
const DIAGRAM: u128 = 0x00000000003840008000000000000001;
|
||||
const EDGE: u128 = 0x63009b5f539e5914b630ec6b7fefb4d5;
|
||||
pub(super) fn edge_id() -> Id {
|
||||
Id::from_u128(EDGE)
|
||||
}
|
||||
|
||||
const NAME: &str = "Technician service conversation";
|
||||
const FONT_SIZE: f32 = 13.;
|
||||
const ADVANCE: f32 = 16.;
|
||||
|
||||
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
|
||||
pub(super) enum Profile {
|
||||
#[default]
|
||||
Baseline,
|
||||
E,
|
||||
F,
|
||||
}
|
||||
pub(super) fn profile() -> Profile {
|
||||
static PROFILE: OnceLock<Profile> = OnceLock::new();
|
||||
*PROFILE.get_or_init(
|
||||
|| match std::env::var("ARCADIA_LABEL_EXPERIMENT").as_deref() {
|
||||
Ok("E") => Profile::E,
|
||||
Ok("F") => Profile::F,
|
||||
_ => Profile::Baseline,
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq)]
|
||||
struct MeasuredLine {
|
||||
text: &'static str,
|
||||
width: f32,
|
||||
baseline: f32,
|
||||
family: String,
|
||||
}
|
||||
#[derive(Clone, Debug, PartialEq)]
|
||||
pub(super) struct Line {
|
||||
pub text: &'static str,
|
||||
pub position: Position,
|
||||
pub baseline_y: f32,
|
||||
pub width: f32,
|
||||
pub family: String,
|
||||
}
|
||||
#[derive(Clone, Debug, PartialEq)]
|
||||
pub(super) struct Layout {
|
||||
pub canonical_text: String,
|
||||
pub lines: Vec<Line>,
|
||||
pub geometry: routing::EdgeLabelGeometry,
|
||||
/// Authored moves retain their shape even outside the automatic guard.
|
||||
pub clear: bool,
|
||||
}
|
||||
|
||||
pub(super) fn font_version(profile: Profile) -> Option<graphics_text::Version> {
|
||||
(profile != Profile::Baseline).then(|| {
|
||||
graphics_text::font_system()
|
||||
.read()
|
||||
.expect("Read font system")
|
||||
.version()
|
||||
})
|
||||
}
|
||||
|
||||
fn measured(profile: Profile) -> Option<Arc<Vec<MeasuredLine>>> {
|
||||
type Entry = (Profile, graphics_text::Version, Arc<Vec<MeasuredLine>>);
|
||||
static CACHE: OnceLock<Mutex<Vec<Entry>>> = OnceLock::new();
|
||||
let version = font_version(profile)?;
|
||||
let mut cache = CACHE.get_or_init(|| Mutex::new(Vec::new())).lock().ok()?;
|
||||
if let Some((_, _, lines)) = cache
|
||||
.iter()
|
||||
.find(|(p, v, _)| *p == profile && *v == version)
|
||||
{
|
||||
return Some(lines.clone());
|
||||
}
|
||||
let strings: &[&'static str] = match profile {
|
||||
Profile::Baseline => return None,
|
||||
Profile::E => &["Technician service", "conversation"],
|
||||
Profile::F => &["Technician", "service", "conversation"],
|
||||
};
|
||||
let mut lines = Vec::new();
|
||||
for &content in strings {
|
||||
let paragraph = graphics_text::Paragraph::with_text(shaped::Text {
|
||||
content,
|
||||
bounds: Size::INFINITE,
|
||||
size: FONT_SIZE.into(),
|
||||
line_height: shaped::LineHeight::Absolute(ADVANCE.into()),
|
||||
font: iced::Font::default(),
|
||||
align_x: shaped::Alignment::Left,
|
||||
align_y: iced::alignment::Vertical::Top,
|
||||
shaping: shaped::Shaping::Basic,
|
||||
wrapping: shaped::Wrapping::None,
|
||||
});
|
||||
let mut runs = paragraph.buffer().layout_runs();
|
||||
let run = runs.next()?;
|
||||
if runs.next().is_some() || run.rtl || run.glyphs.is_empty() {
|
||||
return None;
|
||||
}
|
||||
let width = paragraph.min_width();
|
||||
if !width.is_finite() || width <= 0. || paragraph.min_height() > ADVANCE + 0.01 {
|
||||
return None;
|
||||
}
|
||||
// This fixed English witness must resolve to one actual font face.
|
||||
// Mixed fallback is not silently exported as a generic SVG font.
|
||||
let font_id = run.glyphs.first()?.font_id;
|
||||
if run.glyphs.iter().any(|glyph| glyph.font_id != font_id) {
|
||||
return None;
|
||||
}
|
||||
let family = graphics_text::font_system()
|
||||
.write()
|
||||
.ok()?
|
||||
.raw()
|
||||
.db()
|
||||
.face(font_id)?
|
||||
.families
|
||||
.first()?
|
||||
.0
|
||||
.clone();
|
||||
lines.push(MeasuredLine {
|
||||
text: content,
|
||||
width,
|
||||
baseline: run.line_y,
|
||||
family,
|
||||
});
|
||||
}
|
||||
let lines = Arc::new(lines);
|
||||
cache.retain(|(_, v, _)| *v == version);
|
||||
cache.push((profile, version, lines.clone()));
|
||||
Some(lines)
|
||||
}
|
||||
|
||||
/// Runs before any scene consumer; never edits the model or any routed points.
|
||||
pub(super) fn apply(
|
||||
project: &Project,
|
||||
diagram: &Diagram,
|
||||
view: &ProjectedView,
|
||||
routed: &mut RoutedView,
|
||||
profile: Profile,
|
||||
) -> Option<Layout> {
|
||||
if profile == Profile::Baseline || diagram.id.as_u128() != DIAGRAM {
|
||||
return None;
|
||||
}
|
||||
let id = Id::from_u128(EDGE);
|
||||
let edge = routed.edges.get(&id)?;
|
||||
if edge.label.text != NAME
|
||||
|| project.relations.get(&id)?.name != NAME
|
||||
|| edge.custom_suspended
|
||||
|| view
|
||||
.nodes
|
||||
.iter()
|
||||
.any(|node| node.visual_parent.is_some() || node.collapsed)
|
||||
{
|
||||
return None;
|
||||
}
|
||||
let metrics = measured(profile)?;
|
||||
let width = metrics.iter().map(|line| line.width).fold(0., f32::max) + 16.;
|
||||
let height = 8. + ADVANCE * metrics.len() as f32;
|
||||
let authored = diagram
|
||||
.routes
|
||||
.iter()
|
||||
.find(|route| route.edge == id)
|
||||
.and_then(|route| route.label.as_ref());
|
||||
let fraction = authored.map_or(if profile == Profile::E { 0.5 } else { 0.55 }, |label| {
|
||||
label.fraction
|
||||
});
|
||||
let anchor = routing::point_along_polyline(&edge.points, fraction)?;
|
||||
let offset = authored.map_or(
|
||||
Position {
|
||||
x: if profile == Profile::E {
|
||||
0.
|
||||
} else {
|
||||
18. + width / 2.
|
||||
},
|
||||
y: 0.,
|
||||
},
|
||||
|label| label.offset,
|
||||
);
|
||||
let center = Position {
|
||||
x: anchor.x + offset.x,
|
||||
y: anchor.y + offset.y,
|
||||
};
|
||||
let bounds = routing::RoutingBounds {
|
||||
position: Position {
|
||||
x: center.x - width / 2.,
|
||||
y: center.y - height / 2.,
|
||||
},
|
||||
size: oa_core::Size { width, height },
|
||||
};
|
||||
let clear = guarded(project, view, routed, id, bounds, profile);
|
||||
if authored.is_none() && !clear {
|
||||
return None;
|
||||
}
|
||||
let geometry = routing::EdgeLabelGeometry {
|
||||
text: edge.label.text.clone(),
|
||||
fraction,
|
||||
anchor,
|
||||
center,
|
||||
bounds,
|
||||
};
|
||||
let lines = metrics
|
||||
.iter()
|
||||
.enumerate()
|
||||
.map(|(index, line)| {
|
||||
let top = bounds.position.y + 4. + ADVANCE * index as f32;
|
||||
Line {
|
||||
text: line.text,
|
||||
position: Position {
|
||||
x: center.x - line.width / 2.,
|
||||
y: top,
|
||||
},
|
||||
baseline_y: top + line.baseline,
|
||||
width: line.width,
|
||||
family: line.family.clone(),
|
||||
}
|
||||
})
|
||||
.collect();
|
||||
let layout = Layout {
|
||||
canonical_text: edge.label.text.clone(),
|
||||
lines,
|
||||
geometry,
|
||||
clear,
|
||||
};
|
||||
routed.edges.get_mut(&id)?.label = layout.geometry.clone();
|
||||
// Retain conservative existing bounds; add authored placements outside them.
|
||||
// The fixed automatic witnesses are inside the unchanged node extents.
|
||||
let old = routed.bounds;
|
||||
let left = old.position.x.min(bounds.position.x);
|
||||
let top = old.position.y.min(bounds.position.y);
|
||||
let right = (old.position.x + old.size.width).max(bounds.position.x + width);
|
||||
let bottom = (old.position.y + old.size.height).max(bounds.position.y + height);
|
||||
routed.bounds = routing::RoutingBounds {
|
||||
position: Position { x: left, y: top },
|
||||
size: oa_core::Size {
|
||||
width: right - left,
|
||||
height: bottom - top,
|
||||
},
|
||||
};
|
||||
Some(layout)
|
||||
}
|
||||
|
||||
fn rectangle(bounds: routing::RoutingBounds, padding: f32) -> Rectangle {
|
||||
Rectangle {
|
||||
x: bounds.position.x - padding,
|
||||
y: bounds.position.y - padding,
|
||||
width: bounds.size.width + 2. * padding,
|
||||
height: bounds.size.height + 2. * padding,
|
||||
}
|
||||
}
|
||||
fn overlap(a: Rectangle, b: Rectangle) -> bool {
|
||||
a.x < b.x + b.width && a.x + a.width > b.x && a.y < b.y + b.height && a.y + a.height > b.y
|
||||
}
|
||||
fn crossing(bounds: Rectangle, span: &[Position]) -> bool {
|
||||
let [a, b] = [span[0], span[1]];
|
||||
if a.x == b.x {
|
||||
a.x >= bounds.x
|
||||
&& a.x <= bounds.x + bounds.width
|
||||
&& a.y.min(b.y) <= bounds.y + bounds.height
|
||||
&& a.y.max(b.y) >= bounds.y
|
||||
} else if a.y == b.y {
|
||||
a.y >= bounds.y
|
||||
&& a.y <= bounds.y + bounds.height
|
||||
&& a.x.min(b.x) <= bounds.x + bounds.width
|
||||
&& a.x.max(b.x) >= bounds.x
|
||||
} else {
|
||||
// The bounded witness supports orthogonal geometry only.
|
||||
true
|
||||
}
|
||||
}
|
||||
fn guarded(
|
||||
project: &Project,
|
||||
view: &ProjectedView,
|
||||
routed: &RoutedView,
|
||||
id: Id,
|
||||
bounds: routing::RoutingBounds,
|
||||
profile: Profile,
|
||||
) -> bool {
|
||||
let label = rectangle(bounds, 0.);
|
||||
if view.nodes.iter().any(|node| {
|
||||
overlap(
|
||||
label,
|
||||
Rectangle {
|
||||
x: node.position.x - 12.,
|
||||
y: node.position.y - 12.,
|
||||
width: node.size.width + 24.,
|
||||
height: node.size.height + 24.,
|
||||
},
|
||||
)
|
||||
}) {
|
||||
return false;
|
||||
}
|
||||
let stroke_bounds = rectangle(bounds, 3.);
|
||||
let mut own_crossings = Vec::new();
|
||||
for edge in routed.edges.values() {
|
||||
if edge.id != id
|
||||
&& !edge.label.text.is_empty()
|
||||
&& overlap(label, rectangle(edge.label.bounds, 4.))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if let Some(relation) = project.relations.get(&edge.id) {
|
||||
for end in routing::association_end_geometry(relation, edge) {
|
||||
if !end.label.text.is_empty() && overlap(label, rectangle(end.label.bounds, 4.)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
for span in edge.points.windows(2) {
|
||||
if crossing(stroke_bounds, span) {
|
||||
if edge.id != id || profile == Profile::F {
|
||||
return false;
|
||||
}
|
||||
own_crossings.push(span);
|
||||
}
|
||||
}
|
||||
}
|
||||
if profile == Profile::E {
|
||||
let [span] = own_crossings.as_slice() else {
|
||||
return false;
|
||||
};
|
||||
let [a, b] = [span[0], span[1]];
|
||||
// One complete straight crossing, not a bend, lead, tip, or shared run.
|
||||
(a.x == b.x
|
||||
&& a.y.min(b.y) < stroke_bounds.y
|
||||
&& a.y.max(b.y) > stroke_bounds.y + stroke_bounds.height)
|
||||
|| (a.y == b.y
|
||||
&& a.x.min(b.x) < stroke_bounds.x
|
||||
&& a.x.max(b.x) > stroke_bounds.x + stroke_bounds.width)
|
||||
} else {
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
impl Layout {
|
||||
pub(super) fn canvas_lines(&self, color: Color) -> impl Iterator<Item = Text> + '_ {
|
||||
self.lines.iter().map(move |line| Text {
|
||||
content: line.text.into(),
|
||||
position: point(line.position),
|
||||
color,
|
||||
size: FONT_SIZE.into(),
|
||||
line_height: shaped::LineHeight::Absolute(ADVANCE.into()),
|
||||
font: iced::Font::default(),
|
||||
align_x: shaped::Alignment::Left,
|
||||
align_y: iced::alignment::Vertical::Top,
|
||||
shaping: shaped::Shaping::Basic,
|
||||
max_width: f32::INFINITY,
|
||||
})
|
||||
}
|
||||
pub(super) fn svg(&self) -> String {
|
||||
let bounds = self.geometry.bounds;
|
||||
let mut out = format!(
|
||||
"<g data-label-experiment=\"wrapped\"><title>{}</title><rect x=\"{}\" y=\"{}\" width=\"{}\" height=\"{}\" fill=\"white\"/>",
|
||||
escape(&self.canonical_text),
|
||||
bounds.position.x,
|
||||
bounds.position.y,
|
||||
bounds.size.width,
|
||||
bounds.size.height
|
||||
);
|
||||
for line in &self.lines {
|
||||
out.push_str(&format!("<text x=\"{}\" y=\"{}\" font-family=\"{}\" font-size=\"13\" fill=\"#637487\">{}</text>",
|
||||
line.position.x, line.baseline_y, escape(&line.family), escape(line.text)));
|
||||
}
|
||||
out.push_str("</g>");
|
||||
out
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
fn fixture() -> (Project, Id) {
|
||||
let p: Project = serde_json::from_slice(include_bytes!(
|
||||
"../../../../harness/experiments/wrapped-label-20261001/fixture/eight-card.json"
|
||||
))
|
||||
.unwrap();
|
||||
(p, Id::from_u128(DIAGRAM))
|
||||
}
|
||||
fn canvas(p: &Project, diagram: Id) -> DiagramCanvas<'_> {
|
||||
DiagramCanvas {
|
||||
selection: None,
|
||||
allocation: None,
|
||||
project: p,
|
||||
view_index: None,
|
||||
diagram,
|
||||
selected: edge_id(),
|
||||
navigation_focus: None,
|
||||
zoom: 1.,
|
||||
pan: Vector::ZERO,
|
||||
context: Context {
|
||||
document: p.id,
|
||||
diagram,
|
||||
revision: 0,
|
||||
epoch: 0,
|
||||
},
|
||||
selected_bend: None,
|
||||
selected_attachment: None,
|
||||
editable: true,
|
||||
placing: false,
|
||||
connection: None,
|
||||
}
|
||||
}
|
||||
#[test]
|
||||
fn baseline_is_exact_and_wrapping_changes_only_target_derived_geometry() {
|
||||
let (p, id) = fixture();
|
||||
let before = serde_json::to_vec(&p).unwrap();
|
||||
let diagram = &p.diagrams[&id];
|
||||
let view = project_view(&p, id);
|
||||
let baseline = route_diagram(&p, diagram, &view);
|
||||
assert_eq!(baseline.edges.len(), 12);
|
||||
let mut unchanged = baseline.clone();
|
||||
assert!(apply(&p, diagram, &view, &mut unchanged, Profile::Baseline).is_none());
|
||||
assert_eq!(unchanged, baseline);
|
||||
for profile in [Profile::E, Profile::F] {
|
||||
let mut routed = baseline.clone();
|
||||
let layout =
|
||||
apply(&p, diagram, &view, &mut routed, profile).expect("Measured witness must fit");
|
||||
assert!(layout.clear);
|
||||
assert_eq!(layout.canonical_text, NAME);
|
||||
assert_eq!(
|
||||
layout
|
||||
.lines
|
||||
.iter()
|
||||
.map(|line| line.text)
|
||||
.collect::<Vec<_>>()
|
||||
.join(" "),
|
||||
NAME
|
||||
);
|
||||
assert_eq!(routed.edges[&edge_id()].label.text, NAME);
|
||||
for (id, old) in &baseline.edges {
|
||||
assert_eq!(routed.edges[id].points, old.points);
|
||||
if *id != edge_id() {
|
||||
assert_eq!(&routed.edges[id], old);
|
||||
}
|
||||
}
|
||||
let mut restored = routed.clone();
|
||||
restored.edges.get_mut(&edge_id()).unwrap().label =
|
||||
baseline.edges[&edge_id()].label.clone();
|
||||
assert_eq!(
|
||||
restored, baseline,
|
||||
"No paths, ports, solver state, other labels or scene extents change"
|
||||
);
|
||||
assert_eq!(
|
||||
layout.geometry.bounds.size.height,
|
||||
8. + ADVANCE * layout.lines.len() as f32
|
||||
);
|
||||
let max_width = layout
|
||||
.lines
|
||||
.iter()
|
||||
.map(|line| line.width)
|
||||
.fold(0., f32::max);
|
||||
assert_eq!(layout.geometry.bounds.size.width, max_width + 16.);
|
||||
assert!(
|
||||
layout
|
||||
.lines
|
||||
.iter()
|
||||
.all(|line| !line.family.is_empty() && line.width > 0.)
|
||||
);
|
||||
if profile == Profile::F {
|
||||
assert_eq!(layout.geometry.fraction, 0.55);
|
||||
assert!(
|
||||
(layout.geometry.bounds.position.x - layout.geometry.anchor.x - 18.).abs()
|
||||
< 0.001
|
||||
);
|
||||
assert!(
|
||||
layout.geometry.bounds.size.width < 114.5,
|
||||
"Measured F loses own-is-closer margin"
|
||||
);
|
||||
} else {
|
||||
assert_eq!(layout.geometry.fraction, 0.5);
|
||||
assert_eq!(layout.geometry.center, layout.geometry.anchor);
|
||||
}
|
||||
println!(
|
||||
"{profile:?}: bounds={:?}; lines={:?}",
|
||||
layout.geometry.bounds, layout.lines
|
||||
);
|
||||
}
|
||||
assert_eq!(serde_json::to_vec(&p).unwrap(), before);
|
||||
}
|
||||
#[test]
|
||||
fn measured_backing_canvas_svg_picking_and_focus_share_geometry() {
|
||||
let (p, id) = fixture();
|
||||
let c = canvas(&p, id);
|
||||
for profile in [Profile::E, Profile::F] {
|
||||
let state = State::default();
|
||||
let scene = c.scene_with_profile(&state, profile);
|
||||
let layout = scene.label_layout.as_ref().unwrap();
|
||||
let bounds = rectangle(layout.geometry.bounds, 0.);
|
||||
let texts = layout.canvas_lines(Color::BLACK).collect::<Vec<_>>();
|
||||
let svg = super::super::export_svg_with_profile(&p, id, profile).unwrap();
|
||||
assert!(svg.contains(&layout.svg()));
|
||||
assert_eq!(
|
||||
crate::diagram_usage::edge_focus_bounds(&scene.routed.edges[&edge_id()]),
|
||||
bounds
|
||||
);
|
||||
for (line, text) in layout.lines.iter().zip(texts) {
|
||||
assert_eq!(text.content, line.text);
|
||||
assert_eq!(text.position, point(line.position));
|
||||
assert_eq!(text.size.0, FONT_SIZE);
|
||||
assert_eq!(
|
||||
text.line_height,
|
||||
shaped::LineHeight::Absolute(ADVANCE.into())
|
||||
);
|
||||
assert!(line.position.x >= bounds.x + 7.99);
|
||||
assert!(line.position.x + line.width <= bounds.x + bounds.width - 7.99);
|
||||
assert_eq!(
|
||||
c.hit_label(
|
||||
&scene.routed,
|
||||
Point::new(line.position.x + line.width / 2., line.position.y + 8.)
|
||||
),
|
||||
Some(edge_id())
|
||||
);
|
||||
assert!(svg.contains(&format!(
|
||||
"x=\"{}\" y=\"{}\" font-family=\"{}\"",
|
||||
line.position.x,
|
||||
line.baseline_y,
|
||||
escape(&line.family)
|
||||
)));
|
||||
}
|
||||
assert_eq!(
|
||||
c.hit_label(&scene.routed, Point::new(bounds.x + 1., bounds.y + 1.)),
|
||||
Some(edge_id())
|
||||
);
|
||||
}
|
||||
}
|
||||
#[test]
|
||||
fn automatic_guard_refuses_foreign_coincident_stroke_and_card() {
|
||||
let (p, id) = fixture();
|
||||
let diagram = &p.diagrams[&id];
|
||||
let view = project_view(&p, id);
|
||||
let baseline = route_diagram(&p, diagram, &view);
|
||||
for profile in [Profile::E, Profile::F] {
|
||||
let mut valid = baseline.clone();
|
||||
let layout = apply(&p, diagram, &view, &mut valid, profile).unwrap();
|
||||
let mut blocked = baseline.clone();
|
||||
let foreign = blocked
|
||||
.edges
|
||||
.keys()
|
||||
.copied()
|
||||
.find(|id| *id != edge_id())
|
||||
.unwrap();
|
||||
let bounds = layout.geometry.bounds;
|
||||
blocked.edges.get_mut(&foreign).unwrap().points = vec![
|
||||
Position {
|
||||
x: layout.geometry.center.x,
|
||||
y: bounds.position.y - 40.,
|
||||
},
|
||||
Position {
|
||||
x: layout.geometry.center.x,
|
||||
y: bounds.position.y + bounds.size.height + 40.,
|
||||
},
|
||||
];
|
||||
let snapshot = blocked.clone();
|
||||
assert!(apply(&p, diagram, &view, &mut blocked, profile).is_none());
|
||||
assert_eq!(blocked, snapshot);
|
||||
let mut occluded_view = view.clone();
|
||||
occluded_view.nodes[0].position = bounds.position;
|
||||
let mut routed = baseline.clone();
|
||||
assert!(apply(&p, diagram, &occluded_view, &mut routed, profile).is_none());
|
||||
assert_eq!(routed, baseline);
|
||||
}
|
||||
}
|
||||
#[test]
|
||||
fn authored_fraction_offset_keep_shape_even_during_conflicting_move() {
|
||||
let (mut p, id) = fixture();
|
||||
let view = project_view(&p, id);
|
||||
for profile in [Profile::E, Profile::F] {
|
||||
let original = route_diagram(&p, &p.diagrams[&id], &view);
|
||||
let mut automatic = original.clone();
|
||||
let initial = apply(&p, &p.diagrams[&id], &view, &mut automatic, profile).unwrap();
|
||||
let offset = Position {
|
||||
x: initial.geometry.center.x - initial.geometry.anchor.x + 17.,
|
||||
y: -9.,
|
||||
};
|
||||
p.diagrams.get_mut(&id).unwrap().routes = vec![EdgeRoute {
|
||||
edge: edge_id(),
|
||||
source_attachment: None,
|
||||
target_attachment: None,
|
||||
waypoints: vec![],
|
||||
label: Some(EdgeLabel {
|
||||
fraction: initial.geometry.fraction,
|
||||
offset,
|
||||
}),
|
||||
}];
|
||||
let c = canvas(&p, id);
|
||||
let state = State::default();
|
||||
let scene = c.scene_with_profile(&state, profile);
|
||||
let moved = scene.label_layout.as_ref().unwrap();
|
||||
assert_eq!(
|
||||
moved.lines.iter().map(|line| line.text).collect::<Vec<_>>(),
|
||||
initial
|
||||
.lines
|
||||
.iter()
|
||||
.map(|line| line.text)
|
||||
.collect::<Vec<_>>()
|
||||
);
|
||||
assert_eq!(moved.geometry.fraction, initial.geometry.fraction);
|
||||
assert!((moved.geometry.center.x - moved.geometry.anchor.x - offset.x).abs() < 0.001);
|
||||
assert!((moved.geometry.center.y - moved.geometry.anchor.y - offset.y).abs() < 0.001);
|
||||
let mut preview = State {
|
||||
context: Some(c.context),
|
||||
..State::default()
|
||||
};
|
||||
preview.route_drag = Some(Gesture {
|
||||
context: c.context,
|
||||
start: point(moved.geometry.center),
|
||||
handle: Handle::Label { original: offset },
|
||||
route: p.diagrams[&id].routes[0].clone(),
|
||||
changed: true,
|
||||
baseline: scene.core_routed.clone(),
|
||||
});
|
||||
preview
|
||||
.route_drag
|
||||
.as_mut()
|
||||
.unwrap()
|
||||
.route
|
||||
.label
|
||||
.as_mut()
|
||||
.unwrap()
|
||||
.offset
|
||||
.x += 100.;
|
||||
let dragged = c.scene_with_profile(&preview, profile);
|
||||
let layout = dragged.label_layout.as_ref().unwrap();
|
||||
assert_eq!(layout.lines.len(), moved.lines.len());
|
||||
assert!(
|
||||
(layout.geometry.center.x - layout.geometry.anchor.x - offset.x - 100.).abs()
|
||||
< 0.001
|
||||
);
|
||||
for (id, edge) in &scene.routed.edges {
|
||||
assert_eq!(dragged.routed.edges[id].points, edge.points);
|
||||
}
|
||||
p.diagrams.get_mut(&id).unwrap().routes.clear();
|
||||
}
|
||||
}
|
||||
#[test]
|
||||
fn different_edge_preview_guard_rejection_restores_complete_core_geometry() {
|
||||
// Exercise the actual gesture capture and core preview, with a pure
|
||||
// explicit profile. Moving another label onto the wrapped target must
|
||||
// reject wrapping, leaving the full original one-line target geometry.
|
||||
// All twelve point arrays and every other frozen label remain exact.
|
||||
let (p, id) = fixture();
|
||||
let view = project_view(&p, id);
|
||||
let core = route_diagram(&p, &p.diagrams[&id], &view);
|
||||
let foreign = core
|
||||
.edges
|
||||
.values()
|
||||
.find(|edge| edge.id != edge_id() && !edge.label.text.is_empty())
|
||||
.unwrap();
|
||||
let original_offset = Position {
|
||||
x: foreign.label.center.x - foreign.label.anchor.x,
|
||||
y: foreign.label.center.y - foreign.label.anchor.y,
|
||||
};
|
||||
let c = DiagramCanvas {
|
||||
selected: foreign.id,
|
||||
..canvas(&p, id)
|
||||
};
|
||||
for profile in [Profile::E, Profile::F] {
|
||||
let mut state = State {
|
||||
context: Some(c.context),
|
||||
..State::default()
|
||||
};
|
||||
let initial = c.scene_with_profile(&state, profile);
|
||||
let target = initial
|
||||
.label_layout
|
||||
.as_ref()
|
||||
.expect("Initial witness must wrap");
|
||||
c.begin_route_with_profile(
|
||||
&mut state,
|
||||
point(foreign.label.center),
|
||||
Handle::Label {
|
||||
original: original_offset,
|
||||
},
|
||||
EdgeRoute {
|
||||
edge: foreign.id,
|
||||
source_attachment: None,
|
||||
target_attachment: None,
|
||||
waypoints: vec![],
|
||||
label: Some(EdgeLabel {
|
||||
fraction: foreign.label.fraction,
|
||||
offset: original_offset,
|
||||
}),
|
||||
},
|
||||
profile,
|
||||
);
|
||||
state
|
||||
.route_drag
|
||||
.as_mut()
|
||||
.unwrap()
|
||||
.move_to(point(target.geometry.center), 1.);
|
||||
let diagram = c.preview_diagram(&state);
|
||||
let expected = routing::route_edge_preview(&p, &diagram, &view, &core, foreign.id);
|
||||
let mut guard_probe = expected.clone();
|
||||
assert!(
|
||||
apply(&p, &diagram, &view, &mut guard_probe, profile).is_none(),
|
||||
"Foreign label now overlaps target: wrapping must be refused"
|
||||
);
|
||||
assert_eq!(guard_probe, expected);
|
||||
let actual = c.scene_with_profile(&state, profile);
|
||||
assert!(actual.label_layout.is_none());
|
||||
for (edge, before) in &core.edges {
|
||||
assert_eq!(
|
||||
actual.routed.edges[edge].points, before.points,
|
||||
"Label drag must not reroute"
|
||||
);
|
||||
if *edge != foreign.id && *edge != edge_id() {
|
||||
assert_eq!(
|
||||
actual.routed.edges[edge].label, before.label,
|
||||
"Other labels remain frozen"
|
||||
);
|
||||
}
|
||||
}
|
||||
assert_eq!(
|
||||
actual.routed.edges[&edge_id()].label,
|
||||
core.edges[&edge_id()].label,
|
||||
"No Layout means original complete one-line target geometry, never stale wrapped hit bounds"
|
||||
);
|
||||
assert_eq!(
|
||||
*actual.routed, expected,
|
||||
"Fallback is the complete core preview result"
|
||||
);
|
||||
}
|
||||
}
|
||||
#[test]
|
||||
fn scene_and_measurement_cache_reuse_and_geometry_invalidation() {
|
||||
let (p, id) = fixture();
|
||||
let c = canvas(&p, id);
|
||||
let mut state = State::default();
|
||||
let first = c.scene_with_profile(&state, Profile::F);
|
||||
state.pointer = Some(Point::new(100., 200.));
|
||||
let changed_camera = DiagramCanvas {
|
||||
pan: Vector::new(40., 30.),
|
||||
zoom: 0.5,
|
||||
selected: p.id,
|
||||
..c
|
||||
};
|
||||
assert!(Arc::ptr_eq(
|
||||
&first,
|
||||
&changed_camera.scene_with_profile(&state, Profile::F)
|
||||
));
|
||||
assert!(Arc::ptr_eq(
|
||||
&measured(Profile::F).unwrap(),
|
||||
&measured(Profile::F).unwrap()
|
||||
));
|
||||
let other_profile = c.scene_with_profile(&state, Profile::E);
|
||||
assert!(!Arc::ptr_eq(&first, &other_profile));
|
||||
let next_revision = DiagramCanvas {
|
||||
context: Context {
|
||||
revision: 1,
|
||||
..c.context
|
||||
},
|
||||
..c
|
||||
};
|
||||
assert!(!Arc::ptr_eq(
|
||||
&other_profile,
|
||||
&next_revision.scene_with_profile(&state, Profile::E)
|
||||
));
|
||||
let plain = c.scene_with_profile(&state, Profile::Baseline);
|
||||
assert!(plain.label_layout.is_none());
|
||||
assert!(Arc::ptr_eq(&plain.core_routed, &plain.routed));
|
||||
assert_eq!(
|
||||
*plain.routed,
|
||||
route_diagram(&p, &p.diagrams[&id], &plain.view)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -6,8 +6,7 @@ impl DiagramCanvas<'_> {
|
||||
pub(crate) fn work_dirty_point(&self, bounds: Rectangle, screen: Point) -> bool {
|
||||
let diagram = &self.project.diagrams[&self.diagram];
|
||||
let view = self.projected(diagram);
|
||||
let mut routed = routing::route_diagram(self.project, diagram, &view);
|
||||
super::apply_label_experiment(self.project, diagram, &view, &mut routed);
|
||||
let routed = routing::route_diagram(self.project, diagram, &view);
|
||||
self.work_dirty_press(
|
||||
&view,
|
||||
&routed,
|
||||
|
||||
@@ -327,11 +327,7 @@ pub(crate) fn saved_usages_for(p: &Project, subject: Id, only_diagram: Option<Id
|
||||
"state machine view"
|
||||
}
|
||||
.into(),
|
||||
bounds: {
|
||||
let mut routed = routing::route_diagram(p, diagram, &view);
|
||||
crate::diagram::apply_label_experiment(p, diagram, &view, &mut routed);
|
||||
routed_bounds(routed.bounds)
|
||||
},
|
||||
bounds: routed_bounds(routing::route_diagram(p, diagram, &view).bounds),
|
||||
});
|
||||
}
|
||||
for node in &view.nodes {
|
||||
@@ -411,13 +407,9 @@ pub(crate) fn saved_usages_for(p: &Project, subject: Id, only_diagram: Option<Id
|
||||
}
|
||||
}
|
||||
if view.edges.iter().any(|edge| edge.id == subject)
|
||||
&& let Some(edge) = {
|
||||
let mut routed = routing::route_diagram(p, diagram, &view);
|
||||
crate::diagram::apply_label_experiment(p, diagram, &view, &mut routed);
|
||||
routed
|
||||
}
|
||||
.edges
|
||||
.get(&subject)
|
||||
&& let Some(edge) = routing::route_diagram(p, diagram, &view)
|
||||
.edges
|
||||
.get(&subject)
|
||||
{
|
||||
usages.push(Usage {
|
||||
subject,
|
||||
|
||||
@@ -1,28 +1,5 @@
|
||||
# Architectural and product decisions
|
||||
|
||||
## Measured label wrapping remains experimental — 2026-10-01
|
||||
|
||||
Preserve the isolated E/F prototypes and their
|
||||
[validation, locked readings and conservation oracles](experiments/wrapped-label-20261001/validation.md)
|
||||
without promoting either placement rule. E centers two measured lines on the
|
||||
own stroke; F offsets three lines beside it. Both reduce backing width using
|
||||
actual Iced shaping and conserve canonical model data and route geometry. F's
|
||||
first reader still misidentified two exchanges; both readers retained a plausible
|
||||
wrong conversation ownership. The experiments therefore do not meet dependable
|
||||
association at Fit, despite correct E endpoint guesses. Separate readers and a
|
||||
single fixture do not establish causal superiority or general usability.
|
||||
|
||||
Keep raw routing distinct from derived presentation during gesture previews:
|
||||
the adversarial different-edge test exposed stale wrapped bounds after guard
|
||||
refusal, fixed by retaining the original core RoutedView. This is reusable
|
||||
architecture evidence, not acceptance of private fixture-specific layout code.
|
||||
Saved fraction/offset survive under F, but ordinary reopening derives one line;
|
||||
external profiles cannot provide a production formatting contract. A general
|
||||
format/layout proposal requires explicit persistence semantics, shared consumer
|
||||
bounds, native representative workflows and glyph/performance evidence. Further
|
||||
work should address view scale and ambiguous stroke ownership rather than tune
|
||||
this same label scene until it looks successful.
|
||||
|
||||
## Private source composition decision — 2026-09-23
|
||||
|
||||
Adopt the opaque validated original-span rename batch as the next private
|
||||
|
||||
@@ -1,22 +1,10 @@
|
||||
# Isolated measured-label experiment checkpoint — 2026-10-01 PDT
|
||||
|
||||
This branch adds the private E/F label experiment at
|
||||
`d0896ced75fea73bcda6bd14f259a34503840704` to the compact Help foundation below.
|
||||
[Validation and retained raw evidence](experiments/wrapped-label-20261001/validation.md)
|
||||
cover actual measured Iced layout, 126 focused tests, native first readings,
|
||||
selection/edit/Undo/Redo, exact exports and saved-F reopening. An independent
|
||||
review verified complete Project conservation and unchanged paths/drawing bytes.
|
||||
Neither candidate established reliable first-reading label ownership, and
|
||||
ordinary reopening loses the externally selected wrapping. Both remain excluded
|
||||
from production and releases. This branch is experimental evidence, not an
|
||||
integrated product checkpoint or complete OA/SA acceptance. Live #38 ownership
|
||||
and next actions remain in Gitea.
|
||||
|
||||
# Verified Windows source checkpoint — 2026-10-01 PDT
|
||||
|
||||
This branch combines the released integrated foundation
|
||||
`715036e132677dd2bc2fb37ed316d93dc9987aec` with compact diagram controls and
|
||||
contextual Help production source `6e7c4ddaf0775198384a8c4882809ea8e14b2976`.
|
||||
contextual Help production source `6e7c4ddaf0775198384a8c4882809ea8e14b2976`,
|
||||
and the protected Save As destination diagnostic correction tested at
|
||||
`0e83157e09d52e6152df91208e41693b62da2d46`.
|
||||
[PROJECT_GOAL.md](../PROJECT_GOAL.md) remains authoritative; complete OA/SA
|
||||
acceptance is unfinished.
|
||||
|
||||
@@ -48,10 +36,25 @@ Dense diagrams, remaining Scenario group adapters, quantities/calculations/
|
||||
constraints, maintained libraries, broad accessibility/DPI and full OA/SA
|
||||
acceptance remain unfinished. The independent projection/navigation, outgoing-drag,
|
||||
icon, grid/performance and State-label contributions are outside this code.
|
||||
A protected Save As destination collision has misleading external-change wording;
|
||||
[issue 46](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/46)
|
||||
records it. Files remain protected and normal/fresh-destination recovery is
|
||||
verified. Live ownership, integration and release coordination remain in Gitea.
|
||||
The published compact Help ZIP retains misleading external-change wording for a
|
||||
protected Save As destination collision. This branch's
|
||||
[diagnostic correction](save-as-diagnostics-20261001.md) distinguishes existing
|
||||
protected destination files from observed external edits and explains recovery.
|
||||
Its 29 targeted checks, strict Clippy, matching GUI build, native normal/minimum
|
||||
window workflows, eight complete byte checkpoints and parsed-model oracle pass;
|
||||
independent review finds no material blocker in the bounded contribution.
|
||||
The [fresh scoped package validation](release-save-diagnostics-validation-20261001.md)
|
||||
checks the actual extracted correction: accurate protected-destination refusal,
|
||||
Save All/fresh Save As recovery, actual external-edit protection, fresh reopen,
|
||||
complete source/model oracles and 23 server assertions. Independent final review
|
||||
finds no material blocker in this artifact. The [save-diagnostics Windows preview](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/releases/tag/v0.2.0-preview.save-diagnostics.20261001)
|
||||
is published from evidence checkpoint `e144e32e9984477a258759a9dcc75f6e499fc224`;
|
||||
[publication receipts](experiments/save-diagnostics-package-20261001/publication.md)
|
||||
verify its ZIP, checksum and validation attachment. It remains outside the
|
||||
separately owned follow-up union.
|
||||
[Issue 46](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/46)
|
||||
holds integration and delivery status. Live ownership and release coordination
|
||||
remain in Gitea.
|
||||
|
||||
## Contribution-specific verification
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
* -text whitespace=-blank-at-eof,-blank-at-eol,cr-at-eol
|
||||
@@ -0,0 +1,58 @@
|
||||
# Protected source destination diagnostic evidence (#46)
|
||||
|
||||
Source: `0e83157e09d52e6152df91208e41693b62da2d46`, based on published
|
||||
`ea23e229260d7d050b3c3b88e77c3a851e936abe`. This packet was assembled locally
|
||||
before integration/publication. See [the contribution note](../../save-as-diagnostics-20261001.md).
|
||||
|
||||
The packet preserves the original bytes of the first failed candidate diff,
|
||||
source hashes and E0308 log; corrected targeted tests; strict Clippy and GUI build
|
||||
logs; preparation/freeze/launch/oracle scripts; native plan, 16 captures, eight
|
||||
full byte-oracle receipts, baseline, launch/exit receipts and empty streams;
|
||||
full parser request/response envelopes; and final independent review. Donor
|
||||
build/extraction receipts establish the reused parser server's separate provenance.
|
||||
`commands.json` records parent-observed invocation scope; flags are not recoverable
|
||||
from build stdout logs alone. `source-files.json` identifies relevant Git source bytes.
|
||||
|
||||
The desktop hash is `e9cce9355525ecdc59bfae12608b1e0272167acef5a86b25368ef547e08886ff`;
|
||||
runtime hash is `f45604a12e8bcd839fd86f667c1be1cc7c4f9da2b3c69ff381ac708f0e1ae7d4`.
|
||||
The reused server hash is `6cebacc117e46fdab023c6402a5cebd6929fb55993ae8ff6b89cd1c6c1170237`,
|
||||
from `715036e132677dd2bc2fb37ed316d93dc9987aec`; it was not rebuilt for #46.
|
||||
|
||||
Excluded: the 119 MB desktop binary, runtime copies, live fixture directory copies,
|
||||
parser store, redundant failed log, unrelated package evidence and release assets.
|
||||
Complete source inputs survive in request envelopes; seven companion files are
|
||||
reconstructible from the pinned source and checked against all phase receipts.
|
||||
The independent review checked the live fixture/store files before exclusion;
|
||||
this packet's offline checker does not claim to repeat those live-file observations.
|
||||
|
||||
From a repository checkout containing the pinned Git commit, run Python 3:
|
||||
|
||||
```powershell
|
||||
python harness/experiments/save-as-diagnostics-20261001/verify.py
|
||||
# After staging, additionally detect any Git newline conversion:
|
||||
python harness/experiments/save-as-diagnostics-20261001/verify.py --index
|
||||
```
|
||||
|
||||
`evidence-files.json` inventories every packet file except itself. Scoped
|
||||
`.gitattributes` disables newline conversion for all descendants. The checker is
|
||||
read-only: it checks hashes, exact filename sets, all eight declared phase byte
|
||||
sets, full parser source/model envelopes and native exit receipts. It does not
|
||||
launch the application, rerun compilation, or re-execute a native test.
|
||||
|
||||
Historical scripts retain original local paths and are evidence, not portable
|
||||
one-command replay. `prepare-native46.py` asserts the frozen source and copies
|
||||
the built executable; `launch-native46.py` restricts PATH and captures exit/logs.
|
||||
`oracle.py inject` and `restore` deliberately mutate the isolated B fixture.
|
||||
Do not run these scripts against an existing trial or interpret elapsed historical
|
||||
paths as available artifacts. For a new trial, build the pinned source in the
|
||||
configured Windows GNU LLVM environment and adapt paths into a fresh isolated
|
||||
directory, following the native plan and recording new receipts.
|
||||
|
||||
Scope: Windows development build and bounded #46 workflows. Native desktop
|
||||
exit was normal (0), streams empty; owned parser termination was forced (1),
|
||||
not graceful-shutdown evidence. Persistent collision footer truncation remains,
|
||||
with pointer tooltip readable at normal/minimum sizes; keyboard tooltip access
|
||||
was not tested. Fresh destination companions were seven parent copies; 30 source
|
||||
files were application writes. No full-suite, new-platform, packaged #46 release
|
||||
or complete OA/SA acceptance is claimed. The earlier #39 release retains its old
|
||||
diagnostic wording; integration/publication is a separate parent-owned action.
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"source": "0e83157e09d52e6152df91208e41693b62da2d46",
|
||||
"attribution": "Parent-observed executed invocations; logs record output without command flags.",
|
||||
"cwd": "C:/ar-save-01a0d717",
|
||||
"environment_script": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/toolchain/env.ps1",
|
||||
"CARGO_TARGET_DIR": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/target-gnullvm",
|
||||
"CARGO_BUILD_JOBS": "1",
|
||||
"CARGO_INCREMENTAL": "0",
|
||||
"target": "x86_64-pc-windows-gnullvm",
|
||||
"commands": [
|
||||
"cargo test --locked -p oa-desktop -- save_as_tests source_project_tests repair_save_state_tests --test-threads=1",
|
||||
"cargo clippy --locked -p oa-desktop --all-targets -- -D warnings",
|
||||
"cargo build --locked -p oa-desktop --bin arcadia-studio"
|
||||
],
|
||||
"outcomes": [
|
||||
"29 passed; 0 failed; 0 ignored; 1520 filtered out",
|
||||
"strict Clippy success",
|
||||
"GUI build success"
|
||||
],
|
||||
"scope": "Targeted tests and development desktop build, not full-suite or packaged acceptance."
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"source_identity": "Desktop: 6e7c4ddaf0775198384a8c4882809ea8e14b2976; unchanged reused server: 715036e132677dd2bc2fb37ed316d93dc9987aec; package documentation: ea23e229260d7d050b3c3b88e77c3a851e936abe",
|
||||
"profile": "dev, unoptimized, debug assertions enabled",
|
||||
"compiler": "rustc 1.98.1 (48a229cea 2026-09-01)",
|
||||
"target": "x86_64-pc-windows-gnullvm",
|
||||
"binary_sha256": {
|
||||
"arcadia-studio.exe": "d55ecad4b0f75c0c9c26625e5441bef9c9360890b65bc13236c6ebfaf03d631e",
|
||||
"arcadia-server.exe": "6cebacc117e46fdab023c6402a5cebd6929fb55993ae8ff6b89cd1c6c1170237"
|
||||
},
|
||||
"binary_origins": {
|
||||
"arcadia-studio.exe": {
|
||||
"source": "6e7c4ddaf0775198384a8c4882809ea8e14b2976",
|
||||
"build_command": "cargo build --locked -p oa-desktop --bin arcadia-studio",
|
||||
"evidence": "harness/experiments/compact-help-20260925/candidate-6e7c/build.log",
|
||||
"native_evidence": "harness/compact-help-validation-20261001.md"
|
||||
},
|
||||
"arcadia-server.exe": {
|
||||
"source": "715036e132677dd2bc2fb37ed316d93dc9987aec",
|
||||
"reuse": true,
|
||||
"release": "v0.2.0-preview.integrated.20260924",
|
||||
"original_build_evidence": {
|
||||
"source_identity": "715036e132677dd2bc2fb37ed316d93dc9987aec",
|
||||
"profile": "dev",
|
||||
"target": "x86_64-pc-windows-gnullvm",
|
||||
"compiler": "rustc 1.98.1 (48a229cea 2026-09-01)",
|
||||
"binary_sha256": {
|
||||
"arcadia-studio.exe": "2c03bd6cc3f1110c219e4f57ab94874a121590f83779239a93289b7170664399",
|
||||
"arcadia-server.exe": "6cebacc117e46fdab023c6402a5cebd6929fb55993ae8ff6b89cd1c6c1170237"
|
||||
},
|
||||
"mandatory_gate": {
|
||||
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\prerelease-gates-v2-20260924\\final-04\\summary.json",
|
||||
"bytes": 10594,
|
||||
"sha256": "8b655c429b4abdeec0476a8397565fcd07682642f1d7b87e9a0c4eec63e22fc9"
|
||||
},
|
||||
"source_manifest": {
|
||||
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\prerelease-gates-v2-20260924\\final-04\\inputs-before.json",
|
||||
"bytes": 1740725,
|
||||
"sha256": "38e4f7d37b67b06b7991d48560c5bd56ec5893909f3cffd224442d15bdc35f88"
|
||||
},
|
||||
"environment": {
|
||||
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\prerelease-gates-v2-20260924\\final-04\\environment.json",
|
||||
"bytes": 8981,
|
||||
"sha256": "d9d89bc52a9312044e277f92b1585350fc86d5cc963dd91a39c669bc6ca2f39f"
|
||||
},
|
||||
"artifact_relocation": {
|
||||
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\prerelease-gates-v2-20260924\\final-04\\artifact-relocation.json",
|
||||
"bytes": 6181,
|
||||
"sha256": "3298225b9890aab1a8029a4d6dff42a8162f8d77f2c71bcdd379d25ebcb1f9d6"
|
||||
},
|
||||
"scope": "Exact preserved CargoJSON-identified individual product builds from final04; supplemental combined build is separately recorded. Native/package acceptance is separate."
|
||||
},
|
||||
"unchanged_input_check": "git diff --exit-code 715036e132677dd2bc2fb37ed316d93dc9987aec ea23e229260d7d050b3c3b88e77c3a851e936abe -- crates/oa-core crates/oa-server Cargo.toml Cargo.lock"
|
||||
}
|
||||
},
|
||||
"package_documentation_source": "ea23e229260d7d050b3c3b88e77c3a851e936abe",
|
||||
"runtime_sha256": "f45604a12e8bcd839fd86f667c1be1cc7c4f9da2b3c69ff381ac708f0e1ae7d4",
|
||||
"acceptance_scope": "Contribution gates and prior released-server evidence are separate from fresh packaged desktop/server checks; this is an unfinished Windows development preview, not complete OA/SA acceptance."
|
||||
}
|
||||
@@ -0,0 +1,575 @@
|
||||
{
|
||||
"status": "PASS",
|
||||
"archive": "ArcadiaStudio-0.2.0-preview.compact-help.20261001-x86_64-pc-windows-gnullvm.zip",
|
||||
"archive_bytes": 34184534,
|
||||
"archive_sha256": "18af75c7aea60bb0d5db5b1925d0d0815ecd08afc5bb258438851cfda809a6f2",
|
||||
"files": 565,
|
||||
"bundle": "C:\\ar-compact-01a0d717\\.local\\package39\\extracted\\ArcadiaStudio-0.2.0-preview.compact-help.20261001-x86_64-pc-windows-gnullvm",
|
||||
"sha256": {
|
||||
"arcadia-server.exe": "6cebacc117e46fdab023c6402a5cebd6929fb55993ae8ff6b89cd1c6c1170237",
|
||||
"arcadia-studio.exe": "d55ecad4b0f75c0c9c26625e5441bef9c9360890b65bc13236c6ebfaf03d631e",
|
||||
"dependency-notices.json": "db8f66507719835a00f93a64bb9736e8b5e753b0dcca8b0fb1b36ca7b0bb91fd",
|
||||
"deployment/arcadia-server.service": "1e6c6bb4065e25f8fe1d558a4ed0bbd4844782a4377c2482488db1e6f9cab01d",
|
||||
"deployment/Dockerfile": "72c04aef4ec879955ed3bdf315987553d018ef46e4b8f350f0f6fe380c453eb7",
|
||||
"deployment/Dockerfile.dockerignore": "6bb7d7496110b11a531cb8cd923864c6610850a8f1c4de8a797f54c7156f29e1",
|
||||
"docs/api.html": "d06e32b3da838e519630a4151111bb40a383ccf294eb18443118a7498700a993",
|
||||
"docs/api.rst": "d78f138d011dd0af28bd53a65d1d93381d031f680191779d4f3030a264eb2e74",
|
||||
"docs/language.html": "77c14e548f5d2deea0c21a3a931347e1c87449f5be8503f6c51ceaef37be9a33",
|
||||
"docs/language.rst": "7117a66e16b34cd6ce033532e984c7ca49b4611e296fb1c46c5f737fe9169ec6",
|
||||
"docs/linux-packaging.md": "41a1bb1095801df37a1411341c5791d55ea8c365739314d599a60269ac4bc7a0",
|
||||
"docs/openapi.json": "2ad69da52fb574435525990c906948ce54b1efd9247cdde8726969f382731790",
|
||||
"docs/preview-human-checks.md": "50b56c328c22587e1187f6e614bc914210095cf635c301f335e82de11201b890",
|
||||
"docs/research-v2-service.md": "4828df5bc679e7c71f49b4b85c9e7dacbec52f46d416fed48af70e08886d4e4e",
|
||||
"docs/server.md": "4eb24937d424ba8b384e1734e02a6f8e963ae11d2715889c92b14b39ff2e4a48",
|
||||
"docs/windows-packaging.md": "2d5ef8a9a8741e6e7f6df9db9fd9a839f806ea782a6f2063c3a98725ecfd36b6",
|
||||
"documentation-check.json": "18a35f7022d6c180c42ad4fd7c7010e494bdff0d2ca395efac84ac545fe23627",
|
||||
"examples/coastal-rescue.arcadia": "7e183ef9fd8154d3074303f1956cd0d9871c19e3ffc630d333b0bffbd6e30e17",
|
||||
"examples/coastal-rescue.json": "242f0b031229a87af5c4ebe5d651defe59c191a6b7a69dc0a77f7e203411f195",
|
||||
"examples/legacy-v1-coastal-rescue.arcadia": "4dbbbdf8bc7e6cb8e0a81dd678069dae585a9e5187c59bc3665e1fdab3f1a86a",
|
||||
"examples/legacy-v1-coastal-rescue.oa.json": "fd0e9dedfb7adb922dc0575cc2b820d40344d639f1d8052bd70363aa59de9c24",
|
||||
"examples/release1/evidence/repair-check.md": "f4db17bdca4ecbb1bf0caef01b2da5f1f7f798ab3152b648ce6dd8696a6a68e5",
|
||||
"examples/release1/expected-diagnostics.json": "3700393d76b940cfc076bf52861bd7b1f43370f8eabce3594531bd0bf1fc851e",
|
||||
"examples/release1/model.json": "ef0ef4006c3e09d5db6e1b621256b3f7d6642f3a7b09cc34607cfbcca830c727",
|
||||
"examples/release1/model.rs": "ddc2d92b0d7699a4cadfbb35ae379f0a68d17f4f5d7df82b4b1afcf8d5425fbe",
|
||||
"examples/release1/oa/activities/activity_oa_restore_work.arcadia": "21cbd7176af8fad68453306f2371ff03e127a994b8796cdf044567332de9686f",
|
||||
"examples/release1/oa/behavior/process_oa_assessment_procedure.arcadia": "23cabc213c264a16c8595414db6acb09248c1cef9cd699f1b0316e5bb82c062a",
|
||||
"examples/release1/oa/behavior/process_oa_field_procedure.arcadia": "9c52086759b7344b4809ceb8d372f65647b16fc24153a03b887faa378c37fe96",
|
||||
"examples/release1/oa/behavior/process_oa_response.arcadia": "675798bd19e6b40d03e7076b0e59b110cdaaab7b6d16c47c3ac80fa960072e84",
|
||||
"examples/release1/oa/behavior/scenario_oa_conversation.arcadia": "e217e5394a0771dc16206ed9437a231da27905d2f19be64b3f48281c0a32fb6b",
|
||||
"examples/release1/oa/behavior/scenario_oa_full_scenario.arcadia": "c5a285f2d7c61bd2a136107f267fbf9cddb1cba3f63ff36a6f53f7ab98f33df5",
|
||||
"examples/release1/oa/behavior/state_machine_oa_monitor.arcadia": "e7349e1e5336282eed3f5a103129db33d3ae4ed500788ee7129e8fc193ac57f6",
|
||||
"examples/release1/oa/capabilities.arcadia": "26a3d9b615a3251ff010e0b47127f2d16bc2dcd45ed95967208b0076d725843a",
|
||||
"examples/release1/oa/model.arcadia": "069a5eaaf525089935cc9d73ae7b916866ed78c6534705d75739650ecdea7ada",
|
||||
"examples/release1/oa/participants.arcadia": "591a75a9ecad280302be4d4ae0171ad616377ed11ead5e233848ca2dc0a71819",
|
||||
"examples/release1/oa/types.arcadia": "f02c391d584674c879f662a418abba3a220f1fee88471ca49322ac9873de628d",
|
||||
"examples/release1/project.arcadia": "b2674e6bf77cfe0f6f0ba79c81d2e96d92f39c02ca2c6266d80e91723bfb9fda",
|
||||
"examples/release1/README.md": "113cfb1cf38a98b51bff60442d86a35d636a3d80ef206bece7d53d0aae67f2d5",
|
||||
"examples/release1/sa/behavior/process_sa_assessment_procedure.arcadia": "5c414fbdaabf9f9e402b0441fcacf1cacf4dbbc6c822162f028de35abf59be2d",
|
||||
"examples/release1/sa/behavior/process_sa_field_procedure.arcadia": "ece846fdf93857e71a9ab0efcbdf64a5c41c71180f62afa3f79077fffb53b8f2",
|
||||
"examples/release1/sa/behavior/process_sa_response.arcadia": "af7fdda280a917cf626f6e077162d481f9aaad280f8e81330c07d7fe384b1c52",
|
||||
"examples/release1/sa/behavior/scenario_sa_conversation.arcadia": "01339699ec3ee409418d9bb232542f2bcd9419f1e67b183e77700c56bb9f71d2",
|
||||
"examples/release1/sa/behavior/scenario_sa_full_scenario.arcadia": "5dce6b00a3a441162e8dee3e23d9ca5ab7bed4a24de669b1fba03664a3086dda",
|
||||
"examples/release1/sa/behavior/state_machine_sa_monitor.arcadia": "17dbcfa5bbfd10fc8e23a325fc950ce853c219b4aa89c74f96278cbb3f34acc8",
|
||||
"examples/release1/sa/capabilities.arcadia": "81706a0ca9d7db2aa0350888b9c00d853885185db2e6b90557d3d51a11c3d645",
|
||||
"examples/release1/sa/functions/function_sa_audit_thresholds.arcadia": "27f798f78f36e72b38edab3725af2feb0eaa010fd52a60b5c6b6bef57ad3b686",
|
||||
"examples/release1/sa/functions/function_sa_restore_work.arcadia": "357c6acb80f86b4e8d8f5c98f9f79d140f85fbe09f3406b41b7ac6eba464ec8c",
|
||||
"examples/release1/sa/model.arcadia": "805b90262e27090ae7da81a51bcefa49c97fb0b3d3220b4a72323b4c4351c395",
|
||||
"examples/release1/sa/participants.arcadia": "ca144d6a8f45fe720b5d18c7b59c7671444baa8c37e5ce9117bcba34b3a6aa84",
|
||||
"examples/release1/sa/types.arcadia": "540ddbc2bcd0ccf45298e3ea5660637341aff63ff65fd87ac2f26469d1adc064",
|
||||
"examples/release1/traceability.arcadia": "474bd28d955ff7af7722f6e9a23220d816879e3f46202e79a233544b9c593116",
|
||||
"examples/release1/transition-before.json": "2253e6434f741687e22327c37d520ed15c043bc36025498650bc2366bb6a874d",
|
||||
"examples/release1/transition-request.json": "43b9a22e5f95ad3bc0ebd2478ead0e14406854abc989ae94ded9367b013d812a",
|
||||
"examples/release1/views/diagram_oa_allocation_view.arcadia": "c45d7467839219d894804c1ef2d22ff4d4a5a84a6a273c526bafd4c1facde624",
|
||||
"examples/release1/views/diagram_sa_allocation_view.arcadia": "352a3ca745517592b5c9b1239b5770f62f0466a329a91fd03457ef2b53c06ed6",
|
||||
"examples/release1/views/diagram_sa_capability_view.arcadia": "8f18fcccbcddcf3c1ea0ffe727b5b23b77fc148c5da4fde953abe681e4c20cd2",
|
||||
"examples/release1/views/diagram_sa_service_view.arcadia": "4c72cb7593d9c4be8d2600b0656a7a3a6ce84c45bb2f3e58a4ee5ae3bf91913c",
|
||||
"examples/release1/views/diagram_sa_state_view.arcadia": "dd1bea81ac7dc549a53f9b190be6f13052e00ede345bd180444cc31edb892230",
|
||||
"examples/routing-workshop.arcadia": "dc6b75da72884d399132ed9e300fa5a26b73d802bb526c9af986ae9eeb0a646a",
|
||||
"examples/routing-workshop.json": "8592714f75b271133f21ce017d87896b6cf91ea0e4837f1c2ed453e21be26b14",
|
||||
"examples/source-project/oa.arcadia": "5f60642f211b2d352a951092faeeb7503d4fb7f6f7fca99e810347231101d31c",
|
||||
"examples/source-project/project.arcadia": "787f6b67b179ffd221f7e5faf1a4edd74cfd116aa1e3b5e9ed9f22fbff612d8d",
|
||||
"examples/source-project/sa/assurance.arcadia": "ab76044836e4dcd42a82d316846ec87da2108939aa2037640c5bca1d2ecdee0f",
|
||||
"examples/source-project/sa/participants.arcadia": "1abad579812e77877b45a3d8e3c3e9da734be2d04a0254cc730a5257ebd2dc88",
|
||||
"examples/source-project/sa/reporting.arcadia": "f0b7443f728912ca163de39b6055876b533a77feaa3219b2d40a2dd65712e058",
|
||||
"examples/source-project/views.arcadia": "e29ad3f406a6a50d2f0ae2ca2a53ee3b0c18222cd4098704a46d4f48b64ea17f",
|
||||
"examples/text-first/project.arcadia": "f441535c623e0cf20e1875eb2cd33b587ed00e078c37af39cb36d89bb5edc19a",
|
||||
"examples/text-first/README.md": "4ec8250d5ed556f1d496e8c85137e973e802ecb11df1a36488411e8cdc5a9f9e",
|
||||
"libunwind.dll": "f45604a12e8bcd839fd86f667c1be1cc7c4f9da2b3c69ff381ac708f0e1ae7d4",
|
||||
"LICENSE": "51009f2cb07e5d19645858b2fbc037a672a25f8cbf7999522942b86807ecf365",
|
||||
"licenses/dependencies/arrayref-0.3.9/LICENSE": "1bc7e6f475b3ec99b7e2643411950ae2368c250dd4c5c325f80f9811362a94a1",
|
||||
"licenses/dependencies/arrayvec-0.7.8/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/arrayvec-0.7.8/LICENSE-MIT": "4da95ec4ecb65b738d470b7d762894ad9c97da93e6cbfb18b570fc2c96f4b871",
|
||||
"licenses/dependencies/ash-0.38.0+1.3.281/LICENSE-APACHE": "0e8a410375e1ee5c75c6198b08b534fec6e5edef766cf971bab4a404542636ab",
|
||||
"licenses/dependencies/ash-0.38.0+1.3.281/LICENSE-MIT": "c733ccf8ab25df175a63d9d844677b98e3a5ab8f8de1c1616087e6868a7f948e",
|
||||
"licenses/dependencies/atomic-waker-1.1.2/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/atomic-waker-1.1.2/LICENSE-MIT": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3",
|
||||
"licenses/dependencies/atomic-waker-1.1.2/LICENSE-THIRD-PARTY": "6226d0632e2e1a80c23597e964da9812ae193c535fe058154afb034e94167aa5",
|
||||
"licenses/dependencies/autocfg-1.5.1/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/autocfg-1.5.1/LICENSE-MIT": "27995d58ad5c1145c1a8cd86244ce844886958a35eb2b78c6b772748669999ac",
|
||||
"licenses/dependencies/axum-0.8.9/LICENSE": "6a13bc24a100a6812f053879ec51b126b103af7cda6dbf48c4188722da44da9f",
|
||||
"licenses/dependencies/axum-core-0.5.6/LICENSE": "008c87afcd2e626eaf564093250bed06dd7efb5732113264bba3dda8f1c556a1",
|
||||
"licenses/dependencies/base64-0.22.1/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/base64-0.22.1/LICENSE-MIT": "0dd882e53de11566d50f8e8e2d5a651bcf3fabee4987d70f306233cf39094ba7",
|
||||
"licenses/dependencies/bit-set-0.8.0/LICENSE-APACHE": "8173d5c29b4f956d532781d2b86e4e30f83e6b7878dce18c919451d6ba707c90",
|
||||
"licenses/dependencies/bit-set-0.8.0/LICENSE-MIT": "f51ac2c59a222f7476ce507ca879960e2b64ea64bb2786eefdbeb7b0b538d1b7",
|
||||
"licenses/dependencies/bit-vec-0.8.0/LICENSE-APACHE": "8173d5c29b4f956d532781d2b86e4e30f83e6b7878dce18c919451d6ba707c90",
|
||||
"licenses/dependencies/bit-vec-0.8.0/LICENSE-MIT": "f51ac2c59a222f7476ce507ca879960e2b64ea64bb2786eefdbeb7b0b538d1b7",
|
||||
"licenses/dependencies/bitflags-2.13.1/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/bitflags-2.13.1/LICENSE-MIT": "6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb",
|
||||
"licenses/dependencies/bytemuck_derive-1.12.0/LICENSE-APACHE": "e3ba223bb1423f0aad8c3dfce0fe3148db48926d41e6fbc3afbbf5ff9e1c89cb",
|
||||
"licenses/dependencies/bytemuck_derive-1.12.0/LICENSE-MIT": "9df9ba60a11af705f2e451b53762686e615d86f76b169cf075c3237730dbd7e2",
|
||||
"licenses/dependencies/bytemuck_derive-1.12.0/LICENSE-ZLIB": "84b34dd7608f7fb9b17bd588a6bf392bf7de504e2716f024a77d89f1b145a151",
|
||||
"licenses/dependencies/bytemuck-1.25.2/LICENSE-APACHE": "e3ba223bb1423f0aad8c3dfce0fe3148db48926d41e6fbc3afbbf5ff9e1c89cb",
|
||||
"licenses/dependencies/bytemuck-1.25.2/LICENSE-MIT": "9df9ba60a11af705f2e451b53762686e615d86f76b169cf075c3237730dbd7e2",
|
||||
"licenses/dependencies/bytemuck-1.25.2/LICENSE-ZLIB": "84b34dd7608f7fb9b17bd588a6bf392bf7de504e2716f024a77d89f1b145a151",
|
||||
"licenses/dependencies/bytes-1.12.1/LICENSE": "45f522cacecb1023856e46df79ca625dfc550c94910078bd8aec6e02880b3d42",
|
||||
"licenses/dependencies/cc-1.4.5/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/cc-1.4.5/LICENSE-MIT": "378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397",
|
||||
"licenses/dependencies/cfg_aliases-0.2.2/LICENSE": "31b94860253d8ec7b4529f51901044d3b459d6292d996504a36b1bae3a36a812",
|
||||
"licenses/dependencies/cfg-if-1.0.4/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/cfg-if-1.0.4/LICENSE-MIT": "378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397",
|
||||
"licenses/dependencies/chacha20-0.10.2/LICENSE-APACHE": "a9040321c3712d8fd0b09cf52b17445de04a23a10165049ae187cd39e5c86be5",
|
||||
"licenses/dependencies/chacha20-0.10.2/LICENSE-MIT": "b8c6939380a400f53e11923d50fcc4dd2fa1ba8339fd9d04cda38a0251b6c9b0",
|
||||
"licenses/dependencies/clipboard-win-5.4.1/supplement/DoumanAsh-clipboard-win-3b27cf2bfd1a-LICENSE": "c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566",
|
||||
"licenses/dependencies/codespan-reporting-0.12.0/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
|
||||
"licenses/dependencies/core_maths-0.1.1/LICENSE": "9ebf8c4cc0b735ca13a766451f7b8097db3185975ceb2ba94b5abf439156a91f",
|
||||
"licenses/dependencies/cosmic-text-0.15.0/fonts/FiraMono-LICENSE": "587dd9548304fd421cd254f7550bd101c1250ffc95417f2f7f92d55b44ecbe53",
|
||||
"licenses/dependencies/cosmic-text-0.15.0/fonts/Inter-LICENSE": "3c8d13d97ea5eb62868833a377034c6be6a9833e768d32abec2a767a8101e4bc",
|
||||
"licenses/dependencies/cosmic-text-0.15.0/fonts/NotoSans-LICENSE": "5ec4347054089def6904da61d04f0360968f9ef36634b1fe007a5b6ec2f7aa96",
|
||||
"licenses/dependencies/cosmic-text-0.15.0/LICENSE-APACHE": "000b4962e6b27176a0ff89cce4be555b16472cafb5671eb2804a8fdac6854793",
|
||||
"licenses/dependencies/cosmic-text-0.15.0/LICENSE-MIT": "95557bafe728379e206f3b6d4aceeaa054d271c71d722411a6222e2dec01138c",
|
||||
"licenses/dependencies/cpufeatures-0.3.1/LICENSE-APACHE": "a9040321c3712d8fd0b09cf52b17445de04a23a10165049ae187cd39e5c86be5",
|
||||
"licenses/dependencies/cpufeatures-0.3.1/LICENSE-MIT": "73b9dc2e79c7308998dd30296e073aefaefb944a68fb89aa412c23c0edcabcaa",
|
||||
"licenses/dependencies/cryoglyph-0.1.0/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/cryoglyph-0.1.0/LICENSE-MIT": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3",
|
||||
"licenses/dependencies/cryoglyph-0.1.0/LICENSE-ZLIB": "b3ec01ad0869c5c50937bc68780cd0bb44e235ad858dfa54a7a381dced9b115a",
|
||||
"licenses/dependencies/cursor-icon-1.2.0/LICENSE-APACHE": "b59affd015e517ed998dd735757f9a3693643cd389609947ed54074234a10784",
|
||||
"licenses/dependencies/cursor-icon-1.2.0/LICENSE-MIT": "c138726a726ac37bae09d0f8a48e74e8e3aa8a8952fcd10fae0fb224cc1c05f1",
|
||||
"licenses/dependencies/cursor-icon-1.2.0/LICENSE-ZLIB": "01e533bd94e8f1c32b2c2531e2c398de7d35d7804add3d574b4e1fe581d53537",
|
||||
"licenses/dependencies/displaydoc-0.2.7/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/displaydoc-0.2.7/LICENSE-MIT": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3",
|
||||
"licenses/dependencies/document-features-0.2.12/LICENSE-APACHE": "074e6e32c86a4c0ef8b3ed25b721ca23aca83df277cd88106ef7177c354615ff",
|
||||
"licenses/dependencies/document-features-0.2.12/LICENSE-MIT": "aa893340d14b9844625be6a50ac644169a01b52f0211cbf81b09e1874c8cd81d",
|
||||
"licenses/dependencies/dpi-0.1.2/LICENSE": "6dc0e068dcf3a5bc8e054205b85b7720e1d49265bbc64bf515d2cf79197df69a",
|
||||
"licenses/dependencies/dpi-0.1.2/LICENSE-LIBM-MIT": "9eff396a99bafd208e7126602420d6864f6066c08b84485a5b032320a9c01997",
|
||||
"licenses/dependencies/equivalent-1.0.2/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/equivalent-1.0.2/LICENSE-MIT": "7365cc8878a1d7ce155a58c4ca09c3d7a6be413efa5334a80ea842912b669349",
|
||||
"licenses/dependencies/error-code-3.4.0/LICENSE": "c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566",
|
||||
"licenses/dependencies/etagere-0.2.15/LICENSE-APACHE": "2d56a37f3d1e461f6b1539ab94e0e6bcc55443e376098aee85ac3b2890860290",
|
||||
"licenses/dependencies/etagere-0.2.15/LICENSE-MIT": "9cfc9c9a4608501b5da3746948d2be2dd709ad51f6bcb0c1c685760ee3dde31f",
|
||||
"licenses/dependencies/euclid-0.22.14/COPYRIGHT": "ec82b96487e9e778ee610c7ab245162464782cfa1f555c2299333f8dbe5c036a",
|
||||
"licenses/dependencies/euclid-0.22.14/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/euclid-0.22.14/LICENSE-MIT": "62065228e42caebca7e7d7db1204cbb867033de5982ca4009928915e4095f3a3",
|
||||
"licenses/dependencies/fastrand-2.5.0/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/fastrand-2.5.0/LICENSE-MIT": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3",
|
||||
"licenses/dependencies/find-msvc-tools-0.1.12/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/find-msvc-tools-0.1.12/LICENSE-MIT": "378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397",
|
||||
"licenses/dependencies/float_next_after-1.0.0/LICENSE": "0604d5817110dacc5c7d9b7de6b58b962794603d4823c357157bd5dec4198bc5",
|
||||
"licenses/dependencies/foldhash-0.1.5/LICENSE": "b1181a40b2a7b25cf66fd01481713bc1005df082c53ef73e851e55071b102744",
|
||||
"licenses/dependencies/foldhash-0.2.0/LICENSE": "b1181a40b2a7b25cf66fd01481713bc1005df082c53ef73e851e55071b102744",
|
||||
"licenses/dependencies/font-types-0.10.1/LICENSE-APACHE": "a14f7d685a79c0f4fb64aee305527a6d5fa55f2401f4e6d688d7b1301868e6c0",
|
||||
"licenses/dependencies/font-types-0.10.1/LICENSE-MIT": "8a62fa27ffdccc3df19dce90f8bb3d572e27aecffc1a383d0c2601834dcec434",
|
||||
"licenses/dependencies/font-types-0.12.4/LICENSE-APACHE": "eba684204073ed715c4abb48129acdfd2bff8ae48339e6a7da3b341d3027b7f0",
|
||||
"licenses/dependencies/font-types-0.12.4/LICENSE-MIT": "7b4c9a3946dfcea7967582760e963e27799e225dcf20565c8ef55324bb017427",
|
||||
"licenses/dependencies/fontdb-0.23.0/LICENSE": "59a1fdac3bd550043599bd159fd70f09a1108c2b09e3751d39b11e1ff8e51f00",
|
||||
"licenses/dependencies/fontdb-0.23.0/tests/fonts/LICENSE.txt": "b84fdd2c3da5db56385cdbb639795e90aa3e035c53bc3591135f18df3331451f",
|
||||
"licenses/dependencies/form_urlencoded-1.2.2/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/form_urlencoded-1.2.2/LICENSE-MIT": "20c7855c364d57ea4c97889a5e8d98470a9952dade37bd9248b9a54431670e5e",
|
||||
"licenses/dependencies/futures-0.3.34/LICENSE-APACHE": "275c491d6d1160553c32fd6127061d7f9606c3ea25abfad6ca3f6ed088785427",
|
||||
"licenses/dependencies/futures-0.3.34/LICENSE-MIT": "6652c868f35dfe5e8ef636810a4e576b9d663f3a17fb0f5613ad73583e1b88fd",
|
||||
"licenses/dependencies/futures-channel-0.3.34/LICENSE-APACHE": "275c491d6d1160553c32fd6127061d7f9606c3ea25abfad6ca3f6ed088785427",
|
||||
"licenses/dependencies/futures-channel-0.3.34/LICENSE-MIT": "6652c868f35dfe5e8ef636810a4e576b9d663f3a17fb0f5613ad73583e1b88fd",
|
||||
"licenses/dependencies/futures-core-0.3.34/LICENSE-APACHE": "275c491d6d1160553c32fd6127061d7f9606c3ea25abfad6ca3f6ed088785427",
|
||||
"licenses/dependencies/futures-core-0.3.34/LICENSE-MIT": "6652c868f35dfe5e8ef636810a4e576b9d663f3a17fb0f5613ad73583e1b88fd",
|
||||
"licenses/dependencies/futures-executor-0.3.34/LICENSE-APACHE": "275c491d6d1160553c32fd6127061d7f9606c3ea25abfad6ca3f6ed088785427",
|
||||
"licenses/dependencies/futures-executor-0.3.34/LICENSE-MIT": "6652c868f35dfe5e8ef636810a4e576b9d663f3a17fb0f5613ad73583e1b88fd",
|
||||
"licenses/dependencies/futures-io-0.3.34/LICENSE-APACHE": "275c491d6d1160553c32fd6127061d7f9606c3ea25abfad6ca3f6ed088785427",
|
||||
"licenses/dependencies/futures-io-0.3.34/LICENSE-MIT": "6652c868f35dfe5e8ef636810a4e576b9d663f3a17fb0f5613ad73583e1b88fd",
|
||||
"licenses/dependencies/futures-macro-0.3.34/LICENSE-APACHE": "275c491d6d1160553c32fd6127061d7f9606c3ea25abfad6ca3f6ed088785427",
|
||||
"licenses/dependencies/futures-macro-0.3.34/LICENSE-MIT": "6652c868f35dfe5e8ef636810a4e576b9d663f3a17fb0f5613ad73583e1b88fd",
|
||||
"licenses/dependencies/futures-sink-0.3.34/LICENSE-APACHE": "275c491d6d1160553c32fd6127061d7f9606c3ea25abfad6ca3f6ed088785427",
|
||||
"licenses/dependencies/futures-sink-0.3.34/LICENSE-MIT": "6652c868f35dfe5e8ef636810a4e576b9d663f3a17fb0f5613ad73583e1b88fd",
|
||||
"licenses/dependencies/futures-task-0.3.34/LICENSE-APACHE": "275c491d6d1160553c32fd6127061d7f9606c3ea25abfad6ca3f6ed088785427",
|
||||
"licenses/dependencies/futures-task-0.3.34/LICENSE-MIT": "6652c868f35dfe5e8ef636810a4e576b9d663f3a17fb0f5613ad73583e1b88fd",
|
||||
"licenses/dependencies/futures-util-0.3.34/LICENSE-APACHE": "275c491d6d1160553c32fd6127061d7f9606c3ea25abfad6ca3f6ed088785427",
|
||||
"licenses/dependencies/futures-util-0.3.34/LICENSE-MIT": "6652c868f35dfe5e8ef636810a4e576b9d663f3a17fb0f5613ad73583e1b88fd",
|
||||
"licenses/dependencies/getrandom-0.2.17/LICENSE-APACHE": "aaff376532ea30a0cd5330b9502ad4a4c8bf769c539c87ffe78819d188a18ebf",
|
||||
"licenses/dependencies/getrandom-0.2.17/LICENSE-MIT": "42fa16951ce7f24b5a467a40e5b449a1d41e662f97ca779864f053f39e097737",
|
||||
"licenses/dependencies/getrandom-0.4.3/LICENSE-APACHE": "aaff376532ea30a0cd5330b9502ad4a4c8bf769c539c87ffe78819d188a18ebf",
|
||||
"licenses/dependencies/getrandom-0.4.3/LICENSE-MIT": "523a42c25d245dde9c015f882cec7f4555aad883382a6cf19b4b7d9b2cd5419b",
|
||||
"licenses/dependencies/gl_generator-0.14.0/supplement/brendanzab-gl-rs-ea503e8d5fb6-LICENSE": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30",
|
||||
"licenses/dependencies/glam-0.25.0/LICENSE-APACHE": "be33ddb87a30fd321ab100e2d922cba512e50ec7a63d8e62e5bfc0798dd4b585",
|
||||
"licenses/dependencies/glam-0.25.0/LICENSE-MIT": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3",
|
||||
"licenses/dependencies/glow-0.16.0/LICENSE-APACHE": "b8601fc79bdf8d8088f0938bea861ffc63ed0eebbedf25f44ab2cf2e85bd7edc",
|
||||
"licenses/dependencies/glow-0.16.0/LICENSE-MIT": "cdbd06e25b8c9c5d6019949d2de8123f56d29cee4166396423d2ba8c81700845",
|
||||
"licenses/dependencies/glow-0.16.0/LICENSE-ZLIB": "636f644f1e149eb62961657c0e34953681eff64435653912e7bd19992666faa5",
|
||||
"licenses/dependencies/glutin_wgl_sys-0.6.1/LICENSE": "a4445427440043e8ce6fadf7a43fb906cb0d7f6c573a560a9f142cf9f9bf8ff4",
|
||||
"licenses/dependencies/gpu-alloc-0.6.2/supplement/zakarumych-gpu-alloc-61020bdcb4eb-COPYING": "12121dfa588677007848ab922a45a1e3248868f6ff063598fceb3141d7897314",
|
||||
"licenses/dependencies/gpu-alloc-types-0.3.1/supplement/zakarumych-gpu-alloc-7ddd1fe576fc-COPYING": "12121dfa588677007848ab922a45a1e3248868f6ff063598fceb3141d7897314",
|
||||
"licenses/dependencies/gpu-allocator-0.27.0/LICENSE-APACHE": "0178e21322b0e88aa3aeb3146f6a9611bc1f8df6d98bdfb34be28b9dd56a8107",
|
||||
"licenses/dependencies/gpu-allocator-0.27.0/LICENSE-MIT": "ad41be6cc6538b29b9346648f41432b5e460bad6be073b5eeaa41320ea2921dc",
|
||||
"licenses/dependencies/gpu-descriptor-0.3.2/supplement/zakarumych-gpu-descriptor-bb28b4e55b74-COPYING": "f72143f7e9d9fb8bd336b139fa22f825a299591c29f2f7338c5566347b137613",
|
||||
"licenses/dependencies/gpu-descriptor-types-0.2.0/supplement/zakarumych-gpu-descriptor-9f2fb9546591-COPYING": "f72143f7e9d9fb8bd336b139fa22f825a299591c29f2f7338c5566347b137613",
|
||||
"licenses/dependencies/guillotiere-0.6.2/LICENSE": "7e98bed7f100747aaae7d82ab94fbe6b76fd6b84b09a3aaa413bff8196d0fbb1",
|
||||
"licenses/dependencies/half-2.7.1/LICENSE-APACHE": "a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9",
|
||||
"licenses/dependencies/half-2.7.1/LICENSE-MIT": "508a77d2e7b51d98adeed32648ad124b7b30241a8e70b2e72c99f92d8e5874d1",
|
||||
"licenses/dependencies/harfrust-0.3.2/LICENSE": "7d43d2ef1ce976c7bfb423c696ad9938ccfc31e9ec5be752265e43fe9d29f697",
|
||||
"licenses/dependencies/harfrust-0.3.2/scripts/ms-use/COPYING": "9906940f61b1f0b533fa7d99baf55178b2808fbe113ea51dfbfad8572ccd5f2b",
|
||||
"licenses/dependencies/hashbrown-0.15.5/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/hashbrown-0.15.5/LICENSE-MIT": "ff8f68cb076caf8cefe7a6430d4ac086ce6af2ca8ce2c4e5a2004d4552ef52a2",
|
||||
"licenses/dependencies/hashbrown-0.16.1/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/hashbrown-0.16.1/LICENSE-MIT": "ff8f68cb076caf8cefe7a6430d4ac086ce6af2ca8ce2c4e5a2004d4552ef52a2",
|
||||
"licenses/dependencies/hashbrown-0.17.1/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/hashbrown-0.17.1/LICENSE-MIT": "ff8f68cb076caf8cefe7a6430d4ac086ce6af2ca8ce2c4e5a2004d4552ef52a2",
|
||||
"licenses/dependencies/hexf-parse-0.2.1/supplement/CC0-1.0.txt": "a2010f343487d3f7618affe54f789f5487602331c0a8d03f49e9a7c547cf0499",
|
||||
"licenses/dependencies/hexf-parse-0.2.1/supplement/hexf-parse-0.2.1-Cargo.toml": "4a56dbdbc12054fd33b7a2634a45cbbe6fe12f5e6f4081002cbfa527f7220c70",
|
||||
"licenses/dependencies/http-1.5.0/LICENSE-APACHE": "8bb1b50b0e5c9399ae33bd35fab2769010fa6c14e8860c729a52295d84896b7a",
|
||||
"licenses/dependencies/http-1.5.0/LICENSE-MIT": "dc91f8200e4b2a1f9261035d4c18c33c246911a6c0f7b543d75347e61b249cff",
|
||||
"licenses/dependencies/http-body-1.1.0/LICENSE": "248378d0a3383c173fb925f17141b88e71580b3ba17ddc6ac3d2a344683232ab",
|
||||
"licenses/dependencies/http-body-util-0.1.5/LICENSE": "248378d0a3383c173fb925f17141b88e71580b3ba17ddc6ac3d2a344683232ab",
|
||||
"licenses/dependencies/httparse-1.10.1/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/httparse-1.10.1/LICENSE-MIT": "391a5396cec6230bfabd4ef4eb2350eb895bc5efce377a2218f5702ed020d3e3",
|
||||
"licenses/dependencies/httpdate-1.0.3/LICENSE-APACHE": "4d10fe5f3aa176b05b229a248866bad70b834c173f1252a814ff4748d8a13837",
|
||||
"licenses/dependencies/httpdate-1.0.3/LICENSE-MIT": "934887691e05d69d7c86ad3f2c360980fa30c15b035e351f3c9865e99da4debc",
|
||||
"licenses/dependencies/hyper-1.11.1/LICENSE": "2d01890414494742ba4a509fcec8efa40f6d8be22cbd72be7cff08d6fda4ec89",
|
||||
"licenses/dependencies/hyper-rustls-0.27.9/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/hyper-rustls-0.27.9/LICENSE-ISC": "7cfafc877eccc46c0e346ccbaa5c51bb6b894d2b818e617d970211e232785ad4",
|
||||
"licenses/dependencies/hyper-rustls-0.27.9/LICENSE-MIT": "709e3175b4212f7b13aa93971c9f62ff8c69ec45ad8c6532a7e0c41d7a7d6f8c",
|
||||
"licenses/dependencies/hyper-util-0.1.20/LICENSE": "9e0a97848ea543aef745c98e84fde696a9a3e0735538f6daefdd3cb1942effc1",
|
||||
"licenses/dependencies/iced_core-0.14.0/src/layout/DRUID_LICENSE": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30",
|
||||
"licenses/dependencies/iced_core-0.14.0/supplement/iced-rs-iced-3997291f318a-LICENSE": "fc9086ba4eba4b77e4c603906362742bc3715ffa2c7810c6074fe7780d3a0398",
|
||||
"licenses/dependencies/iced_debug-0.14.0/supplement/iced-rs-iced-3997291f318a-LICENSE": "fc9086ba4eba4b77e4c603906362742bc3715ffa2c7810c6074fe7780d3a0398",
|
||||
"licenses/dependencies/iced_futures-0.14.0/supplement/iced-rs-iced-3997291f318a-LICENSE": "fc9086ba4eba4b77e4c603906362742bc3715ffa2c7810c6074fe7780d3a0398",
|
||||
"licenses/dependencies/iced_graphics-0.14.0/assets/FiraSans-Regular.ttf/Fira-OFL.txt": "99bfb7c1e845b79d1031fcf37e678178eb4a8c7cc74a3f218ddf7223083a6fcd",
|
||||
"licenses/dependencies/iced_graphics-0.14.0/assets/FiraSans-Regular.ttf/FiraSans-Regular-NOTICE.txt": "1e0baaa389b1647d06322ac9ea37822f31995408200ae5a2805a6b9bea0810d1",
|
||||
"licenses/dependencies/iced_graphics-0.14.0/assets/Iced-Icons.ttf/Iced-Icons-NOTICE.txt": "8175634e30f84ef72a24c4965fb0e87f45a3c1274cc0e79e0473af582cffd1c4",
|
||||
"licenses/dependencies/iced_graphics-0.14.0/assets/Iced-Icons.ttf/iced-rs-iced-3997291f318a-LICENSE": "fc9086ba4eba4b77e4c603906362742bc3715ffa2c7810c6074fe7780d3a0398",
|
||||
"licenses/dependencies/iced_graphics-0.14.0/supplement/iced-rs-iced-3997291f318a-LICENSE": "fc9086ba4eba4b77e4c603906362742bc3715ffa2c7810c6074fe7780d3a0398",
|
||||
"licenses/dependencies/iced_program-0.14.0/supplement/iced-rs-iced-3997291f318a-LICENSE": "fc9086ba4eba4b77e4c603906362742bc3715ffa2c7810c6074fe7780d3a0398",
|
||||
"licenses/dependencies/iced_renderer-0.14.0/supplement/iced-rs-iced-3997291f318a-LICENSE": "fc9086ba4eba4b77e4c603906362742bc3715ffa2c7810c6074fe7780d3a0398",
|
||||
"licenses/dependencies/iced_runtime-0.14.0/supplement/iced-rs-iced-3997291f318a-LICENSE": "fc9086ba4eba4b77e4c603906362742bc3715ffa2c7810c6074fe7780d3a0398",
|
||||
"licenses/dependencies/iced_tiny_skia-0.14.0/supplement/iced-rs-iced-3997291f318a-LICENSE": "fc9086ba4eba4b77e4c603906362742bc3715ffa2c7810c6074fe7780d3a0398",
|
||||
"licenses/dependencies/iced_wgpu-0.14.0/supplement/iced-rs-iced-3997291f318a-LICENSE": "fc9086ba4eba4b77e4c603906362742bc3715ffa2c7810c6074fe7780d3a0398",
|
||||
"licenses/dependencies/iced_widget-0.14.2/ARCADIA-PATCH.md": "d3acb98e5f423970b0bf4198373efddaea6f3a51aa282da571cf95c0f5690504",
|
||||
"licenses/dependencies/iced_widget-0.14.2/LICENSE": "fc9086ba4eba4b77e4c603906362742bc3715ffa2c7810c6074fe7780d3a0398",
|
||||
"licenses/dependencies/iced_winit-0.14.0/supplement/iced-rs-iced-3997291f318a-LICENSE": "fc9086ba4eba4b77e4c603906362742bc3715ffa2c7810c6074fe7780d3a0398",
|
||||
"licenses/dependencies/iced-0.14.0/LICENSE": "fc9086ba4eba4b77e4c603906362742bc3715ffa2c7810c6074fe7780d3a0398",
|
||||
"licenses/dependencies/icu_collections-2.3.0/LICENSE": "f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2",
|
||||
"licenses/dependencies/icu_locale_core-2.3.0/LICENSE": "f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2",
|
||||
"licenses/dependencies/icu_normalizer_data-2.3.0/LICENSE": "f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2",
|
||||
"licenses/dependencies/icu_normalizer-2.3.0/LICENSE": "f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2",
|
||||
"licenses/dependencies/icu_properties_data-2.3.0/LICENSE": "f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2",
|
||||
"licenses/dependencies/icu_properties-2.3.0/LICENSE": "f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2",
|
||||
"licenses/dependencies/icu_provider-2.3.1/LICENSE": "f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2",
|
||||
"licenses/dependencies/idna_adapter-1.2.2/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/idna_adapter-1.2.2/LICENSE-MIT": "8b43ce8accd61e9d370b5ca9e9c4f953279b5c239926c62315b40e24df51b726",
|
||||
"licenses/dependencies/idna-1.1.0/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/idna-1.1.0/LICENSE-MIT": "b38f11f6096706e6de553dabe2a7ed142d59b6fa8c97e290c67496154745cdd5",
|
||||
"licenses/dependencies/indexmap-2.14.1/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/indexmap-2.14.1/LICENSE-MIT": "ecc269ef87fd38a1d98e30bfac9ba964a9dbd9315c3770fed98d4d7cb5882055",
|
||||
"licenses/dependencies/ipnet-2.12.1/LICENSE-APACHE": "87d9feb9238c6bd8e0024fc4733b06cff036f89f36d93b7df1c8a0549bbb7a5b",
|
||||
"licenses/dependencies/ipnet-2.12.1/LICENSE-MIT": "47dc9ff29128ddfb4d6a0435383c9f89120bc374dbcc1dd00b933a0b28aa7865",
|
||||
"licenses/dependencies/itoa-1.0.18/LICENSE-APACHE": "62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a",
|
||||
"licenses/dependencies/itoa-1.0.18/LICENSE-MIT": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3",
|
||||
"licenses/dependencies/jobserver-0.1.35/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/jobserver-0.1.35/LICENSE-MIT": "378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397",
|
||||
"licenses/dependencies/khronos_api-3.1.0/supplement/brendanzab-gl-rs-f150967b1c44-LICENSE": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30",
|
||||
"licenses/dependencies/khronos-egl-6.0.0/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/khronos-egl-6.0.0/LICENSE-MIT": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3",
|
||||
"licenses/dependencies/kurbo-0.10.4/LICENSE-APACHE": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30",
|
||||
"licenses/dependencies/kurbo-0.10.4/LICENSE-MIT": "23c23145f6eac25c28cdcc03d38506a5712a9a8cffb5bd5301457f6173ea696e",
|
||||
"licenses/dependencies/libc-0.2.189/LICENSE-APACHE": "62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a",
|
||||
"licenses/dependencies/libc-0.2.189/LICENSE-MIT": "123a331b5dbf04c30097fa43b8f858bc85df671fe776de498d01f3d6b7c1f69e",
|
||||
"licenses/dependencies/libloading-0.8.9/LICENSE": "b29f8b01452350c20dd1af16ef83b598fea3053578ccc1c7a0ef40e57be2620f",
|
||||
"licenses/dependencies/libm-0.2.16/LICENSE.txt": "3823dda7cf046602f4b4e77ec8e227863dc4736037cc85bb33d9f19febe16bb7",
|
||||
"licenses/dependencies/lilt-0.8.2/LICENSE": "120b2f21f9b9f98ef4159de09f9a55a3afb6733dd1c0b1d9eeec7f136465b2cd",
|
||||
"licenses/dependencies/linebender_resource_handle-0.1.1/LICENSE-APACHE": "a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9",
|
||||
"licenses/dependencies/linebender_resource_handle-0.1.1/LICENSE-MIT": "508a77d2e7b51d98adeed32648ad124b7b30241a8e70b2e72c99f92d8e5874d1",
|
||||
"licenses/dependencies/litemap-0.8.3/LICENSE": "f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2",
|
||||
"licenses/dependencies/litrs-1.0.0/LICENSE-APACHE": "62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a",
|
||||
"licenses/dependencies/litrs-1.0.0/LICENSE-MIT": "7dc1552e88f49132cb358b1b962fc5e79fa42d70bcbb88c526d33e45b8e98036",
|
||||
"licenses/dependencies/lock_api-0.4.14/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/lock_api-0.4.14/LICENSE-MIT": "c9a75f18b9ab2927829a208fc6aa2cf4e63b8420887ba29cdb265d6619ae82d5",
|
||||
"licenses/dependencies/log-0.4.34/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/log-0.4.34/LICENSE-MIT": "6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb",
|
||||
"licenses/dependencies/lru-0.16.4/LICENSE": "061dc50af2cd9340703daf61978af3200cf681b12ea67a323c33ba109a23a45e",
|
||||
"licenses/dependencies/lru-slab-0.1.2/LICENSE-APACHE": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30",
|
||||
"licenses/dependencies/lru-slab-0.1.2/LICENSE-MIT": "1466d9b4f3a59bb8997fc8d5fa977ce3f6a24bb2358793c09bfdf007039f6486",
|
||||
"licenses/dependencies/lru-slab-0.1.2/LICENSE-ZLIB": "09785877275ffada6c371b652a30e95c26b435126fc0fc62f1bc2d72171f80a4",
|
||||
"licenses/dependencies/lyon_algorithms-1.0.21/supplement/nical-lyon-994526f2766c-LICENSE-APACHE": "216486f29671a4262efe32af6d84a75bef398127f8c5f369b5c8305983887a06",
|
||||
"licenses/dependencies/lyon_algorithms-1.0.21/supplement/nical-lyon-994526f2766c-LICENSE-MIT": "80f275e90d799911ed3830a7f242a2ef5a4ade2092fe0aa07bfb2d2cf2f2b95e",
|
||||
"licenses/dependencies/lyon_geom-1.0.19/supplement/nical-lyon-56219c95c658-LICENSE-APACHE": "216486f29671a4262efe32af6d84a75bef398127f8c5f369b5c8305983887a06",
|
||||
"licenses/dependencies/lyon_geom-1.0.19/supplement/nical-lyon-56219c95c658-LICENSE-MIT": "80f275e90d799911ed3830a7f242a2ef5a4ade2092fe0aa07bfb2d2cf2f2b95e",
|
||||
"licenses/dependencies/lyon_path-1.0.19/supplement/nical-lyon-56219c95c658-LICENSE-APACHE": "216486f29671a4262efe32af6d84a75bef398127f8c5f369b5c8305983887a06",
|
||||
"licenses/dependencies/lyon_path-1.0.19/supplement/nical-lyon-56219c95c658-LICENSE-MIT": "80f275e90d799911ed3830a7f242a2ef5a4ade2092fe0aa07bfb2d2cf2f2b95e",
|
||||
"licenses/dependencies/lyon_tessellation-1.0.21/supplement/nical-lyon-994526f2766c-LICENSE-APACHE": "216486f29671a4262efe32af6d84a75bef398127f8c5f369b5c8305983887a06",
|
||||
"licenses/dependencies/lyon_tessellation-1.0.21/supplement/nical-lyon-994526f2766c-LICENSE-MIT": "80f275e90d799911ed3830a7f242a2ef5a4ade2092fe0aa07bfb2d2cf2f2b95e",
|
||||
"licenses/dependencies/lyon-1.0.19/supplement/nical-lyon-56219c95c658-LICENSE-APACHE": "216486f29671a4262efe32af6d84a75bef398127f8c5f369b5c8305983887a06",
|
||||
"licenses/dependencies/lyon-1.0.19/supplement/nical-lyon-56219c95c658-LICENSE-MIT": "80f275e90d799911ed3830a7f242a2ef5a4ade2092fe0aa07bfb2d2cf2f2b95e",
|
||||
"licenses/dependencies/matchit-0.8.4/LICENSE": "de701d0618d694feb1af90f02181a1763d9b0bdeb70a3a592781e529077dba65",
|
||||
"licenses/dependencies/matchit-0.8.4/LICENSE.httprouter": "162ce11ad71338d0a0c6ebaf5c48af72c6ae237b468859d3656fe2d9ed3f3a85",
|
||||
"licenses/dependencies/memchr-2.8.3/COPYING": "01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f",
|
||||
"licenses/dependencies/memchr-2.8.3/LICENSE-MIT": "0f96a83840e146e43c0ec96a22ec1f392e0680e6c1226e6f3ba87e0740af850f",
|
||||
"licenses/dependencies/memchr-2.8.3/UNLICENSE": "7e12e5df4bae12cb21581ba157ced20e1986a0508dd10d0e8a4ab9a4cf94e85c",
|
||||
"licenses/dependencies/memmap2-0.9.11/LICENSE-APACHE": "04ea4849dba9dcae07113850c6f1b1a69052c625210639914eee352023f750ad",
|
||||
"licenses/dependencies/memmap2-0.9.11/LICENSE-MIT": "0d25d03b5ab49576178ad0cae7a2648d12c17ad0452fe49c07e55e4b59aa5257",
|
||||
"licenses/dependencies/mime-0.3.17/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/mime-0.3.17/LICENSE-MIT": "df9cfd06d8a44d9a671eadd39ffd97f166481da015a30f45dfd27886209c5922",
|
||||
"licenses/dependencies/mio-1.2.3/LICENSE": "07919255c7e04793d8ea760d6c2ce32d19f9ff02bdbdde3ce90b1e1880929a9b",
|
||||
"licenses/dependencies/naga-27.0.3/LICENSE.APACHE": "a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9",
|
||||
"licenses/dependencies/naga-27.0.3/LICENSE.MIT": "dc0d97139e8205818c703741c7be7cb3b96888bd5917b8d6fc6133731e403c21",
|
||||
"licenses/dependencies/num-bigint-0.5.1/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/num-bigint-0.5.1/LICENSE-MIT": "6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb",
|
||||
"licenses/dependencies/num-integer-0.1.47/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/num-integer-0.1.47/LICENSE-MIT": "6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb",
|
||||
"licenses/dependencies/num-traits-0.2.19/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/num-traits-0.2.19/LICENSE-MIT": "6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb",
|
||||
"licenses/dependencies/oa-core-0.2.0/workspace-LICENSE": "51009f2cb07e5d19645858b2fbc037a672a25f8cbf7999522942b86807ecf365",
|
||||
"licenses/dependencies/oa-desktop-0.2.0/workspace-LICENSE": "51009f2cb07e5d19645858b2fbc037a672a25f8cbf7999522942b86807ecf365",
|
||||
"licenses/dependencies/oa-server-0.2.0/workspace-LICENSE": "51009f2cb07e5d19645858b2fbc037a672a25f8cbf7999522942b86807ecf365",
|
||||
"licenses/dependencies/once_cell-1.21.4/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/once_cell-1.21.4/LICENSE-MIT": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3",
|
||||
"licenses/dependencies/ordered-float-5.5.0/LICENSE-MIT": "f7715d38a3fa1b4ac97c5729740752505a39cb92ee83ab5b102aeb5eaa7cdea4",
|
||||
"licenses/dependencies/parking_lot_core-0.9.12/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/parking_lot_core-0.9.12/LICENSE-MIT": "c9a75f18b9ab2927829a208fc6aa2cf4e63b8420887ba29cdb265d6619ae82d5",
|
||||
"licenses/dependencies/parking_lot-0.12.5/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/parking_lot-0.12.5/LICENSE-MIT": "c9a75f18b9ab2927829a208fc6aa2cf4e63b8420887ba29cdb265d6619ae82d5",
|
||||
"licenses/dependencies/percent-encoding-2.3.2/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/percent-encoding-2.3.2/LICENSE-MIT": "b38f11f6096706e6de553dabe2a7ed142d59b6fa8c97e290c67496154745cdd5",
|
||||
"licenses/dependencies/pin-project-lite-0.2.17/LICENSE-APACHE": "0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594",
|
||||
"licenses/dependencies/pin-project-lite-0.2.17/LICENSE-MIT": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3",
|
||||
"licenses/dependencies/pkg-config-0.3.34/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/pkg-config-0.3.34/LICENSE-MIT": "378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397",
|
||||
"licenses/dependencies/potential_utf-0.1.6/LICENSE": "f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2",
|
||||
"licenses/dependencies/presser-0.3.1/LICENSE-APACHE": "8173d5c29b4f956d532781d2b86e4e30f83e6b7878dce18c919451d6ba707c90",
|
||||
"licenses/dependencies/presser-0.3.1/LICENSE-MIT": "090a294a492ab2f41388252312a65cf2f0e423330b721a68c6665ac64766753b",
|
||||
"licenses/dependencies/proc-macro2-1.0.107/LICENSE-APACHE": "62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a",
|
||||
"licenses/dependencies/proc-macro2-1.0.107/LICENSE-MIT": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3",
|
||||
"licenses/dependencies/profiling-1.0.18/supplement/aclysma-profiling-8271551172eb-LICENSE-APACHE": "10d30a673cd5e9349bdc02aeb48f14b3386d27d0da32df8f0a555d4aa16aa551",
|
||||
"licenses/dependencies/profiling-1.0.18/supplement/aclysma-profiling-8271551172eb-LICENSE-MIT": "c8167fdeeed46d3f244d3f85c5bf998ce889343691c32be2c61a8bc4b5c08333",
|
||||
"licenses/dependencies/quinn-0.11.11/LICENSE-APACHE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
|
||||
"licenses/dependencies/quinn-0.11.11/LICENSE-MIT": "4b2d0aca6789fa39e03d6738e869ea0988cceba210ca34ebb59c15c463e93a04",
|
||||
"licenses/dependencies/quinn-proto-0.11.17/LICENSE-APACHE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
|
||||
"licenses/dependencies/quinn-proto-0.11.17/LICENSE-MIT": "4b2d0aca6789fa39e03d6738e869ea0988cceba210ca34ebb59c15c463e93a04",
|
||||
"licenses/dependencies/quinn-udp-0.5.15/LICENSE-APACHE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
|
||||
"licenses/dependencies/quinn-udp-0.5.15/LICENSE-MIT": "4b2d0aca6789fa39e03d6738e869ea0988cceba210ca34ebb59c15c463e93a04",
|
||||
"licenses/dependencies/quote-1.0.47/LICENSE-APACHE": "62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a",
|
||||
"licenses/dependencies/quote-1.0.47/LICENSE-MIT": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3",
|
||||
"licenses/dependencies/rand_core-0.10.1/COPYRIGHT": "92b81db30f7ab6d693e0af5661a40d273ca1947e891123ed823924192c10cbc7",
|
||||
"licenses/dependencies/rand_core-0.10.1/LICENSE-APACHE": "6df43f6f4b5d4587f3d8d71e45532c688fd168afa5fe89d571cb32fa09c4ef51",
|
||||
"licenses/dependencies/rand_core-0.10.1/LICENSE-MIT": "8b6e9feec03e7c9a5facb26855cecd31662bf989b636bcfe79521bdf8ac863f0",
|
||||
"licenses/dependencies/rand_pcg-0.10.2/COPYRIGHT": "90eb64f0279b0d9432accfa6023ff803bc4965212383697eee27a0f426d5f8d5",
|
||||
"licenses/dependencies/rand_pcg-0.10.2/LICENSE-APACHE": "6df43f6f4b5d4587f3d8d71e45532c688fd168afa5fe89d571cb32fa09c4ef51",
|
||||
"licenses/dependencies/rand_pcg-0.10.2/LICENSE-MIT": "2234e3cefee876aeb686ad89e978bdb07bf118a1186ab1cf161bcdf69d4b4f57",
|
||||
"licenses/dependencies/rand-0.10.2/COPYRIGHT": "90eb64f0279b0d9432accfa6023ff803bc4965212383697eee27a0f426d5f8d5",
|
||||
"licenses/dependencies/rand-0.10.2/LICENSE-APACHE": "35242e7a83f69875e6edeff02291e688c97caafe2f8902e4e19b49d3e78b4cab",
|
||||
"licenses/dependencies/rand-0.10.2/LICENSE-MIT": "209fbbe0ad52d9235e37badf9cadfe4dbdc87203179c0899e738b39ade42177b",
|
||||
"licenses/dependencies/range-alloc-0.1.5/LICENSE.APACHE": "a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9",
|
||||
"licenses/dependencies/range-alloc-0.1.5/LICENSE.MIT": "ba00052102ed87948bb8822d6e1c496260c83042887b22bb5caad922ec025a60",
|
||||
"licenses/dependencies/rangemap-1.8.0/LICENSE-APACHE": "1c7745cc26c7294bc9dbc883bcd50700b99a8c0f4859bfce84ec555098ce1ab5",
|
||||
"licenses/dependencies/rangemap-1.8.0/LICENSE-MIT": "29a4c3823ee29ee5a97c145574a1bac20629fd5e6708be1df0d25bab563e093c",
|
||||
"licenses/dependencies/raw-window-handle-0.6.2/LICENSE-APACHE.md": "0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594",
|
||||
"licenses/dependencies/raw-window-handle-0.6.2/LICENSE-MIT.md": "9c5a80639a57c1c945570e7ebbca0706305849ce3c098021325cca9db2f7acc4",
|
||||
"licenses/dependencies/raw-window-handle-0.6.2/LICENSE-ZLIB.md": "ae895c8576e682f310fb70d93d9f99b1dd82872094c54a8f6cdfe2ca5c2d6ecb",
|
||||
"licenses/dependencies/read-fonts-0.35.0/LICENSE-APACHE": "a14f7d685a79c0f4fb64aee305527a6d5fa55f2401f4e6d688d7b1301868e6c0",
|
||||
"licenses/dependencies/read-fonts-0.35.0/LICENSE-MIT": "8a62fa27ffdccc3df19dce90f8bb3d572e27aecffc1a383d0c2601834dcec434",
|
||||
"licenses/dependencies/read-fonts-0.41.0/LICENSE-APACHE": "eba684204073ed715c4abb48129acdfd2bff8ae48339e6a7da3b341d3027b7f0",
|
||||
"licenses/dependencies/read-fonts-0.41.0/LICENSE-MIT": "7b4c9a3946dfcea7967582760e963e27799e225dcf20565c8ef55324bb017427",
|
||||
"licenses/dependencies/renderdoc-sys-1.1.0/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/renderdoc-sys-1.1.0/LICENSE-MIT": "24b2f2eff5a7622e87162823e260f00c6dfbce0e26d585d3d28c785f1edc80ed",
|
||||
"licenses/dependencies/reqwest-0.12.28/LICENSE-APACHE": "751963a8b88c0e3a9f27e98933079fbcf09b9998b2c13ac49c2e4d58444520d6",
|
||||
"licenses/dependencies/reqwest-0.12.28/LICENSE-MIT": "47d4e1803702728e03d30f8a848ae2249ba274bbd9f8443e803f7924d83cd371",
|
||||
"licenses/dependencies/rfd-0.15.4/LICENSE": "65fc947f4bac882a2cd104ef73c246b1b037059df9f2b3a58b7f77f0b9e56071",
|
||||
"licenses/dependencies/ring-0.17.14/LICENSE": "b3d734001a94efff3579978d953391aa7115f877657d25eb54037a43875d078a",
|
||||
"licenses/dependencies/ring-0.17.14/LICENSE-BoringSSL": "005fc765ddc5115da796cca915baa9557abae13ff35e0a47c47affc56f6c414d",
|
||||
"licenses/dependencies/ring-0.17.14/LICENSE-other-bits": "f025ccfb7dfb6bdfedc75ca0f67acc69e6fb4998143d834f7c2f38a29989680f",
|
||||
"licenses/dependencies/ring-0.17.14/src/polyfill/once_cell/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/ring-0.17.14/src/polyfill/once_cell/LICENSE-MIT": "6ee2ed6c77710de911761acd5fc1ad1da00f476beb1a7ef27e78c2d1858deafc",
|
||||
"licenses/dependencies/ring-0.17.14/third_party/fiat/LICENSE": "9eacbcb81be660840c714a560a9d65ba07913db98dd4baf969f78dd499fdd60f",
|
||||
"licenses/dependencies/rustc-hash-1.1.0/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/rustc-hash-1.1.0/LICENSE-MIT": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3",
|
||||
"licenses/dependencies/rustc-hash-2.1.3/LICENSE-APACHE": "95bd3988beee069fa2848f648dab43cc6e0b2add2ad6bcb17360caf749802bcc",
|
||||
"licenses/dependencies/rustc-hash-2.1.3/LICENSE-MIT": "30fefc3a7d6a0041541858293bcbea2dde4caa4c0a5802f996a7f7e8c0085652",
|
||||
"licenses/dependencies/rustls-0.23.43/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/rustls-0.23.43/LICENSE-ISC": "7cfafc877eccc46c0e346ccbaa5c51bb6b894d2b818e617d970211e232785ad4",
|
||||
"licenses/dependencies/rustls-0.23.43/LICENSE-MIT": "709e3175b4212f7b13aa93971c9f62ff8c69ec45ad8c6532a7e0c41d7a7d6f8c",
|
||||
"licenses/dependencies/rustls-pki-types-1.15.1/LICENSE-APACHE": "45fd05c4865e7c350b98ad7ac50e1b15462d49af4a91e9b0c9dd933dc9a69742",
|
||||
"licenses/dependencies/rustls-pki-types-1.15.1/LICENSE-MIT": "9117d922e667125508dde62b02c1f57ed22f5ad21eb536aa2e2d99e1c796e639",
|
||||
"licenses/dependencies/rustls-webpki-0.103.15/LICENSE": "5b698ca13897be3afdb7174256fa1574f8c6892b8bea1a66dd6469d3fe27885a",
|
||||
"licenses/dependencies/ryu-1.0.23/LICENSE-APACHE": "62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a",
|
||||
"licenses/dependencies/ryu-1.0.23/LICENSE-BOOST": "c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566",
|
||||
"licenses/dependencies/same-file-1.0.6/COPYING": "01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f",
|
||||
"licenses/dependencies/same-file-1.0.6/LICENSE-MIT": "cb3c929a05e6cbc9de9ab06a4c57eeb60ca8c724bef6c138c87d3a577e27aa14",
|
||||
"licenses/dependencies/same-file-1.0.6/UNLICENSE": "7e12e5df4bae12cb21581ba157ced20e1986a0508dd10d0e8a4ab9a4cf94e85c",
|
||||
"licenses/dependencies/scopeguard-1.2.0/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/scopeguard-1.2.0/LICENSE-MIT": "fb77f0a9c53e473abe5103c8632ef9f0f2874d4fb3f17cb2d8c661aab9cee9d7",
|
||||
"licenses/dependencies/self_cell-1.3.0/LICENSE-APACHE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
|
||||
"licenses/dependencies/self_cell-1.3.0/LICENSE-GPLv2": "f9c375a1be4a41f7b70301dd83c91cb89e41567478859b77eef375a52d782505",
|
||||
"licenses/dependencies/serde_core-1.0.229/LICENSE-APACHE": "62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a",
|
||||
"licenses/dependencies/serde_core-1.0.229/LICENSE-MIT": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3",
|
||||
"licenses/dependencies/serde_derive-1.0.229/LICENSE-APACHE": "62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a",
|
||||
"licenses/dependencies/serde_derive-1.0.229/LICENSE-MIT": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3",
|
||||
"licenses/dependencies/serde_json-1.0.151/LICENSE-APACHE": "62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a",
|
||||
"licenses/dependencies/serde_json-1.0.151/LICENSE-MIT": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3",
|
||||
"licenses/dependencies/serde_path_to_error-0.1.20/LICENSE-APACHE": "62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a",
|
||||
"licenses/dependencies/serde_path_to_error-0.1.20/LICENSE-MIT": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3",
|
||||
"licenses/dependencies/serde_urlencoded-0.7.1/LICENSE-APACHE": "62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a",
|
||||
"licenses/dependencies/serde_urlencoded-0.7.1/LICENSE-MIT": "b9eb266294324f672cbe945fe8f2e32f85024f0d61a1a7d14382cdde0ac44769",
|
||||
"licenses/dependencies/serde-1.0.229/LICENSE-APACHE": "62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a",
|
||||
"licenses/dependencies/serde-1.0.229/LICENSE-MIT": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3",
|
||||
"licenses/dependencies/sha1_smol-1.0.1/LICENSE": "282a21b0710441c364025461a447362daf18f5798a7b72ae2f801a2aa536da51",
|
||||
"licenses/dependencies/shlex-2.0.1/LICENSE-APACHE": "553fffcd9b1cb158bc3e9edc35da85ca5c3b3d7d2e61c883ebcfa8a65814b583",
|
||||
"licenses/dependencies/shlex-2.0.1/LICENSE-MIT": "4455bf75a91154108304cb283e0fea9948c14f13e20d60887cf2552449dea3b1",
|
||||
"licenses/dependencies/skrifa-0.37.0/LICENSE-APACHE": "a14f7d685a79c0f4fb64aee305527a6d5fa55f2401f4e6d688d7b1301868e6c0",
|
||||
"licenses/dependencies/skrifa-0.37.0/LICENSE-MIT": "8a62fa27ffdccc3df19dce90f8bb3d572e27aecffc1a383d0c2601834dcec434",
|
||||
"licenses/dependencies/skrifa-0.44.0/LICENSE-APACHE": "eba684204073ed715c4abb48129acdfd2bff8ae48339e6a7da3b341d3027b7f0",
|
||||
"licenses/dependencies/skrifa-0.44.0/LICENSE-MIT": "7b4c9a3946dfcea7967582760e963e27799e225dcf20565c8ef55324bb017427",
|
||||
"licenses/dependencies/slab-0.4.12/LICENSE": "8ce0830173fdac609dfb4ea603fdc002c2f4af0dc9b1a005653f5da9cf534b18",
|
||||
"licenses/dependencies/slotmap-1.1.1/LICENSE": "6cec81441b2ab2b5090954c1fb5d0bcca81b86487b5849061fa8952d20ef67d4",
|
||||
"licenses/dependencies/smallvec-1.16.0/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/smallvec-1.16.0/LICENSE-MIT": "0b28172679e0009b655da42797c03fd163a3379d5cfa67ba1f1655e974a2a1a9",
|
||||
"licenses/dependencies/smol_str-0.2.2/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/smol_str-0.2.2/LICENSE-MIT": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3",
|
||||
"licenses/dependencies/socket2-0.6.5/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/socket2-0.6.5/LICENSE-MIT": "378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397",
|
||||
"licenses/dependencies/softbuffer-0.4.8/LICENSE-APACHE": "a4445427440043e8ce6fadf7a43fb906cb0d7f6c573a560a9f142cf9f9bf8ff4",
|
||||
"licenses/dependencies/softbuffer-0.4.8/LICENSE-MIT": "0463bfa47d6d763d8c824333efb0e6d6df3946c13c3b077c78ed9f23ca50d0f2",
|
||||
"licenses/dependencies/spirv-0.3.0+sdk-1.3.268.0/supplement/gfx-rs-rspirv-e91a5debc10c-LICENSE": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30",
|
||||
"licenses/dependencies/stable_deref_trait-1.2.1/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/stable_deref_trait-1.2.1/LICENSE-MIT": "5e05b024f653a5ce199e77cbbbd42fb5553562ec714b819421ed0c3e552a75d7",
|
||||
"licenses/dependencies/static_assertions-1.1.0/LICENSE-APACHE": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30",
|
||||
"licenses/dependencies/static_assertions-1.1.0/LICENSE-MIT": "ea084a2373ebc1f0902c09266e7bf25a05ab3814c1805bb017ffa7308f90c061",
|
||||
"licenses/dependencies/strict-num-0.1.1/LICENSE": "3085885678bb161f6c472bbd331f66a2550b555eb76128f7f8247779128199c0",
|
||||
"licenses/dependencies/subtle-2.6.1/LICENSE": "d1fc1bc0d155df60b2e7705b6b2ae02a05c96f948e1cec6e2fb86360b09f346b",
|
||||
"licenses/dependencies/svg_fmt-0.4.5/supplement/nical-rust_debug-93f414cd572b-LICENSE": "7e98bed7f100747aaae7d82ab94fbe6b76fd6b84b09a3aaa413bff8196d0fbb1",
|
||||
"licenses/dependencies/swash-0.2.10/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/swash-0.2.10/LICENSE-MIT": "122dadfc2eb4de0f4bafcd9eb4e7502cfe338a7965ebd1d18708cc5050f43f76",
|
||||
"licenses/dependencies/syn-2.0.119/LICENSE-APACHE": "62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a",
|
||||
"licenses/dependencies/syn-2.0.119/LICENSE-MIT": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3",
|
||||
"licenses/dependencies/syn-3.0.5/LICENSE-APACHE": "62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a",
|
||||
"licenses/dependencies/syn-3.0.5/LICENSE-MIT": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3",
|
||||
"licenses/dependencies/sync_wrapper-1.0.2/LICENSE": "0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594",
|
||||
"licenses/dependencies/synstructure-0.13.2/LICENSE": "219920e865eee70b7dcfc948a86b099e7f4fe2de01bcca2ca9a20c0a033f2b59",
|
||||
"licenses/dependencies/sys-locale-0.3.2/LICENSE-APACHE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
|
||||
"licenses/dependencies/sys-locale-0.3.2/LICENSE-MIT": "5cc390ab5e5e6507f467368cbab1297552d64bfd863f4b496c7928508bcfefd8",
|
||||
"licenses/dependencies/tempfile-3.27.0/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/tempfile-3.27.0/LICENSE-MIT": "8b427f5bc501764575e52ba4f9d95673cf8f6d80a86d0d06599852e1a9a20a36",
|
||||
"licenses/dependencies/termcolor-1.4.1/COPYING": "01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f",
|
||||
"licenses/dependencies/termcolor-1.4.1/LICENSE-MIT": "0f96a83840e146e43c0ec96a22ec1f392e0680e6c1226e6f3ba87e0740af850f",
|
||||
"licenses/dependencies/termcolor-1.4.1/UNLICENSE": "7e12e5df4bae12cb21581ba157ced20e1986a0508dd10d0e8a4ab9a4cf94e85c",
|
||||
"licenses/dependencies/thiserror-1.0.69/LICENSE-APACHE": "62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a",
|
||||
"licenses/dependencies/thiserror-1.0.69/LICENSE-MIT": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3",
|
||||
"licenses/dependencies/thiserror-2.0.20/LICENSE-APACHE": "62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a",
|
||||
"licenses/dependencies/thiserror-2.0.20/LICENSE-MIT": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3",
|
||||
"licenses/dependencies/thiserror-impl-1.0.69/LICENSE-APACHE": "62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a",
|
||||
"licenses/dependencies/thiserror-impl-1.0.69/LICENSE-MIT": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3",
|
||||
"licenses/dependencies/thiserror-impl-2.0.20/LICENSE-APACHE": "62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a",
|
||||
"licenses/dependencies/thiserror-impl-2.0.20/LICENSE-MIT": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3",
|
||||
"licenses/dependencies/tiny-skia-0.11.4/LICENSE": "6d41e05f1d54fe726997cb0334ec539f1dff50600b1d5d90462ec2b392770ced",
|
||||
"licenses/dependencies/tiny-skia-path-0.11.4/LICENSE": "6d41e05f1d54fe726997cb0334ec539f1dff50600b1d5d90462ec2b392770ced",
|
||||
"licenses/dependencies/tinystr-0.8.4/LICENSE": "f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2",
|
||||
"licenses/dependencies/tinyvec_macros-0.1.1/LICENSE-APACHE.md": "4f44572785f35152c1fd2eadf565b7e079c0f300b4324f0af653419f9d76b735",
|
||||
"licenses/dependencies/tinyvec_macros-0.1.1/LICENSE-MIT.md": "1dd8eca0f83669e75fa119e34fb9e1be9d16e3e9b6368962b8019db6e8ae5f7b",
|
||||
"licenses/dependencies/tinyvec_macros-0.1.1/LICENSE-ZLIB.md": "41ace205715d9f19a3214218cc1c01d57c533e02cd0fef7c8e51a49a7fce5ac5",
|
||||
"licenses/dependencies/tinyvec-1.13.2/LICENSE-APACHE.md": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30",
|
||||
"licenses/dependencies/tinyvec-1.13.2/LICENSE-MIT.md": "fd80a26fbb3f644af1fa994134446702932968519797227e07a1368dea80f0bc",
|
||||
"licenses/dependencies/tinyvec-1.13.2/LICENSE-ZLIB.md": "84b34dd7608f7fb9b17bd588a6bf392bf7de504e2716f024a77d89f1b145a151",
|
||||
"licenses/dependencies/tokio-1.53.1/LICENSE": "253cd04c6714889df2d32f3f64d669179a1c95c76ac43c40882c52eb06bc3552",
|
||||
"licenses/dependencies/tokio-macros-2.7.2/LICENSE": "0b83dc40cba89b9922bb84b0a9c7d2768ce37c1d7e138b7424fd4549915778c9",
|
||||
"licenses/dependencies/tokio-rustls-0.26.5/LICENSE-APACHE": "cc117d90b498b32b11a886f279b359da16a73c3b01efbb2f5cc004b20262334e",
|
||||
"licenses/dependencies/tokio-rustls-0.26.5/LICENSE-MIT": "e20fa2b8e0a2565f24a792b94b4bf4b6c2b9d36f781d8a9516e218a036e6677a",
|
||||
"licenses/dependencies/tower-0.5.3/LICENSE": "4249c8e6c5ebb85f97c77e6457c6fafc1066406eb8f1ef61e796fbdc5ff18482",
|
||||
"licenses/dependencies/tower-http-0.6.11/LICENSE": "5049cf464977eff4b4fcfa7988d84e74116956a3eb9d5f1d451b3f828f945233",
|
||||
"licenses/dependencies/tower-layer-0.3.3/LICENSE": "4249c8e6c5ebb85f97c77e6457c6fafc1066406eb8f1ef61e796fbdc5ff18482",
|
||||
"licenses/dependencies/tower-service-0.3.3/LICENSE": "4249c8e6c5ebb85f97c77e6457c6fafc1066406eb8f1ef61e796fbdc5ff18482",
|
||||
"licenses/dependencies/tracing-0.1.44/LICENSE": "898b1ae9821e98daf8964c8d6c7f61641f5f5aa78ad500020771c0939ee0dea1",
|
||||
"licenses/dependencies/tracing-attributes-0.1.31/LICENSE": "898b1ae9821e98daf8964c8d6c7f61641f5f5aa78ad500020771c0939ee0dea1",
|
||||
"licenses/dependencies/tracing-core-0.1.36/LICENSE": "898b1ae9821e98daf8964c8d6c7f61641f5f5aa78ad500020771c0939ee0dea1",
|
||||
"licenses/dependencies/tracing-core-0.1.36/src/spin/LICENSE": "58545fed1565e42d687aecec6897d35c6d37ccb71479a137c0deb2203e125c79",
|
||||
"licenses/dependencies/try-lock-0.2.5/LICENSE": "c816a0749cdc6bf062a5111c159723de51b2bfac66a1dac2655abd9e6b1583eb",
|
||||
"licenses/dependencies/ttf-parser-0.25.1/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/ttf-parser-0.25.1/LICENSE-MIT": "f3c9fe731c701ed77fd5fbaac573872af04dc5869385eb9bd5e3c73c42713814",
|
||||
"licenses/dependencies/ttf-parser-0.25.1/tests/fonts/colr_1_LICENSE": "58d1e17ffe5109a7ae296caafcadfdbe6a7d176f0bc4ab01e12a689b0499d8bd",
|
||||
"licenses/dependencies/unicode-bidi-0.3.18/COPYRIGHT": "edb20b474f6cbd4f4db066b54a9e0f687d0009d309412a63431189b59b8e2a07",
|
||||
"licenses/dependencies/unicode-bidi-0.3.18/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/unicode-bidi-0.3.18/LICENSE-MIT": "7b63ecd5f1902af1b63729947373683c32745c16a10e8e6292e2e2dcd7e90ae0",
|
||||
"licenses/dependencies/unicode-ident-1.0.24/LICENSE-APACHE": "62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a",
|
||||
"licenses/dependencies/unicode-ident-1.0.24/LICENSE-MIT": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3",
|
||||
"licenses/dependencies/unicode-ident-1.0.24/LICENSE-UNICODE": "f7db81051789b729fea528a63ec4c938fdcb93d9d61d97dc8cc2e9df6d47f2a1",
|
||||
"licenses/dependencies/unicode-linebreak-0.1.5/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
|
||||
"licenses/dependencies/unicode-script-0.5.8/LICENSE-APACHE": "7cbb56d1b5d83d735056b363ab20958524120afafc4ad8206e6be98cdec5d737",
|
||||
"licenses/dependencies/unicode-script-0.5.8/LICENSE-MIT": "7ad3ea8ca3caf894db98c3f31d5d4949173ffa93c883ef19a9e529ad48960f8c",
|
||||
"licenses/dependencies/unicode-segmentation-1.13.3/COPYRIGHT": "23860c2a7b5d96b21569afedf033469bab9fe14a1b24a35068b8641c578ce24d",
|
||||
"licenses/dependencies/unicode-segmentation-1.13.3/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/unicode-segmentation-1.13.3/LICENSE-MIT": "7b63ecd5f1902af1b63729947373683c32745c16a10e8e6292e2e2dcd7e90ae0",
|
||||
"licenses/dependencies/unicode-width-0.2.2/COPYRIGHT": "23860c2a7b5d96b21569afedf033469bab9fe14a1b24a35068b8641c578ce24d",
|
||||
"licenses/dependencies/unicode-width-0.2.2/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/unicode-width-0.2.2/LICENSE-MIT": "7b63ecd5f1902af1b63729947373683c32745c16a10e8e6292e2e2dcd7e90ae0",
|
||||
"licenses/dependencies/untrusted-0.9.0/LICENSE.txt": "7abd9b6960dcf7d4d0a48606a5b71bfe37d472db68d70637f3a58a56785f1621",
|
||||
"licenses/dependencies/url-2.5.8/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/url-2.5.8/LICENSE-MIT": "b38f11f6096706e6de553dabe2a7ed142d59b6fa8c97e290c67496154745cdd5",
|
||||
"licenses/dependencies/utf8_iter-1.0.4/COPYRIGHT": "c30152c94a6d75e021adbc52b3a52470366a46edb917e17deae3259251af244c",
|
||||
"licenses/dependencies/utf8_iter-1.0.4/LICENSE-APACHE": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30",
|
||||
"licenses/dependencies/utf8_iter-1.0.4/LICENSE-MIT": "3fa4ca83dcc9237839b1bdeb2e6d16bdfb5ec0c5ce42b24694d8bbf0dcbef72c",
|
||||
"licenses/dependencies/uuid-1.26.0/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/uuid-1.26.0/LICENSE-MIT": "436bc5a105d8e57dcd8778730f3754f7bf39c14d2f530e4cde4bd2d17a83ec3d",
|
||||
"licenses/dependencies/version_check-0.9.5/LICENSE-APACHE": "a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2",
|
||||
"licenses/dependencies/version_check-0.9.5/LICENSE-MIT": "b7e650f3fce5c53249d1cdc608b54df156a97edd636cf9d23498d0cfe7aec63e",
|
||||
"licenses/dependencies/want-0.3.1/LICENSE": "a65f5d0a945d267751344c95665945b90c030ea107faf5c85d518929886187da",
|
||||
"licenses/dependencies/web-time-1.1.0/LICENSE-APACHE": "54a744942eb3fa63a74d8d359989ed6962c04f3f10ff20cfa08ff8aa7efbe4e6",
|
||||
"licenses/dependencies/web-time-1.1.0/LICENSE-MIT": "f428305bbf2e70fbd807af0f3c7ac1b7acfb95311640f451e9d2e48db6d7e96b",
|
||||
"licenses/dependencies/webpki-roots-1.0.9/LICENSE": "e271993808fec50ab29350b39539cdec611a9103f827e0aa26d61da70e2d33f8",
|
||||
"licenses/dependencies/wgpu-27.0.1/LICENSE.APACHE": "a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9",
|
||||
"licenses/dependencies/wgpu-27.0.1/LICENSE.MIT": "dc0d97139e8205818c703741c7be7cb3b96888bd5917b8d6fc6133731e403c21",
|
||||
"licenses/dependencies/wgpu-core-27.0.3/LICENSE.APACHE": "a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9",
|
||||
"licenses/dependencies/wgpu-core-27.0.3/LICENSE.MIT": "dc0d97139e8205818c703741c7be7cb3b96888bd5917b8d6fc6133731e403c21",
|
||||
"licenses/dependencies/wgpu-core-deps-windows-linux-android-27.0.0/LICENSE.APACHE": "a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9",
|
||||
"licenses/dependencies/wgpu-core-deps-windows-linux-android-27.0.0/LICENSE.MIT": "dc0d97139e8205818c703741c7be7cb3b96888bd5917b8d6fc6133731e403c21",
|
||||
"licenses/dependencies/wgpu-hal-27.0.4/LICENSE.APACHE": "a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9",
|
||||
"licenses/dependencies/wgpu-hal-27.0.4/LICENSE.MIT": "dc0d97139e8205818c703741c7be7cb3b96888bd5917b8d6fc6133731e403c21",
|
||||
"licenses/dependencies/wgpu-types-27.0.1/LICENSE.APACHE": "a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9",
|
||||
"licenses/dependencies/wgpu-types-27.0.1/LICENSE.MIT": "dc0d97139e8205818c703741c7be7cb3b96888bd5917b8d6fc6133731e403c21",
|
||||
"licenses/dependencies/winapi-util-0.1.11/COPYING": "01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f",
|
||||
"licenses/dependencies/winapi-util-0.1.11/LICENSE-MIT": "cb3c929a05e6cbc9de9ab06a4c57eeb60ca8c724bef6c138c87d3a577e27aa14",
|
||||
"licenses/dependencies/winapi-util-0.1.11/UNLICENSE": "7e12e5df4bae12cb21581ba157ced20e1986a0508dd10d0e8a4ab9a4cf94e85c",
|
||||
"licenses/dependencies/window_clipboard-0.5.1/LICENSE": "7faec985f3e9b1c4a1df646bfedc304ba67e409447f7ab7f4f591f68708d85dc",
|
||||
"licenses/dependencies/windows_x86_64_gnullvm-0.52.6/license-apache-2.0": "c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b",
|
||||
"licenses/dependencies/windows_x86_64_gnullvm-0.52.6/license-mit": "c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383",
|
||||
"licenses/dependencies/windows-0.58.0/license-apache-2.0": "c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b",
|
||||
"licenses/dependencies/windows-0.58.0/license-mit": "c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383",
|
||||
"licenses/dependencies/windows-core-0.58.0/license-apache-2.0": "c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b",
|
||||
"licenses/dependencies/windows-core-0.58.0/license-mit": "c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383",
|
||||
"licenses/dependencies/windows-implement-0.58.0/license-apache-2.0": "c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b",
|
||||
"licenses/dependencies/windows-implement-0.58.0/license-mit": "c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383",
|
||||
"licenses/dependencies/windows-interface-0.58.0/license-apache-2.0": "c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b",
|
||||
"licenses/dependencies/windows-interface-0.58.0/license-mit": "c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383",
|
||||
"licenses/dependencies/windows-link-0.2.1/license-apache-2.0": "c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b",
|
||||
"licenses/dependencies/windows-link-0.2.1/license-mit": "c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383",
|
||||
"licenses/dependencies/windows-result-0.2.0/license-apache-2.0": "c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b",
|
||||
"licenses/dependencies/windows-result-0.2.0/license-mit": "c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383",
|
||||
"licenses/dependencies/windows-strings-0.1.0/license-apache-2.0": "c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b",
|
||||
"licenses/dependencies/windows-strings-0.1.0/license-mit": "c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383",
|
||||
"licenses/dependencies/windows-sys-0.52.0/license-apache-2.0": "c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b",
|
||||
"licenses/dependencies/windows-sys-0.52.0/license-mit": "c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383",
|
||||
"licenses/dependencies/windows-sys-0.59.0/license-apache-2.0": "c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b",
|
||||
"licenses/dependencies/windows-sys-0.59.0/license-mit": "c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383",
|
||||
"licenses/dependencies/windows-sys-0.61.2/license-apache-2.0": "c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b",
|
||||
"licenses/dependencies/windows-sys-0.61.2/license-mit": "c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383",
|
||||
"licenses/dependencies/windows-targets-0.52.6/license-apache-2.0": "c16f8dcf1a368b83be78d826ea23de4079fe1b4469a0ab9ee20563f37ff3d44b",
|
||||
"licenses/dependencies/windows-targets-0.52.6/license-mit": "c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383",
|
||||
"licenses/dependencies/winit-0.30.13/LICENSE": "6dc0e068dcf3a5bc8e054205b85b7720e1d49265bbc64bf515d2cf79197df69a",
|
||||
"licenses/dependencies/writeable-0.6.4/LICENSE": "f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2",
|
||||
"licenses/dependencies/xml-rs-0.8.29/LICENSE": "0dc18d924dc0a5f41172a393012843a5eaaef338e795b3645da9cc3b6068220b",
|
||||
"licenses/dependencies/yazi-0.2.1/LICENSE-APACHE": "7cfd738c53d61c79f07e348f622bf7707c9084237054d37fbe07788a75f5881c",
|
||||
"licenses/dependencies/yazi-0.2.1/LICENSE-MIT": "df62e3ef3f207c91073fedd78b4156a278681d0dd3f942379242c62c6a71a3ec",
|
||||
"licenses/dependencies/yoke-0.8.3/LICENSE": "f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2",
|
||||
"licenses/dependencies/yoke-derive-0.8.2/LICENSE": "f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2",
|
||||
"licenses/dependencies/zeno-0.3.3/LICENSE-APACHE": "7cfd738c53d61c79f07e348f622bf7707c9084237054d37fbe07788a75f5881c",
|
||||
"licenses/dependencies/zeno-0.3.3/LICENSE-MIT": "34dff8202d63e6df022f4f0ce88dab24f254c35ee0d5958b74dcf74d9eae21cc",
|
||||
"licenses/dependencies/zerocopy-0.8.56/LICENSE-APACHE": "9d185ac6703c4b0453974c0d85e9eee43e6941009296bb1f5eb0b54e2329e9f3",
|
||||
"licenses/dependencies/zerocopy-0.8.56/LICENSE-BSD": "83c1763356e822adde0a2cae748d938a73fdc263849ccff6b27776dff213bd32",
|
||||
"licenses/dependencies/zerocopy-0.8.56/LICENSE-MIT": "1a2f5c12ddc934d58956aa5dbdd3255fe55fd957633ab7d0d39e4f0daa73f7df",
|
||||
"licenses/dependencies/zerocopy-derive-0.8.56/LICENSE-APACHE": "9d185ac6703c4b0453974c0d85e9eee43e6941009296bb1f5eb0b54e2329e9f3",
|
||||
"licenses/dependencies/zerocopy-derive-0.8.56/LICENSE-BSD": "83c1763356e822adde0a2cae748d938a73fdc263849ccff6b27776dff213bd32",
|
||||
"licenses/dependencies/zerocopy-derive-0.8.56/LICENSE-MIT": "1a2f5c12ddc934d58956aa5dbdd3255fe55fd957633ab7d0d39e4f0daa73f7df",
|
||||
"licenses/dependencies/zerofrom-0.1.8/LICENSE": "f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2",
|
||||
"licenses/dependencies/zerofrom-derive-0.1.7/LICENSE": "f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2",
|
||||
"licenses/dependencies/zeroize-1.9.0/LICENSE-APACHE": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30",
|
||||
"licenses/dependencies/zeroize-1.9.0/LICENSE-MIT": "8c7516d4b27b1e495be5e38b612298b63de48d05f49cdac94f70f3cd70f8864b",
|
||||
"licenses/dependencies/zerotrie-0.2.5/LICENSE": "f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2",
|
||||
"licenses/dependencies/zerovec-0.11.8/LICENSE": "f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2",
|
||||
"licenses/dependencies/zerovec-derive-0.11.6/LICENSE": "f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2",
|
||||
"licenses/dependencies/zmij-1.0.23/LICENSE-MIT": "23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3",
|
||||
"licenses/llvm-libunwind/llvm-ea7d852a70e8-libunwind-LICENSE.TXT": "b5efebcaca80879234098e52d1725e6d9eb8fb96a19fce625d39184b705f7b6d",
|
||||
"licenses/llvm-mingw-LICENSE.TXT": "8d85c1057d742e597985c7d4e6320b015a9139385cff4cbae06ffc0ebe89afee",
|
||||
"licenses/rust/COPYING.RUNTIME": "28e85c5aa4af9b4f1dfe6b4817aa3eefb3eaaee7fd735045016f29ccf50276a1",
|
||||
"licenses/rust/COPYING3": "8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903",
|
||||
"licenses/rust/COPYRIGHT-library.html": "68129500b616d5838629e68f55ff3aed5e096dacf60ce9eb41bbe599a563afa6",
|
||||
"licenses/rust/COPYRIGHT.html": "5b0c93fc4e6d4b072eaa521b1762d1e746f4c368f65e81a0e5308e2772dac85e",
|
||||
"package.json": "36bcff8a760c08674f3fc017bb5affc8a5f4f39174ac9d5a29298f2423155832",
|
||||
"README.md": "597cfb8da873e019d2658420f18ec059f0185fa9106ff9eafe934dfdd6ed266b",
|
||||
"START-HERE.txt": "a549295cf57ac73673dc4fa6106463450f982122793cb9c7135ce4fc7087e9ed",
|
||||
"THIRD-PARTY-NOTICES.txt": "32bbbd437f15b67690c6704fc14e2f12ae0fd463aa2eb5e4c99c1d61857f87fb",
|
||||
"SHA256SUMS.txt": "37a2802abb67369f014270a7814e75dd00b26c1bb9c3ee37decf5eb3bacf695b"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,258 @@
|
||||
{
|
||||
".gitattributes": {
|
||||
"bytes": 58,
|
||||
"sha256": "e0522421a30ef830cab55b95e12f2d7307c1a01979e6972429543e176adb7f78"
|
||||
},
|
||||
"commands.json": {
|
||||
"bytes": 998,
|
||||
"sha256": "7af5852fe275eaa1dafb2ab5d7e7e1553a63941fa56bb5046f99d24ede0624f0"
|
||||
},
|
||||
"donor/build-evidence.json": {
|
||||
"bytes": 3570,
|
||||
"sha256": "3b278a3401b9a4c2de0538d70f603c3c039b308d5d2952ebed792efcac3e08e5"
|
||||
},
|
||||
"donor/extraction-check.json": {
|
||||
"bytes": 73193,
|
||||
"sha256": "2de063bcee74e2ffd7e70dbba717f4615932a2f0f3024a90e87406f17ab12244"
|
||||
},
|
||||
"final-review.md": {
|
||||
"bytes": 5438,
|
||||
"sha256": "0951515ff902b943310165aa9400b068517fecfb64fb7d56344cce86e905f4c6"
|
||||
},
|
||||
"first-candidate/first-candidate-hashes.json": {
|
||||
"bytes": 342,
|
||||
"sha256": "52b8428366bdcb8d1f0e7cdebd5382be2821e65e278edc866fb3b36194259edd"
|
||||
},
|
||||
"first-candidate/first-candidate.diff": {
|
||||
"bytes": 8967,
|
||||
"sha256": "0da7bdc13b1d355df669083e1b66ae995b6ff49a023a042c688b363d4f7ba5c1"
|
||||
},
|
||||
"first-candidate/save-diagnostics-first-failed.log": {
|
||||
"bytes": 864,
|
||||
"sha256": "b19127590c07949232db015b09aa965d77c93a1d0a0d1d496fb05373f2686a82"
|
||||
},
|
||||
"gates/save-diagnostics-build.log": {
|
||||
"bytes": 309,
|
||||
"sha256": "79a2c5e8f565f27296521fde2ef3a037a5110d1bd134b4661115769e8f1d97fd"
|
||||
},
|
||||
"gates/save-diagnostics-clippy.log": {
|
||||
"bytes": 379,
|
||||
"sha256": "4c55b51c4a2dc7a0de14ce5f312267e0b22f9a65615d0c378f1809330eea579f"
|
||||
},
|
||||
"gates/save-diagnostics-corrected-tests.log": {
|
||||
"bytes": 3561,
|
||||
"sha256": "9079652120e18a7176feb8e5f4ac289cbf0c27f979a0c042fef5d8b4e2e252d4"
|
||||
},
|
||||
"native/00-open-a.png": {
|
||||
"bytes": 141556,
|
||||
"sha256": "1ecf39797afc01f5d890fbde2aaac15f6743a058ab19eecdd50370ae59165b3a"
|
||||
},
|
||||
"native/01-declared-name-applied.png": {
|
||||
"bytes": 139514,
|
||||
"sha256": "03b762aa7899b25b3c31abe89003571fdce6bb6c7f8e7c28f104d0e920a38b8b"
|
||||
},
|
||||
"native/02-collision-destination.png": {
|
||||
"bytes": 65913,
|
||||
"sha256": "3317e5c57382be7e86e44d0e0a3c08d7ecb6da7829efb28460df2768bd8772d2"
|
||||
},
|
||||
"native/03-collision-refused-normal.png": {
|
||||
"bytes": 144122,
|
||||
"sha256": "29218985a910ccf1eef552b54fc28211ef1a8709b430944342f591a2ac139fc5"
|
||||
},
|
||||
"native/04-collision-full-tooltip-normal.png": {
|
||||
"bytes": 151084,
|
||||
"sha256": "3c2f517af129001bac514b4572ce66c9a0b5665da465ce0d54fba87629108a47"
|
||||
},
|
||||
"native/05-collision-refused-minimum.png": {
|
||||
"bytes": 108588,
|
||||
"sha256": "b4ca92b2471aadcf71db678132a8254fec786188c3617fa743263f0d9e0ad3af"
|
||||
},
|
||||
"native/06-collision-full-tooltip-minimum.png": {
|
||||
"bytes": 115599,
|
||||
"sha256": "0e66422255a607cd2f4d5156b3e068c4ed4421bed361e399a69f70ae06a88e24"
|
||||
},
|
||||
"native/07-save-all-recovery.png": {
|
||||
"bytes": 103850,
|
||||
"sha256": "364ce26b28944cc3aeafdf878e3657b5e91062138126ce9b3cf69d0ace1c5105"
|
||||
},
|
||||
"native/08-fresh-destination.png": {
|
||||
"bytes": 65541,
|
||||
"sha256": "5fb9cc43e7b83f4127430089c7344c0106396a36e6953f5b9b8133eb3d9f836b"
|
||||
},
|
||||
"native/09-fresh-save-success.png": {
|
||||
"bytes": 104194,
|
||||
"sha256": "b88454e8dbb783f71104ba8844e7a2982c72a50d9ae0d56db6d3a2e7e9665a8e"
|
||||
},
|
||||
"native/10-open-b-path.png": {
|
||||
"bytes": 72279,
|
||||
"sha256": "e032bc44821b413bdf8aac9fa09ab5b1941667d969b7bb13263439e29129596b"
|
||||
},
|
||||
"native/11-b-loaded-before-injection.png": {
|
||||
"bytes": 110266,
|
||||
"sha256": "4fdc335fcff78e6095838be6ff97a97df4f6060e3415b466454e9af94122dd71"
|
||||
},
|
||||
"native/12-external-change-refused.png": {
|
||||
"bytes": 110687,
|
||||
"sha256": "5b178844aa460b182d9dd1a35cec158756de0f862bf5340fe0cf20392bdb9e3b"
|
||||
},
|
||||
"native/13-external-change-tooltip.png": {
|
||||
"bytes": 113952,
|
||||
"sha256": "c2128a4154458a460eda5dac894e13b6855471aacd606e1064e387f598e3edb9"
|
||||
},
|
||||
"native/14-external-recovery-save.png": {
|
||||
"bytes": 108137,
|
||||
"sha256": "5086cedfedf473b3cb7228c7d70aaeb5914c01aeaa5087b23662d925e4e4b0a1"
|
||||
},
|
||||
"native/15-baseline-name-after-recovery.png": {
|
||||
"bytes": 101855,
|
||||
"sha256": "63cf1d0b9b4b1a93096bab94abe20c2b5e1642489f47bb1f99beb36e404f0a3f"
|
||||
},
|
||||
"native/baseline.json": {
|
||||
"bytes": 7556,
|
||||
"sha256": "5445719d5377b0ccaf7567747a48cdc753be2a30a57d35105ac7f39e6aa3b876"
|
||||
},
|
||||
"native/collision-oracle.json": {
|
||||
"bytes": 6150,
|
||||
"sha256": "9d50e26ca8c7c50801713ef98b072315cbcb0cdaaeba3d57846c423163f58055"
|
||||
},
|
||||
"native/external-before-oracle.json": {
|
||||
"bytes": 6155,
|
||||
"sha256": "b96e896f3e33bbf7c0832ba3365ecf57864b49fbb061dc84e66ffb35916ee313"
|
||||
},
|
||||
"native/external-recovered-oracle.json": {
|
||||
"bytes": 6158,
|
||||
"sha256": "7c02f5a60b28b80534d5806f004ee3ba99b195ce9f03a236fb12e58f3b079ec8"
|
||||
},
|
||||
"native/external-refused-oracle.json": {
|
||||
"bytes": 6156,
|
||||
"sha256": "414e3905c9ded123e01c6c045a1b70667d5a5f0cd9f58591c63a7176c15c5be7"
|
||||
},
|
||||
"native/finished.json": {
|
||||
"bytes": 586,
|
||||
"sha256": "6b4abb3aac7da501968a56eff1b0a728616eff775645ef8ec031b97fcbd6c61f"
|
||||
},
|
||||
"native/inject-oracle.json": {
|
||||
"bytes": 6146,
|
||||
"sha256": "c41c494b880febefbfbedeaf370d4987047c31c1ca09bd7144eb4bb44838f8df"
|
||||
},
|
||||
"native/native-model-oracle/01.request.json": {
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"native/native-model-oracle/01.response.json": {
|
||||
"bytes": 15,
|
||||
"sha256": "a29ee2b15c494311c52521766e44af56a3ad2248e7a8ab465e5206463c13d288"
|
||||
},
|
||||
"native/native-model-oracle/02.request.json": {
|
||||
"bytes": 73418,
|
||||
"sha256": "b82d1eb074d86d60e44651d17f659af7202fadf65bb961ecb0a57535af876b5a"
|
||||
},
|
||||
"native/native-model-oracle/02.response.json": {
|
||||
"bytes": 245,
|
||||
"sha256": "946ab50936946bc55e05fa11a2f17518c9a5c1603514a2eb7138499912e12d66"
|
||||
},
|
||||
"native/native-model-oracle/03.request.json": {
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"native/native-model-oracle/03.response.json": {
|
||||
"bytes": 164079,
|
||||
"sha256": "0bc7f1d6871aaedb6a34af6b448e1bac45ef603bb4e7e57c7d0931df5628be36"
|
||||
},
|
||||
"native/native-model-oracle/04.request.json": {
|
||||
"bytes": 73423,
|
||||
"sha256": "2840d6001d648bdd9f7f5fb3878f2bb408b6ea070915289e66db63fbd9fdb4b6"
|
||||
},
|
||||
"native/native-model-oracle/04.response.json": {
|
||||
"bytes": 245,
|
||||
"sha256": "c5c2e7be4ad9c6dd82018be8976f369660bd2c19baa6aa3eb2058eb8776ed53e"
|
||||
},
|
||||
"native/native-model-oracle/05.request.json": {
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"native/native-model-oracle/05.response.json": {
|
||||
"bytes": 164089,
|
||||
"sha256": "c2a903d0c23191a7a0cd4cde6db066fbfd26d7f33d36ab91fe45ac361d09f43c"
|
||||
},
|
||||
"native/native-model-oracle/result.json": {
|
||||
"bytes": 1124,
|
||||
"sha256": "996e512183cdd8033123fe3c1d5ccb50b8cb0baa14d9ae7294882ce23b855be3"
|
||||
},
|
||||
"native/native-model-oracle/stderr.log": {
|
||||
"bytes": 118,
|
||||
"sha256": "d0a3536063ee4264b79d7952c8a3ba486464760363c16c585246debff4e5de94"
|
||||
},
|
||||
"native/native-model-oracle/stdout.log": {
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"native/native-model-oracle.py": {
|
||||
"bytes": 3962,
|
||||
"sha256": "a495072ce8cd6d7f49db1bf752b48cece381c96d284836fef709b3810d2a5546"
|
||||
},
|
||||
"native/oracle.py": {
|
||||
"bytes": 2602,
|
||||
"sha256": "a491f2d119f4c2774671bc4ed0547312e9dbdb5c1b205dacb09b1304bc2e6299"
|
||||
},
|
||||
"native/plan.md": {
|
||||
"bytes": 8254,
|
||||
"sha256": "8a6632e31ff0e5f661433e79777c750b394422b9cf00d1932b6627bfd20c3034"
|
||||
},
|
||||
"native/restore-oracle.json": {
|
||||
"bytes": 6147,
|
||||
"sha256": "0c6e6626d9c7b1d2fd330435d6cccde1bafa3c6ea661be893fd57a1933d4ddc9"
|
||||
},
|
||||
"native/review.md": {
|
||||
"bytes": 6530,
|
||||
"sha256": "cea2f317dcbe801dd2c7b8eaf099786b517f8992a69c8e0e8684aa173fc6e91f"
|
||||
},
|
||||
"native/saved-a-oracle.json": {
|
||||
"bytes": 6148,
|
||||
"sha256": "2e3a0106e93f6b9e1b939ccce6d43e97b9ccd3350cd028188cfd58025525a7cc"
|
||||
},
|
||||
"native/saved-c-oracle.json": {
|
||||
"bytes": 6144,
|
||||
"sha256": "42fddd04c65bb25b37795a8a3346074a115674096ca4aae89efe7813f806d9b2"
|
||||
},
|
||||
"native/started.json": {
|
||||
"bytes": 413,
|
||||
"sha256": "7552c4a85e6f075d348c6189e63126211a8327ed70ec426fedc00f9d2c5665e1"
|
||||
},
|
||||
"native/stderr.log": {
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"native/stdout.log": {
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"README.md": {
|
||||
"bytes": 3731,
|
||||
"sha256": "718d821732fe229a681a5e0e4cd198d3b0348b002cdb288629dfefe39536b394"
|
||||
},
|
||||
"scripts/launch-native46.py": {
|
||||
"bytes": 1837,
|
||||
"sha256": "daf89061903f22740cb50ae695be7d3c87ebab5571e37b63ea73867debe7121d"
|
||||
},
|
||||
"scripts/prepare-model-oracle46.py": {
|
||||
"bytes": 828,
|
||||
"sha256": "ab5c2aa4d66118f9fb970920c8b17a13ca072e7882d2909a8368bb5f68333dc4"
|
||||
},
|
||||
"scripts/prepare-native46.py": {
|
||||
"bytes": 2279,
|
||||
"sha256": "780ee633711b0f1e3535704065cba8521e8a4f2e4b303438c1db83307a66b0b7"
|
||||
},
|
||||
"scripts/toolchain-env.ps1": {
|
||||
"bytes": 621,
|
||||
"sha256": "d7eb6249bef73adacdb05cebefe7ca478758c3c38de17a1731bf01f8b25dc379"
|
||||
},
|
||||
"source-files.json": {
|
||||
"bytes": 675,
|
||||
"sha256": "75d2e53f3bf17cb32950a824d59c08a6ce069879e50c4415fddf7de5c0f7f8cb"
|
||||
},
|
||||
"verify.py": {
|
||||
"bytes": 4674,
|
||||
"sha256": "e847efede3dfc807a330309bacf807b52f279f1bdbd263bfa93e618564157bcb"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
# Independent final #46 contribution review
|
||||
|
||||
Bounded contribution acceptance for source `0e83157e09d52e6152df91208e41693b62da2d46`: no material correctness blocker found in the protected-destination diagnostic change or reviewed validation evidence. This is not integration, publication, packaged-release, full-suite, Linux or complete OA/SA acceptance. Prototype B native reading/performance remains unrelated and open.
|
||||
|
||||
Read-only source, helpers, logs, native report, phase receipts, actual files and parser-envelope audit. No GUI, compiler, server launch, Gitea action or production edit. This review file is the only new artifact. The original source review was delivered in chat; no earlier source-review file was found under this worktree's .local directory. Its E0308 finding is preserved in the failed log and contribution note.
|
||||
|
||||
## Source and executable identity
|
||||
|
||||
Rechecked the committed diff and corrected helper. `write_snapshot_inner` changes only messages for Conflict from `new_project` and `expect_new_file`; those functions refuse already-existing destinations before writing. `save_project` still performs observed-baseline conflict checks and keeps its external-change message. Non-conflict errors, recovery discovery, disk expectations, no-overwrite checks, save transactions, source relocation/history and API behavior are unchanged. The earlier helper type mismatch is corrected by returning error.message after dispatch and preservation assertions.
|
||||
|
||||
Current native executable SHA256 is `e9cce9355525ecdc59bfae12608b1e0272167acef5a86b25368ef547e08886ff`; runtime is `f45604a12e8bcd839fd86f667c1be1cc7c4f9da2b3c69ff381ac708f0e1ae7d4`. Both actual files match baseline and final receipts. PID 10012 finished with exit 0; actual stdout/stderr files are empty. The report has 16 screenshots, numbered 00 through 15.
|
||||
|
||||
## Gates and native scope
|
||||
|
||||
Corrected test log reports 29 passed, zero failures/ignores, 1,520 filtered out. E0308 from the first candidate remains in save-diagnostics-first-failed.log. Clippy and GUI build logs finish successfully; their invocation scope is parent-reported strict all-target Clippy and the GUI build, since these stdout logs do not reproduce command-line flags. No final full-suite pass is implied.
|
||||
|
||||
The independent native report records same-root/new-entry collision refusal, preserved unsaved name, accurate protected-files wording, full pointer tooltip at normal and minimum sizes, successful existing Save All, successful fresh-folder Save As, clean-document external-change refusal, and success after exact external-byte restoration. The persistent long footer truncates; pointer tooltip is readable. Keyboard-only tooltip access is untested. Clean B's All changes saved header describes lack of local edits, not successful disk save; the conflict footer remains explicit. No new blocking native defect was reported.
|
||||
|
||||
## Independent byte and model reconciliation
|
||||
|
||||
Read oracle.py as code without executing its mutating injection/restoration phases. Independently enumerated all 37 pristine files, checked baseline hashes, and reconstructed only the predeclared literal replacement and valid appended comment. All eight phase receipts match those independently expected full filename/byte-hash sets:
|
||||
|
||||
- collision: all baseline bytes; no collision-copy.arcadia.
|
||||
- saved-a and saved-c: only `Assess pressure alarm` to `Assess pressure alarm QA46` for Activity `61f7bbfb-74a4-5540-9182-2583dfb27a49` in the declared dependency.
|
||||
- external-before, restore and external-recovered: exact pristine bytes.
|
||||
- inject and external-refused: only the declared valid comment added; other 36 files identical.
|
||||
|
||||
Actual final A and C directory contents independently equal the renamed expected bundle; actual final B equals pristine. Each contains exactly 37 files. C contains 30 application-written source files and seven parent-copied companions; no application-managed companion-copy claim is accepted. Intermediate refusal states are supported by retained checkpoint receipts/native sequence, not reconstructed as if still present on disk.
|
||||
|
||||
Independently reconciled the complete native-model-oracle input requests, output source bundles, full model envelopes and actual stored envelopes. Pristine input exactly matches the unchanged packaged example and repository baseline. Saved input exactly matches actual C. Both source_project responses equal their complete 30-file requests. Modifying only the pristine model's declared activity name to QA46 makes it equal to the entire saved model; every other model field remains unchanged. Both persisted server envelopes equal their captured GET responses.
|
||||
|
||||
Actual parser server hash `6cebacc117e46fdab023c6402a5cebd6929fb55993ae8ff6b89cd1c6c1170237` and selected runtime match oracle pins. The server is reused unchanged from the separate package, not claimed rebuilt with #46. Its owned forced termination exits 1 after acknowledged import/read; this is not graceful-shutdown or power-loss evidence.
|
||||
|
||||
## Delivery follow-up
|
||||
|
||||
At review time, the untracked `harness/save-as-diagnostics-20261001.md` still says Clippy, GUI build and native checks are pending. Update that historical checkpoint with these completed, explicitly scoped receipts before using it as the final handoff. This documentation refresh and integration/publication confirmation remain the parent's responsibility; neither is claimed complete here.
|
||||
@@ -0,0 +1,10 @@
|
||||
[
|
||||
{
|
||||
"Path": "C:\\ar-save-01a0d717\\crates\\oa-desktop\\src\\app.rs",
|
||||
"Hash": "4E470C5BA93D85F122B62B48CF27A6FAA4C005ABCAB0D7180E6DB598506E1C83"
|
||||
},
|
||||
{
|
||||
"Path": "C:\\ar-save-01a0d717\\crates\\oa-desktop\\src\\app\\save_as_tests.rs",
|
||||
"Hash": "41D4CF226722241599F223293311A697F3894C6A46587CBCECACC3B563D0A84D"
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,201 @@
|
||||
diff --git a/crates/oa-desktop/src/app.rs b/crates/oa-desktop/src/app.rs
|
||||
index 7da73652..f8a0d6a6 100644
|
||||
--- a/crates/oa-desktop/src/app.rs
|
||||
+++ b/crates/oa-desktop/src/app.rs
|
||||
@@ -5605,6 +5605,7 @@ fn write_snapshot_inner(
|
||||
.map_err(|errors| crate::document::DocumentError::Source(errors).to_string())?,
|
||||
);
|
||||
}
|
||||
+ let has_original_destination = previous.is_some();
|
||||
let previous = previous.filter(|disk| {
|
||||
path.parent()
|
||||
.filter(|p| !p.as_os_str().is_empty())
|
||||
@@ -5615,14 +5616,33 @@ fn write_snapshot_inner(
|
||||
== Some(&disk.root)
|
||||
&& entry == disk.bundle.entry
|
||||
});
|
||||
+ // A missing-file expectation colliding with an existing destination is
|
||||
+ // not evidence that an observed dependency changed outside the editor.
|
||||
+ // Keep save_project's conflict reporting unchanged for that latter case.
|
||||
+ let saving_existing = previous.is_some();
|
||||
+ let destination_error = |error: source_files::SourceFileError| match error {
|
||||
+ source_files::SourceFileError::Conflict(paths) => {
|
||||
+ let guidance = if saving_existing {
|
||||
+ "Review the new included file's destination before saving."
|
||||
+ } else if has_original_destination {
|
||||
+ "Choose a fresh directory for Save As, or use Save All to update the open project's current entry."
|
||||
+ } else {
|
||||
+ "Choose a fresh directory for Save As."
|
||||
+ };
|
||||
+ format!(
|
||||
+ "Source destination files already exist: {paths:?}. Existing files are protected. {guidance}"
|
||||
+ )
|
||||
+ }
|
||||
+ other => other.to_string(),
|
||||
+ };
|
||||
let mut disk = match previous {
|
||||
Some(disk) => disk,
|
||||
- None => source_files::new_project(&path, LIMITS).map_err(|e| e.to_string())?,
|
||||
+ None => source_files::new_project(&path, LIMITS).map_err(&destination_error)?,
|
||||
};
|
||||
for path in snapshot.bundle.files.keys() {
|
||||
if !disk.expectations.contains_key(path) {
|
||||
source_files::expect_new_file(&mut disk, path, LIMITS)
|
||||
- .map_err(|e| e.to_string())?;
|
||||
+ .map_err(&destination_error)?;
|
||||
}
|
||||
}
|
||||
Some(source_files::save_project(&disk, &snapshot, LIMITS).map_err(|e| e.to_string())?)
|
||||
diff --git a/crates/oa-desktop/src/app/save_as_tests.rs b/crates/oa-desktop/src/app/save_as_tests.rs
|
||||
index c6ddab7d..75e6a850 100644
|
||||
--- a/crates/oa-desktop/src/app/save_as_tests.rs
|
||||
+++ b/crates/oa-desktop/src/app/save_as_tests.rs
|
||||
@@ -1,5 +1,148 @@
|
||||
use super::*;
|
||||
|
||||
+fn saved_multifile_app(directory: &std::path::Path) -> (App, Id, PathBuf) {
|
||||
+ let mut project = Project::empty();
|
||||
+ let activity = project
|
||||
+ .add_element(Kind::Activity, Layer::Oa, "Assess incident", None)
|
||||
+ .unwrap();
|
||||
+ let mut app = App::with_project(project);
|
||||
+ let path = directory.join("project.arcadia");
|
||||
+ complete_save(&mut app, path.clone());
|
||||
+ assert!(app.document.bundle().files.len() > 1);
|
||||
+ (app, activity, path)
|
||||
+}
|
||||
+
|
||||
+fn rejected_save_preserves_editor(app: &mut App, path: PathBuf) -> String {
|
||||
+ let snapshot = app.document.snapshot();
|
||||
+ let revision = app.document.revision();
|
||||
+ let undo = app.document.can_undo();
|
||||
+ let redo = app.document.can_redo();
|
||||
+ let draft = app.source_workspace.text().to_owned();
|
||||
+ let original_path = app.path.clone();
|
||||
+ let dirty = app.dirty();
|
||||
+ let result = write_snapshot(
|
||||
+ app.canvas_document,
|
||||
+ revision,
|
||||
+ snapshot.clone(),
|
||||
+ path,
|
||||
+ app.disk_project.clone(),
|
||||
+ );
|
||||
+ let error = match result {
|
||||
+ Err(error) => error,
|
||||
+ Ok(_) => panic!("Expected collision refusal"),
|
||||
+ };
|
||||
+ let _ = app.update(Message::Saved(Err(error.clone())));
|
||||
+ assert!(Arc::ptr_eq(&snapshot, &app.document.snapshot()));
|
||||
+ assert_eq!(app.document.revision(), revision);
|
||||
+ assert_eq!(app.document.can_undo(), undo);
|
||||
+ assert_eq!(app.document.can_redo(), redo);
|
||||
+ assert_eq!(app.source_workspace.text(), draft);
|
||||
+ assert_eq!(app.path, original_path);
|
||||
+ assert_eq!(app.dirty(), dirty);
|
||||
+ error
|
||||
+}
|
||||
+
|
||||
+#[test]
|
||||
+fn same_root_new_entry_collision_preserves_files_draft_and_history() {
|
||||
+ let directory = tempfile::tempdir().unwrap();
|
||||
+ let (mut app, activity, original) = saved_multifile_app(directory.path());
|
||||
+ let bytes: Vec<_> = app
|
||||
+ .document
|
||||
+ .bundle()
|
||||
+ .files
|
||||
+ .keys()
|
||||
+ .map(|p| (p.clone(), std::fs::read(directory.path().join(p)).unwrap()))
|
||||
+ .collect();
|
||||
+ app.execute(Command::Rename(activity, "Review incident".into()));
|
||||
+ app.execute(Command::Rename(activity, "Evaluate incident".into()));
|
||||
+ let _ = app.update(Message::Undo);
|
||||
+ assert!(app.document.can_undo() && app.document.can_redo());
|
||||
+ let cursor = app.source_workspace.files[&app.source_workspace.entry].cursor;
|
||||
+ app.source_workspace.edit(
|
||||
+ format!("{}\n// retained draft", app.source_workspace.text()),
|
||||
+ cursor,
|
||||
+ );
|
||||
+ let destination = directory.path().join("renamed.arcadia");
|
||||
+ let error = rejected_save_preserves_editor(&mut app, destination.clone());
|
||||
+ assert!(error.contains("already exist") && error.contains("Save All"));
|
||||
+ assert!(!error.contains("changed outside"));
|
||||
+ assert!(!destination.exists());
|
||||
+ assert_eq!(app.path, Some(original));
|
||||
+ for (path, expected) in bytes {
|
||||
+ assert_eq!(
|
||||
+ std::fs::read(directory.path().join(path)).unwrap(),
|
||||
+ expected
|
||||
+ );
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+#[test]
|
||||
+fn fresh_root_existing_include_is_protected_before_any_bundle_write() {
|
||||
+ let original = tempfile::tempdir().unwrap();
|
||||
+ let destination = tempfile::tempdir().unwrap();
|
||||
+ let (mut app, activity, _) = saved_multifile_app(original.path());
|
||||
+ app.execute(Command::Rename(activity, "Review incident".into()));
|
||||
+ let fragment = app.document.compiled().index.declarations[&activity]
|
||||
+ .path
|
||||
+ .clone();
|
||||
+ let collision = destination.path().join(&fragment);
|
||||
+ std::fs::create_dir_all(collision.parent().unwrap()).unwrap();
|
||||
+ std::fs::write(&collision, b"// independent destination work").unwrap();
|
||||
+ let target = destination.path().join("copy.arcadia");
|
||||
+ let error = rejected_save_preserves_editor(&mut app, target.clone());
|
||||
+ assert!(error.contains(&fragment) && error.contains("fresh directory"));
|
||||
+ assert!(!error.contains("changed outside"));
|
||||
+ assert!(!target.exists());
|
||||
+ for path in app.document.bundle().files.keys() {
|
||||
+ let file = destination.path().join(path);
|
||||
+ if path == &fragment {
|
||||
+ assert_eq!(
|
||||
+ std::fs::read(file).unwrap(),
|
||||
+ b"// independent destination work"
|
||||
+ );
|
||||
+ } else {
|
||||
+ assert!(!file.exists(), "Unexpected write: {path}");
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+#[test]
|
||||
+fn observed_dependency_change_remains_external_conflict_and_normal_saves_work() {
|
||||
+ let original = tempfile::tempdir().unwrap();
|
||||
+ let fresh = tempfile::tempdir().unwrap();
|
||||
+ let (mut app, activity, path) = saved_multifile_app(original.path());
|
||||
+ app.execute(Command::Rename(activity, "Review incident".into()));
|
||||
+ complete_save(&mut app, path.clone());
|
||||
+ assert!(!app.dirty());
|
||||
+ let fragment = app.document.compiled().index.declarations[&activity]
|
||||
+ .path
|
||||
+ .clone();
|
||||
+ let entry_before = std::fs::read(&path).unwrap();
|
||||
+ let original_fragment = std::fs::read(original.path().join(&fragment)).unwrap();
|
||||
+ std::fs::write(original.path().join(&fragment), b"// external edit").unwrap();
|
||||
+ app.execute(Command::Rename(activity, "Evaluate incident".into()));
|
||||
+ let error = rejected_save_preserves_editor(&mut app, path.clone());
|
||||
+ assert!(error.contains("changed outside") && error.contains(&fragment));
|
||||
+ assert!(!error.contains("fresh directory"));
|
||||
+ assert_eq!(std::fs::read(&path).unwrap(), entry_before);
|
||||
+ assert_eq!(
|
||||
+ std::fs::read(original.path().join(&fragment)).unwrap(),
|
||||
+ b"// external edit"
|
||||
+ );
|
||||
+ // Restore the observed bytes, then exercise the legitimate existing Save All.
|
||||
+ std::fs::write(original.path().join(&fragment), original_fragment).unwrap();
|
||||
+ complete_save(&mut app, path);
|
||||
+ assert!(!app.dirty());
|
||||
+ let model = app.project().clone();
|
||||
+ let target = fresh.path().join("copy.arcadia");
|
||||
+ complete_save(&mut app, target.clone());
|
||||
+ let saved = source_files::load_project(&target, LIMITS).unwrap();
|
||||
+ let compiled = source_project::compile_bundle(&saved.bundle, LIMITS).unwrap();
|
||||
+ assert_eq!(compiled.decoded.project, model);
|
||||
+ assert_eq!(&saved.bundle, app.document.bundle());
|
||||
+ assert!(!app.dirty());
|
||||
+}
|
||||
+
|
||||
fn complete_save(app: &mut App, path: PathBuf) {
|
||||
let receipt = write_snapshot(
|
||||
app.canvas_document,
|
||||
@@ -0,0 +1,16 @@
|
||||
Compiling oa-core v0.2.0 (C:\ar-save-01a0d717\crates\oa-core)
|
||||
Compiling oa-server v0.2.0 (C:\ar-save-01a0d717\crates\oa-server)
|
||||
Compiling iced_widget v0.14.2 (C:\ar-save-01a0d717\crates\vendor\iced_widget)
|
||||
Compiling oa-desktop v0.2.0 (C:\ar-save-01a0d717\crates\oa-desktop)
|
||||
Compiling iced v0.14.0
|
||||
error[E0308]: mismatched types
|
||||
--> crates\oa-desktop\src\app\save_as_tests.rs:42:5
|
||||
|
|
||||
15 | fn rejected_save_preserves_editor(app: &mut App, path: PathBuf) -> String {
|
||||
| ------ expected `std::string::String` because of return type
|
||||
...
|
||||
42 | error
|
||||
| ^^^^^ expected `String`, found `SaveFailure`
|
||||
|
||||
For more information about this error, try `rustc --explain E0308`.
|
||||
error: could not compile `oa-desktop` (bin "arcadia-studio" test) due to 1 previous error
|
||||
@@ -0,0 +1,5 @@
|
||||
Compiling iced_widget v0.14.2 (C:\ar-save-01a0d717\crates\vendor\iced_widget)
|
||||
Compiling oa-core v0.2.0 (C:\ar-save-01a0d717\crates\oa-core)
|
||||
Compiling iced v0.14.0
|
||||
Compiling oa-desktop v0.2.0 (C:\ar-save-01a0d717\crates\oa-desktop)
|
||||
Finished `dev` profile [unoptimized] target(s) in 2m 55s
|
||||
@@ -0,0 +1,6 @@
|
||||
Compiling oa-core v0.2.0 (C:\ar-save-01a0d717\crates\oa-core)
|
||||
Checking iced_widget v0.14.2 (C:\ar-save-01a0d717\crates\vendor\iced_widget)
|
||||
Compiling oa-desktop v0.2.0 (C:\ar-save-01a0d717\crates\oa-desktop)
|
||||
Compiling oa-server v0.2.0 (C:\ar-save-01a0d717\crates\oa-server)
|
||||
Checking iced v0.14.0
|
||||
Finished `dev` profile [unoptimized] target(s) in 2m 24s
|
||||
@@ -0,0 +1,37 @@
|
||||
Compiling oa-desktop v0.2.0 (C:\ar-save-01a0d717\crates\oa-desktop)
|
||||
Finished `test` profile [unoptimized] target(s) in 2m 55s
|
||||
Running unittests src\main.rs (C:\Users\User\Documents\Git\ARCADIA-Studio\.local\target-gnullvm\debug\deps\arcadia_studio-c5b42126ba36cd38.exe)
|
||||
|
||||
running 29 tests
|
||||
test app::repair_save_state_tests::recovering_applied_repair_rebinds_rolled_back_disk_bytes_without_changing_model ... ok
|
||||
test app::repair_save_state_tests::recovery_missing_entry_or_failed_reload_preserves_current_destination_save_authority ... ok
|
||||
test app::repair_save_state_tests::repair_history_compares_to_new_disk_baseline_and_then_successful_save ... ok
|
||||
test app::repair_save_state_tests::repair_to_previous_saved_bytes_requires_save_at_new_destination_and_guards_close ... ok
|
||||
test app::repair_save_state_tests::valid_equal_content_at_distinct_destinations_stays_clean ... ok
|
||||
test app::save_as_tests::fresh_root_existing_include_is_protected_before_any_bundle_write ... ok
|
||||
test app::save_as_tests::observed_dependency_change_remains_external_conflict_and_normal_saves_work ... ok
|
||||
test app::save_as_tests::same_root_new_entry_collision_preserves_files_draft_and_history ... ok
|
||||
test app::save_as_tests::save_as_late_receipt_preserves_newer_raw_source_draft_and_destination ... ok
|
||||
test app::save_as_tests::save_as_preflight_rejects_historical_collision_before_starting_io ... ok
|
||||
test app::save_as_tests::save_as_receipt_then_one_undo_restores_meaning_and_saving_preserves_redo ... ok
|
||||
test app::source_project_tests::closed_detached_file_keeps_first_save_conflict_then_can_be_reloaded_fresh ... ok
|
||||
test app::source_project_tests::inactive_invalid_draft_blocks_graphical_changes_and_diagnostic_switches_files ... ok
|
||||
test app::source_project_tests::includes_loaded_diagnostics_use_raw_newly_discovered_bytes ... ok
|
||||
test app::source_project_tests::includes_loaded_diagnostics_use_retained_overlay_and_ignore_old_version ... ok
|
||||
test app::source_project_tests::includes_loaded_rejects_mismatched_retained_bytes_before_publication ... ok
|
||||
test app::source_project_tests::includes_loaded_requires_each_inactive_detached_overlay ... ok
|
||||
test app::source_project_tests::json_export_and_rejected_save_as_preserve_source_location_history_and_bytes ... ok
|
||||
test app::source_project_tests::missing_include_open_keeps_old_model_and_can_be_repaired_and_saved ... ok
|
||||
test app::source_project_tests::recovery_after_first_save_failure_retains_target_then_retries_without_reentering_path ... ok
|
||||
test app::source_project_tests::recovery_of_previous_save_as_target_does_not_redirect_current_project ... ok
|
||||
test app::source_project_tests::recovery_open_finds_first_save_journal_without_an_entry_file ... ok
|
||||
test app::source_project_tests::recovery_target_survives_edit_lint_apply_and_rejected_recovery_until_success ... ok
|
||||
test app::source_project_tests::source3_native_open_preserves_report_comments_nesting_and_save_reopen ... ok
|
||||
test app::source_project_tests::two_file_apply_graphical_edit_exact_undo_save_as_and_reopen ... ok
|
||||
test document::save_as_tests::save_as_preserves_explicit_source_entry_changes_in_history ... ok
|
||||
test document::save_as_tests::save_as_rebases_uniform_history_without_an_undo_step_or_lost_redo ... ok
|
||||
test document::save_as_tests::save_as_rejects_included_filename_collisions_in_past_and_future_without_mutation ... ok
|
||||
test document::save_as_tests::save_as_rejects_stale_or_content_changing_receipt_atomically ... ok
|
||||
|
||||
test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 1520 filtered out; finished in 1.35s
|
||||
|
||||
|
After Width: | Height: | Size: 138 KiB |
|
After Width: | Height: | Size: 136 KiB |
|
After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 141 KiB |
|
After Width: | Height: | Size: 148 KiB |
|
After Width: | Height: | Size: 106 KiB |
|
After Width: | Height: | Size: 113 KiB |
|
After Width: | Height: | Size: 101 KiB |
|
After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 102 KiB |
|
After Width: | Height: | Size: 71 KiB |
|
After Width: | Height: | Size: 108 KiB |
|
After Width: | Height: | Size: 108 KiB |
|
After Width: | Height: | Size: 111 KiB |
|
After Width: | Height: | Size: 106 KiB |
|
After Width: | Height: | Size: 100 KiB |
@@ -0,0 +1,200 @@
|
||||
{
|
||||
"source": "0e83157e09d52e6152df91208e41693b62da2d46",
|
||||
"profile": "dev/unoptimized",
|
||||
"target": "x86_64-pc-windows-gnullvm",
|
||||
"binary": {
|
||||
"bytes": 119452672,
|
||||
"sha256": "e9cce9355525ecdc59bfae12608b1e0272167acef5a86b25368ef547e08886ff"
|
||||
},
|
||||
"runtime": {
|
||||
"bytes": 190976,
|
||||
"sha256": "f45604a12e8bcd839fd86f667c1be1cc7c4f9da2b3c69ff381ac708f0e1ae7d4"
|
||||
},
|
||||
"baseline": {
|
||||
"expected-diagnostics.json": {
|
||||
"bytes": 288,
|
||||
"sha256": "3700393d76b940cfc076bf52861bd7b1f43370f8eabce3594531bd0bf1fc851e"
|
||||
},
|
||||
"model.json": {
|
||||
"bytes": 134520,
|
||||
"sha256": "ef0ef4006c3e09d5db6e1b621256b3f7d6642f3a7b09cc34607cfbcca830c727"
|
||||
},
|
||||
"model.rs": {
|
||||
"bytes": 28776,
|
||||
"sha256": "ddc2d92b0d7699a4cadfbb35ae379f0a68d17f4f5d7df82b4b1afcf8d5425fbe"
|
||||
},
|
||||
"project.arcadia": {
|
||||
"bytes": 1958,
|
||||
"sha256": "b2674e6bf77cfe0f6f0ba79c81d2e96d92f39c02ca2c6266d80e91723bfb9fda"
|
||||
},
|
||||
"README.md": {
|
||||
"bytes": 11137,
|
||||
"sha256": "113cfb1cf38a98b51bff60442d86a35d636a3d80ef206bece7d53d0aae67f2d5"
|
||||
},
|
||||
"traceability.arcadia": {
|
||||
"bytes": 28041,
|
||||
"sha256": "474bd28d955ff7af7722f6e9a23220d816879e3f46202e79a233544b9c593116"
|
||||
},
|
||||
"transition-before.json": {
|
||||
"bytes": 35801,
|
||||
"sha256": "2253e6434f741687e22327c37d520ed15c043bc36025498650bc2366bb6a874d"
|
||||
},
|
||||
"transition-request.json": {
|
||||
"bytes": 4276,
|
||||
"sha256": "43b9a22e5f95ad3bc0ebd2478ead0e14406854abc989ae94ded9367b013d812a"
|
||||
},
|
||||
"evidence/repair-check.md": {
|
||||
"bytes": 1419,
|
||||
"sha256": "f4db17bdca4ecbb1bf0caef01b2da5f1f7f798ab3152b648ce6dd8696a6a68e5"
|
||||
},
|
||||
"oa/capabilities.arcadia": {
|
||||
"bytes": 630,
|
||||
"sha256": "26a3d9b615a3251ff010e0b47127f2d16bc2dcd45ed95967208b0076d725843a"
|
||||
},
|
||||
"oa/model.arcadia": {
|
||||
"bytes": 531,
|
||||
"sha256": "069a5eaaf525089935cc9d73ae7b916866ed78c6534705d75739650ecdea7ada"
|
||||
},
|
||||
"oa/participants.arcadia": {
|
||||
"bytes": 1580,
|
||||
"sha256": "591a75a9ecad280302be4d4ae0171ad616377ed11ead5e233848ca2dc0a71819"
|
||||
},
|
||||
"oa/types.arcadia": {
|
||||
"bytes": 554,
|
||||
"sha256": "f02c391d584674c879f662a418abba3a220f1fee88471ca49322ac9873de628d"
|
||||
},
|
||||
"sa/capabilities.arcadia": {
|
||||
"bytes": 630,
|
||||
"sha256": "81706a0ca9d7db2aa0350888b9c00d853885185db2e6b90557d3d51a11c3d645"
|
||||
},
|
||||
"sa/model.arcadia": {
|
||||
"bytes": 531,
|
||||
"sha256": "805b90262e27090ae7da81a51bcefa49c97fb0b3d3220b4a72323b4c4351c395"
|
||||
},
|
||||
"sa/participants.arcadia": {
|
||||
"bytes": 3604,
|
||||
"sha256": "ca144d6a8f45fe720b5d18c7b59c7671444baa8c37e5ce9117bcba34b3a6aa84"
|
||||
},
|
||||
"sa/types.arcadia": {
|
||||
"bytes": 903,
|
||||
"sha256": "540ddbc2bcd0ccf45298e3ea5660637341aff63ff65fd87ac2f26469d1adc064"
|
||||
},
|
||||
"views/diagram_oa_allocation_view.arcadia": {
|
||||
"bytes": 1786,
|
||||
"sha256": "c45d7467839219d894804c1ef2d22ff4d4a5a84a6a273c526bafd4c1facde624"
|
||||
},
|
||||
"views/diagram_sa_allocation_view.arcadia": {
|
||||
"bytes": 1797,
|
||||
"sha256": "352a3ca745517592b5c9b1239b5770f62f0466a329a91fd03457ef2b53c06ed6"
|
||||
},
|
||||
"views/diagram_sa_capability_view.arcadia": {
|
||||
"bytes": 1286,
|
||||
"sha256": "8f18fcccbcddcf3c1ea0ffe727b5b23b77fc148c5da4fde953abe681e4c20cd2"
|
||||
},
|
||||
"views/diagram_sa_service_view.arcadia": {
|
||||
"bytes": 1960,
|
||||
"sha256": "4c72cb7593d9c4be8d2600b0656a7a3a6ce84c45bb2f3e58a4ee5ae3bf91913c"
|
||||
},
|
||||
"views/diagram_sa_state_view.arcadia": {
|
||||
"bytes": 1576,
|
||||
"sha256": "dd1bea81ac7dc549a53f9b190be6f13052e00ede345bd180444cc31edb892230"
|
||||
},
|
||||
"oa/activities/activity_oa_restore_work.arcadia": {
|
||||
"bytes": 1130,
|
||||
"sha256": "21cbd7176af8fad68453306f2371ff03e127a994b8796cdf044567332de9686f"
|
||||
},
|
||||
"oa/behavior/process_oa_assessment_procedure.arcadia": {
|
||||
"bytes": 550,
|
||||
"sha256": "23cabc213c264a16c8595414db6acb09248c1cef9cd699f1b0316e5bb82c062a"
|
||||
},
|
||||
"oa/behavior/process_oa_field_procedure.arcadia": {
|
||||
"bytes": 1178,
|
||||
"sha256": "9c52086759b7344b4809ceb8d372f65647b16fc24153a03b887faa378c37fe96"
|
||||
},
|
||||
"oa/behavior/process_oa_response.arcadia": {
|
||||
"bytes": 2560,
|
||||
"sha256": "675798bd19e6b40d03e7076b0e59b110cdaaab7b6d16c47c3ac80fa960072e84"
|
||||
},
|
||||
"oa/behavior/scenario_oa_conversation.arcadia": {
|
||||
"bytes": 1515,
|
||||
"sha256": "e217e5394a0771dc16206ed9437a231da27905d2f19be64b3f48281c0a32fb6b"
|
||||
},
|
||||
"oa/behavior/scenario_oa_full_scenario.arcadia": {
|
||||
"bytes": 1121,
|
||||
"sha256": "c5a285f2d7c61bd2a136107f267fbf9cddb1cba3f63ff36a6f53f7ab98f33df5"
|
||||
},
|
||||
"oa/behavior/state_machine_oa_monitor.arcadia": {
|
||||
"bytes": 1358,
|
||||
"sha256": "e7349e1e5336282eed3f5a103129db33d3ae4ed500788ee7129e8fc193ac57f6"
|
||||
},
|
||||
"sa/behavior/process_sa_assessment_procedure.arcadia": {
|
||||
"bytes": 559,
|
||||
"sha256": "5c414fbdaabf9f9e402b0441fcacf1cacf4dbbc6c822162f028de35abf59be2d"
|
||||
},
|
||||
"sa/behavior/process_sa_field_procedure.arcadia": {
|
||||
"bytes": 1187,
|
||||
"sha256": "ece846fdf93857e71a9ab0efcbdf64a5c41c71180f62afa3f79077fffb53b8f2"
|
||||
},
|
||||
"sa/behavior/process_sa_response.arcadia": {
|
||||
"bytes": 2569,
|
||||
"sha256": "af7fdda280a917cf626f6e077162d481f9aaad280f8e81330c07d7fe384b1c52"
|
||||
},
|
||||
"sa/behavior/scenario_sa_conversation.arcadia": {
|
||||
"bytes": 1847,
|
||||
"sha256": "01339699ec3ee409418d9bb232542f2bcd9419f1e67b183e77700c56bb9f71d2"
|
||||
},
|
||||
"sa/behavior/scenario_sa_full_scenario.arcadia": {
|
||||
"bytes": 1116,
|
||||
"sha256": "5dce6b00a3a441162e8dee3e23d9ca5ab7bed4a24de669b1fba03664a3086dda"
|
||||
},
|
||||
"sa/behavior/state_machine_sa_monitor.arcadia": {
|
||||
"bytes": 1358,
|
||||
"sha256": "17dbcfa5bbfd10fc8e23a325fc950ce853c219b4aa89c74f96278cbb3f34acc8"
|
||||
},
|
||||
"sa/functions/function_sa_audit_thresholds.arcadia": {
|
||||
"bytes": 280,
|
||||
"sha256": "27f798f78f36e72b38edab3725af2feb0eaa010fd52a60b5c6b6bef57ad3b686"
|
||||
},
|
||||
"sa/functions/function_sa_restore_work.arcadia": {
|
||||
"bytes": 2251,
|
||||
"sha256": "357c6acb80f86b4e8d8f5c98f9f79d140f85fbe09f3406b41b7ac6eba464ec8c"
|
||||
}
|
||||
},
|
||||
"fresh_companions": {
|
||||
"expected-diagnostics.json": {
|
||||
"bytes": 288,
|
||||
"sha256": "3700393d76b940cfc076bf52861bd7b1f43370f8eabce3594531bd0bf1fc851e"
|
||||
},
|
||||
"model.json": {
|
||||
"bytes": 134520,
|
||||
"sha256": "ef0ef4006c3e09d5db6e1b621256b3f7d6642f3a7b09cc34607cfbcca830c727"
|
||||
},
|
||||
"model.rs": {
|
||||
"bytes": 28776,
|
||||
"sha256": "ddc2d92b0d7699a4cadfbb35ae379f0a68d17f4f5d7df82b4b1afcf8d5425fbe"
|
||||
},
|
||||
"README.md": {
|
||||
"bytes": 11137,
|
||||
"sha256": "113cfb1cf38a98b51bff60442d86a35d636a3d80ef206bece7d53d0aae67f2d5"
|
||||
},
|
||||
"transition-before.json": {
|
||||
"bytes": 35801,
|
||||
"sha256": "2253e6434f741687e22327c37d520ed15c043bc36025498650bc2366bb6a874d"
|
||||
},
|
||||
"transition-request.json": {
|
||||
"bytes": 4276,
|
||||
"sha256": "43b9a22e5f95ad3bc0ebd2478ead0e14406854abc989ae94ded9367b013d812a"
|
||||
},
|
||||
"evidence/repair-check.md": {
|
||||
"bytes": 1419,
|
||||
"sha256": "f4db17bdca4ecbb1bf0caef01b2da5f1f7f798ab3152b648ce6dd8696a6a68e5"
|
||||
}
|
||||
},
|
||||
"declared_rename": {
|
||||
"activity": "61f7bbfb-74a4-5540-9182-2583dfb27a49",
|
||||
"before": "Assess pressure alarm",
|
||||
"after": "Assess pressure alarm QA46"
|
||||
},
|
||||
"external_dependency": "oa/activities/activity_oa_restore_work.arcadia",
|
||||
"external_comment": "\n// native #46 external-edit probe\n"
|
||||
}
|
||||
@@ -0,0 +1,156 @@
|
||||
{
|
||||
"status": "PASS",
|
||||
"phase": "collision",
|
||||
"folder": "C:\\ar-save-01a0d717\\.local\\native46\\collision-a",
|
||||
"files": {
|
||||
"expected-diagnostics.json": {
|
||||
"bytes": 288,
|
||||
"sha256": "3700393d76b940cfc076bf52861bd7b1f43370f8eabce3594531bd0bf1fc851e"
|
||||
},
|
||||
"model.json": {
|
||||
"bytes": 134520,
|
||||
"sha256": "ef0ef4006c3e09d5db6e1b621256b3f7d6642f3a7b09cc34607cfbcca830c727"
|
||||
},
|
||||
"model.rs": {
|
||||
"bytes": 28776,
|
||||
"sha256": "ddc2d92b0d7699a4cadfbb35ae379f0a68d17f4f5d7df82b4b1afcf8d5425fbe"
|
||||
},
|
||||
"project.arcadia": {
|
||||
"bytes": 1958,
|
||||
"sha256": "b2674e6bf77cfe0f6f0ba79c81d2e96d92f39c02ca2c6266d80e91723bfb9fda"
|
||||
},
|
||||
"README.md": {
|
||||
"bytes": 11137,
|
||||
"sha256": "113cfb1cf38a98b51bff60442d86a35d636a3d80ef206bece7d53d0aae67f2d5"
|
||||
},
|
||||
"traceability.arcadia": {
|
||||
"bytes": 28041,
|
||||
"sha256": "474bd28d955ff7af7722f6e9a23220d816879e3f46202e79a233544b9c593116"
|
||||
},
|
||||
"transition-before.json": {
|
||||
"bytes": 35801,
|
||||
"sha256": "2253e6434f741687e22327c37d520ed15c043bc36025498650bc2366bb6a874d"
|
||||
},
|
||||
"transition-request.json": {
|
||||
"bytes": 4276,
|
||||
"sha256": "43b9a22e5f95ad3bc0ebd2478ead0e14406854abc989ae94ded9367b013d812a"
|
||||
},
|
||||
"evidence/repair-check.md": {
|
||||
"bytes": 1419,
|
||||
"sha256": "f4db17bdca4ecbb1bf0caef01b2da5f1f7f798ab3152b648ce6dd8696a6a68e5"
|
||||
},
|
||||
"oa/capabilities.arcadia": {
|
||||
"bytes": 630,
|
||||
"sha256": "26a3d9b615a3251ff010e0b47127f2d16bc2dcd45ed95967208b0076d725843a"
|
||||
},
|
||||
"oa/model.arcadia": {
|
||||
"bytes": 531,
|
||||
"sha256": "069a5eaaf525089935cc9d73ae7b916866ed78c6534705d75739650ecdea7ada"
|
||||
},
|
||||
"oa/participants.arcadia": {
|
||||
"bytes": 1580,
|
||||
"sha256": "591a75a9ecad280302be4d4ae0171ad616377ed11ead5e233848ca2dc0a71819"
|
||||
},
|
||||
"oa/types.arcadia": {
|
||||
"bytes": 554,
|
||||
"sha256": "f02c391d584674c879f662a418abba3a220f1fee88471ca49322ac9873de628d"
|
||||
},
|
||||
"sa/capabilities.arcadia": {
|
||||
"bytes": 630,
|
||||
"sha256": "81706a0ca9d7db2aa0350888b9c00d853885185db2e6b90557d3d51a11c3d645"
|
||||
},
|
||||
"sa/model.arcadia": {
|
||||
"bytes": 531,
|
||||
"sha256": "805b90262e27090ae7da81a51bcefa49c97fb0b3d3220b4a72323b4c4351c395"
|
||||
},
|
||||
"sa/participants.arcadia": {
|
||||
"bytes": 3604,
|
||||
"sha256": "ca144d6a8f45fe720b5d18c7b59c7671444baa8c37e5ce9117bcba34b3a6aa84"
|
||||
},
|
||||
"sa/types.arcadia": {
|
||||
"bytes": 903,
|
||||
"sha256": "540ddbc2bcd0ccf45298e3ea5660637341aff63ff65fd87ac2f26469d1adc064"
|
||||
},
|
||||
"views/diagram_oa_allocation_view.arcadia": {
|
||||
"bytes": 1786,
|
||||
"sha256": "c45d7467839219d894804c1ef2d22ff4d4a5a84a6a273c526bafd4c1facde624"
|
||||
},
|
||||
"views/diagram_sa_allocation_view.arcadia": {
|
||||
"bytes": 1797,
|
||||
"sha256": "352a3ca745517592b5c9b1239b5770f62f0466a329a91fd03457ef2b53c06ed6"
|
||||
},
|
||||
"views/diagram_sa_capability_view.arcadia": {
|
||||
"bytes": 1286,
|
||||
"sha256": "8f18fcccbcddcf3c1ea0ffe727b5b23b77fc148c5da4fde953abe681e4c20cd2"
|
||||
},
|
||||
"views/diagram_sa_service_view.arcadia": {
|
||||
"bytes": 1960,
|
||||
"sha256": "4c72cb7593d9c4be8d2600b0656a7a3a6ce84c45bb2f3e58a4ee5ae3bf91913c"
|
||||
},
|
||||
"views/diagram_sa_state_view.arcadia": {
|
||||
"bytes": 1576,
|
||||
"sha256": "dd1bea81ac7dc549a53f9b190be6f13052e00ede345bd180444cc31edb892230"
|
||||
},
|
||||
"oa/activities/activity_oa_restore_work.arcadia": {
|
||||
"bytes": 1130,
|
||||
"sha256": "21cbd7176af8fad68453306f2371ff03e127a994b8796cdf044567332de9686f"
|
||||
},
|
||||
"oa/behavior/process_oa_assessment_procedure.arcadia": {
|
||||
"bytes": 550,
|
||||
"sha256": "23cabc213c264a16c8595414db6acb09248c1cef9cd699f1b0316e5bb82c062a"
|
||||
},
|
||||
"oa/behavior/process_oa_field_procedure.arcadia": {
|
||||
"bytes": 1178,
|
||||
"sha256": "9c52086759b7344b4809ceb8d372f65647b16fc24153a03b887faa378c37fe96"
|
||||
},
|
||||
"oa/behavior/process_oa_response.arcadia": {
|
||||
"bytes": 2560,
|
||||
"sha256": "675798bd19e6b40d03e7076b0e59b110cdaaab7b6d16c47c3ac80fa960072e84"
|
||||
},
|
||||
"oa/behavior/scenario_oa_conversation.arcadia": {
|
||||
"bytes": 1515,
|
||||
"sha256": "e217e5394a0771dc16206ed9437a231da27905d2f19be64b3f48281c0a32fb6b"
|
||||
},
|
||||
"oa/behavior/scenario_oa_full_scenario.arcadia": {
|
||||
"bytes": 1121,
|
||||
"sha256": "c5a285f2d7c61bd2a136107f267fbf9cddb1cba3f63ff36a6f53f7ab98f33df5"
|
||||
},
|
||||
"oa/behavior/state_machine_oa_monitor.arcadia": {
|
||||
"bytes": 1358,
|
||||
"sha256": "e7349e1e5336282eed3f5a103129db33d3ae4ed500788ee7129e8fc193ac57f6"
|
||||
},
|
||||
"sa/behavior/process_sa_assessment_procedure.arcadia": {
|
||||
"bytes": 559,
|
||||
"sha256": "5c414fbdaabf9f9e402b0441fcacf1cacf4dbbc6c822162f028de35abf59be2d"
|
||||
},
|
||||
"sa/behavior/process_sa_field_procedure.arcadia": {
|
||||
"bytes": 1187,
|
||||
"sha256": "ece846fdf93857e71a9ab0efcbdf64a5c41c71180f62afa3f79077fffb53b8f2"
|
||||
},
|
||||
"sa/behavior/process_sa_response.arcadia": {
|
||||
"bytes": 2569,
|
||||
"sha256": "af7fdda280a917cf626f6e077162d481f9aaad280f8e81330c07d7fe384b1c52"
|
||||
},
|
||||
"sa/behavior/scenario_sa_conversation.arcadia": {
|
||||
"bytes": 1847,
|
||||
"sha256": "01339699ec3ee409418d9bb232542f2bcd9419f1e67b183e77700c56bb9f71d2"
|
||||
},
|
||||
"sa/behavior/scenario_sa_full_scenario.arcadia": {
|
||||
"bytes": 1116,
|
||||
"sha256": "5dce6b00a3a441162e8dee3e23d9ca5ab7bed4a24de669b1fba03664a3086dda"
|
||||
},
|
||||
"sa/behavior/state_machine_sa_monitor.arcadia": {
|
||||
"bytes": 1358,
|
||||
"sha256": "17dbcfa5bbfd10fc8e23a325fc950ce853c219b4aa89c74f96278cbb3f34acc8"
|
||||
},
|
||||
"sa/functions/function_sa_audit_thresholds.arcadia": {
|
||||
"bytes": 280,
|
||||
"sha256": "27f798f78f36e72b38edab3725af2feb0eaa010fd52a60b5c6b6bef57ad3b686"
|
||||
},
|
||||
"sa/functions/function_sa_restore_work.arcadia": {
|
||||
"bytes": 2251,
|
||||
"sha256": "357c6acb80f86b4e8d8f5c98f9f79d140f85fbe09f3406b41b7ac6eba464ec8c"
|
||||
}
|
||||
},
|
||||
"scope": "Every byte and relative filename, including seven companion files, equals the independently declared original bundle plus only the phase-specific activity rename or parent-injected valid comment."
|
||||
}
|
||||
@@ -0,0 +1,156 @@
|
||||
{
|
||||
"status": "PASS",
|
||||
"phase": "external-before",
|
||||
"folder": "C:\\ar-save-01a0d717\\.local\\native46\\external-b",
|
||||
"files": {
|
||||
"expected-diagnostics.json": {
|
||||
"bytes": 288,
|
||||
"sha256": "3700393d76b940cfc076bf52861bd7b1f43370f8eabce3594531bd0bf1fc851e"
|
||||
},
|
||||
"model.json": {
|
||||
"bytes": 134520,
|
||||
"sha256": "ef0ef4006c3e09d5db6e1b621256b3f7d6642f3a7b09cc34607cfbcca830c727"
|
||||
},
|
||||
"model.rs": {
|
||||
"bytes": 28776,
|
||||
"sha256": "ddc2d92b0d7699a4cadfbb35ae379f0a68d17f4f5d7df82b4b1afcf8d5425fbe"
|
||||
},
|
||||
"project.arcadia": {
|
||||
"bytes": 1958,
|
||||
"sha256": "b2674e6bf77cfe0f6f0ba79c81d2e96d92f39c02ca2c6266d80e91723bfb9fda"
|
||||
},
|
||||
"README.md": {
|
||||
"bytes": 11137,
|
||||
"sha256": "113cfb1cf38a98b51bff60442d86a35d636a3d80ef206bece7d53d0aae67f2d5"
|
||||
},
|
||||
"traceability.arcadia": {
|
||||
"bytes": 28041,
|
||||
"sha256": "474bd28d955ff7af7722f6e9a23220d816879e3f46202e79a233544b9c593116"
|
||||
},
|
||||
"transition-before.json": {
|
||||
"bytes": 35801,
|
||||
"sha256": "2253e6434f741687e22327c37d520ed15c043bc36025498650bc2366bb6a874d"
|
||||
},
|
||||
"transition-request.json": {
|
||||
"bytes": 4276,
|
||||
"sha256": "43b9a22e5f95ad3bc0ebd2478ead0e14406854abc989ae94ded9367b013d812a"
|
||||
},
|
||||
"evidence/repair-check.md": {
|
||||
"bytes": 1419,
|
||||
"sha256": "f4db17bdca4ecbb1bf0caef01b2da5f1f7f798ab3152b648ce6dd8696a6a68e5"
|
||||
},
|
||||
"oa/capabilities.arcadia": {
|
||||
"bytes": 630,
|
||||
"sha256": "26a3d9b615a3251ff010e0b47127f2d16bc2dcd45ed95967208b0076d725843a"
|
||||
},
|
||||
"oa/model.arcadia": {
|
||||
"bytes": 531,
|
||||
"sha256": "069a5eaaf525089935cc9d73ae7b916866ed78c6534705d75739650ecdea7ada"
|
||||
},
|
||||
"oa/participants.arcadia": {
|
||||
"bytes": 1580,
|
||||
"sha256": "591a75a9ecad280302be4d4ae0171ad616377ed11ead5e233848ca2dc0a71819"
|
||||
},
|
||||
"oa/types.arcadia": {
|
||||
"bytes": 554,
|
||||
"sha256": "f02c391d584674c879f662a418abba3a220f1fee88471ca49322ac9873de628d"
|
||||
},
|
||||
"sa/capabilities.arcadia": {
|
||||
"bytes": 630,
|
||||
"sha256": "81706a0ca9d7db2aa0350888b9c00d853885185db2e6b90557d3d51a11c3d645"
|
||||
},
|
||||
"sa/model.arcadia": {
|
||||
"bytes": 531,
|
||||
"sha256": "805b90262e27090ae7da81a51bcefa49c97fb0b3d3220b4a72323b4c4351c395"
|
||||
},
|
||||
"sa/participants.arcadia": {
|
||||
"bytes": 3604,
|
||||
"sha256": "ca144d6a8f45fe720b5d18c7b59c7671444baa8c37e5ce9117bcba34b3a6aa84"
|
||||
},
|
||||
"sa/types.arcadia": {
|
||||
"bytes": 903,
|
||||
"sha256": "540ddbc2bcd0ccf45298e3ea5660637341aff63ff65fd87ac2f26469d1adc064"
|
||||
},
|
||||
"views/diagram_oa_allocation_view.arcadia": {
|
||||
"bytes": 1786,
|
||||
"sha256": "c45d7467839219d894804c1ef2d22ff4d4a5a84a6a273c526bafd4c1facde624"
|
||||
},
|
||||
"views/diagram_sa_allocation_view.arcadia": {
|
||||
"bytes": 1797,
|
||||
"sha256": "352a3ca745517592b5c9b1239b5770f62f0466a329a91fd03457ef2b53c06ed6"
|
||||
},
|
||||
"views/diagram_sa_capability_view.arcadia": {
|
||||
"bytes": 1286,
|
||||
"sha256": "8f18fcccbcddcf3c1ea0ffe727b5b23b77fc148c5da4fde953abe681e4c20cd2"
|
||||
},
|
||||
"views/diagram_sa_service_view.arcadia": {
|
||||
"bytes": 1960,
|
||||
"sha256": "4c72cb7593d9c4be8d2600b0656a7a3a6ce84c45bb2f3e58a4ee5ae3bf91913c"
|
||||
},
|
||||
"views/diagram_sa_state_view.arcadia": {
|
||||
"bytes": 1576,
|
||||
"sha256": "dd1bea81ac7dc549a53f9b190be6f13052e00ede345bd180444cc31edb892230"
|
||||
},
|
||||
"oa/activities/activity_oa_restore_work.arcadia": {
|
||||
"bytes": 1130,
|
||||
"sha256": "21cbd7176af8fad68453306f2371ff03e127a994b8796cdf044567332de9686f"
|
||||
},
|
||||
"oa/behavior/process_oa_assessment_procedure.arcadia": {
|
||||
"bytes": 550,
|
||||
"sha256": "23cabc213c264a16c8595414db6acb09248c1cef9cd699f1b0316e5bb82c062a"
|
||||
},
|
||||
"oa/behavior/process_oa_field_procedure.arcadia": {
|
||||
"bytes": 1178,
|
||||
"sha256": "9c52086759b7344b4809ceb8d372f65647b16fc24153a03b887faa378c37fe96"
|
||||
},
|
||||
"oa/behavior/process_oa_response.arcadia": {
|
||||
"bytes": 2560,
|
||||
"sha256": "675798bd19e6b40d03e7076b0e59b110cdaaab7b6d16c47c3ac80fa960072e84"
|
||||
},
|
||||
"oa/behavior/scenario_oa_conversation.arcadia": {
|
||||
"bytes": 1515,
|
||||
"sha256": "e217e5394a0771dc16206ed9437a231da27905d2f19be64b3f48281c0a32fb6b"
|
||||
},
|
||||
"oa/behavior/scenario_oa_full_scenario.arcadia": {
|
||||
"bytes": 1121,
|
||||
"sha256": "c5a285f2d7c61bd2a136107f267fbf9cddb1cba3f63ff36a6f53f7ab98f33df5"
|
||||
},
|
||||
"oa/behavior/state_machine_oa_monitor.arcadia": {
|
||||
"bytes": 1358,
|
||||
"sha256": "e7349e1e5336282eed3f5a103129db33d3ae4ed500788ee7129e8fc193ac57f6"
|
||||
},
|
||||
"sa/behavior/process_sa_assessment_procedure.arcadia": {
|
||||
"bytes": 559,
|
||||
"sha256": "5c414fbdaabf9f9e402b0441fcacf1cacf4dbbc6c822162f028de35abf59be2d"
|
||||
},
|
||||
"sa/behavior/process_sa_field_procedure.arcadia": {
|
||||
"bytes": 1187,
|
||||
"sha256": "ece846fdf93857e71a9ab0efcbdf64a5c41c71180f62afa3f79077fffb53b8f2"
|
||||
},
|
||||
"sa/behavior/process_sa_response.arcadia": {
|
||||
"bytes": 2569,
|
||||
"sha256": "af7fdda280a917cf626f6e077162d481f9aaad280f8e81330c07d7fe384b1c52"
|
||||
},
|
||||
"sa/behavior/scenario_sa_conversation.arcadia": {
|
||||
"bytes": 1847,
|
||||
"sha256": "01339699ec3ee409418d9bb232542f2bcd9419f1e67b183e77700c56bb9f71d2"
|
||||
},
|
||||
"sa/behavior/scenario_sa_full_scenario.arcadia": {
|
||||
"bytes": 1116,
|
||||
"sha256": "5dce6b00a3a441162e8dee3e23d9ca5ab7bed4a24de669b1fba03664a3086dda"
|
||||
},
|
||||
"sa/behavior/state_machine_sa_monitor.arcadia": {
|
||||
"bytes": 1358,
|
||||
"sha256": "17dbcfa5bbfd10fc8e23a325fc950ce853c219b4aa89c74f96278cbb3f34acc8"
|
||||
},
|
||||
"sa/functions/function_sa_audit_thresholds.arcadia": {
|
||||
"bytes": 280,
|
||||
"sha256": "27f798f78f36e72b38edab3725af2feb0eaa010fd52a60b5c6b6bef57ad3b686"
|
||||
},
|
||||
"sa/functions/function_sa_restore_work.arcadia": {
|
||||
"bytes": 2251,
|
||||
"sha256": "357c6acb80f86b4e8d8f5c98f9f79d140f85fbe09f3406b41b7ac6eba464ec8c"
|
||||
}
|
||||
},
|
||||
"scope": "Every byte and relative filename, including seven companion files, equals the independently declared original bundle plus only the phase-specific activity rename or parent-injected valid comment."
|
||||
}
|
||||
@@ -0,0 +1,156 @@
|
||||
{
|
||||
"status": "PASS",
|
||||
"phase": "external-recovered",
|
||||
"folder": "C:\\ar-save-01a0d717\\.local\\native46\\external-b",
|
||||
"files": {
|
||||
"expected-diagnostics.json": {
|
||||
"bytes": 288,
|
||||
"sha256": "3700393d76b940cfc076bf52861bd7b1f43370f8eabce3594531bd0bf1fc851e"
|
||||
},
|
||||
"model.json": {
|
||||
"bytes": 134520,
|
||||
"sha256": "ef0ef4006c3e09d5db6e1b621256b3f7d6642f3a7b09cc34607cfbcca830c727"
|
||||
},
|
||||
"model.rs": {
|
||||
"bytes": 28776,
|
||||
"sha256": "ddc2d92b0d7699a4cadfbb35ae379f0a68d17f4f5d7df82b4b1afcf8d5425fbe"
|
||||
},
|
||||
"project.arcadia": {
|
||||
"bytes": 1958,
|
||||
"sha256": "b2674e6bf77cfe0f6f0ba79c81d2e96d92f39c02ca2c6266d80e91723bfb9fda"
|
||||
},
|
||||
"README.md": {
|
||||
"bytes": 11137,
|
||||
"sha256": "113cfb1cf38a98b51bff60442d86a35d636a3d80ef206bece7d53d0aae67f2d5"
|
||||
},
|
||||
"traceability.arcadia": {
|
||||
"bytes": 28041,
|
||||
"sha256": "474bd28d955ff7af7722f6e9a23220d816879e3f46202e79a233544b9c593116"
|
||||
},
|
||||
"transition-before.json": {
|
||||
"bytes": 35801,
|
||||
"sha256": "2253e6434f741687e22327c37d520ed15c043bc36025498650bc2366bb6a874d"
|
||||
},
|
||||
"transition-request.json": {
|
||||
"bytes": 4276,
|
||||
"sha256": "43b9a22e5f95ad3bc0ebd2478ead0e14406854abc989ae94ded9367b013d812a"
|
||||
},
|
||||
"evidence/repair-check.md": {
|
||||
"bytes": 1419,
|
||||
"sha256": "f4db17bdca4ecbb1bf0caef01b2da5f1f7f798ab3152b648ce6dd8696a6a68e5"
|
||||
},
|
||||
"oa/capabilities.arcadia": {
|
||||
"bytes": 630,
|
||||
"sha256": "26a3d9b615a3251ff010e0b47127f2d16bc2dcd45ed95967208b0076d725843a"
|
||||
},
|
||||
"oa/model.arcadia": {
|
||||
"bytes": 531,
|
||||
"sha256": "069a5eaaf525089935cc9d73ae7b916866ed78c6534705d75739650ecdea7ada"
|
||||
},
|
||||
"oa/participants.arcadia": {
|
||||
"bytes": 1580,
|
||||
"sha256": "591a75a9ecad280302be4d4ae0171ad616377ed11ead5e233848ca2dc0a71819"
|
||||
},
|
||||
"oa/types.arcadia": {
|
||||
"bytes": 554,
|
||||
"sha256": "f02c391d584674c879f662a418abba3a220f1fee88471ca49322ac9873de628d"
|
||||
},
|
||||
"sa/capabilities.arcadia": {
|
||||
"bytes": 630,
|
||||
"sha256": "81706a0ca9d7db2aa0350888b9c00d853885185db2e6b90557d3d51a11c3d645"
|
||||
},
|
||||
"sa/model.arcadia": {
|
||||
"bytes": 531,
|
||||
"sha256": "805b90262e27090ae7da81a51bcefa49c97fb0b3d3220b4a72323b4c4351c395"
|
||||
},
|
||||
"sa/participants.arcadia": {
|
||||
"bytes": 3604,
|
||||
"sha256": "ca144d6a8f45fe720b5d18c7b59c7671444baa8c37e5ce9117bcba34b3a6aa84"
|
||||
},
|
||||
"sa/types.arcadia": {
|
||||
"bytes": 903,
|
||||
"sha256": "540ddbc2bcd0ccf45298e3ea5660637341aff63ff65fd87ac2f26469d1adc064"
|
||||
},
|
||||
"views/diagram_oa_allocation_view.arcadia": {
|
||||
"bytes": 1786,
|
||||
"sha256": "c45d7467839219d894804c1ef2d22ff4d4a5a84a6a273c526bafd4c1facde624"
|
||||
},
|
||||
"views/diagram_sa_allocation_view.arcadia": {
|
||||
"bytes": 1797,
|
||||
"sha256": "352a3ca745517592b5c9b1239b5770f62f0466a329a91fd03457ef2b53c06ed6"
|
||||
},
|
||||
"views/diagram_sa_capability_view.arcadia": {
|
||||
"bytes": 1286,
|
||||
"sha256": "8f18fcccbcddcf3c1ea0ffe727b5b23b77fc148c5da4fde953abe681e4c20cd2"
|
||||
},
|
||||
"views/diagram_sa_service_view.arcadia": {
|
||||
"bytes": 1960,
|
||||
"sha256": "4c72cb7593d9c4be8d2600b0656a7a3a6ce84c45bb2f3e58a4ee5ae3bf91913c"
|
||||
},
|
||||
"views/diagram_sa_state_view.arcadia": {
|
||||
"bytes": 1576,
|
||||
"sha256": "dd1bea81ac7dc549a53f9b190be6f13052e00ede345bd180444cc31edb892230"
|
||||
},
|
||||
"oa/activities/activity_oa_restore_work.arcadia": {
|
||||
"bytes": 1130,
|
||||
"sha256": "21cbd7176af8fad68453306f2371ff03e127a994b8796cdf044567332de9686f"
|
||||
},
|
||||
"oa/behavior/process_oa_assessment_procedure.arcadia": {
|
||||
"bytes": 550,
|
||||
"sha256": "23cabc213c264a16c8595414db6acb09248c1cef9cd699f1b0316e5bb82c062a"
|
||||
},
|
||||
"oa/behavior/process_oa_field_procedure.arcadia": {
|
||||
"bytes": 1178,
|
||||
"sha256": "9c52086759b7344b4809ceb8d372f65647b16fc24153a03b887faa378c37fe96"
|
||||
},
|
||||
"oa/behavior/process_oa_response.arcadia": {
|
||||
"bytes": 2560,
|
||||
"sha256": "675798bd19e6b40d03e7076b0e59b110cdaaab7b6d16c47c3ac80fa960072e84"
|
||||
},
|
||||
"oa/behavior/scenario_oa_conversation.arcadia": {
|
||||
"bytes": 1515,
|
||||
"sha256": "e217e5394a0771dc16206ed9437a231da27905d2f19be64b3f48281c0a32fb6b"
|
||||
},
|
||||
"oa/behavior/scenario_oa_full_scenario.arcadia": {
|
||||
"bytes": 1121,
|
||||
"sha256": "c5a285f2d7c61bd2a136107f267fbf9cddb1cba3f63ff36a6f53f7ab98f33df5"
|
||||
},
|
||||
"oa/behavior/state_machine_oa_monitor.arcadia": {
|
||||
"bytes": 1358,
|
||||
"sha256": "e7349e1e5336282eed3f5a103129db33d3ae4ed500788ee7129e8fc193ac57f6"
|
||||
},
|
||||
"sa/behavior/process_sa_assessment_procedure.arcadia": {
|
||||
"bytes": 559,
|
||||
"sha256": "5c414fbdaabf9f9e402b0441fcacf1cacf4dbbc6c822162f028de35abf59be2d"
|
||||
},
|
||||
"sa/behavior/process_sa_field_procedure.arcadia": {
|
||||
"bytes": 1187,
|
||||
"sha256": "ece846fdf93857e71a9ab0efcbdf64a5c41c71180f62afa3f79077fffb53b8f2"
|
||||
},
|
||||
"sa/behavior/process_sa_response.arcadia": {
|
||||
"bytes": 2569,
|
||||
"sha256": "af7fdda280a917cf626f6e077162d481f9aaad280f8e81330c07d7fe384b1c52"
|
||||
},
|
||||
"sa/behavior/scenario_sa_conversation.arcadia": {
|
||||
"bytes": 1847,
|
||||
"sha256": "01339699ec3ee409418d9bb232542f2bcd9419f1e67b183e77700c56bb9f71d2"
|
||||
},
|
||||
"sa/behavior/scenario_sa_full_scenario.arcadia": {
|
||||
"bytes": 1116,
|
||||
"sha256": "5dce6b00a3a441162e8dee3e23d9ca5ab7bed4a24de669b1fba03664a3086dda"
|
||||
},
|
||||
"sa/behavior/state_machine_sa_monitor.arcadia": {
|
||||
"bytes": 1358,
|
||||
"sha256": "17dbcfa5bbfd10fc8e23a325fc950ce853c219b4aa89c74f96278cbb3f34acc8"
|
||||
},
|
||||
"sa/functions/function_sa_audit_thresholds.arcadia": {
|
||||
"bytes": 280,
|
||||
"sha256": "27f798f78f36e72b38edab3725af2feb0eaa010fd52a60b5c6b6bef57ad3b686"
|
||||
},
|
||||
"sa/functions/function_sa_restore_work.arcadia": {
|
||||
"bytes": 2251,
|
||||
"sha256": "357c6acb80f86b4e8d8f5c98f9f79d140f85fbe09f3406b41b7ac6eba464ec8c"
|
||||
}
|
||||
},
|
||||
"scope": "Every byte and relative filename, including seven companion files, equals the independently declared original bundle plus only the phase-specific activity rename or parent-injected valid comment."
|
||||
}
|
||||
@@ -0,0 +1,156 @@
|
||||
{
|
||||
"status": "PASS",
|
||||
"phase": "external-refused",
|
||||
"folder": "C:\\ar-save-01a0d717\\.local\\native46\\external-b",
|
||||
"files": {
|
||||
"expected-diagnostics.json": {
|
||||
"bytes": 288,
|
||||
"sha256": "3700393d76b940cfc076bf52861bd7b1f43370f8eabce3594531bd0bf1fc851e"
|
||||
},
|
||||
"model.json": {
|
||||
"bytes": 134520,
|
||||
"sha256": "ef0ef4006c3e09d5db6e1b621256b3f7d6642f3a7b09cc34607cfbcca830c727"
|
||||
},
|
||||
"model.rs": {
|
||||
"bytes": 28776,
|
||||
"sha256": "ddc2d92b0d7699a4cadfbb35ae379f0a68d17f4f5d7df82b4b1afcf8d5425fbe"
|
||||
},
|
||||
"project.arcadia": {
|
||||
"bytes": 1958,
|
||||
"sha256": "b2674e6bf77cfe0f6f0ba79c81d2e96d92f39c02ca2c6266d80e91723bfb9fda"
|
||||
},
|
||||
"README.md": {
|
||||
"bytes": 11137,
|
||||
"sha256": "113cfb1cf38a98b51bff60442d86a35d636a3d80ef206bece7d53d0aae67f2d5"
|
||||
},
|
||||
"traceability.arcadia": {
|
||||
"bytes": 28041,
|
||||
"sha256": "474bd28d955ff7af7722f6e9a23220d816879e3f46202e79a233544b9c593116"
|
||||
},
|
||||
"transition-before.json": {
|
||||
"bytes": 35801,
|
||||
"sha256": "2253e6434f741687e22327c37d520ed15c043bc36025498650bc2366bb6a874d"
|
||||
},
|
||||
"transition-request.json": {
|
||||
"bytes": 4276,
|
||||
"sha256": "43b9a22e5f95ad3bc0ebd2478ead0e14406854abc989ae94ded9367b013d812a"
|
||||
},
|
||||
"evidence/repair-check.md": {
|
||||
"bytes": 1419,
|
||||
"sha256": "f4db17bdca4ecbb1bf0caef01b2da5f1f7f798ab3152b648ce6dd8696a6a68e5"
|
||||
},
|
||||
"oa/capabilities.arcadia": {
|
||||
"bytes": 630,
|
||||
"sha256": "26a3d9b615a3251ff010e0b47127f2d16bc2dcd45ed95967208b0076d725843a"
|
||||
},
|
||||
"oa/model.arcadia": {
|
||||
"bytes": 531,
|
||||
"sha256": "069a5eaaf525089935cc9d73ae7b916866ed78c6534705d75739650ecdea7ada"
|
||||
},
|
||||
"oa/participants.arcadia": {
|
||||
"bytes": 1580,
|
||||
"sha256": "591a75a9ecad280302be4d4ae0171ad616377ed11ead5e233848ca2dc0a71819"
|
||||
},
|
||||
"oa/types.arcadia": {
|
||||
"bytes": 554,
|
||||
"sha256": "f02c391d584674c879f662a418abba3a220f1fee88471ca49322ac9873de628d"
|
||||
},
|
||||
"sa/capabilities.arcadia": {
|
||||
"bytes": 630,
|
||||
"sha256": "81706a0ca9d7db2aa0350888b9c00d853885185db2e6b90557d3d51a11c3d645"
|
||||
},
|
||||
"sa/model.arcadia": {
|
||||
"bytes": 531,
|
||||
"sha256": "805b90262e27090ae7da81a51bcefa49c97fb0b3d3220b4a72323b4c4351c395"
|
||||
},
|
||||
"sa/participants.arcadia": {
|
||||
"bytes": 3604,
|
||||
"sha256": "ca144d6a8f45fe720b5d18c7b59c7671444baa8c37e5ce9117bcba34b3a6aa84"
|
||||
},
|
||||
"sa/types.arcadia": {
|
||||
"bytes": 903,
|
||||
"sha256": "540ddbc2bcd0ccf45298e3ea5660637341aff63ff65fd87ac2f26469d1adc064"
|
||||
},
|
||||
"views/diagram_oa_allocation_view.arcadia": {
|
||||
"bytes": 1786,
|
||||
"sha256": "c45d7467839219d894804c1ef2d22ff4d4a5a84a6a273c526bafd4c1facde624"
|
||||
},
|
||||
"views/diagram_sa_allocation_view.arcadia": {
|
||||
"bytes": 1797,
|
||||
"sha256": "352a3ca745517592b5c9b1239b5770f62f0466a329a91fd03457ef2b53c06ed6"
|
||||
},
|
||||
"views/diagram_sa_capability_view.arcadia": {
|
||||
"bytes": 1286,
|
||||
"sha256": "8f18fcccbcddcf3c1ea0ffe727b5b23b77fc148c5da4fde953abe681e4c20cd2"
|
||||
},
|
||||
"views/diagram_sa_service_view.arcadia": {
|
||||
"bytes": 1960,
|
||||
"sha256": "4c72cb7593d9c4be8d2600b0656a7a3a6ce84c45bb2f3e58a4ee5ae3bf91913c"
|
||||
},
|
||||
"views/diagram_sa_state_view.arcadia": {
|
||||
"bytes": 1576,
|
||||
"sha256": "dd1bea81ac7dc549a53f9b190be6f13052e00ede345bd180444cc31edb892230"
|
||||
},
|
||||
"oa/activities/activity_oa_restore_work.arcadia": {
|
||||
"bytes": 1165,
|
||||
"sha256": "fd5d7f432badc619b04aea34d69eb36eb3ea7204d044ed290458a66ad64d94de"
|
||||
},
|
||||
"oa/behavior/process_oa_assessment_procedure.arcadia": {
|
||||
"bytes": 550,
|
||||
"sha256": "23cabc213c264a16c8595414db6acb09248c1cef9cd699f1b0316e5bb82c062a"
|
||||
},
|
||||
"oa/behavior/process_oa_field_procedure.arcadia": {
|
||||
"bytes": 1178,
|
||||
"sha256": "9c52086759b7344b4809ceb8d372f65647b16fc24153a03b887faa378c37fe96"
|
||||
},
|
||||
"oa/behavior/process_oa_response.arcadia": {
|
||||
"bytes": 2560,
|
||||
"sha256": "675798bd19e6b40d03e7076b0e59b110cdaaab7b6d16c47c3ac80fa960072e84"
|
||||
},
|
||||
"oa/behavior/scenario_oa_conversation.arcadia": {
|
||||
"bytes": 1515,
|
||||
"sha256": "e217e5394a0771dc16206ed9437a231da27905d2f19be64b3f48281c0a32fb6b"
|
||||
},
|
||||
"oa/behavior/scenario_oa_full_scenario.arcadia": {
|
||||
"bytes": 1121,
|
||||
"sha256": "c5a285f2d7c61bd2a136107f267fbf9cddb1cba3f63ff36a6f53f7ab98f33df5"
|
||||
},
|
||||
"oa/behavior/state_machine_oa_monitor.arcadia": {
|
||||
"bytes": 1358,
|
||||
"sha256": "e7349e1e5336282eed3f5a103129db33d3ae4ed500788ee7129e8fc193ac57f6"
|
||||
},
|
||||
"sa/behavior/process_sa_assessment_procedure.arcadia": {
|
||||
"bytes": 559,
|
||||
"sha256": "5c414fbdaabf9f9e402b0441fcacf1cacf4dbbc6c822162f028de35abf59be2d"
|
||||
},
|
||||
"sa/behavior/process_sa_field_procedure.arcadia": {
|
||||
"bytes": 1187,
|
||||
"sha256": "ece846fdf93857e71a9ab0efcbdf64a5c41c71180f62afa3f79077fffb53b8f2"
|
||||
},
|
||||
"sa/behavior/process_sa_response.arcadia": {
|
||||
"bytes": 2569,
|
||||
"sha256": "af7fdda280a917cf626f6e077162d481f9aaad280f8e81330c07d7fe384b1c52"
|
||||
},
|
||||
"sa/behavior/scenario_sa_conversation.arcadia": {
|
||||
"bytes": 1847,
|
||||
"sha256": "01339699ec3ee409418d9bb232542f2bcd9419f1e67b183e77700c56bb9f71d2"
|
||||
},
|
||||
"sa/behavior/scenario_sa_full_scenario.arcadia": {
|
||||
"bytes": 1116,
|
||||
"sha256": "5dce6b00a3a441162e8dee3e23d9ca5ab7bed4a24de669b1fba03664a3086dda"
|
||||
},
|
||||
"sa/behavior/state_machine_sa_monitor.arcadia": {
|
||||
"bytes": 1358,
|
||||
"sha256": "17dbcfa5bbfd10fc8e23a325fc950ce853c219b4aa89c74f96278cbb3f34acc8"
|
||||
},
|
||||
"sa/functions/function_sa_audit_thresholds.arcadia": {
|
||||
"bytes": 280,
|
||||
"sha256": "27f798f78f36e72b38edab3725af2feb0eaa010fd52a60b5c6b6bef57ad3b686"
|
||||
},
|
||||
"sa/functions/function_sa_restore_work.arcadia": {
|
||||
"bytes": 2251,
|
||||
"sha256": "357c6acb80f86b4e8d8f5c98f9f79d140f85fbe09f3406b41b7ac6eba464ec8c"
|
||||
}
|
||||
},
|
||||
"scope": "Every byte and relative filename, including seven companion files, equals the independently declared original bundle plus only the phase-specific activity rename or parent-injected valid comment."
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"source": "0e83157e09d52e6152df91208e41693b62da2d46",
|
||||
"start": "2026-10-02T01:34:07.329232+00:00",
|
||||
"binary_sha256": "e9cce9355525ecdc59bfae12608b1e0272167acef5a86b25368ef547e08886ff",
|
||||
"runtime_sha256": "f45604a12e8bcd839fd86f667c1be1cc7c4f9da2b3c69ff381ac708f0e1ae7d4",
|
||||
"cwd": "C:\\ar-save-01a0d717\\.local\\native46\\working",
|
||||
"path": "C:\\Windows\\System32;C:\\Windows",
|
||||
"pid": 10012,
|
||||
"exit_code": 0,
|
||||
"finished": "2026-10-02T01:44:46.909456+00:00",
|
||||
"stdout_bytes": 0,
|
||||
"stderr_bytes": 0,
|
||||
"binary_unchanged": true,
|
||||
"runtime_unchanged": true
|
||||
}
|
||||
@@ -0,0 +1,156 @@
|
||||
{
|
||||
"status": "PASS",
|
||||
"phase": "inject",
|
||||
"folder": "C:\\ar-save-01a0d717\\.local\\native46\\external-b",
|
||||
"files": {
|
||||
"expected-diagnostics.json": {
|
||||
"bytes": 288,
|
||||
"sha256": "3700393d76b940cfc076bf52861bd7b1f43370f8eabce3594531bd0bf1fc851e"
|
||||
},
|
||||
"model.json": {
|
||||
"bytes": 134520,
|
||||
"sha256": "ef0ef4006c3e09d5db6e1b621256b3f7d6642f3a7b09cc34607cfbcca830c727"
|
||||
},
|
||||
"model.rs": {
|
||||
"bytes": 28776,
|
||||
"sha256": "ddc2d92b0d7699a4cadfbb35ae379f0a68d17f4f5d7df82b4b1afcf8d5425fbe"
|
||||
},
|
||||
"project.arcadia": {
|
||||
"bytes": 1958,
|
||||
"sha256": "b2674e6bf77cfe0f6f0ba79c81d2e96d92f39c02ca2c6266d80e91723bfb9fda"
|
||||
},
|
||||
"README.md": {
|
||||
"bytes": 11137,
|
||||
"sha256": "113cfb1cf38a98b51bff60442d86a35d636a3d80ef206bece7d53d0aae67f2d5"
|
||||
},
|
||||
"traceability.arcadia": {
|
||||
"bytes": 28041,
|
||||
"sha256": "474bd28d955ff7af7722f6e9a23220d816879e3f46202e79a233544b9c593116"
|
||||
},
|
||||
"transition-before.json": {
|
||||
"bytes": 35801,
|
||||
"sha256": "2253e6434f741687e22327c37d520ed15c043bc36025498650bc2366bb6a874d"
|
||||
},
|
||||
"transition-request.json": {
|
||||
"bytes": 4276,
|
||||
"sha256": "43b9a22e5f95ad3bc0ebd2478ead0e14406854abc989ae94ded9367b013d812a"
|
||||
},
|
||||
"evidence/repair-check.md": {
|
||||
"bytes": 1419,
|
||||
"sha256": "f4db17bdca4ecbb1bf0caef01b2da5f1f7f798ab3152b648ce6dd8696a6a68e5"
|
||||
},
|
||||
"oa/capabilities.arcadia": {
|
||||
"bytes": 630,
|
||||
"sha256": "26a3d9b615a3251ff010e0b47127f2d16bc2dcd45ed95967208b0076d725843a"
|
||||
},
|
||||
"oa/model.arcadia": {
|
||||
"bytes": 531,
|
||||
"sha256": "069a5eaaf525089935cc9d73ae7b916866ed78c6534705d75739650ecdea7ada"
|
||||
},
|
||||
"oa/participants.arcadia": {
|
||||
"bytes": 1580,
|
||||
"sha256": "591a75a9ecad280302be4d4ae0171ad616377ed11ead5e233848ca2dc0a71819"
|
||||
},
|
||||
"oa/types.arcadia": {
|
||||
"bytes": 554,
|
||||
"sha256": "f02c391d584674c879f662a418abba3a220f1fee88471ca49322ac9873de628d"
|
||||
},
|
||||
"sa/capabilities.arcadia": {
|
||||
"bytes": 630,
|
||||
"sha256": "81706a0ca9d7db2aa0350888b9c00d853885185db2e6b90557d3d51a11c3d645"
|
||||
},
|
||||
"sa/model.arcadia": {
|
||||
"bytes": 531,
|
||||
"sha256": "805b90262e27090ae7da81a51bcefa49c97fb0b3d3220b4a72323b4c4351c395"
|
||||
},
|
||||
"sa/participants.arcadia": {
|
||||
"bytes": 3604,
|
||||
"sha256": "ca144d6a8f45fe720b5d18c7b59c7671444baa8c37e5ce9117bcba34b3a6aa84"
|
||||
},
|
||||
"sa/types.arcadia": {
|
||||
"bytes": 903,
|
||||
"sha256": "540ddbc2bcd0ccf45298e3ea5660637341aff63ff65fd87ac2f26469d1adc064"
|
||||
},
|
||||
"views/diagram_oa_allocation_view.arcadia": {
|
||||
"bytes": 1786,
|
||||
"sha256": "c45d7467839219d894804c1ef2d22ff4d4a5a84a6a273c526bafd4c1facde624"
|
||||
},
|
||||
"views/diagram_sa_allocation_view.arcadia": {
|
||||
"bytes": 1797,
|
||||
"sha256": "352a3ca745517592b5c9b1239b5770f62f0466a329a91fd03457ef2b53c06ed6"
|
||||
},
|
||||
"views/diagram_sa_capability_view.arcadia": {
|
||||
"bytes": 1286,
|
||||
"sha256": "8f18fcccbcddcf3c1ea0ffe727b5b23b77fc148c5da4fde953abe681e4c20cd2"
|
||||
},
|
||||
"views/diagram_sa_service_view.arcadia": {
|
||||
"bytes": 1960,
|
||||
"sha256": "4c72cb7593d9c4be8d2600b0656a7a3a6ce84c45bb2f3e58a4ee5ae3bf91913c"
|
||||
},
|
||||
"views/diagram_sa_state_view.arcadia": {
|
||||
"bytes": 1576,
|
||||
"sha256": "dd1bea81ac7dc549a53f9b190be6f13052e00ede345bd180444cc31edb892230"
|
||||
},
|
||||
"oa/activities/activity_oa_restore_work.arcadia": {
|
||||
"bytes": 1165,
|
||||
"sha256": "fd5d7f432badc619b04aea34d69eb36eb3ea7204d044ed290458a66ad64d94de"
|
||||
},
|
||||
"oa/behavior/process_oa_assessment_procedure.arcadia": {
|
||||
"bytes": 550,
|
||||
"sha256": "23cabc213c264a16c8595414db6acb09248c1cef9cd699f1b0316e5bb82c062a"
|
||||
},
|
||||
"oa/behavior/process_oa_field_procedure.arcadia": {
|
||||
"bytes": 1178,
|
||||
"sha256": "9c52086759b7344b4809ceb8d372f65647b16fc24153a03b887faa378c37fe96"
|
||||
},
|
||||
"oa/behavior/process_oa_response.arcadia": {
|
||||
"bytes": 2560,
|
||||
"sha256": "675798bd19e6b40d03e7076b0e59b110cdaaab7b6d16c47c3ac80fa960072e84"
|
||||
},
|
||||
"oa/behavior/scenario_oa_conversation.arcadia": {
|
||||
"bytes": 1515,
|
||||
"sha256": "e217e5394a0771dc16206ed9437a231da27905d2f19be64b3f48281c0a32fb6b"
|
||||
},
|
||||
"oa/behavior/scenario_oa_full_scenario.arcadia": {
|
||||
"bytes": 1121,
|
||||
"sha256": "c5a285f2d7c61bd2a136107f267fbf9cddb1cba3f63ff36a6f53f7ab98f33df5"
|
||||
},
|
||||
"oa/behavior/state_machine_oa_monitor.arcadia": {
|
||||
"bytes": 1358,
|
||||
"sha256": "e7349e1e5336282eed3f5a103129db33d3ae4ed500788ee7129e8fc193ac57f6"
|
||||
},
|
||||
"sa/behavior/process_sa_assessment_procedure.arcadia": {
|
||||
"bytes": 559,
|
||||
"sha256": "5c414fbdaabf9f9e402b0441fcacf1cacf4dbbc6c822162f028de35abf59be2d"
|
||||
},
|
||||
"sa/behavior/process_sa_field_procedure.arcadia": {
|
||||
"bytes": 1187,
|
||||
"sha256": "ece846fdf93857e71a9ab0efcbdf64a5c41c71180f62afa3f79077fffb53b8f2"
|
||||
},
|
||||
"sa/behavior/process_sa_response.arcadia": {
|
||||
"bytes": 2569,
|
||||
"sha256": "af7fdda280a917cf626f6e077162d481f9aaad280f8e81330c07d7fe384b1c52"
|
||||
},
|
||||
"sa/behavior/scenario_sa_conversation.arcadia": {
|
||||
"bytes": 1847,
|
||||
"sha256": "01339699ec3ee409418d9bb232542f2bcd9419f1e67b183e77700c56bb9f71d2"
|
||||
},
|
||||
"sa/behavior/scenario_sa_full_scenario.arcadia": {
|
||||
"bytes": 1116,
|
||||
"sha256": "5dce6b00a3a441162e8dee3e23d9ca5ab7bed4a24de669b1fba03664a3086dda"
|
||||
},
|
||||
"sa/behavior/state_machine_sa_monitor.arcadia": {
|
||||
"bytes": 1358,
|
||||
"sha256": "17dbcfa5bbfd10fc8e23a325fc950ce853c219b4aa89c74f96278cbb3f34acc8"
|
||||
},
|
||||
"sa/functions/function_sa_audit_thresholds.arcadia": {
|
||||
"bytes": 280,
|
||||
"sha256": "27f798f78f36e72b38edab3725af2feb0eaa010fd52a60b5c6b6bef57ad3b686"
|
||||
},
|
||||
"sa/functions/function_sa_restore_work.arcadia": {
|
||||
"bytes": 2251,
|
||||
"sha256": "357c6acb80f86b4e8d8f5c98f9f79d140f85fbe09f3406b41b7ac6eba464ec8c"
|
||||
}
|
||||
},
|
||||
"scope": "Every byte and relative filename, including seven companion files, equals the independently declared original bundle plus only the phase-specific activity rename or parent-injected valid comment."
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
"""Decode full pristine/saved source bundles with the exact packaged server."""
|
||||
from pathlib import Path
|
||||
import copy, hashlib, http.client, json, os, socket, subprocess, time
|
||||
root=Path(__file__).resolve().parent
|
||||
proof=json.loads(Path('C:/ar-compact-01a0d717/.local/package39/extraction-check.json').read_text(encoding='utf-8'))
|
||||
bundle=Path(proof['bundle'])
|
||||
run=root/'native-model-oracle';run.mkdir(exist_ok=False)
|
||||
exe=bundle/'arcadia-server.exe'
|
||||
assert hashlib.sha256(exe.read_bytes()).hexdigest()==proof['sha256']['arcadia-server.exe']
|
||||
assert hashlib.sha256((bundle/'libunwind.dll').read_bytes()).hexdigest()==proof['sha256']['libunwind.dll']
|
||||
env={k:os.environ[k] for k in ['SystemRoot','WINDIR','TEMP','TMP','USERPROFILE','LOCALAPPDATA','APPDATA','COMSPEC','OS','PROCESSOR_ARCHITECTURE'] if k in os.environ}
|
||||
env['PATH']=str(Path(os.environ['SystemRoot'])/'System32')+';'+os.environ['SystemRoot']
|
||||
with socket.socket() as s:s.bind(('127.0.0.1',0));port=s.getsockname()[1]
|
||||
cmd=[str(exe),'--bind',f'127.0.0.1:{port}','--data-dir',str(run/'store')]
|
||||
report={'status':'RUNNING','command':cmd,'path':env['PATH'],'server_sha256':proof['sha256']['arcadia-server.exe'],'runtime_sha256':proof['sha256']['libunwind.dll']}
|
||||
counter=0
|
||||
def request(method,path,body=None):
|
||||
global counter
|
||||
counter+=1
|
||||
raw=b'' if body is None else json.dumps(body,ensure_ascii=False).encode('utf-8')
|
||||
(run/f'{counter:02d}.request.json').write_bytes(raw)
|
||||
c=http.client.HTTPConnection('127.0.0.1',port,timeout=10)
|
||||
c.request(method,path,body=raw or None,headers={'Content-Type':'application/json','Connection':'close'})
|
||||
r=c.getresponse();data=r.read();status=r.status
|
||||
(run/f'{counter:02d}.response.json').write_bytes(data);c.close()
|
||||
assert status in (200,201),(status,data)
|
||||
return json.loads(data)
|
||||
with (run/'stdout.log').open('xb') as out,(run/'stderr.log').open('xb') as err:
|
||||
child=subprocess.Popen(cmd,cwd=run,env=env,stdout=out,stderr=err,creationflags=subprocess.CREATE_NO_WINDOW)
|
||||
report['pid']=child.pid
|
||||
try:
|
||||
for _ in range(100):
|
||||
assert child.poll() is None
|
||||
try:
|
||||
with socket.create_connection(('127.0.0.1',port),timeout=.1):break
|
||||
except OSError:time.sleep(.1)
|
||||
request('GET','/health/ready')
|
||||
models=[]
|
||||
source_records=[]
|
||||
for folder,entry in [(bundle/'examples/release1','project.arcadia'),(root/'fresh-c','project.arcadia')]:
|
||||
files={p.relative_to(folder).as_posix():p.read_bytes().decode('utf-8') for p in folder.rglob('*.arcadia')}
|
||||
assert len(files)==30
|
||||
source={'entry':entry,'files':files}
|
||||
imported=request('POST','/api/v1/projects/import-source-project',source)
|
||||
envelope=request('GET','/api/v1/projects/'+imported['resource_id'])
|
||||
assert envelope['source_project']==source
|
||||
models.append(envelope['model']);source_records.append(imported['resource_id'])
|
||||
expected=copy.deepcopy(models[0])
|
||||
target='61f7bbfb-74a4-5540-9182-2583dfb27a49'
|
||||
assert expected['elements'][target]['name']=='Assess pressure alarm'
|
||||
expected['elements'][target]['name']='Assess pressure alarm QA46'
|
||||
assert models[1]==expected,'Complete saved Project must have only declared Activity-name delta'
|
||||
report.update({'status':'PASS','resource_ids':source_records,'source_files_each':30,'model_delta':{'id':target,'field':'name','before':'Assess pressure alarm','after':'Assess pressure alarm QA46'},'complete_project_equal_to_declared_delta':True,'source_preserved_exactly':True})
|
||||
finally:
|
||||
child.terminate();report['server_exit']=child.wait(timeout=15)
|
||||
report['shutdown_scope']='Owned TerminateProcess after acknowledged import/read; no graceful shutdown claim.'
|
||||
(run/'result.json').write_text(json.dumps(report,indent=2)+'\n',encoding='utf-8')
|
||||
print(json.dumps(report,indent=2))
|
||||
@@ -0,0 +1 @@
|
||||
{"status":"ok"}
|
||||
@@ -0,0 +1 @@
|
||||
{"elements":94,"migration":null,"model_id":"2786d72f-5763-5f33-a57f-2773a4ca1a6c","name":"Restore safe water pressure — release 1 walkthrough","relations":62,"resource_id":"aaa8f7e3-8b4c-4ff3-b53b-556826ea10cf","revision":1,"schema_version":7}
|
||||
@@ -0,0 +1 @@
|
||||
{"elements":94,"migration":null,"model_id":"2786d72f-5763-5f33-a57f-2773a4ca1a6c","name":"Restore safe water pressure — release 1 walkthrough","relations":62,"resource_id":"9d5f5bdf-2483-4e7b-a92e-2384ea35b359","revision":1,"schema_version":7}
|
||||
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"status": "PASS",
|
||||
"command": [
|
||||
"C:\\ar-compact-01a0d717\\.local\\package39\\extracted\\ArcadiaStudio-0.2.0-preview.compact-help.20261001-x86_64-pc-windows-gnullvm\\arcadia-server.exe",
|
||||
"--bind",
|
||||
"127.0.0.1:55938",
|
||||
"--data-dir",
|
||||
"C:\\ar-save-01a0d717\\.local\\native46\\native-model-oracle\\store"
|
||||
],
|
||||
"path": "C:\\Windows\\System32;C:\\Windows",
|
||||
"server_sha256": "6cebacc117e46fdab023c6402a5cebd6929fb55993ae8ff6b89cd1c6c1170237",
|
||||
"runtime_sha256": "f45604a12e8bcd839fd86f667c1be1cc7c4f9da2b3c69ff381ac708f0e1ae7d4",
|
||||
"pid": 8844,
|
||||
"resource_ids": [
|
||||
"aaa8f7e3-8b4c-4ff3-b53b-556826ea10cf",
|
||||
"9d5f5bdf-2483-4e7b-a92e-2384ea35b359"
|
||||
],
|
||||
"source_files_each": 30,
|
||||
"model_delta": {
|
||||
"id": "61f7bbfb-74a4-5540-9182-2583dfb27a49",
|
||||
"field": "name",
|
||||
"before": "Assess pressure alarm",
|
||||
"after": "Assess pressure alarm QA46"
|
||||
},
|
||||
"complete_project_equal_to_declared_delta": true,
|
||||
"source_preserved_exactly": true,
|
||||
"server_exit": 1,
|
||||
"shutdown_scope": "Owned TerminateProcess after acknowledged import/read; no graceful shutdown claim."
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
arcadia-server 0.2.0 listening on 127.0.0.1:55938; data C:\ar-save-01a0d717\.local\native46\native-model-oracle\store
|
||||
@@ -0,0 +1,43 @@
|
||||
from pathlib import Path
|
||||
import hashlib,json,sys
|
||||
run=Path(__file__).resolve().parent
|
||||
root=run.parents[1]
|
||||
record=json.loads((run/'baseline.json').read_text(encoding='utf-8'))
|
||||
source=root/'examples/release1'
|
||||
dependency=record['external_dependency']
|
||||
phase=sys.argv[1]
|
||||
assert phase in ['collision','saved-a','saved-c','external-before','inject','external-refused','restore','external-recovered']
|
||||
sha=lambda b:hashlib.sha256(b).hexdigest()
|
||||
original={r:(source/r).read_bytes() for r in record['baseline']}
|
||||
assert {r:{'bytes':len(b),'sha256':sha(b)} for r,b in original.items()}==record['baseline']
|
||||
def check(folder,expected):
|
||||
actual={f.relative_to(folder).as_posix():f.read_bytes() for f in folder.rglob('*') if f.is_file()}
|
||||
assert actual.keys()==expected.keys(),(phase,'file set', sorted(actual.keys()^expected.keys()))
|
||||
assert all(actual[r]==b for r,b in expected.items()),(phase,'changed files',[r for r,b in expected.items() if actual[r]!=b])
|
||||
return {r:{'bytes':len(b),'sha256':sha(b)} for r,b in actual.items()}
|
||||
if phase in ['collision','saved-a','saved-c']:
|
||||
expected=original.copy()
|
||||
if phase!='collision':
|
||||
old=b'oa_activity oa_assess "Assess pressure alarm" id "61f7bbfb-74a4-5540-9182-2583dfb27a49"'
|
||||
new=b'oa_activity oa_assess "Assess pressure alarm QA46" id "61f7bbfb-74a4-5540-9182-2583dfb27a49"'
|
||||
assert expected[dependency].count(old)==1
|
||||
expected[dependency]=expected[dependency].replace(old,new)
|
||||
folder=run/('fresh-c' if phase=='saved-c' else 'collision-a')
|
||||
assert not (run/'collision-a/collision-copy.arcadia').exists()
|
||||
files=check(folder,expected)
|
||||
else:
|
||||
folder=run/'external-b'
|
||||
changed=original.copy();changed[dependency]+=record['external_comment'].encode('utf-8')
|
||||
if phase=='inject':
|
||||
check(folder,original)
|
||||
(folder/dependency).write_bytes(changed[dependency])
|
||||
expected=changed
|
||||
elif phase=='restore':
|
||||
check(folder,changed)
|
||||
(folder/dependency).write_bytes(original[dependency])
|
||||
expected=original
|
||||
else: expected=changed if phase=='external-refused' else original
|
||||
files=check(folder,expected)
|
||||
result={'status':'PASS','phase':phase,'folder':str(folder),'files':files,'scope':'Every byte and relative filename, including seven companion files, equals the independently declared original bundle plus only the phase-specific activity rename or parent-injected valid comment.'}
|
||||
with (run/(phase+'-oracle.json')).open('x',encoding='utf-8') as f:json.dump(result,f,indent=2)
|
||||
print(json.dumps({'status':result['status'],'phase':phase,'files':len(files)},indent=2))
|
||||
@@ -0,0 +1,53 @@
|
||||
# Bounded native verification plan for #46
|
||||
|
||||
Prepared by `/root/ux_critique` against private code commit `0e83157e09d52e6152df91208e41693b62da2d46`. Read its `app.rs` presentation-only diff, `app/save_as_tests.rs` regressions, `harness/save-as-diagnostics-20261001.md`, the source integration contract and UI review criteria. This is a plan, not executed native evidence. No GUI input, launch, compilation, source edit or fixture creation was performed during preparation. #38 retains exclusive GUI ownership until the parent releases it.
|
||||
|
||||
## Intended distinction
|
||||
|
||||
The same-root/new-entry case must still refuse existing included files. Only its diagnosis and recovery guidance change. Established observed-file conflicts must continue to say files changed outside Arcadia Studio. The native check must verify these two messages using real filesystem conditions, then exercise legitimate recovery without bypassing either guard.
|
||||
|
||||
## Parent preparation and coordination
|
||||
|
||||
- Supply exact source commit, executable/DLL hashes, prepared paths and readiness after the frozen build. Parent launches with watcher; reviewer discovers the unique returned native window. Preserve stdout/stderr/exit separately.
|
||||
- Prepare two complete, separate copies of the water-pressure multi-file example: **collision/recovery copy A**, and **external-change copy B**. Record full relative-path inventories and SHA-256 baselines. Originals and packaged examples remain read-only.
|
||||
- Reserve a non-existing entry beside A's current `project.arcadia` for the collision attempt, e.g. `collision-copy.arcadia`. Record that it is absent. Do not create it.
|
||||
- Prepare **fresh destination C** with zero `.arcadia` source files. If reopen completeness is desired, copy only the tutorial/evidence companion files first and distinguish these parent copies from files written by the app. Use a new entry path in C for successful Save As.
|
||||
- For B's later genuine external change, identify the existing dependency `oa/activities/activity_oa_restore_work.arcadia`. Preserve its exact bytes. After the reviewer confirms B is loaded, parent appends one valid source comment (for example `// native #46 external-edit probe`) without changing semantic facts, records its resulting hash, then tells reviewer the edit is complete. Do not edit while a Save is running. Restore exact original bytes only when the reviewer requests recovery.
|
||||
- Reviewer writes screenshots and a report under the parent-selected evidence directory; parent owns independent full-file comparisons. No whole-model equality or exit-code claim comes from UI counts alone.
|
||||
|
||||
## Minimal actual UI sequence
|
||||
|
||||
### 1. Same-folder/new-entry collision and dirty-state preservation
|
||||
|
||||
1. Pointer Open A's exact `project.arcadia`. Verify OA Allocation, original Assess activity, saved state, 94 objects and 62 links. Record actual model-check count rather than using it as a model-equality oracle.
|
||||
2. Select `Assess pressure alarm`; change only Name to the predeclared **`Assess pressure alarm QA46`** and click Apply. This one semantic edit is justified because a clean model cannot show dirty-state recovery. Do not create raw-source drafts or any other authored change.
|
||||
3. At normal size, Save As to the reserved new entry in A's same directory. Expect refusal, retained QA46 name/selection, unsaved state and original active entry. Capture the diagnostic and full tooltip/detail if the status is shortened.
|
||||
4. Inspect the retained diagnostic at the minimum 1100x700 client size. The visible summary must identify an existing protected destination, without falsely alleging an external edit; the full message must expose the conflicting include and the actionable alternatives. Do not dismiss the error by triggering an unrelated command before this inspection. If resizing clears the status or makes it unreadable, record that observed limitation.
|
||||
|
||||
**User-visible oracle:** `Source destination files already exist: ... Existing files are protected.` with `Choose a fresh directory for Save As, or use Save All to update the open project's current entry.` It must not say `changed outside`. A visible failure and reachable recovery detail are required, not merely the presence of a string in source code.
|
||||
|
||||
**Parent disk oracle before recovery:** all A source and companion files remain baseline-identical; the requested new entry remains absent. Reviewer pauses Save actions until parent confirms this checkpoint. Never overwrite the protected destination to obtain a passing result.
|
||||
|
||||
### 2. Legitimate Save All recovery and fresh-folder Save As
|
||||
|
||||
1. Click Save all in the still-open A document. Expect `All source files saved`, saved state, and exact QA46 name. This establishes recovery followed the suggested current-entry route; the parent should verify A's existing entry remains the active destination through its file observations.
|
||||
2. Parent verifies all files equal the baseline plus exactly the one declared Activity name literal. No additional rename is needed. Native Undo/Redo is already independently covered in the #39 package run; #46's automated tests cover history preservation, so do not repeat it unless the parent wants that additional gate or native state appears inconsistent.
|
||||
3. Save As to C's exact fresh path. Expect saved state, exact QA46 name, and success feedback. Capture the result. Parent compares every emitted source byte and companion file to the explicit expected bundle; the entry relocation and single name change are the only permitted differences.
|
||||
|
||||
**Failure stop:** if legitimate Save All or fresh Save As fails, preserve the exact state/error and stop dependent mutation/reopen actions. Do not force a save, restore files speculatively or silently reinterpret the intended outcome.
|
||||
|
||||
### 3. Genuine external edit stays a different diagnostic
|
||||
|
||||
1. Pointer Open pristine copy B. No graphical or source edit is necessary here. Confirm loaded/saved state, then pause input and tell parent it is safe to append the predeclared valid comment to the observed dependency.
|
||||
2. After parent's edit receipt, click Save all. Even an unchanged model must check all observed dependency baselines, as the integration contract requires. Expect external-change refusal naming that dependency. Capture visible status and complete detail at minimum size.
|
||||
3. Parent verifies the external comment remains untouched, the entry and every other file remain identical, and no save output overwrote external work. The UI's accepted model and dirty state should remain as they were before Save (clean in this phase); no claim of unsaved model changes is required merely because disk diverged.
|
||||
4. If Save All does not actually perform checks for a clean document, stop and report that observation. Do not add a second rename to make the experiment pass. Parent can then choose a separately declared dirty-state trial if needed.
|
||||
5. Parent restores exactly the observed original dependency bytes, confirms restoration, then reviewer clicks Save all again. Expect success, saved state and unchanged original activity name. Close normally with Alt+F4 after the parent confirms no further native checkpoint is needed.
|
||||
|
||||
**User-visible oracle:** `Source files changed outside Arcadia Studio: ...` naming the edited dependency. It must not use `destination files already exist`, `Existing files are protected`, or recommend a fresh directory as if this were the new-destination collision. Both refused writes and the recovery must retain their genuine outcomes in the report.
|
||||
|
||||
## Evidence and limits
|
||||
|
||||
Capture the collision message at normal/minimum size, its full detail, saved current-entry recovery, successful fresh Save As, genuine external-change refusal/detail, and recovered existing Save. Include exact paths chosen in native dialogs and the declared rename. Keep observations, parent hash receipts and automated-test evidence separately attributed. Existing error footers can truncate long paths; inspect their actual disclosure rather than assuming that source text is readable at minimum size.
|
||||
|
||||
No additional fixture mutation or code change is necessary for this plan. Pending logistical inputs are the parent's exact A/B/C paths, build/DLL pins, output directory and exclusive-GUI-ready signal. No user decision is needed.
|
||||
@@ -0,0 +1,156 @@
|
||||
{
|
||||
"status": "PASS",
|
||||
"phase": "restore",
|
||||
"folder": "C:\\ar-save-01a0d717\\.local\\native46\\external-b",
|
||||
"files": {
|
||||
"expected-diagnostics.json": {
|
||||
"bytes": 288,
|
||||
"sha256": "3700393d76b940cfc076bf52861bd7b1f43370f8eabce3594531bd0bf1fc851e"
|
||||
},
|
||||
"model.json": {
|
||||
"bytes": 134520,
|
||||
"sha256": "ef0ef4006c3e09d5db6e1b621256b3f7d6642f3a7b09cc34607cfbcca830c727"
|
||||
},
|
||||
"model.rs": {
|
||||
"bytes": 28776,
|
||||
"sha256": "ddc2d92b0d7699a4cadfbb35ae379f0a68d17f4f5d7df82b4b1afcf8d5425fbe"
|
||||
},
|
||||
"project.arcadia": {
|
||||
"bytes": 1958,
|
||||
"sha256": "b2674e6bf77cfe0f6f0ba79c81d2e96d92f39c02ca2c6266d80e91723bfb9fda"
|
||||
},
|
||||
"README.md": {
|
||||
"bytes": 11137,
|
||||
"sha256": "113cfb1cf38a98b51bff60442d86a35d636a3d80ef206bece7d53d0aae67f2d5"
|
||||
},
|
||||
"traceability.arcadia": {
|
||||
"bytes": 28041,
|
||||
"sha256": "474bd28d955ff7af7722f6e9a23220d816879e3f46202e79a233544b9c593116"
|
||||
},
|
||||
"transition-before.json": {
|
||||
"bytes": 35801,
|
||||
"sha256": "2253e6434f741687e22327c37d520ed15c043bc36025498650bc2366bb6a874d"
|
||||
},
|
||||
"transition-request.json": {
|
||||
"bytes": 4276,
|
||||
"sha256": "43b9a22e5f95ad3bc0ebd2478ead0e14406854abc989ae94ded9367b013d812a"
|
||||
},
|
||||
"evidence/repair-check.md": {
|
||||
"bytes": 1419,
|
||||
"sha256": "f4db17bdca4ecbb1bf0caef01b2da5f1f7f798ab3152b648ce6dd8696a6a68e5"
|
||||
},
|
||||
"oa/capabilities.arcadia": {
|
||||
"bytes": 630,
|
||||
"sha256": "26a3d9b615a3251ff010e0b47127f2d16bc2dcd45ed95967208b0076d725843a"
|
||||
},
|
||||
"oa/model.arcadia": {
|
||||
"bytes": 531,
|
||||
"sha256": "069a5eaaf525089935cc9d73ae7b916866ed78c6534705d75739650ecdea7ada"
|
||||
},
|
||||
"oa/participants.arcadia": {
|
||||
"bytes": 1580,
|
||||
"sha256": "591a75a9ecad280302be4d4ae0171ad616377ed11ead5e233848ca2dc0a71819"
|
||||
},
|
||||
"oa/types.arcadia": {
|
||||
"bytes": 554,
|
||||
"sha256": "f02c391d584674c879f662a418abba3a220f1fee88471ca49322ac9873de628d"
|
||||
},
|
||||
"sa/capabilities.arcadia": {
|
||||
"bytes": 630,
|
||||
"sha256": "81706a0ca9d7db2aa0350888b9c00d853885185db2e6b90557d3d51a11c3d645"
|
||||
},
|
||||
"sa/model.arcadia": {
|
||||
"bytes": 531,
|
||||
"sha256": "805b90262e27090ae7da81a51bcefa49c97fb0b3d3220b4a72323b4c4351c395"
|
||||
},
|
||||
"sa/participants.arcadia": {
|
||||
"bytes": 3604,
|
||||
"sha256": "ca144d6a8f45fe720b5d18c7b59c7671444baa8c37e5ce9117bcba34b3a6aa84"
|
||||
},
|
||||
"sa/types.arcadia": {
|
||||
"bytes": 903,
|
||||
"sha256": "540ddbc2bcd0ccf45298e3ea5660637341aff63ff65fd87ac2f26469d1adc064"
|
||||
},
|
||||
"views/diagram_oa_allocation_view.arcadia": {
|
||||
"bytes": 1786,
|
||||
"sha256": "c45d7467839219d894804c1ef2d22ff4d4a5a84a6a273c526bafd4c1facde624"
|
||||
},
|
||||
"views/diagram_sa_allocation_view.arcadia": {
|
||||
"bytes": 1797,
|
||||
"sha256": "352a3ca745517592b5c9b1239b5770f62f0466a329a91fd03457ef2b53c06ed6"
|
||||
},
|
||||
"views/diagram_sa_capability_view.arcadia": {
|
||||
"bytes": 1286,
|
||||
"sha256": "8f18fcccbcddcf3c1ea0ffe727b5b23b77fc148c5da4fde953abe681e4c20cd2"
|
||||
},
|
||||
"views/diagram_sa_service_view.arcadia": {
|
||||
"bytes": 1960,
|
||||
"sha256": "4c72cb7593d9c4be8d2600b0656a7a3a6ce84c45bb2f3e58a4ee5ae3bf91913c"
|
||||
},
|
||||
"views/diagram_sa_state_view.arcadia": {
|
||||
"bytes": 1576,
|
||||
"sha256": "dd1bea81ac7dc549a53f9b190be6f13052e00ede345bd180444cc31edb892230"
|
||||
},
|
||||
"oa/activities/activity_oa_restore_work.arcadia": {
|
||||
"bytes": 1130,
|
||||
"sha256": "21cbd7176af8fad68453306f2371ff03e127a994b8796cdf044567332de9686f"
|
||||
},
|
||||
"oa/behavior/process_oa_assessment_procedure.arcadia": {
|
||||
"bytes": 550,
|
||||
"sha256": "23cabc213c264a16c8595414db6acb09248c1cef9cd699f1b0316e5bb82c062a"
|
||||
},
|
||||
"oa/behavior/process_oa_field_procedure.arcadia": {
|
||||
"bytes": 1178,
|
||||
"sha256": "9c52086759b7344b4809ceb8d372f65647b16fc24153a03b887faa378c37fe96"
|
||||
},
|
||||
"oa/behavior/process_oa_response.arcadia": {
|
||||
"bytes": 2560,
|
||||
"sha256": "675798bd19e6b40d03e7076b0e59b110cdaaab7b6d16c47c3ac80fa960072e84"
|
||||
},
|
||||
"oa/behavior/scenario_oa_conversation.arcadia": {
|
||||
"bytes": 1515,
|
||||
"sha256": "e217e5394a0771dc16206ed9437a231da27905d2f19be64b3f48281c0a32fb6b"
|
||||
},
|
||||
"oa/behavior/scenario_oa_full_scenario.arcadia": {
|
||||
"bytes": 1121,
|
||||
"sha256": "c5a285f2d7c61bd2a136107f267fbf9cddb1cba3f63ff36a6f53f7ab98f33df5"
|
||||
},
|
||||
"oa/behavior/state_machine_oa_monitor.arcadia": {
|
||||
"bytes": 1358,
|
||||
"sha256": "e7349e1e5336282eed3f5a103129db33d3ae4ed500788ee7129e8fc193ac57f6"
|
||||
},
|
||||
"sa/behavior/process_sa_assessment_procedure.arcadia": {
|
||||
"bytes": 559,
|
||||
"sha256": "5c414fbdaabf9f9e402b0441fcacf1cacf4dbbc6c822162f028de35abf59be2d"
|
||||
},
|
||||
"sa/behavior/process_sa_field_procedure.arcadia": {
|
||||
"bytes": 1187,
|
||||
"sha256": "ece846fdf93857e71a9ab0efcbdf64a5c41c71180f62afa3f79077fffb53b8f2"
|
||||
},
|
||||
"sa/behavior/process_sa_response.arcadia": {
|
||||
"bytes": 2569,
|
||||
"sha256": "af7fdda280a917cf626f6e077162d481f9aaad280f8e81330c07d7fe384b1c52"
|
||||
},
|
||||
"sa/behavior/scenario_sa_conversation.arcadia": {
|
||||
"bytes": 1847,
|
||||
"sha256": "01339699ec3ee409418d9bb232542f2bcd9419f1e67b183e77700c56bb9f71d2"
|
||||
},
|
||||
"sa/behavior/scenario_sa_full_scenario.arcadia": {
|
||||
"bytes": 1116,
|
||||
"sha256": "5dce6b00a3a441162e8dee3e23d9ca5ab7bed4a24de669b1fba03664a3086dda"
|
||||
},
|
||||
"sa/behavior/state_machine_sa_monitor.arcadia": {
|
||||
"bytes": 1358,
|
||||
"sha256": "17dbcfa5bbfd10fc8e23a325fc950ce853c219b4aa89c74f96278cbb3f34acc8"
|
||||
},
|
||||
"sa/functions/function_sa_audit_thresholds.arcadia": {
|
||||
"bytes": 280,
|
||||
"sha256": "27f798f78f36e72b38edab3725af2feb0eaa010fd52a60b5c6b6bef57ad3b686"
|
||||
},
|
||||
"sa/functions/function_sa_restore_work.arcadia": {
|
||||
"bytes": 2251,
|
||||
"sha256": "357c6acb80f86b4e8d8f5c98f9f79d140f85fbe09f3406b41b7ac6eba464ec8c"
|
||||
}
|
||||
},
|
||||
"scope": "Every byte and relative filename, including seven companion files, equals the independently declared original bundle plus only the phase-specific activity rename or parent-injected valid comment."
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
# Native #46 diagnostic verification
|
||||
|
||||
Predeclared intent, before native edits: independently exercise the desktop build from source `0e83157e09d52e6152df91208e41693b62da2d46`, executable SHA-256 `E9CCE9355525ECDC59BFAE12608B1E0272167ACEF5A86B25368EF547E08886FF`, runtime SHA-256 `F45604A12E8BCD839FD86F667C1BE1CC7C4F9DA2B3C69FF381AC708F0E1AE7D4`. Parent launched PID 10012 and retains watcher/log/oracle ownership. Reviewer `/root/ux_critique` uses only Computer Use `@oai/sky` for native interaction and has exclusive GUI ownership for this trial.
|
||||
|
||||
All trial paths are under `C:/ar-save-01a0d717/.local/native46/`:
|
||||
|
||||
- A: `collision-a/project.arcadia`. Exactly one allowed authored graphical change: Activity `61f7bbfb-74a4-5540-9182-2583dfb27a49`, name `Assess pressure alarm` to **`Assess pressure alarm QA46`**. No other authored edits.
|
||||
- Rejected Save As target: `collision-a/collision-copy.arcadia`, initially absent. Existing included files must remain protected.
|
||||
- Successful fresh Save As target: `fresh-c/project.arcadia`, with seven companion files prepared by parent and zero source files initially.
|
||||
- B: `external-b/project.arcadia`, pristine separate complete copy. After it is loaded, parent alone injects a valid comment into the observed dependency `oa/activities/activity_oa_restore_work.arcadia`, records the byte oracle, then restores exact bytes after the actual external-conflict trial.
|
||||
|
||||
Reviewer pauses after collision refusal, existing Save All success, fresh Save As success, B load and genuine external-change refusal for parent checkpoints. No source/model JSON inspection, fixture mutation outside the app, build, Gitea or unrelated GUI operation is part of this trial. Native status/name/count observations are not whole-model or disk-equality proofs. Parent supplies those independent results. Normal closure occurs only after final parent confirmation.
|
||||
|
||||
Plan: `.local/native46-plan.md`. Native observations and screenshots will be recorded below without erasing rejected operations or recovery steps.
|
||||
|
||||
## A: protected destination and recovery
|
||||
|
||||
Opened A by native Open chooser, typed full path and clicked Open. At 1442×932, selected Assess pressure alarm (UUID verified in inspector), replaced Name with exactly Assess pressure alarm QA46 and clicked Apply changes. Only this semantic edit was made. Save As to the predeclared absent collision-copy.arcadia entry was refused. Unsaved changes and the applied name remained visible. Footer now says Source destination files already exist, identifies oa/activities/activity_oa_restore_work.arcadia, and says existing files are protected. Pointer tooltip gives both recovery choices: fresh directory for Save As, or Save All to update the current entry. Full tooltip fits both 1442×932 and minimum 1102×732 outer windows (1100×700 client target); persistent footer truncates with ellipsis. No keyboard-only tooltip claim. Parent reported collision byte oracle PASS: all 37 A files exactly baseline, no reserved new entry.
|
||||
|
||||
Clicked Save All at minimum size after parent clearance. Observed Working then All changes saved / All source files saved, exact QA46 Name retained and title star cleared. Paused for saved-a byte oracle. Screenshots 00–07 document opening, the edit, destination chooser, refusal at both sizes, full tooltips, and recovery.
|
||||
|
||||
## C: fresh destination
|
||||
|
||||
Parent reported saved-a oracle PASS: all 37 files match baseline plus only the declared OA Activity name literal; original project.arcadia otherwise unchanged and refused new entry absent. Save As using typed full C path and pointer Save then showed Working followed by All source files saved / All changes saved. QA46 Name retained. Screenshots 08–09. Paused for saved-c oracle.
|
||||
|
||||
Parent reported saved-c oracle PASS: all 37 filenames and bytes exactly baseline plus only QA46 name; seven companion files were parent copies and 30 sources app writes. Opened B through typed exact native chooser path, then observed baseline Assess name, All changes saved, 94 objects / 62 links / 1 model check. No B model edits. Screenshots 10–11. Paused before Save All for parent external comment injection.
|
||||
|
||||
## B: genuine external edit
|
||||
|
||||
Parent reported baseline equality and injection of only a valid comment in oa/activities/activity_oa_restore_work.arcadia, with other bytes unchanged. Clicked Save All on the clean loaded B. Working resolved to Source files changed outside Arcadia Studio: ["oa/activities/activity_oa_restore_work.arcadia"]. Full message fits minimum footer and pointer tooltip, with no destination or fresh-directory wording. Header still says All changes saved because there are no local edits; this status is not proof of disk equality or successful attempted save. Screenshots 12–13. Paused for parent external-refused oracle/restoration.
|
||||
|
||||
## Recovery, outcome and limits
|
||||
|
||||
Parent reported external-refused oracle PASS: injected comment preserved, all other 36 files untouched. Parent restored exact baseline bytes and reported all 37 matching. Parent also reported complete parsed C model equals baseline plus only the predeclared Activity name. After clearance, clicked Save All on B: Working resolved to All source files saved, with All changes saved. Inspected Assess activity by pointer: exact baseline Name Assess pressure alarm, stable alias oa_assess, performer Control room; 94 objects / 62 links / 1 model check. No B model edits. Screenshots 14–15. Closed normally via Alt+F4; fresh native window enumeration no longer listed Arcadia. Parent owns post-close oracle, process exit/logs and executable/runtime checks.
|
||||
|
||||
Native result: no new defect found in the bounded #46 workflows. The collision now explains protected destination files and both supported recovery routes; actual external modification keeps the separate external-change wording. Save All recovery and fresh-folder Save As both completed through normal UI. The existing persistent footer is truncated for the longer collision message; full details are reachable and readable by pointer tooltip at normal and minimum size. Keyboard-only access to that tooltip was not tested. Clean B header All changes saved describes absence of local edits, not successful save or lack of disk conflict: the footer explicitly reported refusal. Native counts and screenshots do not prove whole-model/disk equality; parent-provided byte/parser results are labeled separately above. This run did not retest every save-error class or concurrency race. Evidence recorded 2026-10-01 America/Los_Angeles.
|
||||
@@ -0,0 +1,156 @@
|
||||
{
|
||||
"status": "PASS",
|
||||
"phase": "saved-a",
|
||||
"folder": "C:\\ar-save-01a0d717\\.local\\native46\\collision-a",
|
||||
"files": {
|
||||
"expected-diagnostics.json": {
|
||||
"bytes": 288,
|
||||
"sha256": "3700393d76b940cfc076bf52861bd7b1f43370f8eabce3594531bd0bf1fc851e"
|
||||
},
|
||||
"model.json": {
|
||||
"bytes": 134520,
|
||||
"sha256": "ef0ef4006c3e09d5db6e1b621256b3f7d6642f3a7b09cc34607cfbcca830c727"
|
||||
},
|
||||
"model.rs": {
|
||||
"bytes": 28776,
|
||||
"sha256": "ddc2d92b0d7699a4cadfbb35ae379f0a68d17f4f5d7df82b4b1afcf8d5425fbe"
|
||||
},
|
||||
"project.arcadia": {
|
||||
"bytes": 1958,
|
||||
"sha256": "b2674e6bf77cfe0f6f0ba79c81d2e96d92f39c02ca2c6266d80e91723bfb9fda"
|
||||
},
|
||||
"README.md": {
|
||||
"bytes": 11137,
|
||||
"sha256": "113cfb1cf38a98b51bff60442d86a35d636a3d80ef206bece7d53d0aae67f2d5"
|
||||
},
|
||||
"traceability.arcadia": {
|
||||
"bytes": 28041,
|
||||
"sha256": "474bd28d955ff7af7722f6e9a23220d816879e3f46202e79a233544b9c593116"
|
||||
},
|
||||
"transition-before.json": {
|
||||
"bytes": 35801,
|
||||
"sha256": "2253e6434f741687e22327c37d520ed15c043bc36025498650bc2366bb6a874d"
|
||||
},
|
||||
"transition-request.json": {
|
||||
"bytes": 4276,
|
||||
"sha256": "43b9a22e5f95ad3bc0ebd2478ead0e14406854abc989ae94ded9367b013d812a"
|
||||
},
|
||||
"evidence/repair-check.md": {
|
||||
"bytes": 1419,
|
||||
"sha256": "f4db17bdca4ecbb1bf0caef01b2da5f1f7f798ab3152b648ce6dd8696a6a68e5"
|
||||
},
|
||||
"oa/capabilities.arcadia": {
|
||||
"bytes": 630,
|
||||
"sha256": "26a3d9b615a3251ff010e0b47127f2d16bc2dcd45ed95967208b0076d725843a"
|
||||
},
|
||||
"oa/model.arcadia": {
|
||||
"bytes": 531,
|
||||
"sha256": "069a5eaaf525089935cc9d73ae7b916866ed78c6534705d75739650ecdea7ada"
|
||||
},
|
||||
"oa/participants.arcadia": {
|
||||
"bytes": 1580,
|
||||
"sha256": "591a75a9ecad280302be4d4ae0171ad616377ed11ead5e233848ca2dc0a71819"
|
||||
},
|
||||
"oa/types.arcadia": {
|
||||
"bytes": 554,
|
||||
"sha256": "f02c391d584674c879f662a418abba3a220f1fee88471ca49322ac9873de628d"
|
||||
},
|
||||
"sa/capabilities.arcadia": {
|
||||
"bytes": 630,
|
||||
"sha256": "81706a0ca9d7db2aa0350888b9c00d853885185db2e6b90557d3d51a11c3d645"
|
||||
},
|
||||
"sa/model.arcadia": {
|
||||
"bytes": 531,
|
||||
"sha256": "805b90262e27090ae7da81a51bcefa49c97fb0b3d3220b4a72323b4c4351c395"
|
||||
},
|
||||
"sa/participants.arcadia": {
|
||||
"bytes": 3604,
|
||||
"sha256": "ca144d6a8f45fe720b5d18c7b59c7671444baa8c37e5ce9117bcba34b3a6aa84"
|
||||
},
|
||||
"sa/types.arcadia": {
|
||||
"bytes": 903,
|
||||
"sha256": "540ddbc2bcd0ccf45298e3ea5660637341aff63ff65fd87ac2f26469d1adc064"
|
||||
},
|
||||
"views/diagram_oa_allocation_view.arcadia": {
|
||||
"bytes": 1786,
|
||||
"sha256": "c45d7467839219d894804c1ef2d22ff4d4a5a84a6a273c526bafd4c1facde624"
|
||||
},
|
||||
"views/diagram_sa_allocation_view.arcadia": {
|
||||
"bytes": 1797,
|
||||
"sha256": "352a3ca745517592b5c9b1239b5770f62f0466a329a91fd03457ef2b53c06ed6"
|
||||
},
|
||||
"views/diagram_sa_capability_view.arcadia": {
|
||||
"bytes": 1286,
|
||||
"sha256": "8f18fcccbcddcf3c1ea0ffe727b5b23b77fc148c5da4fde953abe681e4c20cd2"
|
||||
},
|
||||
"views/diagram_sa_service_view.arcadia": {
|
||||
"bytes": 1960,
|
||||
"sha256": "4c72cb7593d9c4be8d2600b0656a7a3a6ce84c45bb2f3e58a4ee5ae3bf91913c"
|
||||
},
|
||||
"views/diagram_sa_state_view.arcadia": {
|
||||
"bytes": 1576,
|
||||
"sha256": "dd1bea81ac7dc549a53f9b190be6f13052e00ede345bd180444cc31edb892230"
|
||||
},
|
||||
"oa/activities/activity_oa_restore_work.arcadia": {
|
||||
"bytes": 1135,
|
||||
"sha256": "ff8c6cfc568446a55110f1d719f510dddf8eaacf504232fcf8c0037fc5476450"
|
||||
},
|
||||
"oa/behavior/process_oa_assessment_procedure.arcadia": {
|
||||
"bytes": 550,
|
||||
"sha256": "23cabc213c264a16c8595414db6acb09248c1cef9cd699f1b0316e5bb82c062a"
|
||||
},
|
||||
"oa/behavior/process_oa_field_procedure.arcadia": {
|
||||
"bytes": 1178,
|
||||
"sha256": "9c52086759b7344b4809ceb8d372f65647b16fc24153a03b887faa378c37fe96"
|
||||
},
|
||||
"oa/behavior/process_oa_response.arcadia": {
|
||||
"bytes": 2560,
|
||||
"sha256": "675798bd19e6b40d03e7076b0e59b110cdaaab7b6d16c47c3ac80fa960072e84"
|
||||
},
|
||||
"oa/behavior/scenario_oa_conversation.arcadia": {
|
||||
"bytes": 1515,
|
||||
"sha256": "e217e5394a0771dc16206ed9437a231da27905d2f19be64b3f48281c0a32fb6b"
|
||||
},
|
||||
"oa/behavior/scenario_oa_full_scenario.arcadia": {
|
||||
"bytes": 1121,
|
||||
"sha256": "c5a285f2d7c61bd2a136107f267fbf9cddb1cba3f63ff36a6f53f7ab98f33df5"
|
||||
},
|
||||
"oa/behavior/state_machine_oa_monitor.arcadia": {
|
||||
"bytes": 1358,
|
||||
"sha256": "e7349e1e5336282eed3f5a103129db33d3ae4ed500788ee7129e8fc193ac57f6"
|
||||
},
|
||||
"sa/behavior/process_sa_assessment_procedure.arcadia": {
|
||||
"bytes": 559,
|
||||
"sha256": "5c414fbdaabf9f9e402b0441fcacf1cacf4dbbc6c822162f028de35abf59be2d"
|
||||
},
|
||||
"sa/behavior/process_sa_field_procedure.arcadia": {
|
||||
"bytes": 1187,
|
||||
"sha256": "ece846fdf93857e71a9ab0efcbdf64a5c41c71180f62afa3f79077fffb53b8f2"
|
||||
},
|
||||
"sa/behavior/process_sa_response.arcadia": {
|
||||
"bytes": 2569,
|
||||
"sha256": "af7fdda280a917cf626f6e077162d481f9aaad280f8e81330c07d7fe384b1c52"
|
||||
},
|
||||
"sa/behavior/scenario_sa_conversation.arcadia": {
|
||||
"bytes": 1847,
|
||||
"sha256": "01339699ec3ee409418d9bb232542f2bcd9419f1e67b183e77700c56bb9f71d2"
|
||||
},
|
||||
"sa/behavior/scenario_sa_full_scenario.arcadia": {
|
||||
"bytes": 1116,
|
||||
"sha256": "5dce6b00a3a441162e8dee3e23d9ca5ab7bed4a24de669b1fba03664a3086dda"
|
||||
},
|
||||
"sa/behavior/state_machine_sa_monitor.arcadia": {
|
||||
"bytes": 1358,
|
||||
"sha256": "17dbcfa5bbfd10fc8e23a325fc950ce853c219b4aa89c74f96278cbb3f34acc8"
|
||||
},
|
||||
"sa/functions/function_sa_audit_thresholds.arcadia": {
|
||||
"bytes": 280,
|
||||
"sha256": "27f798f78f36e72b38edab3725af2feb0eaa010fd52a60b5c6b6bef57ad3b686"
|
||||
},
|
||||
"sa/functions/function_sa_restore_work.arcadia": {
|
||||
"bytes": 2251,
|
||||
"sha256": "357c6acb80f86b4e8d8f5c98f9f79d140f85fbe09f3406b41b7ac6eba464ec8c"
|
||||
}
|
||||
},
|
||||
"scope": "Every byte and relative filename, including seven companion files, equals the independently declared original bundle plus only the phase-specific activity rename or parent-injected valid comment."
|
||||
}
|
||||
@@ -0,0 +1,156 @@
|
||||
{
|
||||
"status": "PASS",
|
||||
"phase": "saved-c",
|
||||
"folder": "C:\\ar-save-01a0d717\\.local\\native46\\fresh-c",
|
||||
"files": {
|
||||
"expected-diagnostics.json": {
|
||||
"bytes": 288,
|
||||
"sha256": "3700393d76b940cfc076bf52861bd7b1f43370f8eabce3594531bd0bf1fc851e"
|
||||
},
|
||||
"model.json": {
|
||||
"bytes": 134520,
|
||||
"sha256": "ef0ef4006c3e09d5db6e1b621256b3f7d6642f3a7b09cc34607cfbcca830c727"
|
||||
},
|
||||
"model.rs": {
|
||||
"bytes": 28776,
|
||||
"sha256": "ddc2d92b0d7699a4cadfbb35ae379f0a68d17f4f5d7df82b4b1afcf8d5425fbe"
|
||||
},
|
||||
"project.arcadia": {
|
||||
"bytes": 1958,
|
||||
"sha256": "b2674e6bf77cfe0f6f0ba79c81d2e96d92f39c02ca2c6266d80e91723bfb9fda"
|
||||
},
|
||||
"README.md": {
|
||||
"bytes": 11137,
|
||||
"sha256": "113cfb1cf38a98b51bff60442d86a35d636a3d80ef206bece7d53d0aae67f2d5"
|
||||
},
|
||||
"traceability.arcadia": {
|
||||
"bytes": 28041,
|
||||
"sha256": "474bd28d955ff7af7722f6e9a23220d816879e3f46202e79a233544b9c593116"
|
||||
},
|
||||
"transition-before.json": {
|
||||
"bytes": 35801,
|
||||
"sha256": "2253e6434f741687e22327c37d520ed15c043bc36025498650bc2366bb6a874d"
|
||||
},
|
||||
"transition-request.json": {
|
||||
"bytes": 4276,
|
||||
"sha256": "43b9a22e5f95ad3bc0ebd2478ead0e14406854abc989ae94ded9367b013d812a"
|
||||
},
|
||||
"evidence/repair-check.md": {
|
||||
"bytes": 1419,
|
||||
"sha256": "f4db17bdca4ecbb1bf0caef01b2da5f1f7f798ab3152b648ce6dd8696a6a68e5"
|
||||
},
|
||||
"oa/capabilities.arcadia": {
|
||||
"bytes": 630,
|
||||
"sha256": "26a3d9b615a3251ff010e0b47127f2d16bc2dcd45ed95967208b0076d725843a"
|
||||
},
|
||||
"oa/model.arcadia": {
|
||||
"bytes": 531,
|
||||
"sha256": "069a5eaaf525089935cc9d73ae7b916866ed78c6534705d75739650ecdea7ada"
|
||||
},
|
||||
"oa/participants.arcadia": {
|
||||
"bytes": 1580,
|
||||
"sha256": "591a75a9ecad280302be4d4ae0171ad616377ed11ead5e233848ca2dc0a71819"
|
||||
},
|
||||
"oa/types.arcadia": {
|
||||
"bytes": 554,
|
||||
"sha256": "f02c391d584674c879f662a418abba3a220f1fee88471ca49322ac9873de628d"
|
||||
},
|
||||
"sa/capabilities.arcadia": {
|
||||
"bytes": 630,
|
||||
"sha256": "81706a0ca9d7db2aa0350888b9c00d853885185db2e6b90557d3d51a11c3d645"
|
||||
},
|
||||
"sa/model.arcadia": {
|
||||
"bytes": 531,
|
||||
"sha256": "805b90262e27090ae7da81a51bcefa49c97fb0b3d3220b4a72323b4c4351c395"
|
||||
},
|
||||
"sa/participants.arcadia": {
|
||||
"bytes": 3604,
|
||||
"sha256": "ca144d6a8f45fe720b5d18c7b59c7671444baa8c37e5ce9117bcba34b3a6aa84"
|
||||
},
|
||||
"sa/types.arcadia": {
|
||||
"bytes": 903,
|
||||
"sha256": "540ddbc2bcd0ccf45298e3ea5660637341aff63ff65fd87ac2f26469d1adc064"
|
||||
},
|
||||
"views/diagram_oa_allocation_view.arcadia": {
|
||||
"bytes": 1786,
|
||||
"sha256": "c45d7467839219d894804c1ef2d22ff4d4a5a84a6a273c526bafd4c1facde624"
|
||||
},
|
||||
"views/diagram_sa_allocation_view.arcadia": {
|
||||
"bytes": 1797,
|
||||
"sha256": "352a3ca745517592b5c9b1239b5770f62f0466a329a91fd03457ef2b53c06ed6"
|
||||
},
|
||||
"views/diagram_sa_capability_view.arcadia": {
|
||||
"bytes": 1286,
|
||||
"sha256": "8f18fcccbcddcf3c1ea0ffe727b5b23b77fc148c5da4fde953abe681e4c20cd2"
|
||||
},
|
||||
"views/diagram_sa_service_view.arcadia": {
|
||||
"bytes": 1960,
|
||||
"sha256": "4c72cb7593d9c4be8d2600b0656a7a3a6ce84c45bb2f3e58a4ee5ae3bf91913c"
|
||||
},
|
||||
"views/diagram_sa_state_view.arcadia": {
|
||||
"bytes": 1576,
|
||||
"sha256": "dd1bea81ac7dc549a53f9b190be6f13052e00ede345bd180444cc31edb892230"
|
||||
},
|
||||
"oa/activities/activity_oa_restore_work.arcadia": {
|
||||
"bytes": 1135,
|
||||
"sha256": "ff8c6cfc568446a55110f1d719f510dddf8eaacf504232fcf8c0037fc5476450"
|
||||
},
|
||||
"oa/behavior/process_oa_assessment_procedure.arcadia": {
|
||||
"bytes": 550,
|
||||
"sha256": "23cabc213c264a16c8595414db6acb09248c1cef9cd699f1b0316e5bb82c062a"
|
||||
},
|
||||
"oa/behavior/process_oa_field_procedure.arcadia": {
|
||||
"bytes": 1178,
|
||||
"sha256": "9c52086759b7344b4809ceb8d372f65647b16fc24153a03b887faa378c37fe96"
|
||||
},
|
||||
"oa/behavior/process_oa_response.arcadia": {
|
||||
"bytes": 2560,
|
||||
"sha256": "675798bd19e6b40d03e7076b0e59b110cdaaab7b6d16c47c3ac80fa960072e84"
|
||||
},
|
||||
"oa/behavior/scenario_oa_conversation.arcadia": {
|
||||
"bytes": 1515,
|
||||
"sha256": "e217e5394a0771dc16206ed9437a231da27905d2f19be64b3f48281c0a32fb6b"
|
||||
},
|
||||
"oa/behavior/scenario_oa_full_scenario.arcadia": {
|
||||
"bytes": 1121,
|
||||
"sha256": "c5a285f2d7c61bd2a136107f267fbf9cddb1cba3f63ff36a6f53f7ab98f33df5"
|
||||
},
|
||||
"oa/behavior/state_machine_oa_monitor.arcadia": {
|
||||
"bytes": 1358,
|
||||
"sha256": "e7349e1e5336282eed3f5a103129db33d3ae4ed500788ee7129e8fc193ac57f6"
|
||||
},
|
||||
"sa/behavior/process_sa_assessment_procedure.arcadia": {
|
||||
"bytes": 559,
|
||||
"sha256": "5c414fbdaabf9f9e402b0441fcacf1cacf4dbbc6c822162f028de35abf59be2d"
|
||||
},
|
||||
"sa/behavior/process_sa_field_procedure.arcadia": {
|
||||
"bytes": 1187,
|
||||
"sha256": "ece846fdf93857e71a9ab0efcbdf64a5c41c71180f62afa3f79077fffb53b8f2"
|
||||
},
|
||||
"sa/behavior/process_sa_response.arcadia": {
|
||||
"bytes": 2569,
|
||||
"sha256": "af7fdda280a917cf626f6e077162d481f9aaad280f8e81330c07d7fe384b1c52"
|
||||
},
|
||||
"sa/behavior/scenario_sa_conversation.arcadia": {
|
||||
"bytes": 1847,
|
||||
"sha256": "01339699ec3ee409418d9bb232542f2bcd9419f1e67b183e77700c56bb9f71d2"
|
||||
},
|
||||
"sa/behavior/scenario_sa_full_scenario.arcadia": {
|
||||
"bytes": 1116,
|
||||
"sha256": "5dce6b00a3a441162e8dee3e23d9ca5ab7bed4a24de669b1fba03664a3086dda"
|
||||
},
|
||||
"sa/behavior/state_machine_sa_monitor.arcadia": {
|
||||
"bytes": 1358,
|
||||
"sha256": "17dbcfa5bbfd10fc8e23a325fc950ce853c219b4aa89c74f96278cbb3f34acc8"
|
||||
},
|
||||
"sa/functions/function_sa_audit_thresholds.arcadia": {
|
||||
"bytes": 280,
|
||||
"sha256": "27f798f78f36e72b38edab3725af2feb0eaa010fd52a60b5c6b6bef57ad3b686"
|
||||
},
|
||||
"sa/functions/function_sa_restore_work.arcadia": {
|
||||
"bytes": 2251,
|
||||
"sha256": "357c6acb80f86b4e8d8f5c98f9f79d140f85fbe09f3406b41b7ac6eba464ec8c"
|
||||
}
|
||||
},
|
||||
"scope": "Every byte and relative filename, including seven companion files, equals the independently declared original bundle plus only the phase-specific activity rename or parent-injected valid comment."
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"source": "0e83157e09d52e6152df91208e41693b62da2d46",
|
||||
"start": "2026-10-02T01:34:07.329232+00:00",
|
||||
"binary_sha256": "e9cce9355525ecdc59bfae12608b1e0272167acef5a86b25368ef547e08886ff",
|
||||
"runtime_sha256": "f45604a12e8bcd839fd86f667c1be1cc7c4f9da2b3c69ff381ac708f0e1ae7d4",
|
||||
"cwd": "C:\\ar-save-01a0d717\\.local\\native46\\working",
|
||||
"path": "C:\\Windows\\System32;C:\\Windows",
|
||||
"pid": 10012
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
from pathlib import Path
|
||||
import datetime,hashlib,json,os,subprocess
|
||||
root=Path(__file__).resolve().parents[1];run=root/'.local/native46'
|
||||
record=json.loads((run/'baseline.json').read_text(encoding='utf-8'))
|
||||
bin=run/'bin';exe=bin/'arcadia-studio.exe'
|
||||
sha=lambda p:hashlib.sha256(p.read_bytes()).hexdigest()
|
||||
assert sha(exe)==record['binary']['sha256'] and sha(bin/'libunwind.dll')==record['runtime']['sha256']
|
||||
work=run/'working';work.mkdir(exist_ok=False)
|
||||
env=os.environ.copy();system=os.environ['SystemRoot'];env['PATH']=str(Path(system)/'System32')+';'+system
|
||||
for k in list(env):
|
||||
if k.startswith(('CARGO_','RUST','LLVM','WGPU','ARCADIA_')):del env[k]
|
||||
receipt={'source':record['source'],'start':datetime.datetime.now(datetime.timezone.utc).isoformat(),'binary_sha256':sha(exe),'runtime_sha256':sha(bin/'libunwind.dll'),'cwd':str(work),'path':env['PATH']}
|
||||
with (run/'stdout.log').open('xb') as out,(run/'stderr.log').open('xb') as err:
|
||||
child=subprocess.Popen([str(exe)],cwd=work,env=env,stdout=out,stderr=err,creationflags=subprocess.CREATE_NO_WINDOW)
|
||||
receipt['pid']=child.pid;(run/'started.json').write_text(json.dumps(receipt,indent=2)+'\n',encoding='utf-8');print(json.dumps(receipt,indent=2),flush=True)
|
||||
code=child.wait()
|
||||
receipt.update({'exit_code':code,'finished':datetime.datetime.now(datetime.timezone.utc).isoformat(),'stdout_bytes':(run/'stdout.log').stat().st_size,'stderr_bytes':(run/'stderr.log').stat().st_size,'binary_unchanged':sha(exe)==record['binary']['sha256'],'runtime_unchanged':sha(bin/'libunwind.dll')==record['runtime']['sha256']})
|
||||
(run/'finished.json').write_text(json.dumps(receipt,indent=2)+'\n',encoding='utf-8');print(json.dumps(receipt,indent=2),flush=True)
|
||||
assert code==0 and receipt['stdout_bytes']==receipt['stderr_bytes']==0 and receipt['binary_unchanged'] and receipt['runtime_unchanged']
|
||||
@@ -0,0 +1,9 @@
|
||||
from pathlib import Path
|
||||
root=Path(__file__).resolve().parents[1]
|
||||
original=Path('C:/ar-compact-01a0d717/.local/package39/native-model-oracle.py').read_text(encoding='utf-8')
|
||||
text=original.replace("proof=json.loads((root/'extraction-check.json').read_text(encoding='utf-8'))", "proof=json.loads(Path('C:/ar-compact-01a0d717/.local/package39/extraction-check.json').read_text(encoding='utf-8'))")
|
||||
text=text.replace("(root/'working/saved','qa-saved.arcadia')", "(root/'fresh-c','project.arcadia')")
|
||||
text=text.replace('Assess pressure alarm QA LEFT XYRIGHT','Assess pressure alarm QA46')
|
||||
assert text!=original and 'working/saved' not in text and 'QA LEFT XYRIGHT' not in text
|
||||
(root/'.local/native46/native-model-oracle.py').write_text(text,encoding='utf-8')
|
||||
print('Prepared exact-source/model QA46 oracle with explicit UTF-8 read')
|
||||
@@ -0,0 +1,27 @@
|
||||
from pathlib import Path
|
||||
import hashlib,json,shutil,subprocess
|
||||
root=Path(__file__).resolve().parents[1]
|
||||
source='0e83157e09d52e6152df91208e41693b62da2d46'
|
||||
assert subprocess.check_output(['git','rev-parse','HEAD'],cwd=root,text=True).strip()==source
|
||||
subprocess.run(['git','diff','--exit-code',source,'--','crates','Cargo.toml','Cargo.lock'],cwd=root,check=True)
|
||||
run=root/'.local/native46';run.mkdir(exist_ok=False)
|
||||
bins=run/'bin';bins.mkdir()
|
||||
target=Path('C:/Users/User/Documents/Git/ARCADIA-Studio/.local/target-gnullvm/debug')
|
||||
runtime=Path('C:/ar-compact-01a0d717/.local/package39/bin/libunwind.dll')
|
||||
assert hashlib.sha256(runtime.read_bytes()).hexdigest()=='f45604a12e8bcd839fd86f667c1be1cc7c4f9da2b3c69ff381ac708f0e1ae7d4'
|
||||
shutil.copyfile(target/'arcadia-studio.exe',bins/'arcadia-studio.exe')
|
||||
shutil.copyfile(runtime,bins/'libunwind.dll')
|
||||
sha=lambda p:hashlib.sha256(p.read_bytes()).hexdigest()
|
||||
fixture=root/'examples/release1'
|
||||
def inventory(p): return {f.relative_to(p).as_posix():{'bytes':f.stat().st_size,'sha256':sha(f)} for f in p.rglob('*') if f.is_file()}
|
||||
baseline=inventory(fixture)
|
||||
assert len(baseline)==37
|
||||
for name in ['collision-a','external-b']: shutil.copytree(fixture,run/name)
|
||||
fresh=run/'fresh-c';fresh.mkdir()
|
||||
for f in fixture.rglob('*'):
|
||||
if f.is_file() and f.suffix!='.arcadia':
|
||||
p=fresh/f.relative_to(fixture);p.parent.mkdir(parents=True,exist_ok=True);shutil.copyfile(f,p)
|
||||
assert len(inventory(fresh))==7 and not list(fresh.rglob('*.arcadia'))
|
||||
receipt={'source':source,'profile':'dev/unoptimized','target':'x86_64-pc-windows-gnullvm','binary':{'bytes':(bins/'arcadia-studio.exe').stat().st_size,'sha256':sha(bins/'arcadia-studio.exe')},'runtime':{'bytes':(bins/'libunwind.dll').stat().st_size,'sha256':sha(bins/'libunwind.dll')},'baseline':baseline,'fresh_companions':inventory(fresh),'declared_rename':{'activity':'61f7bbfb-74a4-5540-9182-2583dfb27a49','before':'Assess pressure alarm','after':'Assess pressure alarm QA46'},'external_dependency':'oa/activities/activity_oa_restore_work.arcadia','external_comment':'\n// native #46 external-edit probe\n'}
|
||||
(run/'baseline.json').write_text(json.dumps(receipt,indent=2)+'\n',encoding='utf-8')
|
||||
print(json.dumps({k:v for k,v in receipt.items() if k not in ['baseline','fresh_companions']},indent=2))
|
||||
@@ -0,0 +1,9 @@
|
||||
$taskRoot = Split-Path -Parent (Split-Path -Parent $PSScriptRoot)
|
||||
$env:RUSTUP_HOME = Join-Path $taskRoot '.local\toolchain\rustup'
|
||||
$env:CARGO_HOME = Join-Path $taskRoot '.local\toolchain\cargo'
|
||||
$env:RUSTUP_TOOLCHAIN = 'stable-x86_64-pc-windows-gnullvm'
|
||||
$env:PATH = "$env:CARGO_HOME\bin;$(Join-Path $taskRoot '.local\toolchain\llvm-mingw-20260826-ucrt-x86_64\bin');$env:PATH"
|
||||
$env:CARGO_TARGET_DIR = Join-Path $taskRoot '.local\target-gnullvm'
|
||||
# Keep this small development disk from accumulating multi-GiB incremental caches.
|
||||
$env:CARGO_INCREMENTAL = '0'
|
||||
$env:CARGO_TARGET_X86_64_PC_WINDOWS_GNULLVM_LINKER = 'clang.exe'
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"source": "0e83157e09d52e6152df91208e41693b62da2d46",
|
||||
"files": {
|
||||
"Cargo.toml": {
|
||||
"bytes": 512,
|
||||
"sha256": "66d401d9f7629f1f6d174ae41b7f9203c9ce3a76d69abfc4381227dbdec12eae"
|
||||
},
|
||||
"Cargo.lock": {
|
||||
"bytes": 119855,
|
||||
"sha256": "2aa80d113c5112b31c0767b874845d60f555e4e8ae7eb3ecd0b4b91954b55378"
|
||||
},
|
||||
"crates/oa-desktop/src/app.rs": {
|
||||
"bytes": 298661,
|
||||
"sha256": "4e470c5ba93d85f122b62b48cf27a6faa4c005abcab0d7180e6db598506e1c83"
|
||||
},
|
||||
"crates/oa-desktop/src/app/save_as_tests.rs": {
|
||||
"bytes": 10111,
|
||||
"sha256": "8de25876f05e487ec3ce9292b49abfa5793de1c141b0a26833b6dca276cd6fb5"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
"""Read-only packet check; Python 3 stdlib + Git. Optional --index verifies staged bytes."""
|
||||
from pathlib import Path
|
||||
import copy
|
||||
import hashlib
|
||||
import json
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
packet = Path(__file__).resolve().parent
|
||||
root = packet.parents[2]
|
||||
load = lambda p: json.loads(p.read_text(encoding="utf-8"))
|
||||
digest = lambda data: {"bytes": len(data), "sha256": hashlib.sha256(data).hexdigest()}
|
||||
inventory = load(packet / "evidence-files.json")
|
||||
files = {p.relative_to(packet).as_posix() for p in packet.rglob("*") if p.is_file()}
|
||||
assert files == set(inventory) | {"evidence-files.json"}, "Unexpected/missing packet file"
|
||||
for name, expected in inventory.items():
|
||||
assert digest((packet / name).read_bytes()) == expected, name
|
||||
if "--index" in sys.argv:
|
||||
for name in files:
|
||||
rel = (packet / name).relative_to(root).as_posix()
|
||||
staged = subprocess.check_output(["git", "show", ":" + rel], cwd=root)
|
||||
assert staged == (packet / name).read_bytes(), "Index changed bytes: " + name
|
||||
|
||||
native = packet / "native"
|
||||
baseline = load(native / "baseline.json")
|
||||
source = baseline["source"]
|
||||
identity = load(packet / "source-files.json")
|
||||
assert identity["source"] == source
|
||||
for name, expected in identity["files"].items():
|
||||
data = subprocess.check_output(["git", "show", source + ":" + name], cwd=root)
|
||||
assert digest(data) == expected, name
|
||||
original = {name: subprocess.check_output(
|
||||
["git", "show", source + ":examples/release1/" + name], cwd=root
|
||||
) for name in baseline["baseline"]}
|
||||
assert len(original) == 37
|
||||
assert {name: digest(data) for name, data in original.items()} == baseline["baseline"]
|
||||
dependency = baseline["external_dependency"]
|
||||
renamed = original.copy()
|
||||
old = b'oa_activity oa_assess "Assess pressure alarm" id "61f7bbfb-74a4-5540-9182-2583dfb27a49"'
|
||||
new = old.replace(b'"Assess pressure alarm"', b'"Assess pressure alarm QA46"')
|
||||
assert renamed[dependency].count(old) == 1
|
||||
renamed[dependency] = renamed[dependency].replace(old, new)
|
||||
injected = original.copy()
|
||||
injected[dependency] += baseline["external_comment"].encode("utf-8")
|
||||
phases = {
|
||||
"collision": original, "saved-a": renamed, "saved-c": renamed,
|
||||
"external-before": original, "inject": injected, "external-refused": injected,
|
||||
"restore": original, "external-recovered": original,
|
||||
}
|
||||
for phase, expected in phases.items():
|
||||
receipt = load(native / (phase + "-oracle.json"))
|
||||
assert receipt["status"] == "PASS" and receipt["phase"] == phase
|
||||
assert receipt["files"] == {name: digest(data) for name, data in expected.items()}, phase
|
||||
assert len(list(native.glob("*.png"))) == 16
|
||||
finish = load(native / "finished.json")
|
||||
assert finish["source"] == source and finish["exit_code"] == 0
|
||||
assert finish["binary_unchanged"] and finish["runtime_unchanged"]
|
||||
for stream in ["stdout", "stderr"]:
|
||||
assert finish[stream + "_bytes"] == 0 and (native / (stream + ".log")).read_bytes() == b""
|
||||
assert finish["binary_sha256"] == baseline["binary"]["sha256"]
|
||||
assert finish["runtime_sha256"] == baseline["runtime"]["sha256"]
|
||||
|
||||
oracle = native / "native-model-oracle"
|
||||
models = []
|
||||
for request_number, response_number, expected in [(2, 3, original), (4, 5, renamed)]:
|
||||
request = load(oracle / f"{request_number:02d}.request.json")
|
||||
response = load(oracle / f"{response_number:02d}.response.json")
|
||||
expected_sources = {name: data.decode("utf-8") for name, data in expected.items() if name.endswith(".arcadia")}
|
||||
assert len(expected_sources) == 30
|
||||
assert request == {"entry": "project.arcadia", "files": expected_sources}
|
||||
assert response["source_project"] == request
|
||||
models.append(response["model"])
|
||||
expected_model = copy.deepcopy(models[0])
|
||||
activity = baseline["declared_rename"]
|
||||
assert expected_model["elements"][activity["activity"]]["name"] == activity["before"]
|
||||
expected_model["elements"][activity["activity"]]["name"] = activity["after"]
|
||||
assert models[1] == expected_model
|
||||
result = load(oracle / "result.json")
|
||||
assert result["status"] == "PASS" and result["server_exit"] == 1
|
||||
assert result["runtime_sha256"] == baseline["runtime"]["sha256"]
|
||||
donor = load(packet / "donor/build-evidence.json")
|
||||
extraction = load(packet / "donor/extraction-check.json")
|
||||
assert result["server_sha256"] == donor["binary_sha256"]["arcadia-server.exe"]
|
||||
assert result["server_sha256"] == extraction["sha256"]["arcadia-server.exe"]
|
||||
assert result["runtime_sha256"] == donor["runtime_sha256"] == extraction["sha256"]["libunwind.dll"]
|
||||
print(json.dumps({"status": "PASS", "inventory_files": len(inventory), "phase_receipts": 8,
|
||||
"source_files_per_request": 30, "complete_model_delta": activity,
|
||||
"indexed_bytes_checked": "--index" in sys.argv}, indent=2))
|
||||
@@ -0,0 +1,4 @@
|
||||
raw/** -text whitespace=cr-at-eol,-blank-at-eof
|
||||
packet-review.md -text whitespace=cr-at-eol
|
||||
publication/** -text whitespace=cr-at-eol,-blank-at-eof
|
||||
publication-review.md -text whitespace=cr-at-eol
|
||||
@@ -0,0 +1,89 @@
|
||||
# Scoped save-diagnostics package evidence
|
||||
|
||||
The [release validation and run instructions](../../release-save-diagnostics-validation-20261001.md)
|
||||
define the result and its limits. Desktop source is
|
||||
`0e83157e09d52e6152df91208e41693b62da2d46`, packaged documentation
|
||||
`ef28f1784efe6717b0ca72c0eb3c97bc30ebfe47`, and the reused server source is
|
||||
`715036e132677dd2bc2fb37ed316d93dc9987aec`. This is a scoped Windows development
|
||||
preview, not complete OA/SA acceptance or the separately owned follow-up union.
|
||||
|
||||
The exact ZIP is 34,191,561 bytes, SHA256
|
||||
`8b4e353e075f22350a07794ee47a02cf85725501223299cf367134aa1f5b63b7`.
|
||||
The package itself contains the binaries, notices and documentation; this packet
|
||||
contains the portable verification evidence, not duplicate executable archives.
|
||||
[Confirmed publication receipts](publication.md) identify release 9 and all three
|
||||
downloaded assets; they are outside the preceding raw inventory.
|
||||
|
||||
## Navigation
|
||||
|
||||
- [Independent source/artifact/native/REST/claims review](raw/independent-review.md).
|
||||
- [Independent packet/index closure review](packet-review.md), including exact
|
||||
reconciliation of all 162 copied artifacts with their original files.
|
||||
- [Artifact precheck](raw/artifact-precheck.md) by the preparation-helper author;
|
||||
this is separate from the independent final review above.
|
||||
- [Parent native observation](raw/native-observation.md), [19 captures](raw/qa/native46/captures/)
|
||||
and [executed commands](raw/executed-commands.json).
|
||||
- [Complete source/model comparison](raw/native-model-oracle/result.json),
|
||||
[fresh server assertions](raw/server-smoke/result.json), and
|
||||
[valid-model warning reconciliation](raw/model-warnings/result.json).
|
||||
- [Extraction receipt](raw/extraction-check.json),
|
||||
[build provenance](raw/build-evidence.json), and
|
||||
[Git-identified source snapshot](raw/source-inputs.json).
|
||||
- [Collection identities](raw/collection-receipt.json) and
|
||||
[byte inventory](raw/evidence-files.json): 164 indexed files, 15,568,173 bytes,
|
||||
plus the inventory itself. Raw scoped attributes preserve captured bytes.
|
||||
|
||||
## Reproduce the offline verification
|
||||
|
||||
From this repository checkout, with Python 3:
|
||||
|
||||
```powershell
|
||||
python harness/experiments/save-diagnostics-package-20261001/raw/verify.py
|
||||
python harness/experiments/save-diagnostics-package-20261001/raw/verify.py --current-source
|
||||
```
|
||||
|
||||
The first checks exact packet membership/bytes, pinned Git source identities,
|
||||
package/extraction input identities, native/process receipts and complete
|
||||
37-file/30-source-file/full-Project comparisons. The second additionally requires
|
||||
the current source files to match the packaged snapshot; it may correctly fail
|
||||
on a later implementation. After staging this packet, add `--index` to verify
|
||||
Git's staged blob bytes exactly, including ignored logs explicitly staged for
|
||||
this evidence. These checks do not run the archived native/REST/build scripts.
|
||||
The parent's offline and staged-index checks passed with all 637 source inputs
|
||||
unchanged. Initial diff checks flagged captured CRLF bytes, followed by intentional
|
||||
terminal/HTTP blank lines. Scoped raw-only whitespace attributes preserve those
|
||||
original bytes; production/doc formatting policy and the inventory are unchanged.
|
||||
|
||||
Historical scripts retain their original Windows paths and exclusive output
|
||||
directories. Use the linked release instructions and explicit fresh-directory
|
||||
adaptation for runtime reproduction. Never replay the injected-comment helper
|
||||
against a user's model. Stage/archive integrity alone is not native acceptance.
|
||||
|
||||
## Preserved boundaries and failed assumptions
|
||||
|
||||
The original server build used LLVM-MinGW 20260908; the current package selects
|
||||
the 20260826 runtime. Recovered public donor records retain their original
|
||||
identities, and the fresh extracted smoke validates the exact current pair.
|
||||
Missing historical local paths are preserved as missing; portable recovered
|
||||
copies supply the evidence. The old helper-review's missing-provenance concern
|
||||
is superseded by that recovery, not erased.
|
||||
|
||||
Review-script assumptions about null registry paths, JSON wrapper depth, CRLF
|
||||
count and Windows text decoding were corrected and retained in their reviews.
|
||||
The initial parent oracle-adaptation replacement-count failure occurred before
|
||||
output creation; only its occurrence count was corrected. The premature native
|
||||
loading capture remains, and is not used as loaded-model proof. The corrected
|
||||
prior Unicode02 smoke helper is the byte-identical donor; its separate failed
|
||||
predecessor is not claimed as passing.
|
||||
|
||||
Seven tutorial companions were copied by the parent; Save As wrote 30 source
|
||||
files. The complete-model oracle uses the same core implementation family, so
|
||||
it verifies structural conservation rather than independent language semantics.
|
||||
Forced server exit 1 is intentional, not graceful/power-loss proof. Two desktop
|
||||
exit-0 sessions on one account/machine with restricted PATH do not establish
|
||||
clean-machine, keyboard accessibility, minimum-window, broad DPI, Linux or
|
||||
whole-release acceptance. The native error footer truncates; pointer tooltip
|
||||
access was exercised, keyboard-only access was not. A clean model with an
|
||||
external disk conflict still says All changes saved in its local-edit header;
|
||||
the explicit failure footer provides the save result. No automatic reload or
|
||||
overwrite is inferred. Existing published releases remain frozen.
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"attribution": "Parent-observed collection/staging verification before the evidence-only checkpoint commit.",
|
||||
"desktop_source": "0e83157e09d52e6152df91208e41693b62da2d46",
|
||||
"package_documentation_source": "ef28f1784efe6717b0ca72c0eb3c97bc30ebfe47",
|
||||
"raw_indexed_files": 164,
|
||||
"raw_indexed_bytes": 15568173,
|
||||
"source_snapshot_files": 637,
|
||||
"commands": [
|
||||
{"command": "python .local/package46/collect-evidence.py --confirmed", "exit": 0},
|
||||
{"command": "python harness/experiments/save-diagnostics-package-20261001/raw/verify.py --current-source", "exit": 0},
|
||||
{"command": "python harness/experiments/save-diagnostics-package-20261001/raw/verify.py --index --current-source", "exit": 0},
|
||||
{"command": "git diff --cached --check (initial)", "outcome": "Raw captured CRLF bytes were flagged as whitespace; outer shell also ran stat and returned0, so that outer code was not treated as a successful diff check."},
|
||||
{"command": "git diff --cached --check (raw cr-at-eol attribute)", "exit": 2, "outcome": "Ten intentional terminal/HTTP blank lines at EOF remained; index-diff-check02.log retains that small output."},
|
||||
{"command": "git diff --cached --check (raw-only cr-at-eol,-blank-at-eof)", "exit": 0},
|
||||
{"command": "python harness/experiments/save-diagnostics-package-20261001/raw/verify.py --index --current-source", "exit": 0}
|
||||
],
|
||||
"scope": "No raw evidence byte was changed. Only raw-scoped whitespace interpretation was corrected; production/docs policy remains unchanged. Offline/index/source consistency is not another compiler, native or REST run. The raw inventory excludes this checkpoint record and subsequent review/publication records."
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
# Independent package46 packet closure review
|
||||
|
||||
Final bounded closure review, 2026-10-01 PDT. **No material blocker found** in collection integrity, the offline verifier, staged evidence preservation or the reviewed documentation updates. This extends the earlier raw independent package review; it does not replace it or repeat its native/runtime results. Publication, commit/push confirmation and released-asset download readback remain future parent-owned gates.
|
||||
|
||||
Only this report was written. No raw packet, source, helper, documentation, index or Git history was changed; no archive extraction, native GUI, Cargo, application/server launch or REST request was repeated.
|
||||
|
||||
## What was checked
|
||||
|
||||
Read the collector and verifier as source, packet README and both scoped attribute files, staged STATE/contribution-note changes, and final release-validation text. The collector requires a fresh destination and completed receipts, verifies the extracted-package file inventory before capture, rejects duplicate destinations/symlinks and excluded executable/archive inputs, hashes each source before and after copying, and creates a manifest of the captured packet. It does not rewrite raw native/HTTP data into normalized text or merge into an old packet.
|
||||
|
||||
Independently reconciled every collection receipt entry against both the raw file and its original local source. All **162 copied files** are byte-identical to their originals. The collector additionally creates raw `.gitattributes` and `collection-receipt.json`, producing **164 inventoried files / 15,568,173 bytes**. `evidence-files.json` is outside its own inventory: the raw directory therefore contains **165 actual files including the inventory**. README's “164 indexed files … plus the inventory itself” is consistent with this convention.
|
||||
|
||||
Ran the collected offline verifier exactly once:
|
||||
|
||||
```powershell
|
||||
& 'C:/Users/User/.cache/codex-runtimes/codex-primary-runtime/dependencies/python/python.exe' harness/experiments/save-diagnostics-package-20261001/raw/verify.py --index --current-source
|
||||
```
|
||||
|
||||
Exit 0, result:
|
||||
|
||||
```json
|
||||
{"status":"PASS","evidence_files":164,"source_files":637,"index_checked":true,"current_source_checked":true,"scope":"Offline identity and complete source/model receipt consistency; no repeated native or compiler execution."}
|
||||
```
|
||||
|
||||
The optional index check reads each staged blob through Git and requires exact byte equality with the raw file, including ignored logs and original CRLF/terminal/HTTP bytes. The source check resolves the recorded commit's Git tree, checks every recorded source blob identity, and additionally checks current bytes for all **637** source inputs. It does not rely on a clean working-tree assertion to hide the staged documentation changes.
|
||||
|
||||
## Evaluator scope and correctness
|
||||
|
||||
The verifier performs substantive reconstruction beyond checking PASS strings:
|
||||
|
||||
- Exact packet file membership and every recorded size/SHA256; exact staged bytes with the option used above.
|
||||
- Pinned source Git identities; current-source hashes with the option used above; complete packaged build-evidence equality and package/extraction input hash consistency.
|
||||
- Both native process results and actual empty stdout/stderr files.
|
||||
- All three full 30-file source requests equal their returned source bundles. Both complete saved Projects equal pristine plus exactly the declared Activity-name change; all other fields remain in the comparison.
|
||||
- Reconstructs pristine 37-file contents from the complete 30-source-file request plus seven captured companion files, and checks the complete baseline hashes. Reconstructs only the literal name replacement and declared external comment, then checks every full filename/hash set in the eight phase receipts.
|
||||
- Fresh-reopen byte receipt equals the complete saved expected state.
|
||||
- Valid-model response equality, exact original work-context warning identity/severity, and exactly one additional trace_drift/baseline/OaChanged warning on the specified trace. No unexpected warning delta is ignored.
|
||||
- Nineteen captured images remain present.
|
||||
|
||||
The implementation is read-only: it does not execute captured scripts, compiler, GUI or server, and the original Windows paths in archived helpers are not silently treated as portable replay instructions. README correctly warns about adapting runtime helpers to fresh directories and never replaying injection against a user's project.
|
||||
|
||||
Important limits remain explicit. The offline verifier checks the server smoke's PASS/count receipt and hashes its raw HTTP records; it does **not** replay all 23 REST assertions or the requests. The previous independent review read and reconciled those responses, while the new packet preserves them unchanged. Native intermediate bytes are phase receipts and observed interaction evidence, not direct access to past on-disk states. Stores/working directories and executable archives are intentionally excluded; captured complete model/source envelopes support offline structural checks, and artifact identity points to the separately delivered ZIP. Git and the recorded source commit must exist in the checkout for the pinned-source step. These are acceptable limits for an evidence verifier, not missing functionality disguised as a new runtime test.
|
||||
|
||||
## Scoped byte preservation
|
||||
|
||||
The parent `.gitattributes` contains only:
|
||||
|
||||
```gitattributes
|
||||
raw/** -text whitespace=cr-at-eol,-blank-at-eof
|
||||
```
|
||||
|
||||
Raw's own attributes preserve text bytes with `* -text` and `**/* -text`. The new whitespace exceptions apply only to captured raw evidence; they do not change Rust, production source, normal documentation or general repository formatting rules. Most importantly, the staged-blob comparison passed without changing the inventory or captured bytes. Initial diff-check complaints about CRLF and intentional blank EOF lines therefore do not justify rewriting raw logs/HTTP. The scoped solution preserves the evidence rather than weakening its hash/byte oracle.
|
||||
|
||||
## Documentation closure
|
||||
|
||||
The packet README distinguishes the preparation-helper author's artifact precheck from the independent final review and parent-operated native observation. It names the separate desktop, server and package-doc source IDs, gives the exact ZIP identity, documents the inventory convention and verifier flags, and preserves failed assumptions and testing limits. It does not promise portable execution of the historical scripts or treat the one-account Windows run as clean-machine/whole-platform acceptance.
|
||||
|
||||
STATE's added paragraph links the completed fresh package validation, describes the actual saved-state/refusal/recovery/reopen checks and 23 server assertions, and explicitly says **publication is pending** and the separately owned follow-up union is outside scope. Its preceding contribution paragraph retains historical normal/minimum-window evidence separately; it does not claim the new package repeated that minimum-size test.
|
||||
|
||||
The contribution-note change points to the later extracted-runtime evidence while keeping publication and broader integration separate. The final release validation preserves the exact three-filter targeted command, 637 source-input versus 559 package-input distinction, 565 delivered file count, explicit corrected Unicode02 donor/hash, old server toolchain versus current DLL pairing, parent-copied companion limitation, two actual native processes and known UI limitations. No Linux/full-suite/complete-OA-SA or unperformed publication claim was found.
|
||||
|
||||
The raw independent review's recorded draft-document hash remains a historical review-time identity. Later navigation/count/documentation closure edits were reviewed here and have a new hash below; the raw review is correctly unchanged. This report belongs outside raw's immutable inventory, preventing recursive review-of-itself inventory changes.
|
||||
|
||||
## Identities reviewed
|
||||
|
||||
HEAD during closure: `ef28f1784efe6717b0ca72c0eb3c97bc30ebfe47`, with staged evidence/documentation changes. SHA256:
|
||||
|
||||
- Packet `README.md`: `734a66d3fc531365fa550855196f1ec4f312854f053b562f2ed4c51aba326c29`.
|
||||
- Packet parent `.gitattributes`: `075fa33ec35f4649d4b503a03400f1c9e0be40931fe8ee5d361433943cd9ecf5`.
|
||||
- Raw `.gitattributes`: `d52819fcfcc346c0c10a630c519d3045b4f9297e92f2de18338775c687c37b25`.
|
||||
- Raw `collect-evidence.py`: `ec0075aa8aa6957a1780d79c50ba0f15a16f18e9b00e0ba01d57fca65dbc686f`.
|
||||
- Raw `verify.py`: `ed093a3486d2df83bfaa5b2a38ef1f0d372438dd1e5ac12891427e8a12c57027`.
|
||||
- Raw `evidence-files.json`: `f0db52fb1e03f0960272b9d581b49ac5f3b74b95403a1caa01152a6a5af99b24`.
|
||||
- Raw `collection-receipt.json`: `cbc5b5396196a96cc9963ca1d7572f42a63836a235aac87a5fa53b7a78d8038b`.
|
||||
- `harness/STATE.md`: `e33730d115bb5d55d9967ad2c4f9731f2fb7946e9c9d0fbbc650fadcd57f69db`.
|
||||
- `harness/save-as-diagnostics-20261001.md`: `5a68cbf484a4bab7ed83d237a70674e0d8a371c80df619a938ec4487fc6e390c`.
|
||||
- `harness/release-save-diagnostics-validation-20261001.md`: `fe85221fd6ba564eeccbdfd99d448bd0de61e1aaf4e2f68345ebf2e13951ff15`.
|
||||
|
||||
No new runtime or product acceptance is inferred from this packet-closure PASS. The earlier exact-artifact scoped Windows preview recommendation stands; delivery still requires the parent's subsequent confirmed publication and asset readback.
|
||||
@@ -0,0 +1,57 @@
|
||||
# Independent publication closure review
|
||||
|
||||
Status: final bounded publication closure review. No material blocker remains in publication receipts, staged publication inventory or the reviewed delivery-document claims. The stale contribution-note paragraph identified below has been corrected and rechecked.
|
||||
|
||||
This review uses captured receipts and uploader source plus the parent's reported independent Gitea MCP confirmation. It performs no new download, remote query, GUI, Cargo, server/REST operation or Gitea mutation. Only this report was written, outside both raw and publication inventories.
|
||||
|
||||
## Publication identity and uploader scope
|
||||
|
||||
The upload and publish receipts agree on release **9**, tag `v0.2.0-preview.save-diagnostics.20261001`, checkpoint `e144e32e9984477a258759a9dcc75f6e499fc224`, and the same three asset IDs, sizes and hashes. Upload records draft true; publish records draft false. The executed uploader asserts prerelease true before and after publishing and exact notes equality afterward. The parent separately reports MCP reads confirming release 9's target/state and unchanged targets/state of releases 7/8. I did not independently repeat those network reads. The compact JSON receipt does not itself include a prerelease field or the complete returned release object; the script assertions and separately reported MCP checks supply that portion of the evidence.
|
||||
|
||||
The captured uploader checks the new tag, expected source and draft state, uploads missing assets without a delete/replace path, and accepts a pre-existing same-name asset only after exact download identity. Publish requires the expected asset name set, reads back all three bytes before changing the new draft, PATCHes only draft/prerelease/body, and then checks published state, exact notes and tag-to-release identity. It does not update an old release/tag or infer a new build. Redirects are rejected, and the captured helper contains credential lookup code but no credential value. I did not execute it or read its credential source.
|
||||
|
||||
The two receipt sets preserve identical identities:
|
||||
|
||||
| Asset | Bytes | SHA256 |
|
||||
| --- | --- | --- |
|
||||
| 36: ZIP | 34,191,561 | `8b4e353e075f22350a07794ee47a02cf85725501223299cf367134aa1f5b63b7` |
|
||||
| 37: checksum | 150 | `de08984ea2cbaf95b6241ac817f1ad8459a0b863adf7ee9fe51de0834bcd2d54` |
|
||||
| 38: VALIDATION.md | 2,930 | `de5ecaf07b5a0014318e809cea152c738dfdfc55ff0aa8ed3d7ef78b701df9e4` |
|
||||
|
||||
I hashed the existing local ready01 assets and matched those receipt identities, without downloading or re-extracting the archive. Draft attachment URLs and published release download URLs differ as expected; asset IDs and bytes remain the same. This review corroborates the captured successful readback, not indefinite future availability or anonymous access.
|
||||
|
||||
## Independent local/index checks
|
||||
|
||||
`publication/files.json` contains **12 records / 31,561 bytes**. The directory contains those 12 files plus the inventory itself. All recorded lengths and SHA256 values match, and all 12 copied records match their local originals byte-for-byte. All 13 publication directory files, publication.md, packet README/attributes, STATE and release-validation text match their staged blobs exactly: 18 exact staged comparisons passed.
|
||||
|
||||
The ordinary contribution note is intentionally outside captured-byte attributes. Its working file had CRLF while its staged blob had LF, with identical normalized content. My initial blanket byte-equality assertion stopped there; a read-only comparison established exactly 142 CRLF conversions and no content change. Raw/publication byte checks remained exact. This was a reviewer assumption about normal document normalization, not weakened evidence preservation.
|
||||
|
||||
The parent attribute update applies byte preservation only to `publication/**`; the original raw inventory is unchanged and there is no staged raw-file delta. The current closure review belongs outside either inventory and does not cause recursive manifest edits.
|
||||
|
||||
## Tooling failures are preserved, not erased
|
||||
|
||||
The first asset preparer requires a non-existing destination. The previous input-preparation step had created an empty scaffold, so refusal before writing assets was the intended guard. The fresh-preparation helper explicitly verifies and preserves that empty scaffold. Independent byte comparison confirms the ready01 preparer and uploader differ from their originals only in the destination-directory literal. Clean-checkpoint/source/archive guards remain unchanged.
|
||||
|
||||
The captured `correct-validation-path.py` checks for two actual backslashes before its first write. The portable validation contains exactly one actual separator and zero doubled occurrences in the backend invocation. The failed assertion therefore prevented the proposed unnecessary correction. The copied/uploaded validation bytes retain their original pinned hash. The publication narrative accurately distinguishes JSON display escaping from raw command bytes and does not present the failed checker as a product defect or success.
|
||||
|
||||
## Published notes and documentation scope
|
||||
|
||||
The exact release notes and portable validation describe the bounded Save As diagnostic change, prior compact Help, separate desktop/server/documentation identities, reused development binaries, 29 targeted checks and the actual native/server evidence. They preserve companion-copy limitations, forced-server-termination scope, one-account Windows/runtime constraints, and the absence of new Linux/full-suite/complete-OA-SA acceptance. The immutable link to the evidence checkpoint is appropriate even though that checkpoint's original validation predated publication; the later publication page explains this chronology explicitly.
|
||||
|
||||
STATE and the release-validation update accurately replace publication-pending language with the confirmed release link and captured delivery evidence. They do not claim the separately owned follow-up union, issue closure, Wiki update or future documentation commit/push already happened.
|
||||
|
||||
Resolved finding: the contribution note initially retained a closing paragraph saying no packaged #46 release was claimed and packaged delivery remained pending, despite its updated opening linking confirmed publication. The parent changed the section to “Contribution limits and subsequent delivery,” explicitly limited the old review to its original scope, linked later package validation/publication, and recorded release 9 delivery. I re-read the affected paragraph and verified staged content matches the working text under normal LF normalization. Only broader follow-up coordination points to Gitea; no versioned live issue-closure ledger was added. The raw historical review remains unchanged.
|
||||
|
||||
## Key captured identities
|
||||
|
||||
- Publication inventory: `319d742dd2694347d0a3b4157ee999618160a58694d935f4f33a47fcf30f36a0`.
|
||||
- Publish readback: `ee4b8e0c1f17a30397441d6e8c87d0b2bc21630e0a4ef43d2299168846994797`.
|
||||
- Upload readback: `85a8bc2df346b477bacdf3001b10a09304536e0fc1b918f0672d0538343590be`.
|
||||
- Executed uploader: `8e0ca5da598e351f8146cdffcd3e1188726bf7dd3bb7c84ca9119559f7f1afb6`.
|
||||
- Exact release notes: `ce860446855d28d471088b24aa816c42ac23e8e2f8eab4c9856731d8935b8e72`.
|
||||
- Publication narrative: `bce0ff32f3bd2b6435c52cf0d4e381669d75ce0d6a97907eba97ef5c5539b6cb`.
|
||||
- STATE: `a3184bb2bc75fe008453a1d734663dcd24a85bcdc901aed4c0bebef8a190aa6e`.
|
||||
- Release validation: `4a97dc063f8a37f3e1a978ae9a840418b9b53fa87b8ea47db837d03723e7b86f`.
|
||||
- Corrected contribution note, staged LF bytes: `29bc5647d85392c7fad5a1e34523e59b64d0c5a71a2d1bed9537d18245ccf47b`; working CRLF bytes: `6950b045466c4d42f1b3521b43ad4dab95fa1afb8a852bd3404131c543a611fd`.
|
||||
|
||||
The earlier exact-artifact scoped preview acceptance remains supported. Publication confirmation adds delivery evidence, not new runtime or semantic acceptance. Parent retains final delivery-document commit/push, #46 closure and Wiki coordination.
|
||||
@@ -0,0 +1,61 @@
|
||||
# Confirmed save-diagnostics preview publication
|
||||
|
||||
[Gitea release 9](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/releases/tag/v0.2.0-preview.save-diagnostics.20261001)
|
||||
is published, draft false / prerelease true. Its immutable tag/evidence checkpoint
|
||||
is `e144e32e9984477a258759a9dcc75f6e499fc224`. Desktop source `0e83157e`, reused
|
||||
server source `715036e`, and package documentation `ef28f178` retain their
|
||||
distinct provenance in the [verified release record](../../release-save-diagnostics-validation-20261001.md).
|
||||
This is scoped #46 delivery, not complete OA/SA or the separately owned union.
|
||||
|
||||
The new draft's three assets were uploaded without replacing anything, downloaded
|
||||
and matched before publication. Publishing rechecked all three downloads,
|
||||
updated only this new draft, and confirmed exact notes/tag/source, draft false
|
||||
and prerelease true. A separate Gitea MCP read confirms the published release
|
||||
target. Releases 7/8 still have their original targets and published prerelease
|
||||
state; no old tag, release body or asset was modified.
|
||||
|
||||
| Asset ID | File | Bytes | SHA256 |
|
||||
| --- | --- | --- | --- |
|
||||
| 36 | Studio ZIP | 34,191,561 | `8b4e353e075f22350a07794ee47a02cf85725501223299cf367134aa1f5b63b7` |
|
||||
| 37 | ZIP checksum | 150 | `de08984ea2cbaf95b6241ac817f1ad8459a0b863adf7ee9fe51de0834bcd2d54` |
|
||||
| 38 | VALIDATION.md | 2,930 | `de5ecaf07b5a0014318e809cea152c738dfdfc55ff0aa8ed3d7ef78b701df9e4` |
|
||||
|
||||
[Upload readback](publication/upload-readback.json),
|
||||
[published readback](publication/publish-readback.json),
|
||||
[exact published notes](publication/release-notes.md) and
|
||||
[portable validation](publication/VALIDATION.md) retain the full download URLs,
|
||||
identities and source scopes. [File identities](publication/files.json) cover
|
||||
the 12 copied publication records/helpers. The earlier raw packet remains exact
|
||||
and separately inventoried; later publication records are outside that inventory.
|
||||
[Independent publication-record review](publication-review.md) reconciles all
|
||||
copied records with their originals and staged bytes. Its stale contribution-note
|
||||
finding was corrected and rechecked before this delivery checkpoint.
|
||||
|
||||
Commands used bundled Python from the recorded environment:
|
||||
|
||||
```powershell
|
||||
python .local/package46/prepare-release-assets.py
|
||||
python .local/package46/prepare-release-notes.py
|
||||
python .local/package46/prepare-fresh-release-assets.py
|
||||
python .local/package46/prepare-release-assets-ready01.py
|
||||
python .local/package46/release-assets-ready01.py upload 9 e144e32e9984477a258759a9dcc75f6e499fc224
|
||||
python .local/package46/release-assets-ready01.py publish 9 e144e32e9984477a258759a9dcc75f6e499fc224
|
||||
```
|
||||
|
||||
The first preparation failed safely: the input preparation helper had already
|
||||
created an empty `release-assets` scaffold, while the asset preparer required a
|
||||
new directory. No file was overwritten. Root verified that scaffold was empty,
|
||||
preserved it and the failed helper, then used a new `release-assets-ready01`
|
||||
directory with unchanged artifact/clean-source guards. A separate draft was
|
||||
created but remained unpublished until assets passed.
|
||||
|
||||
A parent check mistakenly read JSON display escaping as two actual backslashes
|
||||
in the backend command. The [failed checker](publication/correct-validation-path.py)
|
||||
asserted before any write. A subsequent raw-byte check confirmed exactly one
|
||||
backslash and zero doubled separators in the portable validation. No correction
|
||||
was needed; the originally prepared file was uploaded unchanged. These are
|
||||
preserved tooling assumptions, not product defects or weakened gates.
|
||||
|
||||
All runtime/compiler/independent review claims retain their preceding source and
|
||||
environment limits. Publication establishes artifact availability and integrity;
|
||||
it adds no new GUI/REST, Linux, full-suite, clean-machine or complete-release claim.
|
||||
@@ -0,0 +1,49 @@
|
||||
# Save diagnostics Windows preview validation
|
||||
|
||||
The [verified scope, evidence and exact build/run instructions](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/src/commit/e144e32e9984477a258759a9dcc75f6e499fc224/harness/release-save-diagnostics-validation-20261001.md)
|
||||
are authoritative. This attachment links that immutable release/evidence checkpoint.
|
||||
|
||||
Desktop source: 0e83157e09d52e6152df91208e41693b62da2d46.
|
||||
Unchanged reused server source: 715036e132677dd2bc2fb37ed316d93dc9987aec.
|
||||
Packaged documentation source: ef28f1784efe6717b0ca72c0eb3c97bc30ebfe47.
|
||||
Release/evidence checkpoint: e144e32e9984477a258759a9dcc75f6e499fc224.
|
||||
Windows gnullvm dev/unoptimized builds, debug assertions enabled.
|
||||
|
||||
ZIP: 34,191,561 bytes; SHA256
|
||||
`8b4e353e075f22350a07794ee47a02cf85725501223299cf367134aa1f5b63b7`.
|
||||
|
||||
Extract the complete folder and launch `arcadia-studio.exe`, keeping
|
||||
`libunwind.dll` beside both executables. Read `START-HERE.txt`.
|
||||
Copy the complete example before editing. Save All updates the loaded source.
|
||||
Save As preserves includes and needs a fresh source destination; needed
|
||||
companions/artifacts require separate copying. Protected destination conflicts
|
||||
now have accurate wording and recovery guidance; genuine observed external edits
|
||||
retain their external-change diagnosis.
|
||||
|
||||
Optional backend in a writable working directory:
|
||||
|
||||
```powershell
|
||||
.\arcadia-server.exe --bind 127.0.0.1:8787 --data-dir C:/ArcadiaModels/server
|
||||
```
|
||||
|
||||
See packaged docs/server.md and docs/api.rst for REST/deployment/authentication.
|
||||
No remote deployment is claimed.
|
||||
|
||||
The unchanged desktop source has 29 targeted save checks, formatting, strict
|
||||
Clippy, GUI build and independent contribution review. Fresh packaging/extraction
|
||||
and source identities pass. Two actual extracted desktop processes exercise
|
||||
Apply, accurate refusal, Save All/fresh Save As recovery, real external-change
|
||||
protection, fresh reopen and no-op Save All, with complete 37-file byte oracles
|
||||
and complete 30-file parsed Project/source comparisons. Both desktop processes
|
||||
exit 0 with empty logs and all 565 package files unchanged. Fresh server testing
|
||||
passes 23 checks, including exact OpenAPI, Unicode/CRLF, stale 412 and acknowledged
|
||||
write persistence after an owned forced restart, not graceful/power-loss testing.
|
||||
Independent artifact/source/native/server/claims review passes for this scope.
|
||||
|
||||
This is an unfinished scoped Windows development preview, not the complete
|
||||
first OA/SA release or the separately owned follow-up union. Dense diagrams,
|
||||
Scenario adapters, calculations/constraints, maintained libraries and broader
|
||||
accessibility/DPI remain unfinished. Native testing used one existing account/
|
||||
machine at 1442×932 with system-only child PATH. No full-suite rerun, second clean
|
||||
machine, minimum-size package trial or Linux validation is claimed. Linux/WSL
|
||||
remains user-deferred. Prior releases remain unchanged.
|
||||
@@ -0,0 +1,16 @@
|
||||
from pathlib import Path
|
||||
root = Path(__file__).resolve().parent
|
||||
target = root / 'release-assets-ready01/VALIDATION.md'
|
||||
data = target.read_bytes()
|
||||
before = b'.' + bytes([92, 92]) + b'arcadia-server.exe --bind'
|
||||
after = b'.' + bytes([92]) + b'arcadia-server.exe --bind'
|
||||
assert data.count(before) == 1
|
||||
target.write_bytes(data.replace(before, after))
|
||||
for name in ['prepare-release-assets.py', 'prepare-release-assets-ready01.py']:
|
||||
path = root / name
|
||||
data = path.read_bytes()
|
||||
before = b'.' + bytes([92]) * 4 + b'arcadia-server.exe --bind'
|
||||
after = b'.' + bytes([92]) * 2 + b'arcadia-server.exe --bind'
|
||||
assert data.count(before) == 1
|
||||
path.write_bytes(data.replace(before, after))
|
||||
print('Corrected only native backend command separator in local pre-upload validation and its preparers. Archive/checksum unchanged.')
|
||||
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"correct-validation-path.py": {
|
||||
"bytes": 831,
|
||||
"sha256": "229ac6675be1c2a02f407d77483aba352d4218c7627d4ebf19b604fec8b33001"
|
||||
},
|
||||
"prepare-fresh-release-assets.py": {
|
||||
"bytes": 981,
|
||||
"sha256": "7d3dadb28c16cf0e1ffd723566f2ff5958e28fc1a1359bc4ae4918c6f85a858b"
|
||||
},
|
||||
"prepare-release-assets-ready01.py": {
|
||||
"bytes": 4295,
|
||||
"sha256": "708e6085c10136c79bf5d9e2709a86d1b7eb0ddb5e43b0b37a349d004cdf3a85"
|
||||
},
|
||||
"prepare-release-assets.py": {
|
||||
"bytes": 4287,
|
||||
"sha256": "5aea94dc90706a5034a92e3754795f41b3329319fe25fae306a52a5ff136d44b"
|
||||
},
|
||||
"prepare-release-notes.py": {
|
||||
"bytes": 3527,
|
||||
"sha256": "734f4483f9f3ac9e21955a64a53e05f5979fcbb12432bb39bd4a23a50e642201"
|
||||
},
|
||||
"prepare-release-upload.py": {
|
||||
"bytes": 514,
|
||||
"sha256": "95dc5b8162d4b27a1ac89153b8083b419f0d2d0ba3334de7d4f378534673279e"
|
||||
},
|
||||
"publish-readback.json": {
|
||||
"bytes": 1548,
|
||||
"sha256": "ee4b8e0c1f17a30397441d6e8c87d0b2bc21630e0a4ef43d2299168846994797"
|
||||
},
|
||||
"release-assets-ready01.py": {
|
||||
"bytes": 4163,
|
||||
"sha256": "8e0ca5da598e351f8146cdffcd3e1188726bf7dd3bb7c84ca9119559f7f1afb6"
|
||||
},
|
||||
"release-assets.py": {
|
||||
"bytes": 4155,
|
||||
"sha256": "fbba18c91ab491e9147393cba2ad1a4cb7b02908c8909b27179a76783fc987af"
|
||||
},
|
||||
"release-notes.md": {
|
||||
"bytes": 3099,
|
||||
"sha256": "ce860446855d28d471088b24aa816c42ac23e8e2f8eab4c9856731d8935b8e72"
|
||||
},
|
||||
"upload-readback.json": {
|
||||
"bytes": 1231,
|
||||
"sha256": "85a8bc2df346b477bacdf3001b10a09304536e0fc1b918f0672d0538343590be"
|
||||
},
|
||||
"VALIDATION.md": {
|
||||
"bytes": 2930,
|
||||
"sha256": "de5ecaf07b5a0014318e809cea152c738dfdfc55ff0aa8ed3d7ef78b701df9e4"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
from pathlib import Path
|
||||
root = Path(__file__).resolve().parent
|
||||
assert (root / 'release-assets').is_dir() and not list((root / 'release-assets').iterdir()), 'The prior scaffold must still be empty; preserve it.'
|
||||
source = (root / 'prepare-release-assets.py').read_text(encoding='utf-8')
|
||||
before = "target = root / 'release-assets'"
|
||||
assert source.count(before) == 1
|
||||
with (root / 'prepare-release-assets-ready01.py').open('x', encoding='utf-8', newline='\n') as f:
|
||||
f.write(source.replace(before, "target = root / 'release-assets-ready01'"))
|
||||
uploader = (root / 'release-assets.py').read_text(encoding='utf-8')
|
||||
before = "assets = root/'release-assets'"
|
||||
assert uploader.count(before) == 1
|
||||
with (root / 'release-assets-ready01.py').open('x', encoding='utf-8', newline='\n') as f:
|
||||
f.write(uploader.replace(before, "assets = root/'release-assets-ready01'"))
|
||||
print('Prepared fresh output-directory variants; original empty scaffold and failed helper preserved. No network requests.')
|
||||
@@ -0,0 +1,71 @@
|
||||
"""Prepare pinned portable assets after the reviewed evidence checkpoint is committed."""
|
||||
from pathlib import Path
|
||||
import hashlib, shutil, subprocess
|
||||
|
||||
root = Path(__file__).resolve().parent
|
||||
repository = root.parent.parent
|
||||
assert repository.resolve() == Path('C:/ar-save-01a0d717').resolve()
|
||||
assert not subprocess.check_output(['git', 'status', '--porcelain'], cwd=repository, text=True).strip()
|
||||
checkpoint = subprocess.check_output(['git', 'rev-parse', 'HEAD'], cwd=repository, text=True).strip()
|
||||
assert subprocess.check_output(['git', 'diff', '--name-only', 'ef28f1784efe6717b0ca72c0eb3c97bc30ebfe47', checkpoint, '--', 'crates', 'Cargo.toml', 'Cargo.lock', 'docs', 'scripts', 'examples', 'README.md', 'LICENSE'], cwd=repository, text=True).strip() == ''
|
||||
record = repository / 'harness/release-save-diagnostics-validation-20261001.md'
|
||||
assert record.is_file()
|
||||
target = root / 'release-assets-ready01'
|
||||
target.mkdir(exist_ok=False)
|
||||
name = 'ArcadiaStudio-0.2.0-preview.save-diagnostics.20261001-x86_64-pc-windows-gnullvm.zip'
|
||||
archive = root / 'dist' / name
|
||||
assert archive.stat().st_size == 34191561
|
||||
assert hashlib.sha256(archive.read_bytes()).hexdigest() == '8b4e353e075f22350a07794ee47a02cf85725501223299cf367134aa1f5b63b7'
|
||||
for filename in [name, name + '.sha256']:
|
||||
shutil.copyfile(root / 'dist' / filename, target / filename)
|
||||
(target / 'VALIDATION.md').write_text(f'''# Save diagnostics Windows preview validation
|
||||
|
||||
The [verified scope, evidence and exact build/run instructions](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/src/commit/{checkpoint}/harness/release-save-diagnostics-validation-20261001.md)
|
||||
are authoritative. This attachment links that immutable release/evidence checkpoint.
|
||||
|
||||
Desktop source: 0e83157e09d52e6152df91208e41693b62da2d46.
|
||||
Unchanged reused server source: 715036e132677dd2bc2fb37ed316d93dc9987aec.
|
||||
Packaged documentation source: ef28f1784efe6717b0ca72c0eb3c97bc30ebfe47.
|
||||
Release/evidence checkpoint: {checkpoint}.
|
||||
Windows gnullvm dev/unoptimized builds, debug assertions enabled.
|
||||
|
||||
ZIP: 34,191,561 bytes; SHA256
|
||||
`8b4e353e075f22350a07794ee47a02cf85725501223299cf367134aa1f5b63b7`.
|
||||
|
||||
Extract the complete folder and launch `arcadia-studio.exe`, keeping
|
||||
`libunwind.dll` beside both executables. Read `START-HERE.txt`.
|
||||
Copy the complete example before editing. Save All updates the loaded source.
|
||||
Save As preserves includes and needs a fresh source destination; needed
|
||||
companions/artifacts require separate copying. Protected destination conflicts
|
||||
now have accurate wording and recovery guidance; genuine observed external edits
|
||||
retain their external-change diagnosis.
|
||||
|
||||
Optional backend in a writable working directory:
|
||||
|
||||
```powershell
|
||||
.\\arcadia-server.exe --bind 127.0.0.1:8787 --data-dir C:/ArcadiaModels/server
|
||||
```
|
||||
|
||||
See packaged docs/server.md and docs/api.rst for REST/deployment/authentication.
|
||||
No remote deployment is claimed.
|
||||
|
||||
The unchanged desktop source has 29 targeted save checks, formatting, strict
|
||||
Clippy, GUI build and independent contribution review. Fresh packaging/extraction
|
||||
and source identities pass. Two actual extracted desktop processes exercise
|
||||
Apply, accurate refusal, Save All/fresh Save As recovery, real external-change
|
||||
protection, fresh reopen and no-op Save All, with complete 37-file byte oracles
|
||||
and complete 30-file parsed Project/source comparisons. Both desktop processes
|
||||
exit 0 with empty logs and all 565 package files unchanged. Fresh server testing
|
||||
passes 23 checks, including exact OpenAPI, Unicode/CRLF, stale 412 and acknowledged
|
||||
write persistence after an owned forced restart, not graceful/power-loss testing.
|
||||
Independent artifact/source/native/server/claims review passes for this scope.
|
||||
|
||||
This is an unfinished scoped Windows development preview, not the complete
|
||||
first OA/SA release or the separately owned follow-up union. Dense diagrams,
|
||||
Scenario adapters, calculations/constraints, maintained libraries and broader
|
||||
accessibility/DPI remain unfinished. Native testing used one existing account/
|
||||
machine at 1442×932 with system-only child PATH. No full-suite rerun, second clean
|
||||
machine, minimum-size package trial or Linux validation is claimed. Linux/WSL
|
||||
remains user-deferred. Prior releases remain unchanged.
|
||||
''', encoding='utf-8')
|
||||
print('Prepared three pinned release assets for checkpoint ' + checkpoint)
|
||||
@@ -0,0 +1,71 @@
|
||||
"""Prepare pinned portable assets after the reviewed evidence checkpoint is committed."""
|
||||
from pathlib import Path
|
||||
import hashlib, shutil, subprocess
|
||||
|
||||
root = Path(__file__).resolve().parent
|
||||
repository = root.parent.parent
|
||||
assert repository.resolve() == Path('C:/ar-save-01a0d717').resolve()
|
||||
assert not subprocess.check_output(['git', 'status', '--porcelain'], cwd=repository, text=True).strip()
|
||||
checkpoint = subprocess.check_output(['git', 'rev-parse', 'HEAD'], cwd=repository, text=True).strip()
|
||||
assert subprocess.check_output(['git', 'diff', '--name-only', 'ef28f1784efe6717b0ca72c0eb3c97bc30ebfe47', checkpoint, '--', 'crates', 'Cargo.toml', 'Cargo.lock', 'docs', 'scripts', 'examples', 'README.md', 'LICENSE'], cwd=repository, text=True).strip() == ''
|
||||
record = repository / 'harness/release-save-diagnostics-validation-20261001.md'
|
||||
assert record.is_file()
|
||||
target = root / 'release-assets'
|
||||
target.mkdir(exist_ok=False)
|
||||
name = 'ArcadiaStudio-0.2.0-preview.save-diagnostics.20261001-x86_64-pc-windows-gnullvm.zip'
|
||||
archive = root / 'dist' / name
|
||||
assert archive.stat().st_size == 34191561
|
||||
assert hashlib.sha256(archive.read_bytes()).hexdigest() == '8b4e353e075f22350a07794ee47a02cf85725501223299cf367134aa1f5b63b7'
|
||||
for filename in [name, name + '.sha256']:
|
||||
shutil.copyfile(root / 'dist' / filename, target / filename)
|
||||
(target / 'VALIDATION.md').write_text(f'''# Save diagnostics Windows preview validation
|
||||
|
||||
The [verified scope, evidence and exact build/run instructions](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/src/commit/{checkpoint}/harness/release-save-diagnostics-validation-20261001.md)
|
||||
are authoritative. This attachment links that immutable release/evidence checkpoint.
|
||||
|
||||
Desktop source: 0e83157e09d52e6152df91208e41693b62da2d46.
|
||||
Unchanged reused server source: 715036e132677dd2bc2fb37ed316d93dc9987aec.
|
||||
Packaged documentation source: ef28f1784efe6717b0ca72c0eb3c97bc30ebfe47.
|
||||
Release/evidence checkpoint: {checkpoint}.
|
||||
Windows gnullvm dev/unoptimized builds, debug assertions enabled.
|
||||
|
||||
ZIP: 34,191,561 bytes; SHA256
|
||||
`8b4e353e075f22350a07794ee47a02cf85725501223299cf367134aa1f5b63b7`.
|
||||
|
||||
Extract the complete folder and launch `arcadia-studio.exe`, keeping
|
||||
`libunwind.dll` beside both executables. Read `START-HERE.txt`.
|
||||
Copy the complete example before editing. Save All updates the loaded source.
|
||||
Save As preserves includes and needs a fresh source destination; needed
|
||||
companions/artifacts require separate copying. Protected destination conflicts
|
||||
now have accurate wording and recovery guidance; genuine observed external edits
|
||||
retain their external-change diagnosis.
|
||||
|
||||
Optional backend in a writable working directory:
|
||||
|
||||
```powershell
|
||||
.\\arcadia-server.exe --bind 127.0.0.1:8787 --data-dir C:/ArcadiaModels/server
|
||||
```
|
||||
|
||||
See packaged docs/server.md and docs/api.rst for REST/deployment/authentication.
|
||||
No remote deployment is claimed.
|
||||
|
||||
The unchanged desktop source has 29 targeted save checks, formatting, strict
|
||||
Clippy, GUI build and independent contribution review. Fresh packaging/extraction
|
||||
and source identities pass. Two actual extracted desktop processes exercise
|
||||
Apply, accurate refusal, Save All/fresh Save As recovery, real external-change
|
||||
protection, fresh reopen and no-op Save All, with complete 37-file byte oracles
|
||||
and complete 30-file parsed Project/source comparisons. Both desktop processes
|
||||
exit 0 with empty logs and all 565 package files unchanged. Fresh server testing
|
||||
passes 23 checks, including exact OpenAPI, Unicode/CRLF, stale 412 and acknowledged
|
||||
write persistence after an owned forced restart, not graceful/power-loss testing.
|
||||
Independent artifact/source/native/server/claims review passes for this scope.
|
||||
|
||||
This is an unfinished scoped Windows development preview, not the complete
|
||||
first OA/SA release or the separately owned follow-up union. Dense diagrams,
|
||||
Scenario adapters, calculations/constraints, maintained libraries and broader
|
||||
accessibility/DPI remain unfinished. Native testing used one existing account/
|
||||
machine at 1442×932 with system-only child PATH. No full-suite rerun, second clean
|
||||
machine, minimum-size package trial or Linux validation is claimed. Linux/WSL
|
||||
remains user-deferred. Prior releases remain unchanged.
|
||||
''', encoding='utf-8')
|
||||
print('Prepared three pinned release assets for checkpoint ' + checkpoint)
|
||||
@@ -0,0 +1,55 @@
|
||||
from pathlib import Path
|
||||
import subprocess
|
||||
root = Path(__file__).resolve().parent
|
||||
repository = root.parent.parent
|
||||
assert not subprocess.check_output(['git', 'status', '--porcelain'], cwd=repository, text=True).strip()
|
||||
checkpoint = subprocess.check_output(['git', 'rev-parse', 'HEAD'], cwd=repository, text=True).strip()
|
||||
body = f'''Save As destination collisions now explain that existing files are protected
|
||||
and offer clear recovery: choose a fresh source directory, or use Save All at
|
||||
the current entry. Genuine observed external edits keep their distinct
|
||||
external-change diagnosis. This preview includes the prior compact diagram
|
||||
controls and contextual Help; model/source/history semantics and REST contracts
|
||||
are unchanged.
|
||||
|
||||
Download the Windows x86-64 Studio ZIP and checksum, verify SHA256 and extract
|
||||
the whole folder. Launch `arcadia-studio.exe`, keeping `libunwind.dll` beside both
|
||||
executables. Read `START-HERE.txt` and the attached `VALIDATION.md`. Copy a complete
|
||||
example before editing; Save As copies model source with existing include paths,
|
||||
so companion/external artifacts need separate copying. The optional REST server,
|
||||
examples, offline guide and notices are included.
|
||||
|
||||
Desktop source **0e83157e09d52e6152df91208e41693b62da2d46**; packaged documentation
|
||||
**ef28f1784efe6717b0ca72c0eb3c97bc30ebfe47**. The server is the unchanged released
|
||||
715 artifact with recovered original build provenance and fresh tests of this
|
||||
bundle's selected runtime. Both binaries use the dev/unoptimized profile;
|
||||
packaging did not rebuild them.
|
||||
|
||||
Verified: 29 targeted desktop save checks, formatting, strict Clippy and matching
|
||||
GUI build; exact archive/extraction/notice/documentation identities; fresh
|
||||
independent source/artifact/native/REST/claims review. Two actual extracted
|
||||
desktop sessions exercise Apply, accurate refusal and recovery, genuine external
|
||||
edit protection, fresh Save As, reopen and no-op Save All. Complete 37-file byte
|
||||
oracles and full 30-source-file parsed Projects allow only the declared Activity
|
||||
name change. Both desktop processes exit 0 with empty logs and all 565 package
|
||||
files unchanged. Fresh server testing passes 23 scoped assertions, including exact
|
||||
OpenAPI, Unicode/CRLF, stale 412 and acknowledged-write persistence after owned
|
||||
forced restart. No new full-suite or graceful/power-loss claim is made.
|
||||
|
||||
ZIP: **34,191,561 bytes**, SHA256
|
||||
`8b4e353e075f22350a07794ee47a02cf85725501223299cf367134aa1f5b63b7`.
|
||||
|
||||
This is an unfinished scoped Windows development prerelease, not the complete
|
||||
OA/SA release or separately owned follow-up union. Dense diagrams, remaining
|
||||
Scenario group adapters, quantities/calculations/constraints, maintained
|
||||
libraries and broad accessibility/DPI remain unfinished. Native testing used
|
||||
one existing account/machine at 1442×932 with system-only child PATH. The footer's
|
||||
complete guidance was read with a pointer tooltip; keyboard-only access remains
|
||||
untested. Linux/WSL remains user-deferred. Existing releases/tags remain unchanged.
|
||||
|
||||
[Exact validation, independent review, preserved evidence and build/run instructions](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/src/commit/{checkpoint}/harness/release-save-diagnostics-validation-20261001.md)
|
||||
identify the separate source/build/package scopes. This tag points to the
|
||||
reviewed evidence-only checkpoint **{checkpoint}**, with production inputs unchanged.
|
||||
'''
|
||||
with (root / 'release-notes.md').open('x', encoding='utf-8', newline='\n') as f:
|
||||
f.write(body)
|
||||
print('Prepared release notes for ' + checkpoint)
|
||||
@@ -0,0 +1,9 @@
|
||||
from pathlib import Path
|
||||
root = Path(__file__).resolve().parent
|
||||
source = Path('C:/ar-compact-01a0d717/.local/package39/release-assets.py').read_text(encoding='utf-8')
|
||||
before = 'v0.2.0-preview.compact-help.20261001'
|
||||
assert source.count(before) == 1
|
||||
source = source.replace(before, 'v0.2.0-preview.save-diagnostics.20261001')
|
||||
with (root / 'release-assets.py').open('x', encoding='utf-8', newline='\n') as f:
|
||||
f.write(source)
|
||||
print('Prepared new-tag-only uploader/readback helper. No network requests performed.')
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"mode": "publish",
|
||||
"release_id": 9,
|
||||
"tag": "v0.2.0-preview.save-diagnostics.20261001",
|
||||
"source": "e144e32e9984477a258759a9dcc75f6e499fc224",
|
||||
"url": "http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/releases/tag/v0.2.0-preview.save-diagnostics.20261001",
|
||||
"draft": false,
|
||||
"assets": {
|
||||
"ArcadiaStudio-0.2.0-preview.save-diagnostics.20261001-x86_64-pc-windows-gnullvm.zip": {
|
||||
"bytes": 34191561,
|
||||
"sha256": "8b4e353e075f22350a07794ee47a02cf85725501223299cf367134aa1f5b63b7",
|
||||
"asset_id": 36,
|
||||
"url": "http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/releases/download/v0.2.0-preview.save-diagnostics.20261001/ArcadiaStudio-0.2.0-preview.save-diagnostics.20261001-x86_64-pc-windows-gnullvm.zip"
|
||||
},
|
||||
"ArcadiaStudio-0.2.0-preview.save-diagnostics.20261001-x86_64-pc-windows-gnullvm.zip.sha256": {
|
||||
"bytes": 150,
|
||||
"sha256": "de08984ea2cbaf95b6241ac817f1ad8459a0b863adf7ee9fe51de0834bcd2d54",
|
||||
"asset_id": 37,
|
||||
"url": "http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/releases/download/v0.2.0-preview.save-diagnostics.20261001/ArcadiaStudio-0.2.0-preview.save-diagnostics.20261001-x86_64-pc-windows-gnullvm.zip.sha256"
|
||||
},
|
||||
"VALIDATION.md": {
|
||||
"bytes": 2930,
|
||||
"sha256": "de5ecaf07b5a0014318e809cea152c738dfdfc55ff0aa8ed3d7ef78b701df9e4",
|
||||
"asset_id": 38,
|
||||
"url": "http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/releases/download/v0.2.0-preview.save-diagnostics.20261001/VALIDATION.md"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
"""Upload/read back only this new scoped draft release; never replace assets."""
|
||||
from pathlib import Path
|
||||
import hashlib, json, sys, tomllib, urllib.error, urllib.parse, urllib.request, uuid
|
||||
root = Path(__file__).resolve().parent
|
||||
base = 'http://217.177.34.108:3000'
|
||||
api = base + '/api/v1/repos/sorokin.oleg.edu/ARCADIA-Studio'
|
||||
tag = 'v0.2.0-preview.save-diagnostics.20261001'
|
||||
token = tomllib.loads((Path.home()/'.codex/config.toml').read_text(encoding='utf-8'))['mcp_servers']['gitea']['env']['GITEA_ACCESS_TOKEN']
|
||||
class NoRedirect(urllib.request.HTTPRedirectHandler):
|
||||
def redirect_request(self, *args, **kwargs):
|
||||
raise RuntimeError('Unexpected redirect; credentials are not forwarded')
|
||||
opener = urllib.request.build_opener(NoRedirect)
|
||||
def request(url, method='GET', data=None, content_type=None):
|
||||
assert url.startswith(base+'/')
|
||||
headers = {'Authorization': 'token '+token}
|
||||
if content_type: headers['Content-Type'] = content_type
|
||||
with opener.open(urllib.request.Request(url, data=data, headers=headers, method=method), timeout=60) as response:
|
||||
return response.read()
|
||||
def get(url): return json.loads(request(url))
|
||||
def pin(data): return {'bytes': len(data), 'sha256': hashlib.sha256(data).hexdigest()}
|
||||
mode, release_id, source = sys.argv[1:]
|
||||
assert mode in ('upload', 'publish', 'verify')
|
||||
release_url = api+'/releases/'+str(int(release_id))
|
||||
release = get(release_url)
|
||||
assert release['tag_name'] == tag and release['target_commitish'] == source
|
||||
assert release['prerelease'] is True
|
||||
assets = root/'release-assets-ready01'
|
||||
files = sorted(p for p in assets.iterdir() if p.is_file())
|
||||
assert len(files) == 3
|
||||
records = {}
|
||||
if mode == 'upload':
|
||||
assert release['draft'] is True, 'Only a fresh draft is uploadable'
|
||||
for p in files:
|
||||
before = get(release_url+'/assets')
|
||||
same = [a for a in before if a['name']==p.name]
|
||||
assert len(same) <= 1
|
||||
data = p.read_bytes()
|
||||
if same:
|
||||
assert pin(request(same[0]['browser_download_url'])) == pin(data), 'Existing asset differs; never replace'
|
||||
asset = same[0]
|
||||
else:
|
||||
boundary = 'arcadia-'+uuid.uuid4().hex
|
||||
payload = ('--'+boundary+'\r\nContent-Disposition: form-data; name="attachment"; filename="'+p.name+'"\r\nContent-Type: application/octet-stream\r\n\r\n').encode()+data+('\r\n--'+boundary+'--\r\n').encode()
|
||||
asset = json.loads(request(release_url+'/assets?name='+urllib.parse.quote(p.name), 'POST', payload, 'multipart/form-data; boundary='+boundary))
|
||||
downloaded = request(asset['browser_download_url'])
|
||||
assert pin(downloaded) == pin(data), p.name
|
||||
records[p.name] = {**pin(data), 'asset_id': asset['id'], 'url': asset['browser_download_url']}
|
||||
print(json.dumps({'verified_asset': p.name, **pin(data)}), flush=True)
|
||||
else:
|
||||
existing = get(release_url+'/assets')
|
||||
assert {a['name'] for a in existing} == {p.name for p in files}
|
||||
for p in files:
|
||||
asset = next(a for a in existing if a['name']==p.name)
|
||||
assert pin(request(asset['browser_download_url'])) == pin(p.read_bytes())
|
||||
records[p.name] = {**pin(p.read_bytes()), 'asset_id': asset['id'], 'url': asset['browser_download_url']}
|
||||
if mode == 'publish':
|
||||
assert release['draft'] is True
|
||||
body = (root/'release-notes.md').read_text(encoding='utf-8')
|
||||
request(release_url, 'PATCH', json.dumps({'draft': False, 'prerelease': True, 'body': body}).encode(), 'application/json')
|
||||
release = get(release_url)
|
||||
if mode in ('publish', 'verify'):
|
||||
assert release['draft'] is False and release['prerelease'] is True
|
||||
assert release['body'] == (root/'release-notes.md').read_text(encoding='utf-8')
|
||||
assert get(api+'/releases/tags/'+urllib.parse.quote(tag, safe=''))['id'] == release['id']
|
||||
receipt = {'mode': mode, 'release_id': release['id'], 'tag': tag, 'source': source, 'url': release['html_url'], 'draft': release['draft'], 'assets': records}
|
||||
with (root/(mode+'-readback.json')).open('x', encoding='utf-8') as f:
|
||||
json.dump(receipt, f, indent=2)
|
||||
print(json.dumps({k:v for k,v in receipt.items() if k!='assets'}, indent=2), flush=True)
|
||||
@@ -0,0 +1,68 @@
|
||||
"""Upload/read back only this new scoped draft release; never replace assets."""
|
||||
from pathlib import Path
|
||||
import hashlib, json, sys, tomllib, urllib.error, urllib.parse, urllib.request, uuid
|
||||
root = Path(__file__).resolve().parent
|
||||
base = 'http://217.177.34.108:3000'
|
||||
api = base + '/api/v1/repos/sorokin.oleg.edu/ARCADIA-Studio'
|
||||
tag = 'v0.2.0-preview.save-diagnostics.20261001'
|
||||
token = tomllib.loads((Path.home()/'.codex/config.toml').read_text(encoding='utf-8'))['mcp_servers']['gitea']['env']['GITEA_ACCESS_TOKEN']
|
||||
class NoRedirect(urllib.request.HTTPRedirectHandler):
|
||||
def redirect_request(self, *args, **kwargs):
|
||||
raise RuntimeError('Unexpected redirect; credentials are not forwarded')
|
||||
opener = urllib.request.build_opener(NoRedirect)
|
||||
def request(url, method='GET', data=None, content_type=None):
|
||||
assert url.startswith(base+'/')
|
||||
headers = {'Authorization': 'token '+token}
|
||||
if content_type: headers['Content-Type'] = content_type
|
||||
with opener.open(urllib.request.Request(url, data=data, headers=headers, method=method), timeout=60) as response:
|
||||
return response.read()
|
||||
def get(url): return json.loads(request(url))
|
||||
def pin(data): return {'bytes': len(data), 'sha256': hashlib.sha256(data).hexdigest()}
|
||||
mode, release_id, source = sys.argv[1:]
|
||||
assert mode in ('upload', 'publish', 'verify')
|
||||
release_url = api+'/releases/'+str(int(release_id))
|
||||
release = get(release_url)
|
||||
assert release['tag_name'] == tag and release['target_commitish'] == source
|
||||
assert release['prerelease'] is True
|
||||
assets = root/'release-assets'
|
||||
files = sorted(p for p in assets.iterdir() if p.is_file())
|
||||
assert len(files) == 3
|
||||
records = {}
|
||||
if mode == 'upload':
|
||||
assert release['draft'] is True, 'Only a fresh draft is uploadable'
|
||||
for p in files:
|
||||
before = get(release_url+'/assets')
|
||||
same = [a for a in before if a['name']==p.name]
|
||||
assert len(same) <= 1
|
||||
data = p.read_bytes()
|
||||
if same:
|
||||
assert pin(request(same[0]['browser_download_url'])) == pin(data), 'Existing asset differs; never replace'
|
||||
asset = same[0]
|
||||
else:
|
||||
boundary = 'arcadia-'+uuid.uuid4().hex
|
||||
payload = ('--'+boundary+'\r\nContent-Disposition: form-data; name="attachment"; filename="'+p.name+'"\r\nContent-Type: application/octet-stream\r\n\r\n').encode()+data+('\r\n--'+boundary+'--\r\n').encode()
|
||||
asset = json.loads(request(release_url+'/assets?name='+urllib.parse.quote(p.name), 'POST', payload, 'multipart/form-data; boundary='+boundary))
|
||||
downloaded = request(asset['browser_download_url'])
|
||||
assert pin(downloaded) == pin(data), p.name
|
||||
records[p.name] = {**pin(data), 'asset_id': asset['id'], 'url': asset['browser_download_url']}
|
||||
print(json.dumps({'verified_asset': p.name, **pin(data)}), flush=True)
|
||||
else:
|
||||
existing = get(release_url+'/assets')
|
||||
assert {a['name'] for a in existing} == {p.name for p in files}
|
||||
for p in files:
|
||||
asset = next(a for a in existing if a['name']==p.name)
|
||||
assert pin(request(asset['browser_download_url'])) == pin(p.read_bytes())
|
||||
records[p.name] = {**pin(p.read_bytes()), 'asset_id': asset['id'], 'url': asset['browser_download_url']}
|
||||
if mode == 'publish':
|
||||
assert release['draft'] is True
|
||||
body = (root/'release-notes.md').read_text(encoding='utf-8')
|
||||
request(release_url, 'PATCH', json.dumps({'draft': False, 'prerelease': True, 'body': body}).encode(), 'application/json')
|
||||
release = get(release_url)
|
||||
if mode in ('publish', 'verify'):
|
||||
assert release['draft'] is False and release['prerelease'] is True
|
||||
assert release['body'] == (root/'release-notes.md').read_text(encoding='utf-8')
|
||||
assert get(api+'/releases/tags/'+urllib.parse.quote(tag, safe=''))['id'] == release['id']
|
||||
receipt = {'mode': mode, 'release_id': release['id'], 'tag': tag, 'source': source, 'url': release['html_url'], 'draft': release['draft'], 'assets': records}
|
||||
with (root/(mode+'-readback.json')).open('x', encoding='utf-8') as f:
|
||||
json.dump(receipt, f, indent=2)
|
||||
print(json.dumps({k:v for k,v in receipt.items() if k!='assets'}, indent=2), flush=True)
|
||||
@@ -0,0 +1,45 @@
|
||||
Save As destination collisions now explain that existing files are protected
|
||||
and offer clear recovery: choose a fresh source directory, or use Save All at
|
||||
the current entry. Genuine observed external edits keep their distinct
|
||||
external-change diagnosis. This preview includes the prior compact diagram
|
||||
controls and contextual Help; model/source/history semantics and REST contracts
|
||||
are unchanged.
|
||||
|
||||
Download the Windows x86-64 Studio ZIP and checksum, verify SHA256 and extract
|
||||
the whole folder. Launch `arcadia-studio.exe`, keeping `libunwind.dll` beside both
|
||||
executables. Read `START-HERE.txt` and the attached `VALIDATION.md`. Copy a complete
|
||||
example before editing; Save As copies model source with existing include paths,
|
||||
so companion/external artifacts need separate copying. The optional REST server,
|
||||
examples, offline guide and notices are included.
|
||||
|
||||
Desktop source **0e83157e09d52e6152df91208e41693b62da2d46**; packaged documentation
|
||||
**ef28f1784efe6717b0ca72c0eb3c97bc30ebfe47**. The server is the unchanged released
|
||||
715 artifact with recovered original build provenance and fresh tests of this
|
||||
bundle's selected runtime. Both binaries use the dev/unoptimized profile;
|
||||
packaging did not rebuild them.
|
||||
|
||||
Verified: 29 targeted desktop save checks, formatting, strict Clippy and matching
|
||||
GUI build; exact archive/extraction/notice/documentation identities; fresh
|
||||
independent source/artifact/native/REST/claims review. Two actual extracted
|
||||
desktop sessions exercise Apply, accurate refusal and recovery, genuine external
|
||||
edit protection, fresh Save As, reopen and no-op Save All. Complete 37-file byte
|
||||
oracles and full 30-source-file parsed Projects allow only the declared Activity
|
||||
name change. Both desktop processes exit 0 with empty logs and all 565 package
|
||||
files unchanged. Fresh server testing passes 23 scoped assertions, including exact
|
||||
OpenAPI, Unicode/CRLF, stale 412 and acknowledged-write persistence after owned
|
||||
forced restart. No new full-suite or graceful/power-loss claim is made.
|
||||
|
||||
ZIP: **34,191,561 bytes**, SHA256
|
||||
`8b4e353e075f22350a07794ee47a02cf85725501223299cf367134aa1f5b63b7`.
|
||||
|
||||
This is an unfinished scoped Windows development prerelease, not the complete
|
||||
OA/SA release or separately owned follow-up union. Dense diagrams, remaining
|
||||
Scenario group adapters, quantities/calculations/constraints, maintained
|
||||
libraries and broad accessibility/DPI remain unfinished. Native testing used
|
||||
one existing account/machine at 1442×932 with system-only child PATH. The footer's
|
||||
complete guidance was read with a pointer tooltip; keyboard-only access remains
|
||||
untested. Linux/WSL remains user-deferred. Existing releases/tags remain unchanged.
|
||||
|
||||
[Exact validation, independent review, preserved evidence and build/run instructions](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/src/commit/e144e32e9984477a258759a9dcc75f6e499fc224/harness/release-save-diagnostics-validation-20261001.md)
|
||||
identify the separate source/build/package scopes. This tag points to the
|
||||
reviewed evidence-only checkpoint **e144e32e9984477a258759a9dcc75f6e499fc224**, with production inputs unchanged.
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"mode": "upload",
|
||||
"release_id": 9,
|
||||
"tag": "v0.2.0-preview.save-diagnostics.20261001",
|
||||
"source": "e144e32e9984477a258759a9dcc75f6e499fc224",
|
||||
"url": "http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/releases/tag/v0.2.0-preview.save-diagnostics.20261001",
|
||||
"draft": true,
|
||||
"assets": {
|
||||
"ArcadiaStudio-0.2.0-preview.save-diagnostics.20261001-x86_64-pc-windows-gnullvm.zip": {
|
||||
"bytes": 34191561,
|
||||
"sha256": "8b4e353e075f22350a07794ee47a02cf85725501223299cf367134aa1f5b63b7",
|
||||
"asset_id": 36,
|
||||
"url": "http://217.177.34.108:3000/attachments/3d9dfc28-1040-499b-9735-6d387baa13a1"
|
||||
},
|
||||
"ArcadiaStudio-0.2.0-preview.save-diagnostics.20261001-x86_64-pc-windows-gnullvm.zip.sha256": {
|
||||
"bytes": 150,
|
||||
"sha256": "de08984ea2cbaf95b6241ac817f1ad8459a0b863adf7ee9fe51de0834bcd2d54",
|
||||
"asset_id": 37,
|
||||
"url": "http://217.177.34.108:3000/attachments/4b3244eb-d238-40c7-8818-5ca4ccf07a4b"
|
||||
},
|
||||
"VALIDATION.md": {
|
||||
"bytes": 2930,
|
||||
"sha256": "de5ecaf07b5a0014318e809cea152c738dfdfc55ff0aa8ed3d7ef78b701df9e4",
|
||||
"asset_id": 38,
|
||||
"url": "http://217.177.34.108:3000/attachments/f9b3e960-ac16-4648-a0a4-171da67e1fc7"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
* -text
|
||||
**/* -text
|
||||
@@ -0,0 +1,92 @@
|
||||
# Package46 artifact precheck — 2026-10-01
|
||||
|
||||
Result: no material artifact-integrity or metadata finding in this bounded
|
||||
read-only review. This reviewer authored the preparation helper and therefore
|
||||
is not the sole independent final reviewer. Parent executed packaging; reviewer
|
||||
did not run preparation, packaging, extraction, applications, Cargo, Gitea or
|
||||
any archived code. Native/extracted-runtime acceptance remains separate.
|
||||
|
||||
## Exact artifact and identities
|
||||
|
||||
Archive: `ArcadiaStudio-0.2.0-preview.save-diagnostics.20261001-x86_64-pc-windows-gnullvm.zip`
|
||||
|
||||
- Bytes: 34,191,561.
|
||||
- SHA256: `8b4e353e075f22350a07794ee47a02cf85725501223299cf367134aa1f5b63b7`.
|
||||
- Stage/archive: 565 files; checksum manifest: 564 entries plus itself.
|
||||
- Desktop SHA256: `e9cce9355525ecdc59bfae12608b1e0272167acef5a86b25368ef547e08886ff`.
|
||||
- Server SHA256: `6cebacc117e46fdab023c6402a5cebd6929fb55993ae8ff6b89cd1c6c1170237`.
|
||||
- Runtime SHA256: `f45604a12e8bcd839fd86f667c1be1cc7c4f9da2b3c69ff381ac708f0e1ae7d4`.
|
||||
- `package.json` SHA256: `96b3e6c3783ecc1c9ab75a45410f27df2966b3a4bb9790c451835aa857c22b21`.
|
||||
- `dependency-notices.json` SHA256: `f7049361b62fcafc8bc63ed1bffc030cf9067dd37f386d238b81db86b4a72163`.
|
||||
- Full LLVM-MinGW distribution license SHA256: `8d85c1057d742e597985c7d4e6320b015a9139385cff4cbae06ffc0ebe89afee`, matching installed distribution bytes.
|
||||
|
||||
Metadata preserves desktop source
|
||||
`0e83157e09d52e6152df91208e41693b62da2d46`, server source
|
||||
`715036e132677dd2bc2fb37ed316d93dc9987aec`, and documentation checkpoint
|
||||
`ef28f1784efe6717b0ca72c0eb3c97bc30ebfe47` separately. The packaged build
|
||||
evidence structurally equals the complete prepared JSON, including deeply
|
||||
nested recovered assertions; no PowerShell JSON depth truncation was found.
|
||||
Historical path availability remains false while portable recovered originals
|
||||
are identified separately. Original donor claims were not rewritten.
|
||||
|
||||
The donor server used LLVM-MinGW 20260908 and historically recorded runtime
|
||||
`aa282fa47bb2c4e210cea5e470cdbdca58568f0be0bc73e404d86ab9cd95ef6a`
|
||||
(190,464 bytes). This package selects the independently frozen 20260826 runtime
|
||||
`f456…` (190,976 bytes). The metadata distinguishes them; recovered original
|
||||
build evidence does not establish fresh runtime compatibility.
|
||||
|
||||
## Checks actually performed
|
||||
|
||||
Used bundled Python
|
||||
`C:/Users/User/.cache/codex-runtimes/codex-primary-runtime/dependencies/python/python.exe`
|
||||
with read-only inline scripts, plus the repository's read-only documentation
|
||||
helper. Commands and assertions executed in the review tool transcript:
|
||||
|
||||
1. `Get-Content .local/extract-package46.py` and relevant packaging/helper source.
|
||||
The parent extraction helper checks checksum filename/hash, exact manifest
|
||||
coverage, exact stage/archive sets, case-insensitive duplicate ZIP paths,
|
||||
traversal/absolute paths, symlinks, all member hashes/CRC, empty extraction
|
||||
destination, and post-extraction equality. No finding for these controlled
|
||||
inputs. This reviewer did not execute it or claim its extraction result.
|
||||
2. Inline Python independently hashed stage files and ZIP bytes; parsed every
|
||||
checksum line; checked exact 565-member set, safe unique relative paths,
|
||||
symlink/directory exclusion, all uncompressed member hashes and `testzip()`.
|
||||
ZIP checksum sidecar matched the archive name and bytes exactly.
|
||||
3. Inline Python compared all 559 `package.json` input hashes to stage bytes and
|
||||
complete packaged build evidence to `.local/package46/build-evidence.json`.
|
||||
4. Inline Python verified all 524 source-file hashes across four local packages,
|
||||
Cargo.lock and recorded shared build inputs, and all 489 notice references
|
||||
across 268 packages, two embedded fonts, Rust notices and runtime notices.
|
||||
Inventory records 58 Rust target-library identities. This review verified
|
||||
the notice files, not another compiler/sysroot build or registry resolution.
|
||||
5. `python scripts/package-artifacts.py docs --repository C:/ar-save-01a0d717 --platform windows`
|
||||
captured through `subprocess.check_output`, then checked all 66 resulting
|
||||
documentation input bytes against package input hashes.
|
||||
6. `python scripts/package-artifacts.py check-docs --stage .local/package46/dist/ArcadiaStudio-0.2.0-preview.save-diagnostics.20261001-x86_64-pc-windows-gnullvm`
|
||||
returned `checked_local_document_links: 18`.
|
||||
7. `git diff --stat 0e83157e09d52e6152df91208e41693b62da2d46 HEAD -- build`
|
||||
and the same comparison from `715036e132677dd2bc2fb37ed316d93dc9987aec`
|
||||
produced no changes. These supplement the preparation helper's recorded
|
||||
unchanged-input comparisons without proving reproducible compilation.
|
||||
8. Independently parsed PE32+ headers, sections, import descriptors and delay
|
||||
import data directories from all three frozen binaries using `struct`.
|
||||
Ordinary unique imports: desktop 27, server 15, runtime 11. All delay-import
|
||||
directory RVAs and sizes were zero. The only ordinary non-system import was
|
||||
bundled `libunwind.dll`; its own ordinary imports were Windows components.
|
||||
|
||||
An initial notice-check inline script assumed every package's source hashes
|
||||
had a local repository path and stopped with TypeError on a registry package's
|
||||
null `local_path`. Corrected review checks repository source hashes only when
|
||||
`local_path` is present, and checks all notice references for all packages.
|
||||
The corrected invocation passed; this was a reviewer-script assumption, not
|
||||
a package defect. No inputs were modified by either invocation.
|
||||
|
||||
## Scope and remaining gates
|
||||
|
||||
Package metadata accurately limits itself to packaging/input integrity and
|
||||
explicitly separates old build/native evidence from new acceptance. No summed
|
||||
full-suite totals, peer integration, platform expansion, or complete OA/SA
|
||||
claim was introduced. Dynamic DLL loading and graphics/runtime behavior cannot
|
||||
be established from import tables. Parent still owns extracted desktop/server
|
||||
smoke, model/source oracles, final independent claims review and publication.
|
||||
This report adds no GUI, clean-machine, graceful-shutdown, or new-build claim.
|
||||
@@ -0,0 +1,506 @@
|
||||
{
|
||||
"source_identity": "Desktop: 0e83157e09d52e6152df91208e41693b62da2d46; unchanged reused server: 715036e132677dd2bc2fb37ed316d93dc9987aec; package documentation: ef28f1784efe6717b0ca72c0eb3c97bc30ebfe47",
|
||||
"profile": "dev, unoptimized, debug assertions enabled",
|
||||
"compiler": "rustc 1.98.1 (48a229cea 2026-09-01)",
|
||||
"target": "x86_64-pc-windows-gnullvm",
|
||||
"binary_sha256": {
|
||||
"arcadia-studio.exe": "e9cce9355525ecdc59bfae12608b1e0272167acef5a86b25368ef547e08886ff",
|
||||
"arcadia-server.exe": "6cebacc117e46fdab023c6402a5cebd6929fb55993ae8ff6b89cd1c6c1170237"
|
||||
},
|
||||
"binary_origins": {
|
||||
"arcadia-studio.exe": {
|
||||
"source": "0e83157e09d52e6152df91208e41693b62da2d46",
|
||||
"reuse": true,
|
||||
"build_command": "cargo build --locked -p oa-desktop --bin arcadia-studio",
|
||||
"build_jobs": 1,
|
||||
"incremental": false,
|
||||
"evidence": "harness/experiments/save-as-diagnostics-20261001/commands.json",
|
||||
"build_log": "harness/experiments/save-as-diagnostics-20261001/gates/save-diagnostics-build.log",
|
||||
"native_evidence": "harness/save-as-diagnostics-20261001.md",
|
||||
"native_freeze_receipt": "harness/experiments/save-as-diagnostics-20261001/native/baseline.json",
|
||||
"unchanged_input_check": {
|
||||
"command": [
|
||||
"git",
|
||||
"diff",
|
||||
"--exit-code",
|
||||
"0e83157e09d52e6152df91208e41693b62da2d46",
|
||||
"ef28f1784efe6717b0ca72c0eb3c97bc30ebfe47",
|
||||
"--",
|
||||
"crates",
|
||||
"Cargo.toml",
|
||||
"Cargo.lock",
|
||||
"examples",
|
||||
"docs",
|
||||
"scripts",
|
||||
"LICENSE",
|
||||
"README.md"
|
||||
],
|
||||
"exit_code": 0,
|
||||
"unchanged": true
|
||||
}
|
||||
},
|
||||
"arcadia-server.exe": {
|
||||
"source": "715036e132677dd2bc2fb37ed316d93dc9987aec",
|
||||
"reuse": true,
|
||||
"release": "v0.2.0-preview.integrated.20260924",
|
||||
"immediate_donor_version": "0.2.0-preview.compact-help.20261001",
|
||||
"immediate_donor_manifest": {
|
||||
"original_path": "C:\\ar-compact-01a0d717\\.local\\package39\\extracted\\ArcadiaStudio-0.2.0-preview.compact-help.20261001-x86_64-pc-windows-gnullvm\\package.json",
|
||||
"bytes": 78341,
|
||||
"sha256": "36bcff8a760c08674f3fc017bb5affc8a5f4f39174ac9d5a29298f2423155832"
|
||||
},
|
||||
"original_build_evidence": {
|
||||
"source_identity": "715036e132677dd2bc2fb37ed316d93dc9987aec",
|
||||
"profile": "dev",
|
||||
"target": "x86_64-pc-windows-gnullvm",
|
||||
"compiler": "rustc 1.98.1 (48a229cea 2026-09-01)",
|
||||
"binary_sha256": {
|
||||
"arcadia-studio.exe": "2c03bd6cc3f1110c219e4f57ab94874a121590f83779239a93289b7170664399",
|
||||
"arcadia-server.exe": "6cebacc117e46fdab023c6402a5cebd6929fb55993ae8ff6b89cd1c6c1170237"
|
||||
},
|
||||
"mandatory_gate": {
|
||||
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\prerelease-gates-v2-20260924\\final-04\\summary.json",
|
||||
"bytes": 10594,
|
||||
"sha256": "8b655c429b4abdeec0476a8397565fcd07682642f1d7b87e9a0c4eec63e22fc9"
|
||||
},
|
||||
"source_manifest": {
|
||||
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\prerelease-gates-v2-20260924\\final-04\\inputs-before.json",
|
||||
"bytes": 1740725,
|
||||
"sha256": "38e4f7d37b67b06b7991d48560c5bd56ec5893909f3cffd224442d15bdc35f88"
|
||||
},
|
||||
"environment": {
|
||||
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\prerelease-gates-v2-20260924\\final-04\\environment.json",
|
||||
"bytes": 8981,
|
||||
"sha256": "d9d89bc52a9312044e277f92b1585350fc86d5cc963dd91a39c669bc6ca2f39f"
|
||||
},
|
||||
"artifact_relocation": {
|
||||
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\prerelease-gates-v2-20260924\\final-04\\artifact-relocation.json",
|
||||
"bytes": 6181,
|
||||
"sha256": "3298225b9890aab1a8029a4d6dff42a8162f8d77f2c71bcdd379d25ebcb1f9d6"
|
||||
},
|
||||
"scope": "Exact preserved CargoJSON-identified individual product builds from final04; supplemental combined build is separately recorded. Native/package acceptance is separate."
|
||||
},
|
||||
"historical_receipt_availability": {
|
||||
"mandatory_gate": {
|
||||
"original_assertion": {
|
||||
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\prerelease-gates-v2-20260924\\final-04\\summary.json",
|
||||
"bytes": 10594,
|
||||
"sha256": "8b655c429b4abdeec0476a8397565fcd07682642f1d7b87e9a0c4eec63e22fc9"
|
||||
},
|
||||
"original_path_available": false,
|
||||
"historical_path_note": "Original path unavailable; exact bytes recovered from immutable published archive.",
|
||||
"recovered_verified_copy": "provenance/recovered-final-04--summary.json",
|
||||
"recovered_sha256": "8b655c429b4abdeec0476a8397565fcd07682642f1d7b87e9a0c4eec63e22fc9",
|
||||
"publication_commit": "206f3b969482241e01e2dfc6be955caf31747b89"
|
||||
},
|
||||
"source_manifest": {
|
||||
"original_assertion": {
|
||||
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\prerelease-gates-v2-20260924\\final-04\\inputs-before.json",
|
||||
"bytes": 1740725,
|
||||
"sha256": "38e4f7d37b67b06b7991d48560c5bd56ec5893909f3cffd224442d15bdc35f88"
|
||||
},
|
||||
"original_path_available": false,
|
||||
"historical_path_note": "Original path unavailable; exact bytes recovered from immutable published archive.",
|
||||
"recovered_verified_copy": "provenance/recovered-final-04--inputs-before.json",
|
||||
"recovered_sha256": "38e4f7d37b67b06b7991d48560c5bd56ec5893909f3cffd224442d15bdc35f88",
|
||||
"publication_commit": "206f3b969482241e01e2dfc6be955caf31747b89"
|
||||
},
|
||||
"environment": {
|
||||
"original_assertion": {
|
||||
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\prerelease-gates-v2-20260924\\final-04\\environment.json",
|
||||
"bytes": 8981,
|
||||
"sha256": "d9d89bc52a9312044e277f92b1585350fc86d5cc963dd91a39c669bc6ca2f39f"
|
||||
},
|
||||
"original_path_available": false,
|
||||
"historical_path_note": "Original path unavailable; exact bytes recovered from immutable published archive.",
|
||||
"recovered_verified_copy": "provenance/recovered-final-04--environment.json",
|
||||
"recovered_sha256": "d9d89bc52a9312044e277f92b1585350fc86d5cc963dd91a39c669bc6ca2f39f",
|
||||
"publication_commit": "206f3b969482241e01e2dfc6be955caf31747b89"
|
||||
},
|
||||
"artifact_relocation": {
|
||||
"original_assertion": {
|
||||
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\prerelease-gates-v2-20260924\\final-04\\artifact-relocation.json",
|
||||
"bytes": 6181,
|
||||
"sha256": "3298225b9890aab1a8029a4d6dff42a8162f8d77f2c71bcdd379d25ebcb1f9d6"
|
||||
},
|
||||
"original_path_available": false,
|
||||
"historical_path_note": "Original path unavailable; exact bytes recovered from immutable published archive.",
|
||||
"recovered_verified_copy": "provenance/recovered-final-04--artifact-relocation.json",
|
||||
"recovered_sha256": "3298225b9890aab1a8029a4d6dff42a8162f8d77f2c71bcdd379d25ebcb1f9d6",
|
||||
"publication_commit": "206f3b969482241e01e2dfc6be955caf31747b89"
|
||||
}
|
||||
},
|
||||
"recovered_publication": {
|
||||
"publication_commit": "206f3b969482241e01e2dfc6be955caf31747b89",
|
||||
"source_commit": "715036e132677dd2bc2fb37ed316d93dc9987aec",
|
||||
"manifest_url": "http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/raw/commit/206f3b969482241e01e2dfc6be955caf31747b89/harness/prerelease37-windows-gates-20260924/final04-complete/manifest.json",
|
||||
"manifest_git_blob": "5d246cc2ca69c6aaaffaa5dc70ec1be2bdae4262",
|
||||
"manifest_bytes": 103364,
|
||||
"manifest_sha256": "65f34e6894d2fd5538b924472adba25b541914aaa21d589e07bb7726ac24f6c6",
|
||||
"archive_url": "http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/raw/commit/206f3b969482241e01e2dfc6be955caf31747b89/harness/prerelease37-windows-gates-20260924/final04-complete/final04-complete-715036e.zip",
|
||||
"archive_bytes": 6588421,
|
||||
"archive_sha256": "7cead0b6aa36a6af8fc9f8987186bfe0decd8fa2ebab094fc45387ae9daea632",
|
||||
"verified_members": 462,
|
||||
"verified_expanded_bytes": 40133937,
|
||||
"all_member_checks": "Safe unique relative paths, exact set/count, size, CRC32 and SHA256; no archive code executed.",
|
||||
"recovered_original_receipts": {
|
||||
"mandatory_gate": {
|
||||
"member": "final-04/summary.json",
|
||||
"portable_path": "selected/final-04/summary.json",
|
||||
"bytes": 10594,
|
||||
"sha256": "8b655c429b4abdeec0476a8397565fcd07682642f1d7b87e9a0c4eec63e22fc9",
|
||||
"original_assertion": {
|
||||
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\prerelease-gates-v2-20260924\\final-04\\summary.json",
|
||||
"bytes": 10594,
|
||||
"sha256": "8b655c429b4abdeec0476a8397565fcd07682642f1d7b87e9a0c4eec63e22fc9"
|
||||
}
|
||||
},
|
||||
"source_manifest": {
|
||||
"member": "final-04/inputs-before.json",
|
||||
"portable_path": "selected/final-04/inputs-before.json",
|
||||
"bytes": 1740725,
|
||||
"sha256": "38e4f7d37b67b06b7991d48560c5bd56ec5893909f3cffd224442d15bdc35f88",
|
||||
"original_assertion": {
|
||||
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\prerelease-gates-v2-20260924\\final-04\\inputs-before.json",
|
||||
"bytes": 1740725,
|
||||
"sha256": "38e4f7d37b67b06b7991d48560c5bd56ec5893909f3cffd224442d15bdc35f88"
|
||||
}
|
||||
},
|
||||
"environment": {
|
||||
"member": "final-04/environment.json",
|
||||
"portable_path": "selected/final-04/environment.json",
|
||||
"bytes": 8981,
|
||||
"sha256": "d9d89bc52a9312044e277f92b1585350fc86d5cc963dd91a39c669bc6ca2f39f",
|
||||
"original_assertion": {
|
||||
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\prerelease-gates-v2-20260924\\final-04\\environment.json",
|
||||
"bytes": 8981,
|
||||
"sha256": "d9d89bc52a9312044e277f92b1585350fc86d5cc963dd91a39c669bc6ca2f39f"
|
||||
}
|
||||
},
|
||||
"artifact_relocation": {
|
||||
"member": "final-04/artifact-relocation.json",
|
||||
"portable_path": "selected/final-04/artifact-relocation.json",
|
||||
"bytes": 6181,
|
||||
"sha256": "3298225b9890aab1a8029a4d6dff42a8162f8d77f2c71bcdd379d25ebcb1f9d6",
|
||||
"original_assertion": {
|
||||
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\prerelease-gates-v2-20260924\\final-04\\artifact-relocation.json",
|
||||
"bytes": 6181,
|
||||
"sha256": "3298225b9890aab1a8029a4d6dff42a8162f8d77f2c71bcdd379d25ebcb1f9d6"
|
||||
}
|
||||
}
|
||||
},
|
||||
"selected_files": {
|
||||
"final-04/arcadia-server-build/changes.patch": {
|
||||
"path": "final-04/arcadia-server-build/changes.patch",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"crc32": "00000000"
|
||||
},
|
||||
"final-04/arcadia-server-build/context.json": {
|
||||
"path": "final-04/arcadia-server-build/context.json",
|
||||
"bytes": 3540,
|
||||
"sha256": "46c9efa64819f1b0bdd237097fa266bc27e91f065ba992b8a4ec519964892e89",
|
||||
"crc32": "edc2cc72"
|
||||
},
|
||||
"final-04/arcadia-server-build/inputs-after.json": {
|
||||
"path": "final-04/arcadia-server-build/inputs-after.json",
|
||||
"bytes": 1740725,
|
||||
"sha256": "38e4f7d37b67b06b7991d48560c5bd56ec5893909f3cffd224442d15bdc35f88",
|
||||
"crc32": "e6c5da64"
|
||||
},
|
||||
"final-04/arcadia-server-build/inputs-before.json": {
|
||||
"path": "final-04/arcadia-server-build/inputs-before.json",
|
||||
"bytes": 1740725,
|
||||
"sha256": "38e4f7d37b67b06b7991d48560c5bd56ec5893909f3cffd224442d15bdc35f88",
|
||||
"crc32": "e6c5da64"
|
||||
},
|
||||
"final-04/arcadia-server-build/output.log": {
|
||||
"path": "final-04/arcadia-server-build/output.log",
|
||||
"bytes": 79598,
|
||||
"sha256": "62399b3e0456ef5017a9ec294f83d630697b668d2d411814aa821c651c066941",
|
||||
"crc32": "e9e29840"
|
||||
},
|
||||
"final-04/arcadia-server-build/result.json": {
|
||||
"path": "final-04/arcadia-server-build/result.json",
|
||||
"bytes": 4203,
|
||||
"sha256": "61110abc77bd7c392491b2203b342a95b342196092cbaa9b2b80a1ccfd7b132f",
|
||||
"crc32": "e282d1c4"
|
||||
},
|
||||
"final-04/arcadia-server-build/stderr.log": {
|
||||
"path": "final-04/arcadia-server-build/stderr.log",
|
||||
"bytes": 795,
|
||||
"sha256": "bd686584e398ba2fe9da3a978473560e0157a13748eedb1ec97705da83f001d5",
|
||||
"crc32": "aafb17f3"
|
||||
},
|
||||
"final-04/arcadia-studio-build/changes.patch": {
|
||||
"path": "final-04/arcadia-studio-build/changes.patch",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"crc32": "00000000"
|
||||
},
|
||||
"final-04/arcadia-studio-build/context.json": {
|
||||
"path": "final-04/arcadia-studio-build/context.json",
|
||||
"bytes": 3541,
|
||||
"sha256": "413d876661a7777dbb60b70acb9da0a88ae9e852061c4ce21488d62cae1d5dc4",
|
||||
"crc32": "e5abfffc"
|
||||
},
|
||||
"final-04/arcadia-studio-build/inputs-after.json": {
|
||||
"path": "final-04/arcadia-studio-build/inputs-after.json",
|
||||
"bytes": 1740725,
|
||||
"sha256": "38e4f7d37b67b06b7991d48560c5bd56ec5893909f3cffd224442d15bdc35f88",
|
||||
"crc32": "e6c5da64"
|
||||
},
|
||||
"final-04/arcadia-studio-build/inputs-before.json": {
|
||||
"path": "final-04/arcadia-studio-build/inputs-before.json",
|
||||
"bytes": 1740725,
|
||||
"sha256": "38e4f7d37b67b06b7991d48560c5bd56ec5893909f3cffd224442d15bdc35f88",
|
||||
"crc32": "e6c5da64"
|
||||
},
|
||||
"final-04/arcadia-studio-build/output.log": {
|
||||
"path": "final-04/arcadia-studio-build/output.log",
|
||||
"bytes": 276374,
|
||||
"sha256": "df16fc294cdd3950ec872f276fa6b1aed5d70f60001b8fdc31a5955e5afb9f76",
|
||||
"crc32": "58442277"
|
||||
},
|
||||
"final-04/arcadia-studio-build/result.json": {
|
||||
"path": "final-04/arcadia-studio-build/result.json",
|
||||
"bytes": 4205,
|
||||
"sha256": "071717145eb535bb65182b7e930245a9c8969a0a823927d336d4811d88721b7a",
|
||||
"crc32": "11deac84"
|
||||
},
|
||||
"final-04/arcadia-studio-build/stderr.log": {
|
||||
"path": "final-04/arcadia-studio-build/stderr.log",
|
||||
"bytes": 475,
|
||||
"sha256": "82dd960356991c418262df37dd0196ee3ee0cfa75ba5785030e5564dc8fb8014",
|
||||
"crc32": "6bbc4f83"
|
||||
},
|
||||
"final-04/artifact-relocation.json": {
|
||||
"path": "final-04/artifact-relocation.json",
|
||||
"bytes": 6181,
|
||||
"sha256": "3298225b9890aab1a8029a4d6dff42a8162f8d77f2c71bcdd379d25ebcb1f9d6",
|
||||
"crc32": "f1328973"
|
||||
},
|
||||
"final-04/environment.json": {
|
||||
"path": "final-04/environment.json",
|
||||
"bytes": 8981,
|
||||
"sha256": "d9d89bc52a9312044e277f92b1585350fc86d5cc963dd91a39c669bc6ca2f39f",
|
||||
"crc32": "daebc38c"
|
||||
},
|
||||
"final-04/inputs-before.json": {
|
||||
"path": "final-04/inputs-before.json",
|
||||
"bytes": 1740725,
|
||||
"sha256": "38e4f7d37b67b06b7991d48560c5bd56ec5893909f3cffd224442d15bdc35f88",
|
||||
"crc32": "e6c5da64"
|
||||
},
|
||||
"final-04/summary.json": {
|
||||
"path": "final-04/summary.json",
|
||||
"bytes": 10594,
|
||||
"sha256": "8b655c429b4abdeec0476a8397565fcd07682642f1d7b87e9a0c4eec63e22fc9",
|
||||
"crc32": "56de0d66"
|
||||
}
|
||||
},
|
||||
"scope": "Public immutable receipt recovery only; historical donor claims retained; not new build/native/package acceptance."
|
||||
},
|
||||
"recovered_portable_copies": {
|
||||
"final-04/arcadia-server-build/changes.patch": "provenance/recovered-final-04--arcadia-server-build--changes.patch",
|
||||
"final-04/arcadia-server-build/context.json": "provenance/recovered-final-04--arcadia-server-build--context.json",
|
||||
"final-04/arcadia-server-build/inputs-after.json": "provenance/recovered-final-04--arcadia-server-build--inputs-after.json",
|
||||
"final-04/arcadia-server-build/inputs-before.json": "provenance/recovered-final-04--arcadia-server-build--inputs-before.json",
|
||||
"final-04/arcadia-server-build/output.log": "provenance/recovered-final-04--arcadia-server-build--output.log",
|
||||
"final-04/arcadia-server-build/result.json": "provenance/recovered-final-04--arcadia-server-build--result.json",
|
||||
"final-04/arcadia-server-build/stderr.log": "provenance/recovered-final-04--arcadia-server-build--stderr.log",
|
||||
"final-04/arcadia-studio-build/changes.patch": "provenance/recovered-final-04--arcadia-studio-build--changes.patch",
|
||||
"final-04/arcadia-studio-build/context.json": "provenance/recovered-final-04--arcadia-studio-build--context.json",
|
||||
"final-04/arcadia-studio-build/inputs-after.json": "provenance/recovered-final-04--arcadia-studio-build--inputs-after.json",
|
||||
"final-04/arcadia-studio-build/inputs-before.json": "provenance/recovered-final-04--arcadia-studio-build--inputs-before.json",
|
||||
"final-04/arcadia-studio-build/output.log": "provenance/recovered-final-04--arcadia-studio-build--output.log",
|
||||
"final-04/arcadia-studio-build/result.json": "provenance/recovered-final-04--arcadia-studio-build--result.json",
|
||||
"final-04/arcadia-studio-build/stderr.log": "provenance/recovered-final-04--arcadia-studio-build--stderr.log",
|
||||
"final-04/artifact-relocation.json": "provenance/recovered-final-04--artifact-relocation.json",
|
||||
"final-04/environment.json": "provenance/recovered-final-04--environment.json",
|
||||
"final-04/inputs-before.json": "provenance/recovered-final-04--inputs-before.json",
|
||||
"final-04/summary.json": "provenance/recovered-final-04--summary.json"
|
||||
},
|
||||
"original_toolchain_note": "Historical server build receipt names LLVM-MinGW 20260908; current packaging runtime distribution is separately recorded. No rebuild or environment rewrite.",
|
||||
"unchanged_input_check": {
|
||||
"command": [
|
||||
"git",
|
||||
"diff",
|
||||
"--exit-code",
|
||||
"715036e132677dd2bc2fb37ed316d93dc9987aec",
|
||||
"ef28f1784efe6717b0ca72c0eb3c97bc30ebfe47",
|
||||
"--",
|
||||
"crates/oa-core",
|
||||
"crates/oa-server",
|
||||
"crates/vendor",
|
||||
"Cargo.toml",
|
||||
"Cargo.lock"
|
||||
],
|
||||
"exit_code": 0,
|
||||
"unchanged": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"package_documentation_source": "ef28f1784efe6717b0ca72c0eb3c97bc30ebfe47",
|
||||
"planned_version": "0.2.0-preview.save-diagnostics.20261001",
|
||||
"runtime_sha256": "f45604a12e8bcd839fd86f667c1be1cc7c4f9da2b3c69ff381ac708f0e1ae7d4",
|
||||
"runtime_origin": {
|
||||
"distribution": "llvm-mingw-20260826-ucrt-x86_64",
|
||||
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\toolchain\\llvm-mingw-20260826-ucrt-x86_64",
|
||||
"note": "Packaging script must include and verify the full distribution license."
|
||||
},
|
||||
"input_snapshot": "source-inputs.json",
|
||||
"preserved_provenance": {
|
||||
"bin/arcadia-studio.exe": {
|
||||
"original_path": "C:\\ar-save-01a0d717\\.local\\native46\\bin\\arcadia-studio.exe",
|
||||
"bytes": 119452672,
|
||||
"sha256": "e9cce9355525ecdc59bfae12608b1e0272167acef5a86b25368ef547e08886ff"
|
||||
},
|
||||
"bin/arcadia-server.exe": {
|
||||
"original_path": "C:\\ar-compact-01a0d717\\.local\\package39\\extracted\\ArcadiaStudio-0.2.0-preview.compact-help.20261001-x86_64-pc-windows-gnullvm\\arcadia-server.exe",
|
||||
"bytes": 40228352,
|
||||
"sha256": "6cebacc117e46fdab023c6402a5cebd6929fb55993ae8ff6b89cd1c6c1170237"
|
||||
},
|
||||
"bin/libunwind.dll": {
|
||||
"original_path": "C:\\ar-save-01a0d717\\.local\\native46\\bin\\libunwind.dll",
|
||||
"bytes": 190976,
|
||||
"sha256": "f45604a12e8bcd839fd86f667c1be1cc7c4f9da2b3c69ff381ac708f0e1ae7d4"
|
||||
},
|
||||
"provenance/donor-package.json": {
|
||||
"original_path": "C:\\ar-compact-01a0d717\\.local\\package39\\extracted\\ArcadiaStudio-0.2.0-preview.compact-help.20261001-x86_64-pc-windows-gnullvm\\package.json",
|
||||
"bytes": 78341,
|
||||
"sha256": "36bcff8a760c08674f3fc017bb5affc8a5f4f39174ac9d5a29298f2423155832"
|
||||
},
|
||||
"provenance/recovered-donor-receipt.json": {
|
||||
"original_path": "C:\\ar-save-01a0d717\\.local\\package46-donor-recovery\\receipt.json",
|
||||
"bytes": 7942,
|
||||
"sha256": "5d630ff25489262188b8e35f1a2f0208bffd90eed6051d8845250509e9fac8ef"
|
||||
},
|
||||
"provenance/recovered-donor-manifest.json": {
|
||||
"original_path": "C:\\ar-save-01a0d717\\.local\\package46-donor-recovery\\manifest.json",
|
||||
"bytes": 103364,
|
||||
"sha256": "65f34e6894d2fd5538b924472adba25b541914aaa21d589e07bb7726ac24f6c6"
|
||||
},
|
||||
"provenance/recovered-final-04--arcadia-server-build--changes.patch": {
|
||||
"original_path": "C:\\ar-save-01a0d717\\.local\\package46-donor-recovery\\selected\\final-04\\arcadia-server-build\\changes.patch",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"provenance/recovered-final-04--arcadia-server-build--context.json": {
|
||||
"original_path": "C:\\ar-save-01a0d717\\.local\\package46-donor-recovery\\selected\\final-04\\arcadia-server-build\\context.json",
|
||||
"bytes": 3540,
|
||||
"sha256": "46c9efa64819f1b0bdd237097fa266bc27e91f065ba992b8a4ec519964892e89"
|
||||
},
|
||||
"provenance/recovered-final-04--arcadia-server-build--inputs-after.json": {
|
||||
"original_path": "C:\\ar-save-01a0d717\\.local\\package46-donor-recovery\\selected\\final-04\\arcadia-server-build\\inputs-after.json",
|
||||
"bytes": 1740725,
|
||||
"sha256": "38e4f7d37b67b06b7991d48560c5bd56ec5893909f3cffd224442d15bdc35f88"
|
||||
},
|
||||
"provenance/recovered-final-04--arcadia-server-build--inputs-before.json": {
|
||||
"original_path": "C:\\ar-save-01a0d717\\.local\\package46-donor-recovery\\selected\\final-04\\arcadia-server-build\\inputs-before.json",
|
||||
"bytes": 1740725,
|
||||
"sha256": "38e4f7d37b67b06b7991d48560c5bd56ec5893909f3cffd224442d15bdc35f88"
|
||||
},
|
||||
"provenance/recovered-final-04--arcadia-server-build--output.log": {
|
||||
"original_path": "C:\\ar-save-01a0d717\\.local\\package46-donor-recovery\\selected\\final-04\\arcadia-server-build\\output.log",
|
||||
"bytes": 79598,
|
||||
"sha256": "62399b3e0456ef5017a9ec294f83d630697b668d2d411814aa821c651c066941"
|
||||
},
|
||||
"provenance/recovered-final-04--arcadia-server-build--result.json": {
|
||||
"original_path": "C:\\ar-save-01a0d717\\.local\\package46-donor-recovery\\selected\\final-04\\arcadia-server-build\\result.json",
|
||||
"bytes": 4203,
|
||||
"sha256": "61110abc77bd7c392491b2203b342a95b342196092cbaa9b2b80a1ccfd7b132f"
|
||||
},
|
||||
"provenance/recovered-final-04--arcadia-server-build--stderr.log": {
|
||||
"original_path": "C:\\ar-save-01a0d717\\.local\\package46-donor-recovery\\selected\\final-04\\arcadia-server-build\\stderr.log",
|
||||
"bytes": 795,
|
||||
"sha256": "bd686584e398ba2fe9da3a978473560e0157a13748eedb1ec97705da83f001d5"
|
||||
},
|
||||
"provenance/recovered-final-04--arcadia-studio-build--changes.patch": {
|
||||
"original_path": "C:\\ar-save-01a0d717\\.local\\package46-donor-recovery\\selected\\final-04\\arcadia-studio-build\\changes.patch",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"provenance/recovered-final-04--arcadia-studio-build--context.json": {
|
||||
"original_path": "C:\\ar-save-01a0d717\\.local\\package46-donor-recovery\\selected\\final-04\\arcadia-studio-build\\context.json",
|
||||
"bytes": 3541,
|
||||
"sha256": "413d876661a7777dbb60b70acb9da0a88ae9e852061c4ce21488d62cae1d5dc4"
|
||||
},
|
||||
"provenance/recovered-final-04--arcadia-studio-build--inputs-after.json": {
|
||||
"original_path": "C:\\ar-save-01a0d717\\.local\\package46-donor-recovery\\selected\\final-04\\arcadia-studio-build\\inputs-after.json",
|
||||
"bytes": 1740725,
|
||||
"sha256": "38e4f7d37b67b06b7991d48560c5bd56ec5893909f3cffd224442d15bdc35f88"
|
||||
},
|
||||
"provenance/recovered-final-04--arcadia-studio-build--inputs-before.json": {
|
||||
"original_path": "C:\\ar-save-01a0d717\\.local\\package46-donor-recovery\\selected\\final-04\\arcadia-studio-build\\inputs-before.json",
|
||||
"bytes": 1740725,
|
||||
"sha256": "38e4f7d37b67b06b7991d48560c5bd56ec5893909f3cffd224442d15bdc35f88"
|
||||
},
|
||||
"provenance/recovered-final-04--arcadia-studio-build--output.log": {
|
||||
"original_path": "C:\\ar-save-01a0d717\\.local\\package46-donor-recovery\\selected\\final-04\\arcadia-studio-build\\output.log",
|
||||
"bytes": 276374,
|
||||
"sha256": "df16fc294cdd3950ec872f276fa6b1aed5d70f60001b8fdc31a5955e5afb9f76"
|
||||
},
|
||||
"provenance/recovered-final-04--arcadia-studio-build--result.json": {
|
||||
"original_path": "C:\\ar-save-01a0d717\\.local\\package46-donor-recovery\\selected\\final-04\\arcadia-studio-build\\result.json",
|
||||
"bytes": 4205,
|
||||
"sha256": "071717145eb535bb65182b7e930245a9c8969a0a823927d336d4811d88721b7a"
|
||||
},
|
||||
"provenance/recovered-final-04--arcadia-studio-build--stderr.log": {
|
||||
"original_path": "C:\\ar-save-01a0d717\\.local\\package46-donor-recovery\\selected\\final-04\\arcadia-studio-build\\stderr.log",
|
||||
"bytes": 475,
|
||||
"sha256": "82dd960356991c418262df37dd0196ee3ee0cfa75ba5785030e5564dc8fb8014"
|
||||
},
|
||||
"provenance/recovered-final-04--artifact-relocation.json": {
|
||||
"original_path": "C:\\ar-save-01a0d717\\.local\\package46-donor-recovery\\selected\\final-04\\artifact-relocation.json",
|
||||
"bytes": 6181,
|
||||
"sha256": "3298225b9890aab1a8029a4d6dff42a8162f8d77f2c71bcdd379d25ebcb1f9d6"
|
||||
},
|
||||
"provenance/recovered-final-04--environment.json": {
|
||||
"original_path": "C:\\ar-save-01a0d717\\.local\\package46-donor-recovery\\selected\\final-04\\environment.json",
|
||||
"bytes": 8981,
|
||||
"sha256": "d9d89bc52a9312044e277f92b1585350fc86d5cc963dd91a39c669bc6ca2f39f"
|
||||
},
|
||||
"provenance/recovered-final-04--inputs-before.json": {
|
||||
"original_path": "C:\\ar-save-01a0d717\\.local\\package46-donor-recovery\\selected\\final-04\\inputs-before.json",
|
||||
"bytes": 1740725,
|
||||
"sha256": "38e4f7d37b67b06b7991d48560c5bd56ec5893909f3cffd224442d15bdc35f88"
|
||||
},
|
||||
"provenance/recovered-final-04--summary.json": {
|
||||
"original_path": "C:\\ar-save-01a0d717\\.local\\package46-donor-recovery\\selected\\final-04\\summary.json",
|
||||
"bytes": 10594,
|
||||
"sha256": "8b655c429b4abdeec0476a8397565fcd07682642f1d7b87e9a0c4eec63e22fc9"
|
||||
},
|
||||
"provenance/donor--build-evidence.json": {
|
||||
"original_path": "C:\\ar-save-01a0d717\\harness\\experiments\\save-as-diagnostics-20261001\\donor\\build-evidence.json",
|
||||
"bytes": 3570,
|
||||
"sha256": "3b278a3401b9a4c2de0538d70f603c3c039b308d5d2952ebed792efcac3e08e5"
|
||||
},
|
||||
"provenance/native--baseline.json": {
|
||||
"original_path": "C:\\ar-save-01a0d717\\harness\\experiments\\save-as-diagnostics-20261001\\native\\baseline.json",
|
||||
"bytes": 7556,
|
||||
"sha256": "5445719d5377b0ccaf7567747a48cdc753be2a30a57d35105ac7f39e6aa3b876"
|
||||
},
|
||||
"provenance/commands.json": {
|
||||
"original_path": "C:\\ar-save-01a0d717\\harness\\experiments\\save-as-diagnostics-20261001\\commands.json",
|
||||
"bytes": 998,
|
||||
"sha256": "7af5852fe275eaa1dafb2ab5d7e7e1553a63941fa56bb5046f99d24ede0624f0"
|
||||
},
|
||||
"provenance/gates--save-diagnostics-build.log": {
|
||||
"original_path": "C:\\ar-save-01a0d717\\harness\\experiments\\save-as-diagnostics-20261001\\gates\\save-diagnostics-build.log",
|
||||
"bytes": 309,
|
||||
"sha256": "79a2c5e8f565f27296521fde2ef3a037a5110d1bd134b4661115769e8f1d97fd"
|
||||
},
|
||||
"provenance/gates--save-diagnostics-clippy.log": {
|
||||
"original_path": "C:\\ar-save-01a0d717\\harness\\experiments\\save-as-diagnostics-20261001\\gates\\save-diagnostics-clippy.log",
|
||||
"bytes": 379,
|
||||
"sha256": "4c55b51c4a2dc7a0de14ce5f312267e0b22f9a65615d0c378f1809330eea579f"
|
||||
},
|
||||
"provenance/gates--save-diagnostics-corrected-tests.log": {
|
||||
"original_path": "C:\\ar-save-01a0d717\\harness\\experiments\\save-as-diagnostics-20261001\\gates\\save-diagnostics-corrected-tests.log",
|
||||
"bytes": 3561,
|
||||
"sha256": "9079652120e18a7176feb8e5f4ac289cbf0c27f979a0c042fef5d8b4e2e252d4"
|
||||
}
|
||||
},
|
||||
"acceptance_scope": "Preparation of existing frozen binaries only; no compilation or extracted-package/native acceptance. Contribution gates and inherited donor gates remain separate; no summed/full-suite, peer-union, new-platform, or complete OA/SA acceptance claim."
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
"""Complete 37-file phase oracle; only inject/restore intentionally mutate a QA fixture."""
|
||||
from pathlib import Path
|
||||
import hashlib, json, sys
|
||||
root = Path(__file__).resolve().parent
|
||||
native = root / 'qa/native46'
|
||||
record = json.loads((native / 'baseline.json').read_text(encoding='utf-8'))
|
||||
source = Path(record['bundle']) / 'examples/release1'
|
||||
work = root / 'working'
|
||||
dependency = record['external_dependency']
|
||||
phase = sys.argv[1]
|
||||
assert phase in ['collision', 'saved-a', 'saved-c', 'external-before', 'inject', 'external-refused', 'restore', 'external-recovered']
|
||||
sha = lambda b: hashlib.sha256(b).hexdigest()
|
||||
original = {r: (source / r).read_bytes() for r in record['baseline']}
|
||||
assert {r: {'bytes': len(b), 'sha256': sha(b)} for r, b in original.items()} == record['baseline']
|
||||
def check(folder, expected):
|
||||
actual = {f.relative_to(folder).as_posix(): f.read_bytes() for f in folder.rglob('*') if f.is_file()}
|
||||
assert actual.keys() == expected.keys(), (phase, 'file set', sorted(actual.keys() ^ expected.keys()))
|
||||
assert all(actual[r] == b for r, b in expected.items()), (phase, 'changed files', [r for r, b in expected.items() if actual[r] != b])
|
||||
return {r: {'bytes': len(b), 'sha256': sha(b)} for r, b in actual.items()}
|
||||
if phase in ['collision', 'saved-a', 'saved-c']:
|
||||
expected = original.copy()
|
||||
if phase != 'collision':
|
||||
old = b'oa_activity oa_assess "Assess pressure alarm" id "61f7bbfb-74a4-5540-9182-2583dfb27a49"'
|
||||
new = b'oa_activity oa_assess "Assess pressure alarm Package46" id "61f7bbfb-74a4-5540-9182-2583dfb27a49"'
|
||||
assert record['declared_rename'] == {'activity': '61f7bbfb-74a4-5540-9182-2583dfb27a49', 'before': 'Assess pressure alarm', 'after': 'Assess pressure alarm Package46'}
|
||||
assert expected[dependency].count(old) == 1
|
||||
expected[dependency] = expected[dependency].replace(old, new)
|
||||
folder = work / ('fresh-c' if phase == 'saved-c' else 'collision-a')
|
||||
assert not (work / 'collision-a/collision-copy.arcadia').exists()
|
||||
files = check(folder, expected)
|
||||
else:
|
||||
folder = work / 'external-b'
|
||||
changed = original.copy()
|
||||
changed[dependency] += record['external_comment'].encode('utf-8')
|
||||
if phase == 'inject':
|
||||
check(folder, original)
|
||||
(folder / dependency).write_bytes(changed[dependency])
|
||||
expected = changed
|
||||
elif phase == 'restore':
|
||||
check(folder, changed)
|
||||
(folder / dependency).write_bytes(original[dependency])
|
||||
expected = original
|
||||
else:
|
||||
expected = changed if phase == 'external-refused' else original
|
||||
files = check(folder, expected)
|
||||
result = {'status': 'PASS', 'phase': phase, 'folder': str(folder), 'files': files,
|
||||
'scope': 'Complete 37-file set and bytes, including seven parent-copied companions, equals declared original plus only phase-specific Activity name or parent-injected valid comment.'}
|
||||
with (native / (phase + '-oracle.json')).open('x', encoding='utf-8') as f:
|
||||
json.dump(result, f, indent=2); f.write('\n')
|
||||
print(json.dumps({'status': 'PASS', 'phase': phase, 'files': len(files)}, indent=2))
|
||||
@@ -0,0 +1,11 @@
|
||||
from pathlib import Path
|
||||
import hashlib, json
|
||||
root = Path(__file__).resolve().parent
|
||||
expected = json.loads((root / 'qa/native46/saved-c-oracle.json').read_text(encoding='utf-8'))['files']
|
||||
folder = root / 'working/fresh-c'
|
||||
actual = {p.relative_to(folder).as_posix(): {'bytes': p.stat().st_size, 'sha256': hashlib.sha256(p.read_bytes()).hexdigest()} for p in folder.rglob('*') if p.is_file()}
|
||||
assert actual == expected, 'Fresh-process Open and no-op Save All must preserve all37 saved file bytes.'
|
||||
result = {'status': 'PASS', 'scope': 'All37 saved source/companion bytes unchanged after native fresh-process reopen and no-op Save All.', 'files': actual}
|
||||
with (root / 'qa/reopen46/bytes-oracle.json').open('x', encoding='utf-8') as f:
|
||||
json.dump(result, f, indent=2); f.write('\n')
|
||||
print(json.dumps({'status': 'PASS', 'files': len(actual)}))
|
||||
@@ -0,0 +1,127 @@
|
||||
"""Collect reviewed package evidence only after the parent's explicit confirmation."""
|
||||
from pathlib import Path
|
||||
import argparse
|
||||
import hashlib
|
||||
import json
|
||||
import shutil
|
||||
import subprocess
|
||||
|
||||
ROOT = Path('C:/ar-save-01a0d717')
|
||||
QA = ROOT / '.local/package46'
|
||||
DEST = ROOT / 'harness/experiments/save-diagnostics-package-20261001/raw'
|
||||
ARCHIVE_SHA = '8b4e353e075f22350a07794ee47a02cf85725501223299cf367134aa1f5b63b7'
|
||||
|
||||
|
||||
def identity(path):
|
||||
data = path.read_bytes()
|
||||
return {'bytes': len(data), 'sha256': hashlib.sha256(data).hexdigest()}
|
||||
|
||||
|
||||
def read(path):
|
||||
return json.loads(path.read_text(encoding='utf-8-sig'))
|
||||
|
||||
|
||||
def require(value, why):
|
||||
if not value:
|
||||
raise RuntimeError(why)
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('--confirmed', action='store_true', help='Parent confirmed collection after final evidence readiness review')
|
||||
args = parser.parse_args()
|
||||
require(args.confirmed, 'Do not collect before parent confirmation')
|
||||
require(not DEST.exists(), 'Fresh raw evidence directory required; never merge/overwrite a previous packet')
|
||||
extraction = read(QA / 'extraction-check.json')
|
||||
require(extraction['status'] == 'PASS' and extraction['archive_sha256'] == ARCHIVE_SHA, 'Extraction identity mismatch')
|
||||
for folder in ['native46', 'reopen46']:
|
||||
result = read(QA / 'qa' / folder / 'finished.json')
|
||||
require(result['exit_code'] == 0 and result['stdout_bytes'] == result['stderr_bytes'] == 0
|
||||
and result['package_files_unchanged'] and result['archive_sha256'] == ARCHIVE_SHA,
|
||||
'Native process has not completed cleanly: ' + folder)
|
||||
require(read(QA / 'server-smoke/result.json')['status'] == 'PASS', 'Server smoke incomplete')
|
||||
require(len(read(QA / 'server-smoke/result.json')['checks']) == 23, 'Server check count changed; review')
|
||||
require(read(QA / 'native-model-oracle/result.json')['status'] == 'PASS', 'Model oracle incomplete')
|
||||
reopened = read(QA / 'qa/reopen46/bytes-oracle.json')
|
||||
require(reopened['status'] == 'PASS' and len(reopened['files']) == 37
|
||||
and reopened['files'] == read(QA / 'qa/native46/saved-c-oracle.json')['files'], 'Reopen byte oracle mismatch')
|
||||
require(len(list((QA / 'qa/native46/captures').glob('*.jpg'))) == 19, 'Expected 19 native captures')
|
||||
require('Status: interim' not in (QA / 'independent-review.md').read_text(encoding='utf-8'),
|
||||
'Independent review remains interim; wait for completed critic report')
|
||||
warning_result = read(QA / 'model-warnings/result.json')
|
||||
require(warning_result['exit'] == 1, 'Warnings process receipt mismatch')
|
||||
warnings = {r['label']: r['response'] for r in warning_result['records']}
|
||||
require(set(warnings) == {'pristine', 'saved'}, 'Warning response labels mismatch')
|
||||
for label, response in warnings.items():
|
||||
require(response == read(QA / 'model-warnings' / (label + '.json')) and response['valid'], 'Raw validation response mismatch')
|
||||
prior = warnings['pristine']['issues']
|
||||
drift = [i for i in warnings['saved']['issues'] if i['code'] == 'trace_drift']
|
||||
require(len(prior) == 1 and prior[0]['code'] == 'work_without_behavior_context'
|
||||
and len(drift) == 1 and 'OaChanged' in drift[0]['message']
|
||||
and [i for i in warnings['saved']['issues'] if i['code'] != 'trace_drift'] == prior,
|
||||
'Validation warning delta differs from expected trace drift')
|
||||
phases = ['collision', 'saved-a', 'saved-c', 'external-before', 'inject', 'external-refused', 'restore', 'external-recovered']
|
||||
for phase in phases:
|
||||
require(read(QA / 'qa/native46' / (phase + '-oracle.json'))['status'] == 'PASS', 'Phase incomplete: ' + phase)
|
||||
bundle = Path(extraction['bundle'])
|
||||
require({p.relative_to(bundle).as_posix(): identity(p)['sha256'] for p in bundle.rglob('*') if p.is_file()}
|
||||
== extraction['sha256'], 'Extracted package changed')
|
||||
sources = {}
|
||||
|
||||
def add(path, name):
|
||||
require(path.is_file(), 'Missing required evidence: ' + str(path))
|
||||
require(not path.is_symlink(), 'Symlink evidence refused')
|
||||
require(name not in sources, 'Duplicate destination: ' + name)
|
||||
require(path.suffix.lower() not in ['.exe', '.dll', '.zip'], 'Excluded binary/archive')
|
||||
sources[name] = path
|
||||
|
||||
for name in ['artifact-precheck.md', 'build-evidence.json', 'extraction-check.json', 'packaging.log',
|
||||
'preparation-receipt.json', 'source-inputs.json', 'check-native-bytes.py',
|
||||
'native-model-oracle.py', 'evidence-plan.md', 'collect-evidence.py']:
|
||||
add(QA / name, name)
|
||||
for name in ['native-observation.md', 'read-model-warnings.py', 'check-reopened-bytes.py', 'independent-review.md', 'executed-commands.json']:
|
||||
add(QA / name, name)
|
||||
for name in ['prepare-package46.py', 'extract-package46.py', 'setup-package46-native.py',
|
||||
'launch-package46-native.py', 'prepare-package46-reopen.py', 'launch-package46-reopen.py',
|
||||
'prepare-package46-model-oracle.py', 'prepare-package46-warnings.py', 'package46-helper-review.md']:
|
||||
add(ROOT / '.local' / name, 'scripts/' + name)
|
||||
for folder in ['provenance', 'qa/native46', 'qa/reopen46', 'server-smoke', 'native-model-oracle', 'model-warnings']:
|
||||
require((QA / folder).is_dir(), 'Missing required evidence directory: ' + folder)
|
||||
for path in sorted((QA / folder).rglob('*')):
|
||||
if path.is_file() and 'store' not in path.relative_to(QA / folder).parts:
|
||||
add(path, path.relative_to(QA).as_posix())
|
||||
for name in ['package.json', 'dependency-notices.json', 'documentation-check.json',
|
||||
'SHA256SUMS.txt', 'START-HERE.txt', 'THIRD-PARTY-NOTICES.txt']:
|
||||
add(bundle / name, 'package/' + name)
|
||||
add(QA / 'dist' / (extraction['archive'] + '.sha256'), 'package/' + extraction['archive'] + '.sha256')
|
||||
add(ROOT / '.local/package46-donor-recovery/recover.py', 'scripts/recover-donor.py')
|
||||
add(QA / 'verify-evidence.py', 'verify.py')
|
||||
baseline = read(QA / 'qa/native46/baseline.json')
|
||||
companions = [name for name in baseline['baseline'] if not name.endswith('.arcadia')]
|
||||
require(len(companions) == 7, 'Companion set changed')
|
||||
for name in companions:
|
||||
add(bundle / 'examples/release1' / name, 'reference-companions/' + name)
|
||||
before = {name: identity(path) for name, path in sources.items()}
|
||||
require(sum(x['bytes'] for x in before.values()) < 40000000, 'Unexpected packet expansion')
|
||||
DEST.mkdir(parents=True, exist_ok=False)
|
||||
for name, source in sources.items():
|
||||
target = DEST / name
|
||||
target.parent.mkdir(parents=True, exist_ok=True)
|
||||
shutil.copyfile(source, target)
|
||||
require(identity(target) == before[name] == identity(source), 'Evidence changed during capture: ' + name)
|
||||
(DEST / '.gitattributes').write_text('* -text\n**/* -text\n', encoding='utf-8')
|
||||
(DEST / 'collection-receipt.json').write_text(json.dumps({
|
||||
'source': 'ef28f1784efe6717b0ca72c0eb3c97bc30ebfe47',
|
||||
'observed_head': subprocess.check_output(['git', 'rev-parse', 'HEAD'], cwd=ROOT, text=True).strip(),
|
||||
'archive_sha256': ARCHIVE_SHA,
|
||||
'copies': {name: {'historical_local_path': str(sources[name]), **value} for name, value in before.items()},
|
||||
'excluded': ['ZIPs', 'EXEs/DLLs', 'full extracted/staged bundle', 'stores', 'working fixture directories'],
|
||||
'scope': 'Byte capture of completed receipts; historical scripts retain original paths and are not portable replay commands.'
|
||||
}, indent=2) + '\n', encoding='utf-8')
|
||||
inventory = {p.relative_to(DEST).as_posix(): identity(p) for p in sorted(DEST.rglob('*')) if p.is_file()}
|
||||
(DEST / 'evidence-files.json').write_text(json.dumps(inventory, indent=2) + '\n', encoding='utf-8')
|
||||
print(json.dumps({'packet': str(DEST), 'files': len(inventory), 'bytes': sum(x['bytes'] for x in inventory.values())}))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@@ -0,0 +1,825 @@
|
||||
{
|
||||
"source": "ef28f1784efe6717b0ca72c0eb3c97bc30ebfe47",
|
||||
"observed_head": "ef28f1784efe6717b0ca72c0eb3c97bc30ebfe47",
|
||||
"archive_sha256": "8b4e353e075f22350a07794ee47a02cf85725501223299cf367134aa1f5b63b7",
|
||||
"copies": {
|
||||
"artifact-precheck.md": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\artifact-precheck.md",
|
||||
"bytes": 6017,
|
||||
"sha256": "c46baf86deea9350cd56b591f37f4dc0016f30648d88c1ed054f63ac72a1be4e"
|
||||
},
|
||||
"build-evidence.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\build-evidence.json",
|
||||
"bytes": 28765,
|
||||
"sha256": "1f7c1d729e852f1d76a07d09c797d49b5cdfc99efa413d1ecaf5aafcf284575d"
|
||||
},
|
||||
"extraction-check.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\extraction-check.json",
|
||||
"bytes": 73241,
|
||||
"sha256": "07c3fd3cccc52edd7652ac4364bd6d3e9df8b380f2f7004f5dcb14f0df9ef2f8"
|
||||
},
|
||||
"packaging.log": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\packaging.log",
|
||||
"bytes": 429,
|
||||
"sha256": "4bc9feaa706bf678c4553f1657d5fded5be23c357a8261957b8813b42a876d63"
|
||||
},
|
||||
"preparation-receipt.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\preparation-receipt.json",
|
||||
"bytes": 747,
|
||||
"sha256": "33d4ff0943ba4bc412622f6bdc94b12eb3975cf4edb38eed3edab3fd268769c8"
|
||||
},
|
||||
"source-inputs.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\source-inputs.json",
|
||||
"bytes": 146711,
|
||||
"sha256": "77f2972a357e9f77ce09151647d8588ad0cbdff8642c846519b3d6b33909d4db"
|
||||
},
|
||||
"check-native-bytes.py": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\check-native-bytes.py",
|
||||
"bytes": 3086,
|
||||
"sha256": "00d152ccd2b37b3f492fb3bce485e3f5dfdf24c8b2daf0476990d7b709f5680c"
|
||||
},
|
||||
"native-model-oracle.py": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\native-model-oracle.py",
|
||||
"bytes": 3947,
|
||||
"sha256": "2029fa5a2bf19577be6d8ebdfbaa51dc282ac253f2e78d6ad8e60499f78d30c7"
|
||||
},
|
||||
"evidence-plan.md": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\evidence-plan.md",
|
||||
"bytes": 5304,
|
||||
"sha256": "8e226c9fa1599540a78bf4a0972257513c041269c1ef814528229e5b17a79db9"
|
||||
},
|
||||
"collect-evidence.py": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\collect-evidence.py",
|
||||
"bytes": 7992,
|
||||
"sha256": "ec0075aa8aa6957a1780d79c50ba0f15a16f18e9b00e0ba01d57fca65dbc686f"
|
||||
},
|
||||
"native-observation.md": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\native-observation.md",
|
||||
"bytes": 4720,
|
||||
"sha256": "987955b42f8eca2744d67ef982ef8647025025d93dfbc3e7177b7ce328e01c3a"
|
||||
},
|
||||
"read-model-warnings.py": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\read-model-warnings.py",
|
||||
"bytes": 1847,
|
||||
"sha256": "3cd673212995a89ba72aeea2ca97cef08f3d58be0b895dcae009ef27bd4f6acb"
|
||||
},
|
||||
"check-reopened-bytes.py": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\check-reopened-bytes.py",
|
||||
"bytes": 842,
|
||||
"sha256": "ccc55be41289b40b20b7946711b1537fe11f5963e298a1dc9d38fa7eb2c8e693"
|
||||
},
|
||||
"independent-review.md": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\independent-review.md",
|
||||
"bytes": 17669,
|
||||
"sha256": "c4f55ebbcc36fc25816c1e210b26f7fa26dd05158f52eff0c657225a8da6086e"
|
||||
},
|
||||
"executed-commands.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\executed-commands.json",
|
||||
"bytes": 3632,
|
||||
"sha256": "cfbe8cacd19c8a0a33de241d3666eb3cc79c17d1c9be00c44ac9221130784da4"
|
||||
},
|
||||
"scripts/prepare-package46.py": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\prepare-package46.py",
|
||||
"bytes": 14096,
|
||||
"sha256": "e8365175490d17a2366654f522cd0aef477e36b3f4be0d20cda54aace5bcef08"
|
||||
},
|
||||
"scripts/extract-package46.py": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\extract-package46.py",
|
||||
"bytes": 2861,
|
||||
"sha256": "06ca651eca56936ba4fde9dc0cee00f0a310210dcc4dab03e3a6eb90d817a42c"
|
||||
},
|
||||
"scripts/setup-package46-native.py": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\setup-package46-native.py",
|
||||
"bytes": 2176,
|
||||
"sha256": "25a316c27300c6655b7e440fe006224fcd97f849f899413085b53c1070440263"
|
||||
},
|
||||
"scripts/launch-package46-native.py": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\launch-package46-native.py",
|
||||
"bytes": 2303,
|
||||
"sha256": "30fa121e4ddce4dab040682a43147f522badb2b27a0cc7cde44d8c4477aaec83"
|
||||
},
|
||||
"scripts/prepare-package46-reopen.py": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\prepare-package46-reopen.py",
|
||||
"bytes": 506,
|
||||
"sha256": "a2fea4d8c964a5dc4448efce8ad037fcd11235161ccd655212b72cca0f357ab2"
|
||||
},
|
||||
"scripts/launch-package46-reopen.py": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\launch-package46-reopen.py",
|
||||
"bytes": 2332,
|
||||
"sha256": "89a2e0da642039c189178f53abde1379e7752301c721598cdbd93ce33e35e3f4"
|
||||
},
|
||||
"scripts/prepare-package46-model-oracle.py": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\prepare-package46-model-oracle.py",
|
||||
"bytes": 1462,
|
||||
"sha256": "298bec9d481570a50d58716c6220982b73a45302a6cd07850da088f4d9dd6450"
|
||||
},
|
||||
"scripts/prepare-package46-warnings.py": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\prepare-package46-warnings.py",
|
||||
"bytes": 336,
|
||||
"sha256": "87f954c4f9c2f5879b7b0d19319c1b207d1a6a2e8775ab936deb0114f3c01491"
|
||||
},
|
||||
"scripts/package46-helper-review.md": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46-helper-review.md",
|
||||
"bytes": 3190,
|
||||
"sha256": "35a0cd0c77ab689d467cf8789026c94b4faf80821119e10266cd441ca5926897"
|
||||
},
|
||||
"provenance/commands.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\provenance\\commands.json",
|
||||
"bytes": 998,
|
||||
"sha256": "7af5852fe275eaa1dafb2ab5d7e7e1553a63941fa56bb5046f99d24ede0624f0"
|
||||
},
|
||||
"provenance/donor--build-evidence.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\provenance\\donor--build-evidence.json",
|
||||
"bytes": 3570,
|
||||
"sha256": "3b278a3401b9a4c2de0538d70f603c3c039b308d5d2952ebed792efcac3e08e5"
|
||||
},
|
||||
"provenance/donor-package.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\provenance\\donor-package.json",
|
||||
"bytes": 78341,
|
||||
"sha256": "36bcff8a760c08674f3fc017bb5affc8a5f4f39174ac9d5a29298f2423155832"
|
||||
},
|
||||
"provenance/gates--save-diagnostics-build.log": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\provenance\\gates--save-diagnostics-build.log",
|
||||
"bytes": 309,
|
||||
"sha256": "79a2c5e8f565f27296521fde2ef3a037a5110d1bd134b4661115769e8f1d97fd"
|
||||
},
|
||||
"provenance/gates--save-diagnostics-clippy.log": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\provenance\\gates--save-diagnostics-clippy.log",
|
||||
"bytes": 379,
|
||||
"sha256": "4c55b51c4a2dc7a0de14ce5f312267e0b22f9a65615d0c378f1809330eea579f"
|
||||
},
|
||||
"provenance/gates--save-diagnostics-corrected-tests.log": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\provenance\\gates--save-diagnostics-corrected-tests.log",
|
||||
"bytes": 3561,
|
||||
"sha256": "9079652120e18a7176feb8e5f4ac289cbf0c27f979a0c042fef5d8b4e2e252d4"
|
||||
},
|
||||
"provenance/native--baseline.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\provenance\\native--baseline.json",
|
||||
"bytes": 7556,
|
||||
"sha256": "5445719d5377b0ccaf7567747a48cdc753be2a30a57d35105ac7f39e6aa3b876"
|
||||
},
|
||||
"provenance/recovered-donor-manifest.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\provenance\\recovered-donor-manifest.json",
|
||||
"bytes": 103364,
|
||||
"sha256": "65f34e6894d2fd5538b924472adba25b541914aaa21d589e07bb7726ac24f6c6"
|
||||
},
|
||||
"provenance/recovered-donor-receipt.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\provenance\\recovered-donor-receipt.json",
|
||||
"bytes": 7942,
|
||||
"sha256": "5d630ff25489262188b8e35f1a2f0208bffd90eed6051d8845250509e9fac8ef"
|
||||
},
|
||||
"provenance/recovered-final-04--arcadia-server-build--changes.patch": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\provenance\\recovered-final-04--arcadia-server-build--changes.patch",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"provenance/recovered-final-04--arcadia-server-build--context.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\provenance\\recovered-final-04--arcadia-server-build--context.json",
|
||||
"bytes": 3540,
|
||||
"sha256": "46c9efa64819f1b0bdd237097fa266bc27e91f065ba992b8a4ec519964892e89"
|
||||
},
|
||||
"provenance/recovered-final-04--arcadia-server-build--inputs-after.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\provenance\\recovered-final-04--arcadia-server-build--inputs-after.json",
|
||||
"bytes": 1740725,
|
||||
"sha256": "38e4f7d37b67b06b7991d48560c5bd56ec5893909f3cffd224442d15bdc35f88"
|
||||
},
|
||||
"provenance/recovered-final-04--arcadia-server-build--inputs-before.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\provenance\\recovered-final-04--arcadia-server-build--inputs-before.json",
|
||||
"bytes": 1740725,
|
||||
"sha256": "38e4f7d37b67b06b7991d48560c5bd56ec5893909f3cffd224442d15bdc35f88"
|
||||
},
|
||||
"provenance/recovered-final-04--arcadia-server-build--output.log": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\provenance\\recovered-final-04--arcadia-server-build--output.log",
|
||||
"bytes": 79598,
|
||||
"sha256": "62399b3e0456ef5017a9ec294f83d630697b668d2d411814aa821c651c066941"
|
||||
},
|
||||
"provenance/recovered-final-04--arcadia-server-build--result.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\provenance\\recovered-final-04--arcadia-server-build--result.json",
|
||||
"bytes": 4203,
|
||||
"sha256": "61110abc77bd7c392491b2203b342a95b342196092cbaa9b2b80a1ccfd7b132f"
|
||||
},
|
||||
"provenance/recovered-final-04--arcadia-server-build--stderr.log": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\provenance\\recovered-final-04--arcadia-server-build--stderr.log",
|
||||
"bytes": 795,
|
||||
"sha256": "bd686584e398ba2fe9da3a978473560e0157a13748eedb1ec97705da83f001d5"
|
||||
},
|
||||
"provenance/recovered-final-04--arcadia-studio-build--changes.patch": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\provenance\\recovered-final-04--arcadia-studio-build--changes.patch",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"provenance/recovered-final-04--arcadia-studio-build--context.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\provenance\\recovered-final-04--arcadia-studio-build--context.json",
|
||||
"bytes": 3541,
|
||||
"sha256": "413d876661a7777dbb60b70acb9da0a88ae9e852061c4ce21488d62cae1d5dc4"
|
||||
},
|
||||
"provenance/recovered-final-04--arcadia-studio-build--inputs-after.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\provenance\\recovered-final-04--arcadia-studio-build--inputs-after.json",
|
||||
"bytes": 1740725,
|
||||
"sha256": "38e4f7d37b67b06b7991d48560c5bd56ec5893909f3cffd224442d15bdc35f88"
|
||||
},
|
||||
"provenance/recovered-final-04--arcadia-studio-build--inputs-before.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\provenance\\recovered-final-04--arcadia-studio-build--inputs-before.json",
|
||||
"bytes": 1740725,
|
||||
"sha256": "38e4f7d37b67b06b7991d48560c5bd56ec5893909f3cffd224442d15bdc35f88"
|
||||
},
|
||||
"provenance/recovered-final-04--arcadia-studio-build--output.log": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\provenance\\recovered-final-04--arcadia-studio-build--output.log",
|
||||
"bytes": 276374,
|
||||
"sha256": "df16fc294cdd3950ec872f276fa6b1aed5d70f60001b8fdc31a5955e5afb9f76"
|
||||
},
|
||||
"provenance/recovered-final-04--arcadia-studio-build--result.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\provenance\\recovered-final-04--arcadia-studio-build--result.json",
|
||||
"bytes": 4205,
|
||||
"sha256": "071717145eb535bb65182b7e930245a9c8969a0a823927d336d4811d88721b7a"
|
||||
},
|
||||
"provenance/recovered-final-04--arcadia-studio-build--stderr.log": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\provenance\\recovered-final-04--arcadia-studio-build--stderr.log",
|
||||
"bytes": 475,
|
||||
"sha256": "82dd960356991c418262df37dd0196ee3ee0cfa75ba5785030e5564dc8fb8014"
|
||||
},
|
||||
"provenance/recovered-final-04--artifact-relocation.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\provenance\\recovered-final-04--artifact-relocation.json",
|
||||
"bytes": 6181,
|
||||
"sha256": "3298225b9890aab1a8029a4d6dff42a8162f8d77f2c71bcdd379d25ebcb1f9d6"
|
||||
},
|
||||
"provenance/recovered-final-04--environment.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\provenance\\recovered-final-04--environment.json",
|
||||
"bytes": 8981,
|
||||
"sha256": "d9d89bc52a9312044e277f92b1585350fc86d5cc963dd91a39c669bc6ca2f39f"
|
||||
},
|
||||
"provenance/recovered-final-04--inputs-before.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\provenance\\recovered-final-04--inputs-before.json",
|
||||
"bytes": 1740725,
|
||||
"sha256": "38e4f7d37b67b06b7991d48560c5bd56ec5893909f3cffd224442d15bdc35f88"
|
||||
},
|
||||
"provenance/recovered-final-04--summary.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\provenance\\recovered-final-04--summary.json",
|
||||
"bytes": 10594,
|
||||
"sha256": "8b655c429b4abdeec0476a8397565fcd07682642f1d7b87e9a0c4eec63e22fc9"
|
||||
},
|
||||
"qa/native46/baseline.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\baseline.json",
|
||||
"bytes": 7556,
|
||||
"sha256": "d85b52b3d604ccd5376579d56d2cc80b73cad2c84af2f5fab4b24ef0e1a8ba47"
|
||||
},
|
||||
"qa/native46/captures/00-home.jpg": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\captures\\00-home.jpg",
|
||||
"bytes": 117494,
|
||||
"sha256": "32a5b997a19dcaad3249ea0fa2c3245dc855fba3c380cfbcbae1cf8f1924a1d3"
|
||||
},
|
||||
"qa/native46/captures/01-offline-guide.jpg": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\captures\\01-offline-guide.jpg",
|
||||
"bytes": 178043,
|
||||
"sha256": "30d4f407ef7a7756cf4fe8757fd1b7dde6cd1f50098d363f491f6578c2fb3b79"
|
||||
},
|
||||
"qa/native46/captures/02-pristine-allocation.jpg": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\captures\\02-pristine-allocation.jpg",
|
||||
"bytes": 176334,
|
||||
"sha256": "ab96796d10c5a4fc0920821101d545c9bdd3b7b72fe0fab163e8ea1b701607c9"
|
||||
},
|
||||
"qa/native46/captures/03-complete-example-loaded.jpg": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\captures\\03-complete-example-loaded.jpg",
|
||||
"bytes": 141873,
|
||||
"sha256": "12eda6538bd02278a04d76f32ae73b6b9013c99eea46a189251be5cdf5ff2ef7"
|
||||
},
|
||||
"qa/native46/captures/04-declared-name-applied.jpg": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\captures\\04-declared-name-applied.jpg",
|
||||
"bytes": 140015,
|
||||
"sha256": "320ddc12e3cf197e22bfe86ed252e5f8e6f7da0c1c02e90c0e7226d26473228d"
|
||||
},
|
||||
"qa/native46/captures/05-protected-destination-path.jpg": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\captures\\05-protected-destination-path.jpg",
|
||||
"bytes": 64074,
|
||||
"sha256": "524ef07f02966b515ee408af2eeddb8a847f23d6815fde39d44f2562eb13cf7b"
|
||||
},
|
||||
"qa/native46/captures/06-collision-refused.jpg": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\captures\\06-collision-refused.jpg",
|
||||
"bytes": 144429,
|
||||
"sha256": "7cd2f91da75f326ce3b95d8b6e660fac4cc1ee47ea3868c16b555b16b490e6e6"
|
||||
},
|
||||
"qa/native46/captures/07-collision-full-guidance.jpg": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\captures\\07-collision-full-guidance.jpg",
|
||||
"bytes": 151607,
|
||||
"sha256": "123c3883e5a3eabbc064c004dcf1f7ff9c101e671abedab2f9c600e3ba4b40e4"
|
||||
},
|
||||
"qa/native46/captures/08-save-all-recovered.jpg": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\captures\\08-save-all-recovered.jpg",
|
||||
"bytes": 139751,
|
||||
"sha256": "bccc63a3565e1bd4b49e6497872bfd6aef60d8b0dcd555220854a92e9c992841"
|
||||
},
|
||||
"qa/native46/captures/09-fresh-destination-path.jpg": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\captures\\09-fresh-destination-path.jpg",
|
||||
"bytes": 66409,
|
||||
"sha256": "da99ab1df26ee84e7410cbaad9bb2bb97dd49f8fe85bc00673685e8bb417b01b"
|
||||
},
|
||||
"qa/native46/captures/10-fresh-save-completed.jpg": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\captures\\10-fresh-save-completed.jpg",
|
||||
"bytes": 140637,
|
||||
"sha256": "9fb51ccdcaeabb59dcc4babd274899459910759f43863d130ae22eb8e0c240d4"
|
||||
},
|
||||
"qa/native46/captures/11-pristine-external-project-loaded.jpg": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\captures\\11-pristine-external-project-loaded.jpg",
|
||||
"bytes": 142485,
|
||||
"sha256": "17043d1a7a4e06845a80dabf018809bdc0b09914ff9d19c63054715c53d2b11b"
|
||||
},
|
||||
"qa/native46/captures/12-real-external-edit-refused.jpg": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\captures\\12-real-external-edit-refused.jpg",
|
||||
"bytes": 143168,
|
||||
"sha256": "a157a2b3959506a05d4598f0ed9a39d6577e5a45d29864c62f1500a8cd418100"
|
||||
},
|
||||
"qa/native46/captures/13-external-edit-full-guidance.jpg": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\captures\\13-external-edit-full-guidance.jpg",
|
||||
"bytes": 146493,
|
||||
"sha256": "5d16362e1b55dc8269f646e1287a4986a52cdd10ee5b8e5fe3646cfdc962c0e0"
|
||||
},
|
||||
"qa/native46/captures/14-external-edit-recovered.jpg": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\captures\\14-external-edit-recovered.jpg",
|
||||
"bytes": 140297,
|
||||
"sha256": "23df7326b6553a31b5040b1ac3d1afd732128030a519055865b6e364c4eef353"
|
||||
},
|
||||
"qa/native46/captures/15-fresh-process-reopen-path.jpg": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\captures\\15-fresh-process-reopen-path.jpg",
|
||||
"bytes": 73308,
|
||||
"sha256": "affa2df2561a2924490c3a3ff7585ac2d244cb187c2691261ad85f0625cd601e"
|
||||
},
|
||||
"qa/native46/captures/16-fresh-process-loaded.jpg": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\captures\\16-fresh-process-loaded.jpg",
|
||||
"bytes": 142120,
|
||||
"sha256": "2112fd78a513b323646972c74baf8ce06c63799c97261c3acbb3d49527ec6dca"
|
||||
},
|
||||
"qa/native46/captures/17-reopened-name-and-identity.jpg": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\captures\\17-reopened-name-and-identity.jpg",
|
||||
"bytes": 140763,
|
||||
"sha256": "6786c85aa194bbd5678344065c1384b67152548185097781ec0f11998d266822"
|
||||
},
|
||||
"qa/native46/captures/18-reopened-noop-save.jpg": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\captures\\18-reopened-noop-save.jpg",
|
||||
"bytes": 140515,
|
||||
"sha256": "426882b8fb014fa88457b4c09fd40f6d8c8b916670d66ca4fa636c5e314695df"
|
||||
},
|
||||
"qa/native46/collision-oracle.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\collision-oracle.json",
|
||||
"bytes": 6138,
|
||||
"sha256": "95cff17d73ef0bc179d224cc9cc23a7edab5b199427c446e6b6b8878edcc7ecf"
|
||||
},
|
||||
"qa/native46/external-before-oracle.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\external-before-oracle.json",
|
||||
"bytes": 6143,
|
||||
"sha256": "2cbbe1cced3234a3156a137b441a55372c0f11142de09dcb5ec7f9daf2897376"
|
||||
},
|
||||
"qa/native46/external-recovered-oracle.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\external-recovered-oracle.json",
|
||||
"bytes": 6146,
|
||||
"sha256": "d6442c220cb19a63d7c72feda1e66b5eb8cb975017188b536257efc0b75c373b"
|
||||
},
|
||||
"qa/native46/external-refused-oracle.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\external-refused-oracle.json",
|
||||
"bytes": 6144,
|
||||
"sha256": "fb45f36e22d8cc21ef97ff9d48abf6e6acb0049438df9f07ff27329868d2e8a7"
|
||||
},
|
||||
"qa/native46/finished.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\finished.json",
|
||||
"bytes": 955,
|
||||
"sha256": "e4dca1cba7333403cb5247616158da4e3fcd48fd1a2587d71f373a26ed6cf2c0"
|
||||
},
|
||||
"qa/native46/inject-oracle.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\inject-oracle.json",
|
||||
"bytes": 6134,
|
||||
"sha256": "e40dadda0838dbcf2449a6bd621a69fc863fc9ba1eb2fa88e58481a12aea9e50"
|
||||
},
|
||||
"qa/native46/restore-oracle.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\restore-oracle.json",
|
||||
"bytes": 6135,
|
||||
"sha256": "6677e4dc4befe5355ae850ac7c58af551e9a4f1228d9c02b699cc0063c59be5d"
|
||||
},
|
||||
"qa/native46/saved-a-oracle.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\saved-a-oracle.json",
|
||||
"bytes": 6136,
|
||||
"sha256": "94f3d484729624859d7e59e8fbcdec55eaa16822d5cbb9efae569148d3832b49"
|
||||
},
|
||||
"qa/native46/saved-c-oracle.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\saved-c-oracle.json",
|
||||
"bytes": 6132,
|
||||
"sha256": "88725bbcc038a598fac850781a8e6caa30fcf66704c795fb7f4ab5d9366c7b3f"
|
||||
},
|
||||
"qa/native46/started.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\started.json",
|
||||
"bytes": 805,
|
||||
"sha256": "b7d535e8a6729cec4030a8852567d3d74197b02b3017b804984de623a2860d61"
|
||||
},
|
||||
"qa/native46/stderr.log": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"qa/native46/stdout.log": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\native46\\stdout.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"qa/reopen46/bytes-oracle.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\reopen46\\bytes-oracle.json",
|
||||
"bytes": 5962,
|
||||
"sha256": "b7a6550d54c84c2113d25db7b3e2b82f04391da74811b0eebea4fee9a6b49dc8"
|
||||
},
|
||||
"qa/reopen46/finished.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\reopen46\\finished.json",
|
||||
"bytes": 957,
|
||||
"sha256": "80ac9d6b29fd61d45ed71b7517dafa0361fbd0dbd3fe1965bfc7b0311291fbb7"
|
||||
},
|
||||
"qa/reopen46/started.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\reopen46\\started.json",
|
||||
"bytes": 807,
|
||||
"sha256": "37f69d3018eee4780ead072c351afed61db5c42d11597ae34d58272556cc6b4e"
|
||||
},
|
||||
"qa/reopen46/stderr.log": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\reopen46\\stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"qa/reopen46/stdout.log": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\qa\\reopen46\\stdout.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"server-smoke/01.request.http": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\01.request.http",
|
||||
"bytes": 72,
|
||||
"sha256": "5fe7e3937ff43455dbb5c8f4b59ad7e0882d20033be1bad296c0807ceb2e3800"
|
||||
},
|
||||
"server-smoke/01.response.http": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\01.response.http",
|
||||
"bytes": 219,
|
||||
"sha256": "c2b515d1753e0ec5d1925eb09db9b26b1b4a00c114407f48a0c3051814c0640c"
|
||||
},
|
||||
"server-smoke/02.request.http": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\02.request.http",
|
||||
"bytes": 79,
|
||||
"sha256": "a4744234ccb6f591e7f2fc894a6a0465ecb8b8c4072c55f934df9f8887f17e2d"
|
||||
},
|
||||
"server-smoke/02.response.http": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\02.response.http",
|
||||
"bytes": 349010,
|
||||
"sha256": "cfe96a408b9f78c6a9d20ea647edabe200ed589010b379589af5ed4be7502738"
|
||||
},
|
||||
"server-smoke/03.request.http": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\03.request.http",
|
||||
"bytes": 474,
|
||||
"sha256": "bd242246c08472022b16fb31bb564712899a4ef271eae86eedb32661507d76ff"
|
||||
},
|
||||
"server-smoke/03.response.http": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\03.response.http",
|
||||
"bytes": 535,
|
||||
"sha256": "2df056b8fdb0aeec701d562b09621c0b091da1ad1ad976bff44f41f1b8767e96"
|
||||
},
|
||||
"server-smoke/04.request.http": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\04.request.http",
|
||||
"bytes": 112,
|
||||
"sha256": "6ff772f5ef01ea0d17b8b9b65c525249096af111a8dadc413359b44175fd1117"
|
||||
},
|
||||
"server-smoke/04.response.http": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\04.response.http",
|
||||
"bytes": 1070,
|
||||
"sha256": "aec6aebce5c6637a27c4813db85f5feedd6c3ac88ca02417e826a6da0d464246"
|
||||
},
|
||||
"server-smoke/05.request.http": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\05.request.http",
|
||||
"bytes": 127,
|
||||
"sha256": "86b843d60757a012a53abffc32914e609de19f0e6b44e4f50e973baea398466b"
|
||||
},
|
||||
"server-smoke/05.response.http": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\05.response.http",
|
||||
"bytes": 579,
|
||||
"sha256": "c3b0449383ff51d917d0f478280385317baaaefe0b3f3e3d8dd3d8fec400d3be"
|
||||
},
|
||||
"server-smoke/06.request.http": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\06.request.http",
|
||||
"bytes": 556,
|
||||
"sha256": "e33ed1925fe03cf690bd2de29d0d53c998e6b154ce1028b384c817cb33c5b7c1"
|
||||
},
|
||||
"server-smoke/06.response.http": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\06.response.http",
|
||||
"bytes": 1219,
|
||||
"sha256": "f73aa8fc5654e321bbf2895a5ca0ba80820befdab64d50aa3026d15e99299578"
|
||||
},
|
||||
"server-smoke/07.request.http": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\07.request.http",
|
||||
"bytes": 561,
|
||||
"sha256": "51671dcde9c6b25699e201362c9a9f2936423fa4ca50cbadc6fa4779cf37dfc0"
|
||||
},
|
||||
"server-smoke/07.response.http": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\07.response.http",
|
||||
"bytes": 450,
|
||||
"sha256": "f61dcd754223bc18a71c1c911432454df2abcf8b62d0800755489c433f4fa1c2"
|
||||
},
|
||||
"server-smoke/08.request.http": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\08.request.http",
|
||||
"bytes": 112,
|
||||
"sha256": "6ff772f5ef01ea0d17b8b9b65c525249096af111a8dadc413359b44175fd1117"
|
||||
},
|
||||
"server-smoke/08.response.http": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\08.response.http",
|
||||
"bytes": 1066,
|
||||
"sha256": "7bd3bdedf21cc06ef2d3cd04fd61018a194c07e16c5bd0494da1f71b1c5a0848"
|
||||
},
|
||||
"server-smoke/09.request.http": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\09.request.http",
|
||||
"bytes": 72,
|
||||
"sha256": "5fe7e3937ff43455dbb5c8f4b59ad7e0882d20033be1bad296c0807ceb2e3800"
|
||||
},
|
||||
"server-smoke/09.response.http": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\09.response.http",
|
||||
"bytes": 219,
|
||||
"sha256": "90440f98b0fb16c0d76789f84a0d806a8fcb8bf0d2624d7936869e88d234b364"
|
||||
},
|
||||
"server-smoke/10.request.http": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\10.request.http",
|
||||
"bytes": 112,
|
||||
"sha256": "6ff772f5ef01ea0d17b8b9b65c525249096af111a8dadc413359b44175fd1117"
|
||||
},
|
||||
"server-smoke/10.response.http": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\10.response.http",
|
||||
"bytes": 1066,
|
||||
"sha256": "5636efc5f3146816e70bb5e8193115d8f177a16859791b61f2427e319b11fd14"
|
||||
},
|
||||
"server-smoke/11.request.http": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\11.request.http",
|
||||
"bytes": 127,
|
||||
"sha256": "86b843d60757a012a53abffc32914e609de19f0e6b44e4f50e973baea398466b"
|
||||
},
|
||||
"server-smoke/11.response.http": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\11.response.http",
|
||||
"bytes": 577,
|
||||
"sha256": "7a577fa7de66db35957d8e6f52fdc448657bd27b0c0e9fbd65e29ff297db8fa4"
|
||||
},
|
||||
"server-smoke/accepted-envelope.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\accepted-envelope.json",
|
||||
"bytes": 1051,
|
||||
"sha256": "5b8426d571a3039ccd7296db51766e73dd1eaf24d29183e8918ca4c6b7bb0e5b"
|
||||
},
|
||||
"server-smoke/edited.arcadia": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\edited.arcadia",
|
||||
"bytes": 249,
|
||||
"sha256": "e59acb5ed01e55057096b22a39667b40ddddb97227395d04c281686a73c6a14c"
|
||||
},
|
||||
"server-smoke/first.stderr.log": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\first.stderr.log",
|
||||
"bytes": 112,
|
||||
"sha256": "6c16fae109ddbba5aeb3c8385d27d8ae010dfac9c60bc7486e6de288d34750b2"
|
||||
},
|
||||
"server-smoke/first.stdout.log": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\first.stdout.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"server-smoke/help.stderr.txt": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\help.stderr.txt",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"server-smoke/help.stdout.txt": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\help.stdout.txt",
|
||||
"bytes": 350,
|
||||
"sha256": "99c5cb07d451c6da829b835b66fce92ce5c2529508c8053030123df704d0610e"
|
||||
},
|
||||
"server-smoke/original.arcadia": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\original.arcadia",
|
||||
"bytes": 251,
|
||||
"sha256": "1f6b88cbcc3ac12995192feca91e07b9f6d536f2d21d0df6f42aa08f5c745ba9"
|
||||
},
|
||||
"server-smoke/package-provenance.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\package-provenance.json",
|
||||
"bytes": 105837,
|
||||
"sha256": "c16932b15c982a0067246e92d4782db64084db944d25e96655bf40e683bdea02"
|
||||
},
|
||||
"server-smoke/restart.stderr.log": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\restart.stderr.log",
|
||||
"bytes": 112,
|
||||
"sha256": "6c16fae109ddbba5aeb3c8385d27d8ae010dfac9c60bc7486e6de288d34750b2"
|
||||
},
|
||||
"server-smoke/restart.stdout.log": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\restart.stdout.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"server-smoke/result.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\result.json",
|
||||
"bytes": 4620,
|
||||
"sha256": "7f6d02894e25a85f58b6df50fae199b3cee4b886c30a2cf8810074f5087f1614"
|
||||
},
|
||||
"server-smoke/run.py": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\run.py",
|
||||
"bytes": 9045,
|
||||
"sha256": "20344608a0623584a0e0ac66dc7f435a0de053d39b4254e92f1c1148aed8e8b9"
|
||||
},
|
||||
"server-smoke/version.stderr.txt": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\version.stderr.txt",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"server-smoke/version.stdout.txt": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\server-smoke\\version.stdout.txt",
|
||||
"bytes": 21,
|
||||
"sha256": "af82a1126f98794babaa173139764cadbfb5143a235f9a887ef70d18d00a0d91"
|
||||
},
|
||||
"native-model-oracle/01.request.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\native-model-oracle\\01.request.json",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"native-model-oracle/01.response.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\native-model-oracle\\01.response.json",
|
||||
"bytes": 15,
|
||||
"sha256": "a29ee2b15c494311c52521766e44af56a3ad2248e7a8ab465e5206463c13d288"
|
||||
},
|
||||
"native-model-oracle/02.request.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\native-model-oracle\\02.request.json",
|
||||
"bytes": 73418,
|
||||
"sha256": "b82d1eb074d86d60e44651d17f659af7202fadf65bb961ecb0a57535af876b5a"
|
||||
},
|
||||
"native-model-oracle/02.response.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\native-model-oracle\\02.response.json",
|
||||
"bytes": 245,
|
||||
"sha256": "076e563139efa3f29d5456a1231f2be908a99ca2cf1905788d3bc632a500500d"
|
||||
},
|
||||
"native-model-oracle/03.request.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\native-model-oracle\\03.request.json",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"native-model-oracle/03.response.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\native-model-oracle\\03.response.json",
|
||||
"bytes": 164079,
|
||||
"sha256": "0f9d20672b579738c5a82e69de034be7011ba8b85c1de5c1d7f57a8d37f609cc"
|
||||
},
|
||||
"native-model-oracle/04.request.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\native-model-oracle\\04.request.json",
|
||||
"bytes": 73428,
|
||||
"sha256": "14545c40231af83f94091f2a30a84abd001c7579cbddedb779da32bf8a9f4d22"
|
||||
},
|
||||
"native-model-oracle/04.response.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\native-model-oracle\\04.response.json",
|
||||
"bytes": 245,
|
||||
"sha256": "aa4d0cd866d2fa14486aa95c712ed322a078cde5cacc76a7baca2b00a3da574c"
|
||||
},
|
||||
"native-model-oracle/05.request.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\native-model-oracle\\05.request.json",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"native-model-oracle/05.response.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\native-model-oracle\\05.response.json",
|
||||
"bytes": 164099,
|
||||
"sha256": "6f08bb2a8bcfc7864bb1c3127528b989294acc044f051bdc7aef8adbbc5a6f56"
|
||||
},
|
||||
"native-model-oracle/06.request.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\native-model-oracle\\06.request.json",
|
||||
"bytes": 73428,
|
||||
"sha256": "14545c40231af83f94091f2a30a84abd001c7579cbddedb779da32bf8a9f4d22"
|
||||
},
|
||||
"native-model-oracle/06.response.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\native-model-oracle\\06.response.json",
|
||||
"bytes": 245,
|
||||
"sha256": "85fd03627b057600e4905cb3d9f9fdd7ae7e86e0f187aafd318040f506bb188c"
|
||||
},
|
||||
"native-model-oracle/07.request.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\native-model-oracle\\07.request.json",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"native-model-oracle/07.response.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\native-model-oracle\\07.response.json",
|
||||
"bytes": 164099,
|
||||
"sha256": "da469acf277221e346dde48c7419710c0ef782279eb09f81370479a9e5d0ecda"
|
||||
},
|
||||
"native-model-oracle/result.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\native-model-oracle\\result.json",
|
||||
"bytes": 1176,
|
||||
"sha256": "ecc327d07bf3afd690a0b83adc1a58058fb8ff99a179f33246705c893d9b37e7"
|
||||
},
|
||||
"native-model-oracle/stderr.log": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\native-model-oracle\\stderr.log",
|
||||
"bytes": 119,
|
||||
"sha256": "f9ddc1a5960db7bd21641029e4abc50d39a689d825b2fa8f16c84f9787056df7"
|
||||
},
|
||||
"native-model-oracle/stdout.log": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\native-model-oracle\\stdout.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"model-warnings/pristine.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\model-warnings\\pristine.json",
|
||||
"bytes": 276,
|
||||
"sha256": "763972bac5b1e0e094321fbaf2ad6c52f91d33e4a4de341674863bc932ddee10"
|
||||
},
|
||||
"model-warnings/result.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\model-warnings\\result.json",
|
||||
"bytes": 1803,
|
||||
"sha256": "3bbb1f9068780db168abe693958419a4c6354df326079ce401a2601b6d231f5f"
|
||||
},
|
||||
"model-warnings/saved.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\model-warnings\\saved.json",
|
||||
"bytes": 498,
|
||||
"sha256": "369a1f7a983b397c47c23294136dfa05a10723397d5be38d2917174111e7fde1"
|
||||
},
|
||||
"model-warnings/stderr.log": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\model-warnings\\stderr.log",
|
||||
"bytes": 119,
|
||||
"sha256": "411fa7e937b7c621bd6b8491c00351f917ab89e05f690fac475498abd6545fc7"
|
||||
},
|
||||
"model-warnings/stdout.log": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\model-warnings\\stdout.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"package/package.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\extracted\\ArcadiaStudio-0.2.0-preview.save-diagnostics.20261001-x86_64-pc-windows-gnullvm\\package.json",
|
||||
"bytes": 105838,
|
||||
"sha256": "96b3e6c3783ecc1c9ab75a45410f27df2966b3a4bb9790c451835aa857c22b21"
|
||||
},
|
||||
"package/dependency-notices.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\extracted\\ArcadiaStudio-0.2.0-preview.save-diagnostics.20261001-x86_64-pc-windows-gnullvm\\dependency-notices.json",
|
||||
"bytes": 1659611,
|
||||
"sha256": "f7049361b62fcafc8bc63ed1bffc030cf9067dd37f386d238b81db86b4a72163"
|
||||
},
|
||||
"package/documentation-check.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\extracted\\ArcadiaStudio-0.2.0-preview.save-diagnostics.20261001-x86_64-pc-windows-gnullvm\\documentation-check.json",
|
||||
"bytes": 43,
|
||||
"sha256": "18a35f7022d6c180c42ad4fd7c7010e494bdff0d2ca395efac84ac545fe23627"
|
||||
},
|
||||
"package/SHA256SUMS.txt": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\extracted\\ArcadiaStudio-0.2.0-preview.save-diagnostics.20261001-x86_64-pc-windows-gnullvm\\SHA256SUMS.txt",
|
||||
"bytes": 67036,
|
||||
"sha256": "b876e60953424c9c2fa2d9acdcfabe45822686a19f596cb37ab0e6ce68174e0d"
|
||||
},
|
||||
"package/START-HERE.txt": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\extracted\\ArcadiaStudio-0.2.0-preview.save-diagnostics.20261001-x86_64-pc-windows-gnullvm\\START-HERE.txt",
|
||||
"bytes": 676,
|
||||
"sha256": "a549295cf57ac73673dc4fa6106463450f982122793cb9c7135ce4fc7087e9ed"
|
||||
},
|
||||
"package/THIRD-PARTY-NOTICES.txt": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\extracted\\ArcadiaStudio-0.2.0-preview.save-diagnostics.20261001-x86_64-pc-windows-gnullvm\\THIRD-PARTY-NOTICES.txt",
|
||||
"bytes": 21431,
|
||||
"sha256": "32bbbd437f15b67690c6704fc14e2f12ae0fd463aa2eb5e4c99c1d61857f87fb"
|
||||
},
|
||||
"package/ArcadiaStudio-0.2.0-preview.save-diagnostics.20261001-x86_64-pc-windows-gnullvm.zip.sha256": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\dist\\ArcadiaStudio-0.2.0-preview.save-diagnostics.20261001-x86_64-pc-windows-gnullvm.zip.sha256",
|
||||
"bytes": 150,
|
||||
"sha256": "de08984ea2cbaf95b6241ac817f1ad8459a0b863adf7ee9fe51de0834bcd2d54"
|
||||
},
|
||||
"scripts/recover-donor.py": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46-donor-recovery\\recover.py",
|
||||
"bytes": 6854,
|
||||
"sha256": "db59864423df81773df98d4de5af6cda7b53e7fc4191cd0720d4d7088415f711"
|
||||
},
|
||||
"verify.py": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\verify-evidence.py",
|
||||
"bytes": 8604,
|
||||
"sha256": "ed093a3486d2df83bfaa5b2a38ef1f0d372438dd1e5ac12891427e8a12c57027"
|
||||
},
|
||||
"reference-companions/expected-diagnostics.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\extracted\\ArcadiaStudio-0.2.0-preview.save-diagnostics.20261001-x86_64-pc-windows-gnullvm\\examples\\release1\\expected-diagnostics.json",
|
||||
"bytes": 288,
|
||||
"sha256": "3700393d76b940cfc076bf52861bd7b1f43370f8eabce3594531bd0bf1fc851e"
|
||||
},
|
||||
"reference-companions/model.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\extracted\\ArcadiaStudio-0.2.0-preview.save-diagnostics.20261001-x86_64-pc-windows-gnullvm\\examples\\release1\\model.json",
|
||||
"bytes": 134520,
|
||||
"sha256": "ef0ef4006c3e09d5db6e1b621256b3f7d6642f3a7b09cc34607cfbcca830c727"
|
||||
},
|
||||
"reference-companions/model.rs": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\extracted\\ArcadiaStudio-0.2.0-preview.save-diagnostics.20261001-x86_64-pc-windows-gnullvm\\examples\\release1\\model.rs",
|
||||
"bytes": 28776,
|
||||
"sha256": "ddc2d92b0d7699a4cadfbb35ae379f0a68d17f4f5d7df82b4b1afcf8d5425fbe"
|
||||
},
|
||||
"reference-companions/README.md": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\extracted\\ArcadiaStudio-0.2.0-preview.save-diagnostics.20261001-x86_64-pc-windows-gnullvm\\examples\\release1\\README.md",
|
||||
"bytes": 11137,
|
||||
"sha256": "113cfb1cf38a98b51bff60442d86a35d636a3d80ef206bece7d53d0aae67f2d5"
|
||||
},
|
||||
"reference-companions/transition-before.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\extracted\\ArcadiaStudio-0.2.0-preview.save-diagnostics.20261001-x86_64-pc-windows-gnullvm\\examples\\release1\\transition-before.json",
|
||||
"bytes": 35801,
|
||||
"sha256": "2253e6434f741687e22327c37d520ed15c043bc36025498650bc2366bb6a874d"
|
||||
},
|
||||
"reference-companions/transition-request.json": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\extracted\\ArcadiaStudio-0.2.0-preview.save-diagnostics.20261001-x86_64-pc-windows-gnullvm\\examples\\release1\\transition-request.json",
|
||||
"bytes": 4276,
|
||||
"sha256": "43b9a22e5f95ad3bc0ebd2478ead0e14406854abc989ae94ded9367b013d812a"
|
||||
},
|
||||
"reference-companions/evidence/repair-check.md": {
|
||||
"historical_local_path": "C:\\ar-save-01a0d717\\.local\\package46\\extracted\\ArcadiaStudio-0.2.0-preview.save-diagnostics.20261001-x86_64-pc-windows-gnullvm\\examples\\release1\\evidence\\repair-check.md",
|
||||
"bytes": 1419,
|
||||
"sha256": "f4db17bdca4ecbb1bf0caef01b2da5f1f7f798ab3152b648ce6dd8696a6a68e5"
|
||||
}
|
||||
},
|
||||
"excluded": [
|
||||
"ZIPs",
|
||||
"EXEs/DLLs",
|
||||
"full extracted/staged bundle",
|
||||
"stores",
|
||||
"working fixture directories"
|
||||
],
|
||||
"scope": "Byte capture of completed receipts; historical scripts retain original paths and are not portable replay commands."
|
||||
}
|
||||