Skip to content

feat(experiment): add durable result recorder - #10

Merged
Staaaaaaaaar merged 1 commit into
mainfrom
feat/result-recorder
Aug 17, 2026
Merged

Staaaaaaaaar merged 1 commit into
mainfrom
feat/result-recorder

Conversation

@Staaaaaaaaar

Copy link
Copy Markdown
Owner

Motivation

PR 10 requires a durable, versioned filesystem result format that preserves both successful and interrupted experiments and can be validated without a running ROS graph.

Scope

  • add a ROS-independent ResultRecorder and typed metric/event/trajectory inputs
  • persist canonical config, metadata, Episode specs, events, trajectories, metrics, and summary artifacts
  • use atomic sibling-file replacement with fsync and explicit Episode/Experiment commit markers
  • safely encode opaque experiment and Episode identifiers as path components
  • add an independent strict v1 result reader and validator
  • document Result Schema v1 and its commit semantics

Architecture Changes

  • metrics.json complete is the authoritative Episode commit marker
  • metadata.json complete is the authoritative Experiment commit marker
  • files remain the durable source of truth; ROS EpisodeResult publication remains optional
  • full orchestrator lifecycle wiring and multi-Episode execution remain in PR 11

Testing

  • make dev-lint
  • make dev-check
  • 16 packages built
  • 204 tests passed, 0 errors, 0 failures, 0 skipped
  • covered exact layouts, normal and interrupted reads, path traversal IDs, metric/trajectory invariants, strict JSON numbers, atomic replacement, and injected metrics/summary/metadata write failures

Acceptance Criteria

  • stable versioned result schema
  • exact machine-readable Experiment and Episode layouts
  • interrupted output remains parseable with complete=false
  • normal output is independently validated
  • atomic replacement preserves the previous artifact on commit failure
  • path components cannot escape the configured result root

Known Limitations

  • no database, object storage, rosbag, or analysis UI
  • trajectory output is buffered and committed during Episode finalization
  • the recorder is intentionally not wired into the orchestrator until PR 11

Follow-up

PR 11 will integrate the recorder with the full multi-Episode lifecycle and failure policy.

Roadmap: PR 10 - Result Recorder

@Staaaaaaaaar
Staaaaaaaaar merged commit 579e7c1 into main Aug 17, 2026
1 check passed
@Staaaaaaaaar
Staaaaaaaaar deleted the feat/result-recorder branch August 17, 2026 11:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant