Development and production archive paths may create separate diagnostic links for one SimBoard case. The scanner does not remove obsolete links; operators remove them manually.
global_time_series/
provenance.20260805_234735_275469.cfg
provenance.20260805_234735_275469.settings
provenance.20260805_234749_729830.cfg
provenance.20260805_234749_729830.settings
Goal
Provide an operational path for SimBoard to discover and link diagnostics published by zppy's SimBoard-compatible publishing mode. This follows the broader diagnostics-link MVP in #174.
Scope
DIAGNOSTICS_ARCHIVES_BY_MACHINEstatic site registry underbackend/app/scripts/ingestion/.mache/machines/*.cfgfiles with usable[web_portal]values. SimBoard does not fetch or parse Mache at scanner runtime.production/anddevelopment/trees, with optional case-group directories, without following symlinks outside the configured archive root.provenance.<timestamp>.cfg/provenance.<timestamp>.settingspair per archive case directory. Do not fall back to older provenance when the newest pair is incomplete.diagnostics_urlonly from the selected.settingsfile. Validate the settings format, archive layout, and URL scheme, authority, and archive-path boundary.ExternalLinkwith cascade deletion. Removing that link invalidates state; a later scan can recreate a still-published link.zppy Publishing Contract
See zppy PR #841.
zppy adds an opt-in
[simboard]configuration section. It is a configuration hook, not an HPC job.When
simboard.enabled = Trueand[default] wwwis unset, zppy derives its archive location from the current machine's Macheweb_portal.base_path.Published diagnostics are organized as:
simulation_typedistinguishes development from production;<case_group>/is optional.An explicitly configured
[default] wwwremains authoritative.For non-dry-run executions, zppy writes timestamped paired provenance files beside published diagnostics. The cfg establishes the timestamped pair; settings carry
case_name,machine,hpc_username, optionalcase_group, anddiagnostics_url.Multiple pairs may exist for one case after repeated zppy runs. SimBoard selects the newest pair by filename timestamp. A newer pair updates central provenance state; the stable URL upsert avoids duplicate links.
Development and production archive paths may create separate diagnostic links for one SimBoard case. The scanner does not remove obsolete links; operators remove them manually.
Example:
SimBoard treats zppy's provenance and archive layout as the upstream publishing contract. It does not reconstruct zppy behavior or crawl public HTTP directory listings.
API and Storage Boundary
POST /api/v1/diagnostics/linkcontract.DiagnosticProvenanceStatewith a migration and transactional link/state persistence.backend/app/scripts/ingestion/.Out of Scope