Technical specification: v0.2 semantic mutation operations

Historical document from source revision 61e75e9. This plan records the work proposed at that revision; it is not current implementation guidance. Original source.

1. Goal

Add idempotent domain operations for standard OKF v0.2 families on top of the lossless engine. Do not provide callers with a raw YAML mutation escape hatch.

Dependencies: task10.md, task11.md, task13.md.

2. Operations

Add narrowly scoped canonical operations:

PutAttestedComputation atomically sets a consistent contract:

Do not expose generic SetYAML, yaml.Node, or raw key paths.

3. Bare/list verified

4. Store canonical contract

Each operation:

An ADR is required: additive tags in ChangeSet format v1 or a justified version bump. Do not increase the format version “just in case”.

Do not restrict store.ChangeSet.Actor to the v0.2 actor convention: it is the transaction principal. Document actors are validated within the corresponding operation.

5. Move/path integration

Extend MoveConcept to rewrite statically resolvable bundle paths losslessly in:

Leave external URLs and scope descriptors unchanged. Preserve broken or unresolved values.

6. Validation gating

Preserve the pipeline:

  1. Validate the ChangeSet.
  2. Apply operations to a clone.
  3. Load the final staged bundle.
  4. Run the version-aware validator.
  5. Return a diagnostic-only preview on a blocking finding.

Operation preflight checks actors, dates, source selectors, and parameter uniqueness. Strict warnings do not block an ordinary commit unless they are explicit postconditions of the operation.

7. Files

8. Tests

All tests follow AAA.

9. Acceptance criteria

10. Out of scope

Legacy migration, computation execution, binding, receipts/verdicts, attester runtime, and arbitrary asset execution.