[
  {
    "label": "create_workspace",
    "method": "POST",
    "path": "/workspaces",
    "request": {
      "name": "Showcase Workspace",
      "description": "Demonstration workspace for the public showcase."
    },
    "status_code": 201,
    "response": {
      "name": "Showcase Workspace",
      "description": "Demonstration workspace for the public showcase.",
      "id": "ws_demo0001"
    },
    "claim": "workspace/project/skill creation"
  },
  {
    "label": "create_project",
    "method": "POST",
    "path": "/projects",
    "request": {
      "workspace_id": "ws_demo0001",
      "name": "Citrus Launch",
      "description": "A short creative loop used to demonstrate the judgment cycle.",
      "mode": "explore"
    },
    "status_code": 201,
    "response": {
      "workspace_id": "ws_demo0001",
      "name": "Citrus Launch",
      "description": "A short creative loop used to demonstrate the judgment cycle.",
      "mode": "explore",
      "parent_project_id": null,
      "source_artifact_id": null,
      "id": "proj_demo0001",
      "status": "active",
      "branch_name": null
    },
    "claim": "workspace/project/skill creation"
  },
  {
    "label": "create_skill",
    "method": "POST",
    "path": "/skills",
    "request": {
      "workspace_id": "ws_demo0001",
      "project_id": "proj_demo0001",
      "name": "Short Product Films",
      "description": "Concept prompts for short launch films for a citrus fragrance.",
      "modality": "video",
      "goal": "One clear visual idea per concept: tactile, premium, and feasible to shoot.",
      "constraints": [
        "no dialogue",
        "no on-screen text"
      ]
    },
    "status_code": 201,
    "response": {
      "workspace_id": "ws_demo0001",
      "name": "Short Product Films",
      "description": "Concept prompts for short launch films for a citrus fragrance.",
      "modality": "video",
      "goal": "One clear visual idea per concept: tactile, premium, and feasible to shoot.",
      "constraints": [
        "no dialogue",
        "no on-screen text"
      ],
      "id": "skill_demo0001"
    },
    "claim": "workspace/project/skill creation"
  },
  {
    "label": "generate_first_batch",
    "method": "POST",
    "path": "/skills/skill_demo0001/generate-prompts",
    "request": {
      "project_id": "proj_demo0001",
      "mode": "explore",
      "diversity_mode": "balanced",
      "brief": "Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.",
      "n": 3
    },
    "status_code": 201,
    "response": {
      "prompt_batch": {
        "skill_id": "skill_demo0001",
        "project_id": "proj_demo0001",
        "template_id": null,
        "mode": "explore",
        "brief": "Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.",
        "diversity_mode": "balanced",
        "n": 3,
        "target_model": "generic",
        "memory_inclusion": "all",
        "selected_memory_ids": [],
        "reference_image": null,
        "id": "batch_demo0001",
        "generation_plan": {
          "provider": "mock",
          "mode": "explore",
          "diversity_mode": "balanced",
          "roles": [
            "aligned",
            "exploratory",
            "variation"
          ],
          "n": 3,
          "uses_accepted_memory": false,
          "template_id": "tmpl_demo0001",
          "template_name": "Default candidate prompt template",
          "meta_template_id": "tmpl_demo0002",
          "meta_template_name": "Default meta-prompt template",
          "target_model": "generic",
          "memory_inclusion": "all",
          "selected_memory_ids": [],
          "reference_image": null,
          "recipe": {
            "target_model": "generic",
            "meta_template_id": "tmpl_demo0002",
            "meta_template_updated_at": "2026-01-01T00:00:00Z",
            "candidate_template_id": "tmpl_demo0001",
            "candidate_template_updated_at": "2026-01-01T00:00:01Z",
            "brief": "Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.",
            "mode": "explore",
            "diversity_mode": "balanced",
            "variable_values": {},
            "reference_image": null
          },
          "memory_influence_trace": {
            "trace_version": 1,
            "attribution_scope": "prompt_batch",
            "attribution_note": "Batch-level trace of active accepted memories available to generate-next. This is not per-token or per-candidate attribution.",
            "active_memory_count": 0,
            "memory_refs": []
          },
          "applied_memory_refs": []
        },
        "what_changed": {
          "summary": "Generated batch without accepted memory yet.",
          "used_memory_count": 0,
          "used_memory": [],
          "preserve": [],
          "avoid": [],
          "extract": [],
          "frontier": [],
          "used_project_context": true,
          "used_skill_context": true,
          "memory_inclusion": "all"
        },
        "memory_fingerprint": "fp_demo0001",
        "recipe_fingerprint": "fp_demo0002",
        "archived_at": null,
        "created_at": "2026-01-01T00:00:02Z"
      },
      "prompts": [
        {
          "skill_id": "skill_demo0001",
          "project_id": "proj_demo0001",
          "prompt_batch_id": "batch_demo0001",
          "template_id": "tmpl_demo0001",
          "text": "Macro on a chilled bottle: condensation beads gather, merge, and run, dragging a clean line down the frosted glass. A thumb of orange peel flexes just off-axis and throws a fine mist across the light. Shallow depth, slow push, cold blue-green key.",
          "structured_fields": {
            "role": "aligned",
            "index": 1,
            "brief": "Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.",
            "provider": "mock",
            "provider_model": "mock-prompt-generator",
            "target_model": "generic",
            "used_memory_ids": [],
            "used_memory": [],
            "reference_image": null
          },
          "parent_prompt_id": null,
          "id": "prompt_demo0001",
          "version_number": 1
        },
        {
          "skill_id": "skill_demo0001",
          "project_id": "proj_demo0001",
          "prompt_batch_id": "batch_demo0001",
          "template_id": "tmpl_demo0001",
          "text": "Hard sunlight through a slatted blind rakes across a seamless backdrop in amber and deep green. Bars of light rotate, a wedge of grapefruit spins, the shadow of a leaf sweeps past, and the palette flips to negative on the final beat.",
          "structured_fields": {
            "role": "exploratory",
            "index": 2,
            "brief": "Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.",
            "provider": "mock",
            "provider_model": "mock-prompt-generator",
            "target_model": "generic",
            "used_memory_ids": [],
            "used_memory": [],
            "reference_image": null
          },
          "parent_prompt_id": null,
          "id": "prompt_demo0002",
          "version_number": 1
        },
        {
          "skill_id": "skill_demo0001",
          "project_id": "proj_demo0001",
          "prompt_batch_id": "batch_demo0001",
          "template_id": "tmpl_demo0001",
          "text": "A cleared dinner table after guests have gone: linen creased, two glasses, a bowl of clementines. Over sixteen seconds the low sun crawls across the cloth, the peel curls tighten, and the room warms from grey to gold.",
          "structured_fields": {
            "role": "variation",
            "index": 3,
            "brief": "Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.",
            "provider": "mock",
            "provider_model": "mock-prompt-generator",
            "target_model": "generic",
            "used_memory_ids": [],
            "used_memory": [],
            "reference_image": null
          },
          "parent_prompt_id": null,
          "id": "prompt_demo0003",
          "version_number": 1
        }
      ],
      "candidates": [
        {
          "workspace_id": "ws_demo0001",
          "project_id": "proj_demo0001",
          "prompt_batch_id": "batch_demo0001",
          "prompt_id": "prompt_demo0001",
          "artifact_id": null,
          "id": "cand_demo0001",
          "status": "prompt_generated",
          "archived_at": null
        },
        {
          "workspace_id": "ws_demo0001",
          "project_id": "proj_demo0001",
          "prompt_batch_id": "batch_demo0001",
          "prompt_id": "prompt_demo0002",
          "artifact_id": null,
          "id": "cand_demo0002",
          "status": "prompt_generated",
          "archived_at": null
        },
        {
          "workspace_id": "ws_demo0001",
          "project_id": "proj_demo0001",
          "prompt_batch_id": "batch_demo0001",
          "prompt_id": "prompt_demo0003",
          "artifact_id": null,
          "id": "cand_demo0003",
          "status": "prompt_generated",
          "archived_at": null
        }
      ],
      "batch_action": "created"
    },
    "claim": "initial candidate batch (comparison set)"
  },
  {
    "label": "judge_candidate_1",
    "method": "POST",
    "path": "/feedback",
    "request": {
      "workspace_id": "ws_demo0001",
      "project_id": "proj_demo0001",
      "skill_id": "skill_demo0001",
      "candidate_id": "cand_demo0001",
      "prompt_id": "prompt_demo0001",
      "user_text": "The condensation run is the whole idea -- one physical change I can actually shoot, and the beading reads expensive. But the bottle is never legible; I get texture and no product. Keep the transformation, end on the bottle."
    },
    "status_code": 201,
    "response": {
      "workspace_id": "ws_demo0001",
      "user_text": "The condensation run is the whole idea -- one physical change I can actually shoot, and the beading reads expensive. But the bottle is never legible; I get texture and no product. Keep the transformation, end on the bottle.",
      "project_id": "proj_demo0001",
      "skill_id": "skill_demo0001",
      "candidate_id": "cand_demo0001",
      "artifact_id": null,
      "prompt_id": "prompt_demo0001",
      "prompt_batch_id": null,
      "id": "fb_demo0001",
      "analyzed_at": null
    },
    "claim": "one clear natural-language judgment"
  },
  {
    "label": "analyze_judgment_1",
    "method": "POST",
    "path": "/feedback/fb_demo0001/analyze",
    "request": null,
    "status_code": 201,
    "response": [
      {
        "skill_id": "skill_demo0001",
        "content": "Organize each concept around a single physical transformation that can actually be shot.",
        "feedback_id": "fb_demo0001",
        "project_id": "proj_demo0001",
        "source_candidate_id": "cand_demo0001",
        "source_artifact_id": null,
        "source_prompt_id": "prompt_demo0001",
        "source_prompt_batch_id": "batch_demo0001",
        "source_template_id": "tmpl_demo0001",
        "proposed_action": "preserve",
        "memory_type": "style_dna",
        "polarity": "preserve",
        "scope": "skill",
        "rationale": "The judgment called the condensation run 'the whole idea'.",
        "confidence": 0.89,
        "id": "memprop_demo0001",
        "status": "pending",
        "draft_content": "Organize each concept around a single physical transformation that can actually be shot.",
        "was_edited": false,
        "decided_at": null,
        "decision_note": null,
        "teaching_state": "pending"
      },
      {
        "skill_id": "skill_demo0001",
        "content": "End on a clean product shot.",
        "feedback_id": "fb_demo0001",
        "project_id": "proj_demo0001",
        "source_candidate_id": "cand_demo0001",
        "source_artifact_id": null,
        "source_prompt_id": "prompt_demo0001",
        "source_prompt_batch_id": "batch_demo0001",
        "source_template_id": "tmpl_demo0001",
        "proposed_action": "preserve",
        "memory_type": "style_dna",
        "polarity": "preserve",
        "scope": "skill",
        "rationale": "The judgment asked to end on the bottle after the transformation.",
        "confidence": 0.74,
        "id": "memprop_demo0002",
        "status": "pending",
        "draft_content": "End on a clean product shot.",
        "was_edited": false,
        "decided_at": null,
        "decision_note": null,
        "teaching_state": "pending"
      }
    ],
    "claim": "feedback analysis into pending proposals"
  },
  {
    "label": "accept_proposal_one_transformation",
    "method": "POST",
    "path": "/memory/proposals/memprop_demo0001/accept",
    "request": {
      "decision_note": "Yes -- one shootable change is the whole idea."
    },
    "status_code": 201,
    "response": {
      "skill_id": "skill_demo0001",
      "content": "Organize each concept around a single physical transformation that can actually be shot.",
      "project_id": "proj_demo0001",
      "source_feedback_id": "fb_demo0001",
      "source_artifact_id": null,
      "source_candidate_id": "cand_demo0001",
      "source_prompt_id": "prompt_demo0001",
      "source_prompt_batch_id": "batch_demo0001",
      "source_template_id": "tmpl_demo0001",
      "source_proposal_id": "memprop_demo0001",
      "memory_type": "style_dna",
      "polarity": "preserve",
      "scope": "skill",
      "prompt_fragment": "Organize each concept around a single physical transformation that can actually be shot.",
      "negative_fragment": null,
      "copy_policy": "reference_only",
      "strength": "soft_preference",
      "id": "mem_demo0001",
      "status": "active"
    },
    "claim": "accept decision"
  },
  {
    "label": "edit_proposal_product_legible",
    "method": "POST",
    "path": "/memory/proposals/memprop_demo0002/edit",
    "request": {
      "content": "Keep the product legible in the final beat."
    },
    "status_code": 200,
    "response": {
      "skill_id": "skill_demo0001",
      "content": "Keep the product legible in the final beat.",
      "feedback_id": "fb_demo0001",
      "project_id": "proj_demo0001",
      "source_candidate_id": "cand_demo0001",
      "source_artifact_id": null,
      "source_prompt_id": "prompt_demo0001",
      "source_prompt_batch_id": "batch_demo0001",
      "source_template_id": "tmpl_demo0001",
      "proposed_action": "preserve",
      "memory_type": "style_dna",
      "polarity": "preserve",
      "scope": "skill",
      "rationale": "The judgment asked to end on the bottle after the transformation.",
      "confidence": 0.74,
      "id": "memprop_demo0002",
      "status": "pending",
      "draft_content": "End on a clean product shot.",
      "was_edited": true,
      "decided_at": null,
      "decision_note": null,
      "teaching_state": "edited_pending"
    },
    "claim": "edit decision"
  },
  {
    "label": "accept_edited_proposal_product_legible",
    "method": "POST",
    "path": "/memory/proposals/memprop_demo0002/accept",
    "request": {
      "decision_note": "Right instinct, too vague -- said what 'clean' has to mean."
    },
    "status_code": 201,
    "response": {
      "skill_id": "skill_demo0001",
      "content": "Keep the product legible in the final beat.",
      "project_id": "proj_demo0001",
      "source_feedback_id": "fb_demo0001",
      "source_artifact_id": null,
      "source_candidate_id": "cand_demo0001",
      "source_prompt_id": "prompt_demo0001",
      "source_prompt_batch_id": "batch_demo0001",
      "source_template_id": "tmpl_demo0001",
      "source_proposal_id": "memprop_demo0002",
      "memory_type": "style_dna",
      "polarity": "preserve",
      "scope": "skill",
      "prompt_fragment": "Keep the product legible in the final beat.",
      "negative_fragment": null,
      "copy_policy": "reference_only",
      "strength": "soft_preference",
      "id": "mem_demo0002",
      "status": "active"
    },
    "claim": "edit decision"
  },
  {
    "label": "judge_candidate_2",
    "method": "POST",
    "path": "/feedback",
    "request": {
      "workspace_id": "ws_demo0001",
      "project_id": "proj_demo0001",
      "skill_id": "skill_demo0001",
      "candidate_id": "cand_demo0002",
      "prompt_id": "prompt_demo0002",
      "user_text": "Too many tricks competing: rotating bars, a spinning wedge, a leaf shadow, and a negative flip in sixteen seconds. Pick one. The amber and green is also generic set dressing rather than anything you can feel."
    },
    "status_code": 201,
    "response": {
      "workspace_id": "ws_demo0001",
      "user_text": "Too many tricks competing: rotating bars, a spinning wedge, a leaf shadow, and a negative flip in sixteen seconds. Pick one. The amber and green is also generic set dressing rather than anything you can feel.",
      "project_id": "proj_demo0001",
      "skill_id": "skill_demo0001",
      "candidate_id": "cand_demo0002",
      "artifact_id": null,
      "prompt_id": "prompt_demo0002",
      "prompt_batch_id": null,
      "id": "fb_demo0002",
      "analyzed_at": null
    },
    "claim": "one clear natural-language judgment"
  },
  {
    "label": "analyze_judgment_2",
    "method": "POST",
    "path": "/feedback/fb_demo0002/analyze",
    "request": null,
    "status_code": 201,
    "response": [
      {
        "skill_id": "skill_demo0001",
        "content": "Do not stack competing visual tricks in one sixteen-second concept.",
        "feedback_id": "fb_demo0002",
        "project_id": "proj_demo0001",
        "source_candidate_id": "cand_demo0002",
        "source_artifact_id": null,
        "source_prompt_id": "prompt_demo0002",
        "source_prompt_batch_id": "batch_demo0001",
        "source_template_id": "tmpl_demo0001",
        "proposed_action": "avoid",
        "memory_type": "avoid_element",
        "polarity": "avoid",
        "scope": "skill",
        "rationale": "The judgment listed four effects competing inside one film.",
        "confidence": 0.9,
        "id": "memprop_demo0003",
        "status": "pending",
        "draft_content": "Do not stack competing visual tricks in one sixteen-second concept.",
        "was_edited": false,
        "decided_at": null,
        "decision_note": null,
        "teaching_state": "pending"
      },
      {
        "skill_id": "skill_demo0001",
        "content": "Avoid amber and green palettes.",
        "feedback_id": "fb_demo0002",
        "project_id": "proj_demo0001",
        "source_candidate_id": "cand_demo0002",
        "source_artifact_id": null,
        "source_prompt_id": "prompt_demo0002",
        "source_prompt_batch_id": "batch_demo0001",
        "source_template_id": "tmpl_demo0001",
        "proposed_action": "avoid",
        "memory_type": "avoid_element",
        "polarity": "avoid",
        "scope": "skill",
        "rationale": "The judgment described the amber and green as generic set dressing.",
        "confidence": 0.52,
        "id": "memprop_demo0004",
        "status": "pending",
        "draft_content": "Avoid amber and green palettes.",
        "was_edited": false,
        "decided_at": null,
        "decision_note": null,
        "teaching_state": "pending"
      }
    ],
    "claim": "feedback analysis into pending proposals"
  },
  {
    "label": "accept_proposal_no_stacking",
    "method": "POST",
    "path": "/memory/proposals/memprop_demo0003/accept",
    "request": {
      "decision_note": "Exactly the failure mode C2 fell into."
    },
    "status_code": 201,
    "response": {
      "skill_id": "skill_demo0001",
      "content": "Do not stack competing visual tricks in one sixteen-second concept.",
      "project_id": "proj_demo0001",
      "source_feedback_id": "fb_demo0002",
      "source_artifact_id": null,
      "source_candidate_id": "cand_demo0002",
      "source_prompt_id": "prompt_demo0002",
      "source_prompt_batch_id": "batch_demo0001",
      "source_template_id": "tmpl_demo0001",
      "source_proposal_id": "memprop_demo0003",
      "memory_type": "avoid_element",
      "polarity": "avoid",
      "scope": "skill",
      "prompt_fragment": null,
      "negative_fragment": "Do not stack competing visual tricks in one sixteen-second concept.",
      "copy_policy": "reference_only",
      "strength": "soft_preference",
      "id": "mem_demo0003",
      "status": "active"
    },
    "claim": "accept decision"
  },
  {
    "label": "reject_proposal_no_amber_green",
    "method": "POST",
    "path": "/memory/proposals/memprop_demo0004/reject",
    "request": {
      "decision_note": "Too broad -- the palette was never the problem, the stacking was."
    },
    "status_code": 200,
    "response": {
      "skill_id": "skill_demo0001",
      "content": "Avoid amber and green palettes.",
      "feedback_id": "fb_demo0002",
      "project_id": "proj_demo0001",
      "source_candidate_id": "cand_demo0002",
      "source_artifact_id": null,
      "source_prompt_id": "prompt_demo0002",
      "source_prompt_batch_id": "batch_demo0001",
      "source_template_id": "tmpl_demo0001",
      "proposed_action": "avoid",
      "memory_type": "avoid_element",
      "polarity": "avoid",
      "scope": "skill",
      "rationale": "The judgment described the amber and green as generic set dressing.",
      "confidence": 0.52,
      "id": "memprop_demo0004",
      "status": "rejected",
      "draft_content": "Avoid amber and green palettes.",
      "was_edited": false,
      "decided_at": "2026-01-01T00:00:03Z",
      "decision_note": "Too broad -- the palette was never the problem, the stacking was.",
      "teaching_state": "rejected"
    },
    "claim": "reject decision"
  },
  {
    "label": "judge_candidate_3",
    "method": "POST",
    "path": "/feedback",
    "request": {
      "workspace_id": "ws_demo0001",
      "project_id": "proj_demo0001",
      "skill_id": "skill_demo0001",
      "candidate_id": "cand_demo0003",
      "prompt_id": "prompt_demo0003",
      "user_text": "The crawling sunlight is a real transformation and the creased linen is the kind of material detail I want. The problem is the bottle is just one more prop on a busy table -- by the last beat I still cannot see the product."
    },
    "status_code": 201,
    "response": {
      "workspace_id": "ws_demo0001",
      "user_text": "The crawling sunlight is a real transformation and the creased linen is the kind of material detail I want. The problem is the bottle is just one more prop on a busy table -- by the last beat I still cannot see the product.",
      "project_id": "proj_demo0001",
      "skill_id": "skill_demo0001",
      "candidate_id": "cand_demo0003",
      "artifact_id": null,
      "prompt_id": "prompt_demo0003",
      "prompt_batch_id": null,
      "id": "fb_demo0003",
      "analyzed_at": null
    },
    "claim": "one clear natural-language judgment"
  },
  {
    "label": "analyze_judgment_3",
    "method": "POST",
    "path": "/feedback/fb_demo0003/analyze",
    "request": null,
    "status_code": 201,
    "response": [
      {
        "skill_id": "skill_demo0001",
        "content": "Lead with tactile material detail rather than general atmosphere.",
        "feedback_id": "fb_demo0003",
        "project_id": "proj_demo0001",
        "source_candidate_id": "cand_demo0003",
        "source_artifact_id": null,
        "source_prompt_id": "prompt_demo0003",
        "source_prompt_batch_id": "batch_demo0001",
        "source_template_id": "tmpl_demo0001",
        "proposed_action": "preserve",
        "memory_type": "style_dna",
        "polarity": "preserve",
        "scope": "skill",
        "rationale": "The judgment praised the creased linen as the wanted material detail.",
        "confidence": 0.85,
        "id": "memprop_demo0005",
        "status": "pending",
        "draft_content": "Lead with tactile material detail rather than general atmosphere.",
        "was_edited": false,
        "decided_at": null,
        "decision_note": null,
        "teaching_state": "pending"
      },
      {
        "skill_id": "skill_demo0001",
        "content": "Limit each concept to two on-screen props besides the product.",
        "feedback_id": "fb_demo0003",
        "project_id": "proj_demo0001",
        "source_candidate_id": "cand_demo0003",
        "source_artifact_id": null,
        "source_prompt_id": "prompt_demo0003",
        "source_prompt_batch_id": "batch_demo0001",
        "source_template_id": "tmpl_demo0001",
        "proposed_action": "preserve",
        "memory_type": "style_dna",
        "polarity": "preserve",
        "scope": "skill",
        "rationale": "Only loosely implied by the note about a busy table; not stated.",
        "confidence": 0.44,
        "id": "memprop_demo0006",
        "status": "pending",
        "draft_content": "Limit each concept to two on-screen props besides the product.",
        "was_edited": false,
        "decided_at": null,
        "decision_note": null,
        "teaching_state": "pending"
      }
    ],
    "claim": "feedback analysis into pending proposals"
  },
  {
    "label": "accept_proposal_tactile_detail",
    "method": "POST",
    "path": "/memory/proposals/memprop_demo0005/accept",
    "request": {
      "decision_note": "This is the texture the line should sell on."
    },
    "status_code": 201,
    "response": {
      "skill_id": "skill_demo0001",
      "content": "Lead with tactile material detail rather than general atmosphere.",
      "project_id": "proj_demo0001",
      "source_feedback_id": "fb_demo0003",
      "source_artifact_id": null,
      "source_candidate_id": "cand_demo0003",
      "source_prompt_id": "prompt_demo0003",
      "source_prompt_batch_id": "batch_demo0001",
      "source_template_id": "tmpl_demo0001",
      "source_proposal_id": "memprop_demo0005",
      "memory_type": "style_dna",
      "polarity": "preserve",
      "scope": "skill",
      "prompt_fragment": "Lead with tactile material detail rather than general atmosphere.",
      "negative_fragment": null,
      "copy_policy": "reference_only",
      "strength": "soft_preference",
      "id": "mem_demo0004",
      "status": "active"
    },
    "claim": "accept decision"
  },
  {
    "label": "pending_proposal_prop_limit",
    "method": "GET",
    "path": "(no call -- proposal left undecided by design)",
    "request": null,
    "status_code": 200,
    "response": {
      "skill_id": "skill_demo0001",
      "content": "Limit each concept to two on-screen props besides the product.",
      "feedback_id": "fb_demo0003",
      "project_id": "proj_demo0001",
      "source_candidate_id": "cand_demo0003",
      "source_artifact_id": null,
      "source_prompt_id": "prompt_demo0003",
      "source_prompt_batch_id": "batch_demo0001",
      "source_template_id": "tmpl_demo0001",
      "proposed_action": "preserve",
      "memory_type": "style_dna",
      "polarity": "preserve",
      "scope": "skill",
      "rationale": "Only loosely implied by the note about a busy table; not stated.",
      "confidence": 0.44,
      "id": "memprop_demo0006",
      "status": "pending",
      "draft_content": "Limit each concept to two on-screen props besides the product.",
      "was_edited": false,
      "decided_at": null,
      "decision_note": null,
      "teaching_state": "pending"
    },
    "claim": "pending proposals rail before a human decision"
  },
  {
    "label": "generate_next_batch",
    "method": "POST",
    "path": "/skills/skill_demo0001/generate-next",
    "request": {
      "project_id": "proj_demo0001",
      "mode": "explore",
      "diversity_mode": "balanced",
      "brief": "Same launch film, now informed by the guidance accepted in round one.",
      "n": 3
    },
    "status_code": 201,
    "response": {
      "prompt_batch": {
        "skill_id": "skill_demo0001",
        "project_id": "proj_demo0001",
        "template_id": null,
        "mode": "explore",
        "brief": "Same launch film, now informed by the guidance accepted in round one.",
        "diversity_mode": "balanced",
        "n": 3,
        "target_model": "generic",
        "memory_inclusion": "all",
        "selected_memory_ids": [],
        "reference_image": null,
        "id": "batch_demo0002",
        "generation_plan": {
          "provider": "mock",
          "mode": "explore",
          "diversity_mode": "balanced",
          "roles": [
            "aligned",
            "exploratory",
            "variation"
          ],
          "n": 3,
          "uses_accepted_memory": true,
          "template_id": "tmpl_demo0001",
          "template_name": "Default candidate prompt template",
          "meta_template_id": "tmpl_demo0002",
          "meta_template_name": "Default meta-prompt template",
          "target_model": "generic",
          "memory_inclusion": "all",
          "selected_memory_ids": [],
          "reference_image": null,
          "recipe": {
            "target_model": "generic",
            "meta_template_id": "tmpl_demo0002",
            "meta_template_updated_at": "2026-01-01T00:00:00Z",
            "candidate_template_id": "tmpl_demo0001",
            "candidate_template_updated_at": "2026-01-01T00:00:01Z",
            "brief": "Same launch film, now informed by the guidance accepted in round one.",
            "mode": "explore",
            "diversity_mode": "balanced",
            "variable_values": {},
            "reference_image": null
          },
          "memory_influence_trace": {
            "trace_version": 1,
            "attribution_scope": "prompt_batch",
            "attribution_note": "Batch-level trace of active accepted memories available to generate-next. This is not per-token or per-candidate attribution.",
            "active_memory_count": 4,
            "memory_refs": [
              {
                "memory_id": "mem_demo0001",
                "memory_type": "style_dna",
                "polarity": "preserve",
                "scope": "skill",
                "content": "Organize each concept around a single physical transformation that can actually be shot.",
                "prompt_fragment": "Organize each concept around a single physical transformation that can actually be shot.",
                "negative_fragment": null,
                "copy_policy": "reference_only",
                "strength": "soft_preference",
                "status": "active",
                "source_feedback_id": "fb_demo0001",
                "source_artifact_id": null,
                "source_candidate_id": "cand_demo0001",
                "source_prompt_id": "prompt_demo0001",
                "source_prompt_batch_id": "batch_demo0001",
                "source_template_id": "tmpl_demo0001",
                "source_proposal_id": "memprop_demo0001"
              },
              {
                "memory_id": "mem_demo0002",
                "memory_type": "style_dna",
                "polarity": "preserve",
                "scope": "skill",
                "content": "Keep the product legible in the final beat.",
                "prompt_fragment": "Keep the product legible in the final beat.",
                "negative_fragment": null,
                "copy_policy": "reference_only",
                "strength": "soft_preference",
                "status": "active",
                "source_feedback_id": "fb_demo0001",
                "source_artifact_id": null,
                "source_candidate_id": "cand_demo0001",
                "source_prompt_id": "prompt_demo0001",
                "source_prompt_batch_id": "batch_demo0001",
                "source_template_id": "tmpl_demo0001",
                "source_proposal_id": "memprop_demo0002"
              },
              {
                "memory_id": "mem_demo0003",
                "memory_type": "avoid_element",
                "polarity": "avoid",
                "scope": "skill",
                "content": "Do not stack competing visual tricks in one sixteen-second concept.",
                "prompt_fragment": null,
                "negative_fragment": "Do not stack competing visual tricks in one sixteen-second concept.",
                "copy_policy": "reference_only",
                "strength": "soft_preference",
                "status": "active",
                "source_feedback_id": "fb_demo0002",
                "source_artifact_id": null,
                "source_candidate_id": "cand_demo0002",
                "source_prompt_id": "prompt_demo0002",
                "source_prompt_batch_id": "batch_demo0001",
                "source_template_id": "tmpl_demo0001",
                "source_proposal_id": "memprop_demo0003"
              },
              {
                "memory_id": "mem_demo0004",
                "memory_type": "style_dna",
                "polarity": "preserve",
                "scope": "skill",
                "content": "Lead with tactile material detail rather than general atmosphere.",
                "prompt_fragment": "Lead with tactile material detail rather than general atmosphere.",
                "negative_fragment": null,
                "copy_policy": "reference_only",
                "strength": "soft_preference",
                "status": "active",
                "source_feedback_id": "fb_demo0003",
                "source_artifact_id": null,
                "source_candidate_id": "cand_demo0003",
                "source_prompt_id": "prompt_demo0003",
                "source_prompt_batch_id": "batch_demo0001",
                "source_template_id": "tmpl_demo0001",
                "source_proposal_id": "memprop_demo0005"
              }
            ]
          },
          "applied_memory_refs": [
            {
              "memory_id": "mem_demo0001",
              "memory_type": "style_dna",
              "polarity": "preserve",
              "scope": "skill",
              "content": "Organize each concept around a single physical transformation that can actually be shot.",
              "prompt_fragment": "Organize each concept around a single physical transformation that can actually be shot.",
              "negative_fragment": null,
              "copy_policy": "reference_only",
              "strength": "soft_preference",
              "status": "active",
              "source_feedback_id": "fb_demo0001",
              "source_artifact_id": null,
              "source_candidate_id": "cand_demo0001",
              "source_prompt_id": "prompt_demo0001",
              "source_prompt_batch_id": "batch_demo0001",
              "source_template_id": "tmpl_demo0001",
              "source_proposal_id": "memprop_demo0001"
            },
            {
              "memory_id": "mem_demo0002",
              "memory_type": "style_dna",
              "polarity": "preserve",
              "scope": "skill",
              "content": "Keep the product legible in the final beat.",
              "prompt_fragment": "Keep the product legible in the final beat.",
              "negative_fragment": null,
              "copy_policy": "reference_only",
              "strength": "soft_preference",
              "status": "active",
              "source_feedback_id": "fb_demo0001",
              "source_artifact_id": null,
              "source_candidate_id": "cand_demo0001",
              "source_prompt_id": "prompt_demo0001",
              "source_prompt_batch_id": "batch_demo0001",
              "source_template_id": "tmpl_demo0001",
              "source_proposal_id": "memprop_demo0002"
            },
            {
              "memory_id": "mem_demo0003",
              "memory_type": "avoid_element",
              "polarity": "avoid",
              "scope": "skill",
              "content": "Do not stack competing visual tricks in one sixteen-second concept.",
              "prompt_fragment": null,
              "negative_fragment": "Do not stack competing visual tricks in one sixteen-second concept.",
              "copy_policy": "reference_only",
              "strength": "soft_preference",
              "status": "active",
              "source_feedback_id": "fb_demo0002",
              "source_artifact_id": null,
              "source_candidate_id": "cand_demo0002",
              "source_prompt_id": "prompt_demo0002",
              "source_prompt_batch_id": "batch_demo0001",
              "source_template_id": "tmpl_demo0001",
              "source_proposal_id": "memprop_demo0003"
            },
            {
              "memory_id": "mem_demo0004",
              "memory_type": "style_dna",
              "polarity": "preserve",
              "scope": "skill",
              "content": "Lead with tactile material detail rather than general atmosphere.",
              "prompt_fragment": "Lead with tactile material detail rather than general atmosphere.",
              "negative_fragment": null,
              "copy_policy": "reference_only",
              "strength": "soft_preference",
              "status": "active",
              "source_feedback_id": "fb_demo0003",
              "source_artifact_id": null,
              "source_candidate_id": "cand_demo0003",
              "source_prompt_id": "prompt_demo0003",
              "source_prompt_batch_id": "batch_demo0001",
              "source_template_id": "tmpl_demo0001",
              "source_proposal_id": "memprop_demo0005"
            }
          ]
        },
        "what_changed": {
          "summary": "Generated next batch from accepted memory.",
          "used_memory_count": 4,
          "used_memory": [
            {
              "id": "mem_demo0001",
              "content": "Organize each concept around a single physical transformation that can actually be shot.",
              "polarity": "preserve",
              "memory_type": "style_dna",
              "scope": "skill",
              "source_feedback_id": "fb_demo0001",
              "source_artifact_id": null,
              "source_prompt_id": "prompt_demo0001"
            },
            {
              "id": "mem_demo0002",
              "content": "Keep the product legible in the final beat.",
              "polarity": "preserve",
              "memory_type": "style_dna",
              "scope": "skill",
              "source_feedback_id": "fb_demo0001",
              "source_artifact_id": null,
              "source_prompt_id": "prompt_demo0001"
            },
            {
              "id": "mem_demo0003",
              "content": "Do not stack competing visual tricks in one sixteen-second concept.",
              "polarity": "avoid",
              "memory_type": "avoid_element",
              "scope": "skill",
              "source_feedback_id": "fb_demo0002",
              "source_artifact_id": null,
              "source_prompt_id": "prompt_demo0002"
            },
            {
              "id": "mem_demo0004",
              "content": "Lead with tactile material detail rather than general atmosphere.",
              "polarity": "preserve",
              "memory_type": "style_dna",
              "scope": "skill",
              "source_feedback_id": "fb_demo0003",
              "source_artifact_id": null,
              "source_prompt_id": "prompt_demo0003"
            }
          ],
          "preserve": [
            "Organize each concept around a single physical transformation that can actually be shot.",
            "Keep the product legible in the final beat.",
            "Lead with tactile material detail rather than general atmosphere."
          ],
          "avoid": [
            "Do not stack competing visual tricks in one sixteen-second concept."
          ],
          "extract": [],
          "frontier": [],
          "used_project_context": true,
          "used_skill_context": true,
          "memory_inclusion": "all"
        },
        "memory_fingerprint": "fp_demo0003",
        "recipe_fingerprint": "fp_demo0004",
        "archived_at": null,
        "created_at": "2026-01-01T00:00:04Z"
      },
      "prompts": [
        {
          "skill_id": "skill_demo0001",
          "project_id": "proj_demo0001",
          "prompt_batch_id": "batch_demo0002",
          "template_id": "tmpl_demo0001",
          "text": "One unbroken macro: a single bead of condensation swells on the shoulder of the bottle, releases, and tracks straight down through the label, leaving a clear stripe across frosted glass. The pull-back stops with the full bottle centred and the label sharp.",
          "structured_fields": {
            "role": "aligned",
            "index": 1,
            "brief": "Same launch film, now informed by the guidance accepted in round one.",
            "provider": "mock",
            "provider_model": "mock-prompt-generator",
            "target_model": "generic",
            "used_memory_ids": [
              "mem_demo0001",
              "mem_demo0002",
              "mem_demo0003",
              "mem_demo0004"
            ],
            "used_memory": [
              {
                "id": "mem_demo0001",
                "content": "Organize each concept around a single physical transformation that can actually be shot.",
                "polarity": "preserve",
                "memory_type": "style_dna",
                "scope": "skill",
                "source_feedback_id": "fb_demo0001",
                "source_artifact_id": null,
                "source_prompt_id": "prompt_demo0001"
              },
              {
                "id": "mem_demo0002",
                "content": "Keep the product legible in the final beat.",
                "polarity": "preserve",
                "memory_type": "style_dna",
                "scope": "skill",
                "source_feedback_id": "fb_demo0001",
                "source_artifact_id": null,
                "source_prompt_id": "prompt_demo0001"
              },
              {
                "id": "mem_demo0003",
                "content": "Do not stack competing visual tricks in one sixteen-second concept.",
                "polarity": "avoid",
                "memory_type": "avoid_element",
                "scope": "skill",
                "source_feedback_id": "fb_demo0002",
                "source_artifact_id": null,
                "source_prompt_id": "prompt_demo0002"
              },
              {
                "id": "mem_demo0004",
                "content": "Lead with tactile material detail rather than general atmosphere.",
                "polarity": "preserve",
                "memory_type": "style_dna",
                "scope": "skill",
                "source_feedback_id": "fb_demo0003",
                "source_artifact_id": null,
                "source_prompt_id": "prompt_demo0003"
              }
            ],
            "reference_image": null
          },
          "parent_prompt_id": null,
          "id": "prompt_demo0004",
          "version_number": 1
        },
        {
          "skill_id": "skill_demo0001",
          "project_id": "proj_demo0001",
          "prompt_batch_id": "batch_demo0002",
          "template_id": "tmpl_demo0001",
          "text": "A thumb presses a strip of orange peel until the oil bursts and atomises through a hard side light. The mist settles across the cap and shoulders of the bottle standing beside it; the final beat holds on the bottle, dressed in a fine sheen.",
          "structured_fields": {
            "role": "exploratory",
            "index": 2,
            "brief": "Same launch film, now informed by the guidance accepted in round one.",
            "provider": "mock",
            "provider_model": "mock-prompt-generator",
            "target_model": "generic",
            "used_memory_ids": [
              "mem_demo0001",
              "mem_demo0002",
              "mem_demo0003",
              "mem_demo0004"
            ],
            "used_memory": [
              {
                "id": "mem_demo0001",
                "content": "Organize each concept around a single physical transformation that can actually be shot.",
                "polarity": "preserve",
                "memory_type": "style_dna",
                "scope": "skill",
                "source_feedback_id": "fb_demo0001",
                "source_artifact_id": null,
                "source_prompt_id": "prompt_demo0001"
              },
              {
                "id": "mem_demo0002",
                "content": "Keep the product legible in the final beat.",
                "polarity": "preserve",
                "memory_type": "style_dna",
                "scope": "skill",
                "source_feedback_id": "fb_demo0001",
                "source_artifact_id": null,
                "source_prompt_id": "prompt_demo0001"
              },
              {
                "id": "mem_demo0003",
                "content": "Do not stack competing visual tricks in one sixteen-second concept.",
                "polarity": "avoid",
                "memory_type": "avoid_element",
                "scope": "skill",
                "source_feedback_id": "fb_demo0002",
                "source_artifact_id": null,
                "source_prompt_id": "prompt_demo0002"
              },
              {
                "id": "mem_demo0004",
                "content": "Lead with tactile material detail rather than general atmosphere.",
                "polarity": "preserve",
                "memory_type": "style_dna",
                "scope": "skill",
                "source_feedback_id": "fb_demo0003",
                "source_artifact_id": null,
                "source_prompt_id": "prompt_demo0003"
              }
            ],
            "reference_image": null
          },
          "parent_prompt_id": null,
          "id": "prompt_demo0005",
          "version_number": 1
        },
        {
          "skill_id": "skill_demo0001",
          "project_id": "proj_demo0001",
          "prompt_batch_id": "batch_demo0002",
          "template_id": "tmpl_demo0001",
          "text": "A drop of oil lands on still water and blooms into a slow citrus-coloured ring. The ripple reaches the base of the bottle standing in the tray, and the surface settles to a mirror with the bottle and its reflection held square in frame.",
          "structured_fields": {
            "role": "variation",
            "index": 3,
            "brief": "Same launch film, now informed by the guidance accepted in round one.",
            "provider": "mock",
            "provider_model": "mock-prompt-generator",
            "target_model": "generic",
            "used_memory_ids": [
              "mem_demo0001",
              "mem_demo0002",
              "mem_demo0003",
              "mem_demo0004"
            ],
            "used_memory": [
              {
                "id": "mem_demo0001",
                "content": "Organize each concept around a single physical transformation that can actually be shot.",
                "polarity": "preserve",
                "memory_type": "style_dna",
                "scope": "skill",
                "source_feedback_id": "fb_demo0001",
                "source_artifact_id": null,
                "source_prompt_id": "prompt_demo0001"
              },
              {
                "id": "mem_demo0002",
                "content": "Keep the product legible in the final beat.",
                "polarity": "preserve",
                "memory_type": "style_dna",
                "scope": "skill",
                "source_feedback_id": "fb_demo0001",
                "source_artifact_id": null,
                "source_prompt_id": "prompt_demo0001"
              },
              {
                "id": "mem_demo0003",
                "content": "Do not stack competing visual tricks in one sixteen-second concept.",
                "polarity": "avoid",
                "memory_type": "avoid_element",
                "scope": "skill",
                "source_feedback_id": "fb_demo0002",
                "source_artifact_id": null,
                "source_prompt_id": "prompt_demo0002"
              },
              {
                "id": "mem_demo0004",
                "content": "Lead with tactile material detail rather than general atmosphere.",
                "polarity": "preserve",
                "memory_type": "style_dna",
                "scope": "skill",
                "source_feedback_id": "fb_demo0003",
                "source_artifact_id": null,
                "source_prompt_id": "prompt_demo0003"
              }
            ],
            "reference_image": null
          },
          "parent_prompt_id": null,
          "id": "prompt_demo0006",
          "version_number": 1
        }
      ],
      "candidates": [
        {
          "workspace_id": "ws_demo0001",
          "project_id": "proj_demo0001",
          "prompt_batch_id": "batch_demo0002",
          "prompt_id": "prompt_demo0004",
          "artifact_id": null,
          "id": "cand_demo0004",
          "status": "prompt_generated",
          "archived_at": null
        },
        {
          "workspace_id": "ws_demo0001",
          "project_id": "proj_demo0001",
          "prompt_batch_id": "batch_demo0002",
          "prompt_id": "prompt_demo0005",
          "artifact_id": null,
          "id": "cand_demo0005",
          "status": "prompt_generated",
          "archived_at": null
        },
        {
          "workspace_id": "ws_demo0001",
          "project_id": "proj_demo0001",
          "prompt_batch_id": "batch_demo0002",
          "prompt_id": "prompt_demo0006",
          "artifact_id": null,
          "id": "cand_demo0006",
          "status": "prompt_generated",
          "archived_at": null
        }
      ],
      "batch_action": "created"
    },
    "claim": "a subsequent batch conditioned on accepted memory"
  },
  {
    "label": "memory_ledger",
    "method": "GET",
    "path": "/skills/skill_demo0001/memory-ledger",
    "request": null,
    "status_code": 200,
    "response": {
      "skill_id": "skill_demo0001",
      "skill": {
        "kind": "skill",
        "id": "skill_demo0001",
        "fields": {
          "id": "skill_demo0001",
          "workspace_id": "ws_demo0001",
          "name": "Short Product Films",
          "description": "Concept prompts for short launch films for a citrus fragrance.",
          "created_at": "2026-01-01T00:00:05Z"
        }
      },
      "summary": {
        "accepted_memory_count": 4,
        "proposal_count": 6,
        "resolved_node_count": 54
      },
      "accepted_memory": [
        {
          "memory": {
            "kind": "memory",
            "id": "mem_demo0004",
            "fields": {
              "id": "mem_demo0004",
              "skill_id": "skill_demo0001",
              "project_id": "proj_demo0001",
              "source_feedback_id": "fb_demo0003",
              "source_artifact_id": null,
              "source_candidate_id": "cand_demo0003",
              "source_prompt_id": "prompt_demo0003",
              "source_prompt_batch_id": "batch_demo0001",
              "source_template_id": "tmpl_demo0001",
              "source_proposal_id": "memprop_demo0005",
              "memory_type": "style_dna",
              "polarity": "preserve",
              "scope": "skill",
              "content": "Lead with tactile material detail rather than general atmosphere.",
              "prompt_fragment": "Lead with tactile material detail rather than general atmosphere.",
              "negative_fragment": null,
              "copy_policy": "reference_only",
              "strength": "soft_preference",
              "status": "active",
              "created_at": "2026-01-01T00:00:06Z"
            }
          },
          "proposal": null,
          "source_ids": {
            "feedback_id": "fb_demo0003",
            "proposal_id": "memprop_demo0005",
            "candidate_id": "cand_demo0003",
            "artifact_id": null,
            "prompt_id": "prompt_demo0003",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "resolved": {
            "proposal": {
              "kind": "proposal",
              "id": "memprop_demo0005",
              "fields": {
                "id": "memprop_demo0005",
                "feedback_id": "fb_demo0003",
                "skill_id": "skill_demo0001",
                "project_id": "proj_demo0001",
                "source_candidate_id": "cand_demo0003",
                "source_artifact_id": null,
                "source_prompt_id": "prompt_demo0003",
                "source_prompt_batch_id": "batch_demo0001",
                "source_template_id": "tmpl_demo0001",
                "proposed_action": "preserve",
                "memory_type": "style_dna",
                "polarity": "preserve",
                "scope": "skill",
                "content": "Lead with tactile material detail rather than general atmosphere.",
                "rationale": "The judgment praised the creased linen as the wanted material detail.",
                "confidence": "0.85",
                "status": "accepted",
                "created_at": "2026-01-01T00:00:07Z"
              }
            },
            "feedback": {
              "kind": "feedback",
              "id": "fb_demo0003",
              "fields": {
                "id": "fb_demo0003",
                "workspace_id": "ws_demo0001",
                "project_id": "proj_demo0001",
                "skill_id": "skill_demo0001",
                "candidate_id": "cand_demo0003",
                "artifact_id": null,
                "prompt_id": "prompt_demo0003",
                "user_text": "The crawling sunlight is a real transformation and the creased linen is the kind of material detail I want. The problem is the bottle is just one more prop on a busy table -- by the last beat I still cannot see the product.",
                "created_at": "2026-01-01T00:00:08Z"
              }
            },
            "artifact": null,
            "candidate": {
              "kind": "candidate",
              "id": "cand_demo0003",
              "fields": {
                "id": "cand_demo0003",
                "workspace_id": "ws_demo0001",
                "project_id": "proj_demo0001",
                "prompt_batch_id": "batch_demo0001",
                "prompt_id": "prompt_demo0003",
                "artifact_id": null,
                "status": "feedback_added",
                "created_at": "2026-01-01T00:00:09Z"
              }
            },
            "prompt": {
              "kind": "prompt",
              "id": "prompt_demo0003",
              "fields": {
                "id": "prompt_demo0003",
                "skill_id": "skill_demo0001",
                "project_id": "proj_demo0001",
                "prompt_batch_id": "batch_demo0001",
                "template_id": "tmpl_demo0001",
                "text": "A cleared dinner table after guests have gone: linen creased, two glasses, a bowl of clementines. Over sixteen seconds the low sun crawls across the cloth, the peel curls tighten, and the room warms from grey to gold.",
                "structured_fields_json": "{\"role\": \"variation\", \"index\": 3, \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\", \"provider\": \"mock\", \"provider_model\": \"mock-prompt-generator\", \"target_model\": \"generic\", \"used_memory_ids\": [], \"used_memory\": [], \"reference_image\": null}",
                "version_number": 1,
                "parent_prompt_id": null,
                "created_at": "2026-01-01T00:00:10Z"
              }
            },
            "prompt_batch": {
              "kind": "prompt_batch",
              "id": "batch_demo0001",
              "fields": {
                "id": "batch_demo0001",
                "skill_id": "skill_demo0001",
                "project_id": "proj_demo0001",
                "brief": "Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.",
                "mode": "explore",
                "diversity_mode": "balanced",
                "generation_plan_json": "{\"provider\": \"mock\", \"mode\": \"explore\", \"diversity_mode\": \"balanced\", \"roles\": [\"aligned\", \"exploratory\", \"variation\"], \"n\": 3, \"uses_accepted_memory\": false, \"template_id\": \"tmpl_demo0001\", \"template_name\": \"Default candidate prompt template\", \"meta_template_id\": \"tmpl_demo0002\", \"meta_template_name\": \"Default meta-prompt template\", \"target_model\": \"generic\", \"memory_inclusion\": \"all\", \"selected_memory_ids\": [], \"reference_image\": null, \"recipe\": {\"target_model\": \"generic\", \"meta_template_id\": \"tmpl_demo0002\", \"meta_template_updated_at\": \"2026-01-01T00:00:00Z\", \"candidate_template_id\": \"tmpl_demo0001\", \"candidate_template_updated_at\": \"2026-01-01T00:00:01Z\", \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\", \"mode\": \"explore\", \"diversity_mode\": \"balanced\", \"variable_values\": {}, \"reference_image\": null}, \"memory_influence_trace\": {\"trace_version\": 1, \"attribution_scope\": \"prompt_batch\", \"attribution_note\": \"Batch-level trace of active accepted memories available to generate-next. This is not per-token or per-candidate attribution.\", \"active_memory_count\": 0, \"memory_refs\": []}, \"applied_memory_refs\": []}",
                "created_at": "2026-01-01T00:00:11Z"
              }
            },
            "template": {
              "kind": "template",
              "id": "tmpl_demo0001",
              "fields": {
                "id": "tmpl_demo0001",
                "skill_id": "skill_demo0001",
                "name": "Default candidate prompt template",
                "prompt_type": "candidate_generation",
                "model_target": "generic",
                "description": "System-created default candidate prompt template.",
                "template_text": "A single self-contained prompt for {TARGET_MODEL}.\n\nIt must:\n- commit to one concrete subject and one clear point of view\n- make the style constraints explicit\n- name what to avoid (negative constraints)",
                "variables_json": "[\"TARGET_MODEL\"]",
                "fields_json": "{}",
                "created_at": "2026-01-01T00:00:12Z"
              }
            }
          }
        },
        {
          "memory": {
            "kind": "memory",
            "id": "mem_demo0003",
            "fields": {
              "id": "mem_demo0003",
              "skill_id": "skill_demo0001",
              "project_id": "proj_demo0001",
              "source_feedback_id": "fb_demo0002",
              "source_artifact_id": null,
              "source_candidate_id": "cand_demo0002",
              "source_prompt_id": "prompt_demo0002",
              "source_prompt_batch_id": "batch_demo0001",
              "source_template_id": "tmpl_demo0001",
              "source_proposal_id": "memprop_demo0003",
              "memory_type": "avoid_element",
              "polarity": "avoid",
              "scope": "skill",
              "content": "Do not stack competing visual tricks in one sixteen-second concept.",
              "prompt_fragment": null,
              "negative_fragment": "Do not stack competing visual tricks in one sixteen-second concept.",
              "copy_policy": "reference_only",
              "strength": "soft_preference",
              "status": "active",
              "created_at": "2026-01-01T00:00:13Z"
            }
          },
          "proposal": null,
          "source_ids": {
            "feedback_id": "fb_demo0002",
            "proposal_id": "memprop_demo0003",
            "candidate_id": "cand_demo0002",
            "artifact_id": null,
            "prompt_id": "prompt_demo0002",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "resolved": {
            "proposal": {
              "kind": "proposal",
              "id": "memprop_demo0003",
              "fields": {
                "id": "memprop_demo0003",
                "feedback_id": "fb_demo0002",
                "skill_id": "skill_demo0001",
                "project_id": "proj_demo0001",
                "source_candidate_id": "cand_demo0002",
                "source_artifact_id": null,
                "source_prompt_id": "prompt_demo0002",
                "source_prompt_batch_id": "batch_demo0001",
                "source_template_id": "tmpl_demo0001",
                "proposed_action": "avoid",
                "memory_type": "avoid_element",
                "polarity": "avoid",
                "scope": "skill",
                "content": "Do not stack competing visual tricks in one sixteen-second concept.",
                "rationale": "The judgment listed four effects competing inside one film.",
                "confidence": "0.9",
                "status": "accepted",
                "created_at": "2026-01-01T00:00:14Z"
              }
            },
            "feedback": {
              "kind": "feedback",
              "id": "fb_demo0002",
              "fields": {
                "id": "fb_demo0002",
                "workspace_id": "ws_demo0001",
                "project_id": "proj_demo0001",
                "skill_id": "skill_demo0001",
                "candidate_id": "cand_demo0002",
                "artifact_id": null,
                "prompt_id": "prompt_demo0002",
                "user_text": "Too many tricks competing: rotating bars, a spinning wedge, a leaf shadow, and a negative flip in sixteen seconds. Pick one. The amber and green is also generic set dressing rather than anything you can feel.",
                "created_at": "2026-01-01T00:00:15Z"
              }
            },
            "artifact": null,
            "candidate": {
              "kind": "candidate",
              "id": "cand_demo0002",
              "fields": {
                "id": "cand_demo0002",
                "workspace_id": "ws_demo0001",
                "project_id": "proj_demo0001",
                "prompt_batch_id": "batch_demo0001",
                "prompt_id": "prompt_demo0002",
                "artifact_id": null,
                "status": "feedback_added",
                "created_at": "2026-01-01T00:00:16Z"
              }
            },
            "prompt": {
              "kind": "prompt",
              "id": "prompt_demo0002",
              "fields": {
                "id": "prompt_demo0002",
                "skill_id": "skill_demo0001",
                "project_id": "proj_demo0001",
                "prompt_batch_id": "batch_demo0001",
                "template_id": "tmpl_demo0001",
                "text": "Hard sunlight through a slatted blind rakes across a seamless backdrop in amber and deep green. Bars of light rotate, a wedge of grapefruit spins, the shadow of a leaf sweeps past, and the palette flips to negative on the final beat.",
                "structured_fields_json": "{\"role\": \"exploratory\", \"index\": 2, \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\", \"provider\": \"mock\", \"provider_model\": \"mock-prompt-generator\", \"target_model\": \"generic\", \"used_memory_ids\": [], \"used_memory\": [], \"reference_image\": null}",
                "version_number": 1,
                "parent_prompt_id": null,
                "created_at": "2026-01-01T00:00:17Z"
              }
            },
            "prompt_batch": {
              "kind": "prompt_batch",
              "id": "batch_demo0001",
              "fields": {
                "id": "batch_demo0001",
                "skill_id": "skill_demo0001",
                "project_id": "proj_demo0001",
                "brief": "Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.",
                "mode": "explore",
                "diversity_mode": "balanced",
                "generation_plan_json": "{\"provider\": \"mock\", \"mode\": \"explore\", \"diversity_mode\": \"balanced\", \"roles\": [\"aligned\", \"exploratory\", \"variation\"], \"n\": 3, \"uses_accepted_memory\": false, \"template_id\": \"tmpl_demo0001\", \"template_name\": \"Default candidate prompt template\", \"meta_template_id\": \"tmpl_demo0002\", \"meta_template_name\": \"Default meta-prompt template\", \"target_model\": \"generic\", \"memory_inclusion\": \"all\", \"selected_memory_ids\": [], \"reference_image\": null, \"recipe\": {\"target_model\": \"generic\", \"meta_template_id\": \"tmpl_demo0002\", \"meta_template_updated_at\": \"2026-01-01T00:00:00Z\", \"candidate_template_id\": \"tmpl_demo0001\", \"candidate_template_updated_at\": \"2026-01-01T00:00:01Z\", \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\", \"mode\": \"explore\", \"diversity_mode\": \"balanced\", \"variable_values\": {}, \"reference_image\": null}, \"memory_influence_trace\": {\"trace_version\": 1, \"attribution_scope\": \"prompt_batch\", \"attribution_note\": \"Batch-level trace of active accepted memories available to generate-next. This is not per-token or per-candidate attribution.\", \"active_memory_count\": 0, \"memory_refs\": []}, \"applied_memory_refs\": []}",
                "created_at": "2026-01-01T00:00:11Z"
              }
            },
            "template": {
              "kind": "template",
              "id": "tmpl_demo0001",
              "fields": {
                "id": "tmpl_demo0001",
                "skill_id": "skill_demo0001",
                "name": "Default candidate prompt template",
                "prompt_type": "candidate_generation",
                "model_target": "generic",
                "description": "System-created default candidate prompt template.",
                "template_text": "A single self-contained prompt for {TARGET_MODEL}.\n\nIt must:\n- commit to one concrete subject and one clear point of view\n- make the style constraints explicit\n- name what to avoid (negative constraints)",
                "variables_json": "[\"TARGET_MODEL\"]",
                "fields_json": "{}",
                "created_at": "2026-01-01T00:00:12Z"
              }
            }
          }
        },
        {
          "memory": {
            "kind": "memory",
            "id": "mem_demo0002",
            "fields": {
              "id": "mem_demo0002",
              "skill_id": "skill_demo0001",
              "project_id": "proj_demo0001",
              "source_feedback_id": "fb_demo0001",
              "source_artifact_id": null,
              "source_candidate_id": "cand_demo0001",
              "source_prompt_id": "prompt_demo0001",
              "source_prompt_batch_id": "batch_demo0001",
              "source_template_id": "tmpl_demo0001",
              "source_proposal_id": "memprop_demo0002",
              "memory_type": "style_dna",
              "polarity": "preserve",
              "scope": "skill",
              "content": "Keep the product legible in the final beat.",
              "prompt_fragment": "Keep the product legible in the final beat.",
              "negative_fragment": null,
              "copy_policy": "reference_only",
              "strength": "soft_preference",
              "status": "active",
              "created_at": "2026-01-01T00:00:18Z"
            }
          },
          "proposal": null,
          "source_ids": {
            "feedback_id": "fb_demo0001",
            "proposal_id": "memprop_demo0002",
            "candidate_id": "cand_demo0001",
            "artifact_id": null,
            "prompt_id": "prompt_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "resolved": {
            "proposal": {
              "kind": "proposal",
              "id": "memprop_demo0002",
              "fields": {
                "id": "memprop_demo0002",
                "feedback_id": "fb_demo0001",
                "skill_id": "skill_demo0001",
                "project_id": "proj_demo0001",
                "source_candidate_id": "cand_demo0001",
                "source_artifact_id": null,
                "source_prompt_id": "prompt_demo0001",
                "source_prompt_batch_id": "batch_demo0001",
                "source_template_id": "tmpl_demo0001",
                "proposed_action": "preserve",
                "memory_type": "style_dna",
                "polarity": "preserve",
                "scope": "skill",
                "content": "Keep the product legible in the final beat.",
                "rationale": "The judgment asked to end on the bottle after the transformation.",
                "confidence": "0.74",
                "status": "accepted",
                "created_at": "2026-01-01T00:00:19Z"
              }
            },
            "feedback": {
              "kind": "feedback",
              "id": "fb_demo0001",
              "fields": {
                "id": "fb_demo0001",
                "workspace_id": "ws_demo0001",
                "project_id": "proj_demo0001",
                "skill_id": "skill_demo0001",
                "candidate_id": "cand_demo0001",
                "artifact_id": null,
                "prompt_id": "prompt_demo0001",
                "user_text": "The condensation run is the whole idea -- one physical change I can actually shoot, and the beading reads expensive. But the bottle is never legible; I get texture and no product. Keep the transformation, end on the bottle.",
                "created_at": "2026-01-01T00:00:20Z"
              }
            },
            "artifact": null,
            "candidate": {
              "kind": "candidate",
              "id": "cand_demo0001",
              "fields": {
                "id": "cand_demo0001",
                "workspace_id": "ws_demo0001",
                "project_id": "proj_demo0001",
                "prompt_batch_id": "batch_demo0001",
                "prompt_id": "prompt_demo0001",
                "artifact_id": null,
                "status": "feedback_added",
                "created_at": "2026-01-01T00:00:21Z"
              }
            },
            "prompt": {
              "kind": "prompt",
              "id": "prompt_demo0001",
              "fields": {
                "id": "prompt_demo0001",
                "skill_id": "skill_demo0001",
                "project_id": "proj_demo0001",
                "prompt_batch_id": "batch_demo0001",
                "template_id": "tmpl_demo0001",
                "text": "Macro on a chilled bottle: condensation beads gather, merge, and run, dragging a clean line down the frosted glass. A thumb of orange peel flexes just off-axis and throws a fine mist across the light. Shallow depth, slow push, cold blue-green key.",
                "structured_fields_json": "{\"role\": \"aligned\", \"index\": 1, \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\", \"provider\": \"mock\", \"provider_model\": \"mock-prompt-generator\", \"target_model\": \"generic\", \"used_memory_ids\": [], \"used_memory\": [], \"reference_image\": null}",
                "version_number": 1,
                "parent_prompt_id": null,
                "created_at": "2026-01-01T00:00:22Z"
              }
            },
            "prompt_batch": {
              "kind": "prompt_batch",
              "id": "batch_demo0001",
              "fields": {
                "id": "batch_demo0001",
                "skill_id": "skill_demo0001",
                "project_id": "proj_demo0001",
                "brief": "Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.",
                "mode": "explore",
                "diversity_mode": "balanced",
                "generation_plan_json": "{\"provider\": \"mock\", \"mode\": \"explore\", \"diversity_mode\": \"balanced\", \"roles\": [\"aligned\", \"exploratory\", \"variation\"], \"n\": 3, \"uses_accepted_memory\": false, \"template_id\": \"tmpl_demo0001\", \"template_name\": \"Default candidate prompt template\", \"meta_template_id\": \"tmpl_demo0002\", \"meta_template_name\": \"Default meta-prompt template\", \"target_model\": \"generic\", \"memory_inclusion\": \"all\", \"selected_memory_ids\": [], \"reference_image\": null, \"recipe\": {\"target_model\": \"generic\", \"meta_template_id\": \"tmpl_demo0002\", \"meta_template_updated_at\": \"2026-01-01T00:00:00Z\", \"candidate_template_id\": \"tmpl_demo0001\", \"candidate_template_updated_at\": \"2026-01-01T00:00:01Z\", \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\", \"mode\": \"explore\", \"diversity_mode\": \"balanced\", \"variable_values\": {}, \"reference_image\": null}, \"memory_influence_trace\": {\"trace_version\": 1, \"attribution_scope\": \"prompt_batch\", \"attribution_note\": \"Batch-level trace of active accepted memories available to generate-next. This is not per-token or per-candidate attribution.\", \"active_memory_count\": 0, \"memory_refs\": []}, \"applied_memory_refs\": []}",
                "created_at": "2026-01-01T00:00:11Z"
              }
            },
            "template": {
              "kind": "template",
              "id": "tmpl_demo0001",
              "fields": {
                "id": "tmpl_demo0001",
                "skill_id": "skill_demo0001",
                "name": "Default candidate prompt template",
                "prompt_type": "candidate_generation",
                "model_target": "generic",
                "description": "System-created default candidate prompt template.",
                "template_text": "A single self-contained prompt for {TARGET_MODEL}.\n\nIt must:\n- commit to one concrete subject and one clear point of view\n- make the style constraints explicit\n- name what to avoid (negative constraints)",
                "variables_json": "[\"TARGET_MODEL\"]",
                "fields_json": "{}",
                "created_at": "2026-01-01T00:00:12Z"
              }
            }
          }
        },
        {
          "memory": {
            "kind": "memory",
            "id": "mem_demo0001",
            "fields": {
              "id": "mem_demo0001",
              "skill_id": "skill_demo0001",
              "project_id": "proj_demo0001",
              "source_feedback_id": "fb_demo0001",
              "source_artifact_id": null,
              "source_candidate_id": "cand_demo0001",
              "source_prompt_id": "prompt_demo0001",
              "source_prompt_batch_id": "batch_demo0001",
              "source_template_id": "tmpl_demo0001",
              "source_proposal_id": "memprop_demo0001",
              "memory_type": "style_dna",
              "polarity": "preserve",
              "scope": "skill",
              "content": "Organize each concept around a single physical transformation that can actually be shot.",
              "prompt_fragment": "Organize each concept around a single physical transformation that can actually be shot.",
              "negative_fragment": null,
              "copy_policy": "reference_only",
              "strength": "soft_preference",
              "status": "active",
              "created_at": "2026-01-01T00:00:23Z"
            }
          },
          "proposal": null,
          "source_ids": {
            "feedback_id": "fb_demo0001",
            "proposal_id": "memprop_demo0001",
            "candidate_id": "cand_demo0001",
            "artifact_id": null,
            "prompt_id": "prompt_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "resolved": {
            "proposal": {
              "kind": "proposal",
              "id": "memprop_demo0001",
              "fields": {
                "id": "memprop_demo0001",
                "feedback_id": "fb_demo0001",
                "skill_id": "skill_demo0001",
                "project_id": "proj_demo0001",
                "source_candidate_id": "cand_demo0001",
                "source_artifact_id": null,
                "source_prompt_id": "prompt_demo0001",
                "source_prompt_batch_id": "batch_demo0001",
                "source_template_id": "tmpl_demo0001",
                "proposed_action": "preserve",
                "memory_type": "style_dna",
                "polarity": "preserve",
                "scope": "skill",
                "content": "Organize each concept around a single physical transformation that can actually be shot.",
                "rationale": "The judgment called the condensation run 'the whole idea'.",
                "confidence": "0.89",
                "status": "accepted",
                "created_at": "2026-01-01T00:00:24Z"
              }
            },
            "feedback": {
              "kind": "feedback",
              "id": "fb_demo0001",
              "fields": {
                "id": "fb_demo0001",
                "workspace_id": "ws_demo0001",
                "project_id": "proj_demo0001",
                "skill_id": "skill_demo0001",
                "candidate_id": "cand_demo0001",
                "artifact_id": null,
                "prompt_id": "prompt_demo0001",
                "user_text": "The condensation run is the whole idea -- one physical change I can actually shoot, and the beading reads expensive. But the bottle is never legible; I get texture and no product. Keep the transformation, end on the bottle.",
                "created_at": "2026-01-01T00:00:20Z"
              }
            },
            "artifact": null,
            "candidate": {
              "kind": "candidate",
              "id": "cand_demo0001",
              "fields": {
                "id": "cand_demo0001",
                "workspace_id": "ws_demo0001",
                "project_id": "proj_demo0001",
                "prompt_batch_id": "batch_demo0001",
                "prompt_id": "prompt_demo0001",
                "artifact_id": null,
                "status": "feedback_added",
                "created_at": "2026-01-01T00:00:21Z"
              }
            },
            "prompt": {
              "kind": "prompt",
              "id": "prompt_demo0001",
              "fields": {
                "id": "prompt_demo0001",
                "skill_id": "skill_demo0001",
                "project_id": "proj_demo0001",
                "prompt_batch_id": "batch_demo0001",
                "template_id": "tmpl_demo0001",
                "text": "Macro on a chilled bottle: condensation beads gather, merge, and run, dragging a clean line down the frosted glass. A thumb of orange peel flexes just off-axis and throws a fine mist across the light. Shallow depth, slow push, cold blue-green key.",
                "structured_fields_json": "{\"role\": \"aligned\", \"index\": 1, \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\", \"provider\": \"mock\", \"provider_model\": \"mock-prompt-generator\", \"target_model\": \"generic\", \"used_memory_ids\": [], \"used_memory\": [], \"reference_image\": null}",
                "version_number": 1,
                "parent_prompt_id": null,
                "created_at": "2026-01-01T00:00:22Z"
              }
            },
            "prompt_batch": {
              "kind": "prompt_batch",
              "id": "batch_demo0001",
              "fields": {
                "id": "batch_demo0001",
                "skill_id": "skill_demo0001",
                "project_id": "proj_demo0001",
                "brief": "Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.",
                "mode": "explore",
                "diversity_mode": "balanced",
                "generation_plan_json": "{\"provider\": \"mock\", \"mode\": \"explore\", \"diversity_mode\": \"balanced\", \"roles\": [\"aligned\", \"exploratory\", \"variation\"], \"n\": 3, \"uses_accepted_memory\": false, \"template_id\": \"tmpl_demo0001\", \"template_name\": \"Default candidate prompt template\", \"meta_template_id\": \"tmpl_demo0002\", \"meta_template_name\": \"Default meta-prompt template\", \"target_model\": \"generic\", \"memory_inclusion\": \"all\", \"selected_memory_ids\": [], \"reference_image\": null, \"recipe\": {\"target_model\": \"generic\", \"meta_template_id\": \"tmpl_demo0002\", \"meta_template_updated_at\": \"2026-01-01T00:00:00Z\", \"candidate_template_id\": \"tmpl_demo0001\", \"candidate_template_updated_at\": \"2026-01-01T00:00:01Z\", \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\", \"mode\": \"explore\", \"diversity_mode\": \"balanced\", \"variable_values\": {}, \"reference_image\": null}, \"memory_influence_trace\": {\"trace_version\": 1, \"attribution_scope\": \"prompt_batch\", \"attribution_note\": \"Batch-level trace of active accepted memories available to generate-next. This is not per-token or per-candidate attribution.\", \"active_memory_count\": 0, \"memory_refs\": []}, \"applied_memory_refs\": []}",
                "created_at": "2026-01-01T00:00:11Z"
              }
            },
            "template": {
              "kind": "template",
              "id": "tmpl_demo0001",
              "fields": {
                "id": "tmpl_demo0001",
                "skill_id": "skill_demo0001",
                "name": "Default candidate prompt template",
                "prompt_type": "candidate_generation",
                "model_target": "generic",
                "description": "System-created default candidate prompt template.",
                "template_text": "A single self-contained prompt for {TARGET_MODEL}.\n\nIt must:\n- commit to one concrete subject and one clear point of view\n- make the style constraints explicit\n- name what to avoid (negative constraints)",
                "variables_json": "[\"TARGET_MODEL\"]",
                "fields_json": "{}",
                "created_at": "2026-01-01T00:00:12Z"
              }
            }
          }
        }
      ],
      "proposals": [
        {
          "memory": null,
          "proposal": {
            "kind": "proposal",
            "id": "memprop_demo0006",
            "fields": {
              "id": "memprop_demo0006",
              "feedback_id": "fb_demo0003",
              "skill_id": "skill_demo0001",
              "project_id": "proj_demo0001",
              "source_candidate_id": "cand_demo0003",
              "source_artifact_id": null,
              "source_prompt_id": "prompt_demo0003",
              "source_prompt_batch_id": "batch_demo0001",
              "source_template_id": "tmpl_demo0001",
              "proposed_action": "preserve",
              "memory_type": "style_dna",
              "polarity": "preserve",
              "scope": "skill",
              "content": "Limit each concept to two on-screen props besides the product.",
              "rationale": "Only loosely implied by the note about a busy table; not stated.",
              "confidence": "0.44",
              "status": "pending",
              "created_at": "2026-01-01T00:00:25Z"
            }
          },
          "source_ids": {
            "feedback_id": "fb_demo0003",
            "proposal_id": null,
            "candidate_id": "cand_demo0003",
            "artifact_id": null,
            "prompt_id": "prompt_demo0003",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "resolved": {
            "proposal": null,
            "feedback": {
              "kind": "feedback",
              "id": "fb_demo0003",
              "fields": {
                "id": "fb_demo0003",
                "workspace_id": "ws_demo0001",
                "project_id": "proj_demo0001",
                "skill_id": "skill_demo0001",
                "candidate_id": "cand_demo0003",
                "artifact_id": null,
                "prompt_id": "prompt_demo0003",
                "user_text": "The crawling sunlight is a real transformation and the creased linen is the kind of material detail I want. The problem is the bottle is just one more prop on a busy table -- by the last beat I still cannot see the product.",
                "created_at": "2026-01-01T00:00:08Z"
              }
            },
            "artifact": null,
            "candidate": {
              "kind": "candidate",
              "id": "cand_demo0003",
              "fields": {
                "id": "cand_demo0003",
                "workspace_id": "ws_demo0001",
                "project_id": "proj_demo0001",
                "prompt_batch_id": "batch_demo0001",
                "prompt_id": "prompt_demo0003",
                "artifact_id": null,
                "status": "feedback_added",
                "created_at": "2026-01-01T00:00:09Z"
              }
            },
            "prompt": {
              "kind": "prompt",
              "id": "prompt_demo0003",
              "fields": {
                "id": "prompt_demo0003",
                "skill_id": "skill_demo0001",
                "project_id": "proj_demo0001",
                "prompt_batch_id": "batch_demo0001",
                "template_id": "tmpl_demo0001",
                "text": "A cleared dinner table after guests have gone: linen creased, two glasses, a bowl of clementines. Over sixteen seconds the low sun crawls across the cloth, the peel curls tighten, and the room warms from grey to gold.",
                "structured_fields_json": "{\"role\": \"variation\", \"index\": 3, \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\", \"provider\": \"mock\", \"provider_model\": \"mock-prompt-generator\", \"target_model\": \"generic\", \"used_memory_ids\": [], \"used_memory\": [], \"reference_image\": null}",
                "version_number": 1,
                "parent_prompt_id": null,
                "created_at": "2026-01-01T00:00:10Z"
              }
            },
            "prompt_batch": {
              "kind": "prompt_batch",
              "id": "batch_demo0001",
              "fields": {
                "id": "batch_demo0001",
                "skill_id": "skill_demo0001",
                "project_id": "proj_demo0001",
                "brief": "Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.",
                "mode": "explore",
                "diversity_mode": "balanced",
                "generation_plan_json": "{\"provider\": \"mock\", \"mode\": \"explore\", \"diversity_mode\": \"balanced\", \"roles\": [\"aligned\", \"exploratory\", \"variation\"], \"n\": 3, \"uses_accepted_memory\": false, \"template_id\": \"tmpl_demo0001\", \"template_name\": \"Default candidate prompt template\", \"meta_template_id\": \"tmpl_demo0002\", \"meta_template_name\": \"Default meta-prompt template\", \"target_model\": \"generic\", \"memory_inclusion\": \"all\", \"selected_memory_ids\": [], \"reference_image\": null, \"recipe\": {\"target_model\": \"generic\", \"meta_template_id\": \"tmpl_demo0002\", \"meta_template_updated_at\": \"2026-01-01T00:00:00Z\", \"candidate_template_id\": \"tmpl_demo0001\", \"candidate_template_updated_at\": \"2026-01-01T00:00:01Z\", \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\", \"mode\": \"explore\", \"diversity_mode\": \"balanced\", \"variable_values\": {}, \"reference_image\": null}, \"memory_influence_trace\": {\"trace_version\": 1, \"attribution_scope\": \"prompt_batch\", \"attribution_note\": \"Batch-level trace of active accepted memories available to generate-next. This is not per-token or per-candidate attribution.\", \"active_memory_count\": 0, \"memory_refs\": []}, \"applied_memory_refs\": []}",
                "created_at": "2026-01-01T00:00:11Z"
              }
            },
            "template": {
              "kind": "template",
              "id": "tmpl_demo0001",
              "fields": {
                "id": "tmpl_demo0001",
                "skill_id": "skill_demo0001",
                "name": "Default candidate prompt template",
                "prompt_type": "candidate_generation",
                "model_target": "generic",
                "description": "System-created default candidate prompt template.",
                "template_text": "A single self-contained prompt for {TARGET_MODEL}.\n\nIt must:\n- commit to one concrete subject and one clear point of view\n- make the style constraints explicit\n- name what to avoid (negative constraints)",
                "variables_json": "[\"TARGET_MODEL\"]",
                "fields_json": "{}",
                "created_at": "2026-01-01T00:00:12Z"
              }
            }
          }
        },
        {
          "memory": null,
          "proposal": {
            "kind": "proposal",
            "id": "memprop_demo0005",
            "fields": {
              "id": "memprop_demo0005",
              "feedback_id": "fb_demo0003",
              "skill_id": "skill_demo0001",
              "project_id": "proj_demo0001",
              "source_candidate_id": "cand_demo0003",
              "source_artifact_id": null,
              "source_prompt_id": "prompt_demo0003",
              "source_prompt_batch_id": "batch_demo0001",
              "source_template_id": "tmpl_demo0001",
              "proposed_action": "preserve",
              "memory_type": "style_dna",
              "polarity": "preserve",
              "scope": "skill",
              "content": "Lead with tactile material detail rather than general atmosphere.",
              "rationale": "The judgment praised the creased linen as the wanted material detail.",
              "confidence": "0.85",
              "status": "accepted",
              "created_at": "2026-01-01T00:00:07Z"
            }
          },
          "source_ids": {
            "feedback_id": "fb_demo0003",
            "proposal_id": null,
            "candidate_id": "cand_demo0003",
            "artifact_id": null,
            "prompt_id": "prompt_demo0003",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "resolved": {
            "proposal": null,
            "feedback": {
              "kind": "feedback",
              "id": "fb_demo0003",
              "fields": {
                "id": "fb_demo0003",
                "workspace_id": "ws_demo0001",
                "project_id": "proj_demo0001",
                "skill_id": "skill_demo0001",
                "candidate_id": "cand_demo0003",
                "artifact_id": null,
                "prompt_id": "prompt_demo0003",
                "user_text": "The crawling sunlight is a real transformation and the creased linen is the kind of material detail I want. The problem is the bottle is just one more prop on a busy table -- by the last beat I still cannot see the product.",
                "created_at": "2026-01-01T00:00:08Z"
              }
            },
            "artifact": null,
            "candidate": {
              "kind": "candidate",
              "id": "cand_demo0003",
              "fields": {
                "id": "cand_demo0003",
                "workspace_id": "ws_demo0001",
                "project_id": "proj_demo0001",
                "prompt_batch_id": "batch_demo0001",
                "prompt_id": "prompt_demo0003",
                "artifact_id": null,
                "status": "feedback_added",
                "created_at": "2026-01-01T00:00:09Z"
              }
            },
            "prompt": {
              "kind": "prompt",
              "id": "prompt_demo0003",
              "fields": {
                "id": "prompt_demo0003",
                "skill_id": "skill_demo0001",
                "project_id": "proj_demo0001",
                "prompt_batch_id": "batch_demo0001",
                "template_id": "tmpl_demo0001",
                "text": "A cleared dinner table after guests have gone: linen creased, two glasses, a bowl of clementines. Over sixteen seconds the low sun crawls across the cloth, the peel curls tighten, and the room warms from grey to gold.",
                "structured_fields_json": "{\"role\": \"variation\", \"index\": 3, \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\", \"provider\": \"mock\", \"provider_model\": \"mock-prompt-generator\", \"target_model\": \"generic\", \"used_memory_ids\": [], \"used_memory\": [], \"reference_image\": null}",
                "version_number": 1,
                "parent_prompt_id": null,
                "created_at": "2026-01-01T00:00:10Z"
              }
            },
            "prompt_batch": {
              "kind": "prompt_batch",
              "id": "batch_demo0001",
              "fields": {
                "id": "batch_demo0001",
                "skill_id": "skill_demo0001",
                "project_id": "proj_demo0001",
                "brief": "Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.",
                "mode": "explore",
                "diversity_mode": "balanced",
                "generation_plan_json": "{\"provider\": \"mock\", \"mode\": \"explore\", \"diversity_mode\": \"balanced\", \"roles\": [\"aligned\", \"exploratory\", \"variation\"], \"n\": 3, \"uses_accepted_memory\": false, \"template_id\": \"tmpl_demo0001\", \"template_name\": \"Default candidate prompt template\", \"meta_template_id\": \"tmpl_demo0002\", \"meta_template_name\": \"Default meta-prompt template\", \"target_model\": \"generic\", \"memory_inclusion\": \"all\", \"selected_memory_ids\": [], \"reference_image\": null, \"recipe\": {\"target_model\": \"generic\", \"meta_template_id\": \"tmpl_demo0002\", \"meta_template_updated_at\": \"2026-01-01T00:00:00Z\", \"candidate_template_id\": \"tmpl_demo0001\", \"candidate_template_updated_at\": \"2026-01-01T00:00:01Z\", \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\", \"mode\": \"explore\", \"diversity_mode\": \"balanced\", \"variable_values\": {}, \"reference_image\": null}, \"memory_influence_trace\": {\"trace_version\": 1, \"attribution_scope\": \"prompt_batch\", \"attribution_note\": \"Batch-level trace of active accepted memories available to generate-next. This is not per-token or per-candidate attribution.\", \"active_memory_count\": 0, \"memory_refs\": []}, \"applied_memory_refs\": []}",
                "created_at": "2026-01-01T00:00:11Z"
              }
            },
            "template": {
              "kind": "template",
              "id": "tmpl_demo0001",
              "fields": {
                "id": "tmpl_demo0001",
                "skill_id": "skill_demo0001",
                "name": "Default candidate prompt template",
                "prompt_type": "candidate_generation",
                "model_target": "generic",
                "description": "System-created default candidate prompt template.",
                "template_text": "A single self-contained prompt for {TARGET_MODEL}.\n\nIt must:\n- commit to one concrete subject and one clear point of view\n- make the style constraints explicit\n- name what to avoid (negative constraints)",
                "variables_json": "[\"TARGET_MODEL\"]",
                "fields_json": "{}",
                "created_at": "2026-01-01T00:00:12Z"
              }
            }
          }
        },
        {
          "memory": null,
          "proposal": {
            "kind": "proposal",
            "id": "memprop_demo0004",
            "fields": {
              "id": "memprop_demo0004",
              "feedback_id": "fb_demo0002",
              "skill_id": "skill_demo0001",
              "project_id": "proj_demo0001",
              "source_candidate_id": "cand_demo0002",
              "source_artifact_id": null,
              "source_prompt_id": "prompt_demo0002",
              "source_prompt_batch_id": "batch_demo0001",
              "source_template_id": "tmpl_demo0001",
              "proposed_action": "avoid",
              "memory_type": "avoid_element",
              "polarity": "avoid",
              "scope": "skill",
              "content": "Avoid amber and green palettes.",
              "rationale": "The judgment described the amber and green as generic set dressing.",
              "confidence": "0.52",
              "status": "rejected",
              "created_at": "2026-01-01T00:00:26Z"
            }
          },
          "source_ids": {
            "feedback_id": "fb_demo0002",
            "proposal_id": null,
            "candidate_id": "cand_demo0002",
            "artifact_id": null,
            "prompt_id": "prompt_demo0002",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "resolved": {
            "proposal": null,
            "feedback": {
              "kind": "feedback",
              "id": "fb_demo0002",
              "fields": {
                "id": "fb_demo0002",
                "workspace_id": "ws_demo0001",
                "project_id": "proj_demo0001",
                "skill_id": "skill_demo0001",
                "candidate_id": "cand_demo0002",
                "artifact_id": null,
                "prompt_id": "prompt_demo0002",
                "user_text": "Too many tricks competing: rotating bars, a spinning wedge, a leaf shadow, and a negative flip in sixteen seconds. Pick one. The amber and green is also generic set dressing rather than anything you can feel.",
                "created_at": "2026-01-01T00:00:15Z"
              }
            },
            "artifact": null,
            "candidate": {
              "kind": "candidate",
              "id": "cand_demo0002",
              "fields": {
                "id": "cand_demo0002",
                "workspace_id": "ws_demo0001",
                "project_id": "proj_demo0001",
                "prompt_batch_id": "batch_demo0001",
                "prompt_id": "prompt_demo0002",
                "artifact_id": null,
                "status": "feedback_added",
                "created_at": "2026-01-01T00:00:16Z"
              }
            },
            "prompt": {
              "kind": "prompt",
              "id": "prompt_demo0002",
              "fields": {
                "id": "prompt_demo0002",
                "skill_id": "skill_demo0001",
                "project_id": "proj_demo0001",
                "prompt_batch_id": "batch_demo0001",
                "template_id": "tmpl_demo0001",
                "text": "Hard sunlight through a slatted blind rakes across a seamless backdrop in amber and deep green. Bars of light rotate, a wedge of grapefruit spins, the shadow of a leaf sweeps past, and the palette flips to negative on the final beat.",
                "structured_fields_json": "{\"role\": \"exploratory\", \"index\": 2, \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\", \"provider\": \"mock\", \"provider_model\": \"mock-prompt-generator\", \"target_model\": \"generic\", \"used_memory_ids\": [], \"used_memory\": [], \"reference_image\": null}",
                "version_number": 1,
                "parent_prompt_id": null,
                "created_at": "2026-01-01T00:00:17Z"
              }
            },
            "prompt_batch": {
              "kind": "prompt_batch",
              "id": "batch_demo0001",
              "fields": {
                "id": "batch_demo0001",
                "skill_id": "skill_demo0001",
                "project_id": "proj_demo0001",
                "brief": "Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.",
                "mode": "explore",
                "diversity_mode": "balanced",
                "generation_plan_json": "{\"provider\": \"mock\", \"mode\": \"explore\", \"diversity_mode\": \"balanced\", \"roles\": [\"aligned\", \"exploratory\", \"variation\"], \"n\": 3, \"uses_accepted_memory\": false, \"template_id\": \"tmpl_demo0001\", \"template_name\": \"Default candidate prompt template\", \"meta_template_id\": \"tmpl_demo0002\", \"meta_template_name\": \"Default meta-prompt template\", \"target_model\": \"generic\", \"memory_inclusion\": \"all\", \"selected_memory_ids\": [], \"reference_image\": null, \"recipe\": {\"target_model\": \"generic\", \"meta_template_id\": \"tmpl_demo0002\", \"meta_template_updated_at\": \"2026-01-01T00:00:00Z\", \"candidate_template_id\": \"tmpl_demo0001\", \"candidate_template_updated_at\": \"2026-01-01T00:00:01Z\", \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\", \"mode\": \"explore\", \"diversity_mode\": \"balanced\", \"variable_values\": {}, \"reference_image\": null}, \"memory_influence_trace\": {\"trace_version\": 1, \"attribution_scope\": \"prompt_batch\", \"attribution_note\": \"Batch-level trace of active accepted memories available to generate-next. This is not per-token or per-candidate attribution.\", \"active_memory_count\": 0, \"memory_refs\": []}, \"applied_memory_refs\": []}",
                "created_at": "2026-01-01T00:00:11Z"
              }
            },
            "template": {
              "kind": "template",
              "id": "tmpl_demo0001",
              "fields": {
                "id": "tmpl_demo0001",
                "skill_id": "skill_demo0001",
                "name": "Default candidate prompt template",
                "prompt_type": "candidate_generation",
                "model_target": "generic",
                "description": "System-created default candidate prompt template.",
                "template_text": "A single self-contained prompt for {TARGET_MODEL}.\n\nIt must:\n- commit to one concrete subject and one clear point of view\n- make the style constraints explicit\n- name what to avoid (negative constraints)",
                "variables_json": "[\"TARGET_MODEL\"]",
                "fields_json": "{}",
                "created_at": "2026-01-01T00:00:12Z"
              }
            }
          }
        },
        {
          "memory": null,
          "proposal": {
            "kind": "proposal",
            "id": "memprop_demo0003",
            "fields": {
              "id": "memprop_demo0003",
              "feedback_id": "fb_demo0002",
              "skill_id": "skill_demo0001",
              "project_id": "proj_demo0001",
              "source_candidate_id": "cand_demo0002",
              "source_artifact_id": null,
              "source_prompt_id": "prompt_demo0002",
              "source_prompt_batch_id": "batch_demo0001",
              "source_template_id": "tmpl_demo0001",
              "proposed_action": "avoid",
              "memory_type": "avoid_element",
              "polarity": "avoid",
              "scope": "skill",
              "content": "Do not stack competing visual tricks in one sixteen-second concept.",
              "rationale": "The judgment listed four effects competing inside one film.",
              "confidence": "0.9",
              "status": "accepted",
              "created_at": "2026-01-01T00:00:14Z"
            }
          },
          "source_ids": {
            "feedback_id": "fb_demo0002",
            "proposal_id": null,
            "candidate_id": "cand_demo0002",
            "artifact_id": null,
            "prompt_id": "prompt_demo0002",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "resolved": {
            "proposal": null,
            "feedback": {
              "kind": "feedback",
              "id": "fb_demo0002",
              "fields": {
                "id": "fb_demo0002",
                "workspace_id": "ws_demo0001",
                "project_id": "proj_demo0001",
                "skill_id": "skill_demo0001",
                "candidate_id": "cand_demo0002",
                "artifact_id": null,
                "prompt_id": "prompt_demo0002",
                "user_text": "Too many tricks competing: rotating bars, a spinning wedge, a leaf shadow, and a negative flip in sixteen seconds. Pick one. The amber and green is also generic set dressing rather than anything you can feel.",
                "created_at": "2026-01-01T00:00:15Z"
              }
            },
            "artifact": null,
            "candidate": {
              "kind": "candidate",
              "id": "cand_demo0002",
              "fields": {
                "id": "cand_demo0002",
                "workspace_id": "ws_demo0001",
                "project_id": "proj_demo0001",
                "prompt_batch_id": "batch_demo0001",
                "prompt_id": "prompt_demo0002",
                "artifact_id": null,
                "status": "feedback_added",
                "created_at": "2026-01-01T00:00:16Z"
              }
            },
            "prompt": {
              "kind": "prompt",
              "id": "prompt_demo0002",
              "fields": {
                "id": "prompt_demo0002",
                "skill_id": "skill_demo0001",
                "project_id": "proj_demo0001",
                "prompt_batch_id": "batch_demo0001",
                "template_id": "tmpl_demo0001",
                "text": "Hard sunlight through a slatted blind rakes across a seamless backdrop in amber and deep green. Bars of light rotate, a wedge of grapefruit spins, the shadow of a leaf sweeps past, and the palette flips to negative on the final beat.",
                "structured_fields_json": "{\"role\": \"exploratory\", \"index\": 2, \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\", \"provider\": \"mock\", \"provider_model\": \"mock-prompt-generator\", \"target_model\": \"generic\", \"used_memory_ids\": [], \"used_memory\": [], \"reference_image\": null}",
                "version_number": 1,
                "parent_prompt_id": null,
                "created_at": "2026-01-01T00:00:17Z"
              }
            },
            "prompt_batch": {
              "kind": "prompt_batch",
              "id": "batch_demo0001",
              "fields": {
                "id": "batch_demo0001",
                "skill_id": "skill_demo0001",
                "project_id": "proj_demo0001",
                "brief": "Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.",
                "mode": "explore",
                "diversity_mode": "balanced",
                "generation_plan_json": "{\"provider\": \"mock\", \"mode\": \"explore\", \"diversity_mode\": \"balanced\", \"roles\": [\"aligned\", \"exploratory\", \"variation\"], \"n\": 3, \"uses_accepted_memory\": false, \"template_id\": \"tmpl_demo0001\", \"template_name\": \"Default candidate prompt template\", \"meta_template_id\": \"tmpl_demo0002\", \"meta_template_name\": \"Default meta-prompt template\", \"target_model\": \"generic\", \"memory_inclusion\": \"all\", \"selected_memory_ids\": [], \"reference_image\": null, \"recipe\": {\"target_model\": \"generic\", \"meta_template_id\": \"tmpl_demo0002\", \"meta_template_updated_at\": \"2026-01-01T00:00:00Z\", \"candidate_template_id\": \"tmpl_demo0001\", \"candidate_template_updated_at\": \"2026-01-01T00:00:01Z\", \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\", \"mode\": \"explore\", \"diversity_mode\": \"balanced\", \"variable_values\": {}, \"reference_image\": null}, \"memory_influence_trace\": {\"trace_version\": 1, \"attribution_scope\": \"prompt_batch\", \"attribution_note\": \"Batch-level trace of active accepted memories available to generate-next. This is not per-token or per-candidate attribution.\", \"active_memory_count\": 0, \"memory_refs\": []}, \"applied_memory_refs\": []}",
                "created_at": "2026-01-01T00:00:11Z"
              }
            },
            "template": {
              "kind": "template",
              "id": "tmpl_demo0001",
              "fields": {
                "id": "tmpl_demo0001",
                "skill_id": "skill_demo0001",
                "name": "Default candidate prompt template",
                "prompt_type": "candidate_generation",
                "model_target": "generic",
                "description": "System-created default candidate prompt template.",
                "template_text": "A single self-contained prompt for {TARGET_MODEL}.\n\nIt must:\n- commit to one concrete subject and one clear point of view\n- make the style constraints explicit\n- name what to avoid (negative constraints)",
                "variables_json": "[\"TARGET_MODEL\"]",
                "fields_json": "{}",
                "created_at": "2026-01-01T00:00:12Z"
              }
            }
          }
        },
        {
          "memory": null,
          "proposal": {
            "kind": "proposal",
            "id": "memprop_demo0002",
            "fields": {
              "id": "memprop_demo0002",
              "feedback_id": "fb_demo0001",
              "skill_id": "skill_demo0001",
              "project_id": "proj_demo0001",
              "source_candidate_id": "cand_demo0001",
              "source_artifact_id": null,
              "source_prompt_id": "prompt_demo0001",
              "source_prompt_batch_id": "batch_demo0001",
              "source_template_id": "tmpl_demo0001",
              "proposed_action": "preserve",
              "memory_type": "style_dna",
              "polarity": "preserve",
              "scope": "skill",
              "content": "Keep the product legible in the final beat.",
              "rationale": "The judgment asked to end on the bottle after the transformation.",
              "confidence": "0.74",
              "status": "accepted",
              "created_at": "2026-01-01T00:00:19Z"
            }
          },
          "source_ids": {
            "feedback_id": "fb_demo0001",
            "proposal_id": null,
            "candidate_id": "cand_demo0001",
            "artifact_id": null,
            "prompt_id": "prompt_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "resolved": {
            "proposal": null,
            "feedback": {
              "kind": "feedback",
              "id": "fb_demo0001",
              "fields": {
                "id": "fb_demo0001",
                "workspace_id": "ws_demo0001",
                "project_id": "proj_demo0001",
                "skill_id": "skill_demo0001",
                "candidate_id": "cand_demo0001",
                "artifact_id": null,
                "prompt_id": "prompt_demo0001",
                "user_text": "The condensation run is the whole idea -- one physical change I can actually shoot, and the beading reads expensive. But the bottle is never legible; I get texture and no product. Keep the transformation, end on the bottle.",
                "created_at": "2026-01-01T00:00:20Z"
              }
            },
            "artifact": null,
            "candidate": {
              "kind": "candidate",
              "id": "cand_demo0001",
              "fields": {
                "id": "cand_demo0001",
                "workspace_id": "ws_demo0001",
                "project_id": "proj_demo0001",
                "prompt_batch_id": "batch_demo0001",
                "prompt_id": "prompt_demo0001",
                "artifact_id": null,
                "status": "feedback_added",
                "created_at": "2026-01-01T00:00:21Z"
              }
            },
            "prompt": {
              "kind": "prompt",
              "id": "prompt_demo0001",
              "fields": {
                "id": "prompt_demo0001",
                "skill_id": "skill_demo0001",
                "project_id": "proj_demo0001",
                "prompt_batch_id": "batch_demo0001",
                "template_id": "tmpl_demo0001",
                "text": "Macro on a chilled bottle: condensation beads gather, merge, and run, dragging a clean line down the frosted glass. A thumb of orange peel flexes just off-axis and throws a fine mist across the light. Shallow depth, slow push, cold blue-green key.",
                "structured_fields_json": "{\"role\": \"aligned\", \"index\": 1, \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\", \"provider\": \"mock\", \"provider_model\": \"mock-prompt-generator\", \"target_model\": \"generic\", \"used_memory_ids\": [], \"used_memory\": [], \"reference_image\": null}",
                "version_number": 1,
                "parent_prompt_id": null,
                "created_at": "2026-01-01T00:00:22Z"
              }
            },
            "prompt_batch": {
              "kind": "prompt_batch",
              "id": "batch_demo0001",
              "fields": {
                "id": "batch_demo0001",
                "skill_id": "skill_demo0001",
                "project_id": "proj_demo0001",
                "brief": "Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.",
                "mode": "explore",
                "diversity_mode": "balanced",
                "generation_plan_json": "{\"provider\": \"mock\", \"mode\": \"explore\", \"diversity_mode\": \"balanced\", \"roles\": [\"aligned\", \"exploratory\", \"variation\"], \"n\": 3, \"uses_accepted_memory\": false, \"template_id\": \"tmpl_demo0001\", \"template_name\": \"Default candidate prompt template\", \"meta_template_id\": \"tmpl_demo0002\", \"meta_template_name\": \"Default meta-prompt template\", \"target_model\": \"generic\", \"memory_inclusion\": \"all\", \"selected_memory_ids\": [], \"reference_image\": null, \"recipe\": {\"target_model\": \"generic\", \"meta_template_id\": \"tmpl_demo0002\", \"meta_template_updated_at\": \"2026-01-01T00:00:00Z\", \"candidate_template_id\": \"tmpl_demo0001\", \"candidate_template_updated_at\": \"2026-01-01T00:00:01Z\", \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\", \"mode\": \"explore\", \"diversity_mode\": \"balanced\", \"variable_values\": {}, \"reference_image\": null}, \"memory_influence_trace\": {\"trace_version\": 1, \"attribution_scope\": \"prompt_batch\", \"attribution_note\": \"Batch-level trace of active accepted memories available to generate-next. This is not per-token or per-candidate attribution.\", \"active_memory_count\": 0, \"memory_refs\": []}, \"applied_memory_refs\": []}",
                "created_at": "2026-01-01T00:00:11Z"
              }
            },
            "template": {
              "kind": "template",
              "id": "tmpl_demo0001",
              "fields": {
                "id": "tmpl_demo0001",
                "skill_id": "skill_demo0001",
                "name": "Default candidate prompt template",
                "prompt_type": "candidate_generation",
                "model_target": "generic",
                "description": "System-created default candidate prompt template.",
                "template_text": "A single self-contained prompt for {TARGET_MODEL}.\n\nIt must:\n- commit to one concrete subject and one clear point of view\n- make the style constraints explicit\n- name what to avoid (negative constraints)",
                "variables_json": "[\"TARGET_MODEL\"]",
                "fields_json": "{}",
                "created_at": "2026-01-01T00:00:12Z"
              }
            }
          }
        },
        {
          "memory": null,
          "proposal": {
            "kind": "proposal",
            "id": "memprop_demo0001",
            "fields": {
              "id": "memprop_demo0001",
              "feedback_id": "fb_demo0001",
              "skill_id": "skill_demo0001",
              "project_id": "proj_demo0001",
              "source_candidate_id": "cand_demo0001",
              "source_artifact_id": null,
              "source_prompt_id": "prompt_demo0001",
              "source_prompt_batch_id": "batch_demo0001",
              "source_template_id": "tmpl_demo0001",
              "proposed_action": "preserve",
              "memory_type": "style_dna",
              "polarity": "preserve",
              "scope": "skill",
              "content": "Organize each concept around a single physical transformation that can actually be shot.",
              "rationale": "The judgment called the condensation run 'the whole idea'.",
              "confidence": "0.89",
              "status": "accepted",
              "created_at": "2026-01-01T00:00:24Z"
            }
          },
          "source_ids": {
            "feedback_id": "fb_demo0001",
            "proposal_id": null,
            "candidate_id": "cand_demo0001",
            "artifact_id": null,
            "prompt_id": "prompt_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "resolved": {
            "proposal": null,
            "feedback": {
              "kind": "feedback",
              "id": "fb_demo0001",
              "fields": {
                "id": "fb_demo0001",
                "workspace_id": "ws_demo0001",
                "project_id": "proj_demo0001",
                "skill_id": "skill_demo0001",
                "candidate_id": "cand_demo0001",
                "artifact_id": null,
                "prompt_id": "prompt_demo0001",
                "user_text": "The condensation run is the whole idea -- one physical change I can actually shoot, and the beading reads expensive. But the bottle is never legible; I get texture and no product. Keep the transformation, end on the bottle.",
                "created_at": "2026-01-01T00:00:20Z"
              }
            },
            "artifact": null,
            "candidate": {
              "kind": "candidate",
              "id": "cand_demo0001",
              "fields": {
                "id": "cand_demo0001",
                "workspace_id": "ws_demo0001",
                "project_id": "proj_demo0001",
                "prompt_batch_id": "batch_demo0001",
                "prompt_id": "prompt_demo0001",
                "artifact_id": null,
                "status": "feedback_added",
                "created_at": "2026-01-01T00:00:21Z"
              }
            },
            "prompt": {
              "kind": "prompt",
              "id": "prompt_demo0001",
              "fields": {
                "id": "prompt_demo0001",
                "skill_id": "skill_demo0001",
                "project_id": "proj_demo0001",
                "prompt_batch_id": "batch_demo0001",
                "template_id": "tmpl_demo0001",
                "text": "Macro on a chilled bottle: condensation beads gather, merge, and run, dragging a clean line down the frosted glass. A thumb of orange peel flexes just off-axis and throws a fine mist across the light. Shallow depth, slow push, cold blue-green key.",
                "structured_fields_json": "{\"role\": \"aligned\", \"index\": 1, \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\", \"provider\": \"mock\", \"provider_model\": \"mock-prompt-generator\", \"target_model\": \"generic\", \"used_memory_ids\": [], \"used_memory\": [], \"reference_image\": null}",
                "version_number": 1,
                "parent_prompt_id": null,
                "created_at": "2026-01-01T00:00:22Z"
              }
            },
            "prompt_batch": {
              "kind": "prompt_batch",
              "id": "batch_demo0001",
              "fields": {
                "id": "batch_demo0001",
                "skill_id": "skill_demo0001",
                "project_id": "proj_demo0001",
                "brief": "Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.",
                "mode": "explore",
                "diversity_mode": "balanced",
                "generation_plan_json": "{\"provider\": \"mock\", \"mode\": \"explore\", \"diversity_mode\": \"balanced\", \"roles\": [\"aligned\", \"exploratory\", \"variation\"], \"n\": 3, \"uses_accepted_memory\": false, \"template_id\": \"tmpl_demo0001\", \"template_name\": \"Default candidate prompt template\", \"meta_template_id\": \"tmpl_demo0002\", \"meta_template_name\": \"Default meta-prompt template\", \"target_model\": \"generic\", \"memory_inclusion\": \"all\", \"selected_memory_ids\": [], \"reference_image\": null, \"recipe\": {\"target_model\": \"generic\", \"meta_template_id\": \"tmpl_demo0002\", \"meta_template_updated_at\": \"2026-01-01T00:00:00Z\", \"candidate_template_id\": \"tmpl_demo0001\", \"candidate_template_updated_at\": \"2026-01-01T00:00:01Z\", \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\", \"mode\": \"explore\", \"diversity_mode\": \"balanced\", \"variable_values\": {}, \"reference_image\": null}, \"memory_influence_trace\": {\"trace_version\": 1, \"attribution_scope\": \"prompt_batch\", \"attribution_note\": \"Batch-level trace of active accepted memories available to generate-next. This is not per-token or per-candidate attribution.\", \"active_memory_count\": 0, \"memory_refs\": []}, \"applied_memory_refs\": []}",
                "created_at": "2026-01-01T00:00:11Z"
              }
            },
            "template": {
              "kind": "template",
              "id": "tmpl_demo0001",
              "fields": {
                "id": "tmpl_demo0001",
                "skill_id": "skill_demo0001",
                "name": "Default candidate prompt template",
                "prompt_type": "candidate_generation",
                "model_target": "generic",
                "description": "System-created default candidate prompt template.",
                "template_text": "A single self-contained prompt for {TARGET_MODEL}.\n\nIt must:\n- commit to one concrete subject and one clear point of view\n- make the style constraints explicit\n- name what to avoid (negative constraints)",
                "variables_json": "[\"TARGET_MODEL\"]",
                "fields_json": "{}",
                "created_at": "2026-01-01T00:00:12Z"
              }
            }
          }
        }
      ]
    },
    "claim": "provenance receipt"
  },
  {
    "label": "memory_timeline",
    "method": "GET",
    "path": "/skills/skill_demo0001/memory-timeline",
    "request": null,
    "status_code": 200,
    "response": {
      "skill_id": "skill_demo0001",
      "summary": {
        "event_count": 22,
        "feedback_event_count": 3,
        "proposal_event_count": 11,
        "memory_event_count": 4,
        "receipt_event_count": 4
      },
      "events": [
        {
          "id": "feedback_added:feedback:fb_demo0001",
          "event_type": "feedback_added",
          "timestamp": "2026-01-01 00:00:28",
          "label": "Feedback added",
          "description": "The condensation run is the whole idea -- one physical change I can actually shoot, and the beading reads expensive. But the bottle is never legible; I get texture and no product. Keep the transformation, end on the bottle.",
          "entity_kind": "feedback",
          "entity_id": "fb_demo0001",
          "source_ids": {
            "feedback_id": "fb_demo0001",
            "proposal_id": null,
            "candidate_id": "cand_demo0001",
            "artifact_id": null,
            "prompt_id": "prompt_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "receipt_url": null
        },
        {
          "id": "proposal_created:proposal:memprop_demo0001",
          "event_type": "proposal_created",
          "timestamp": "2026-01-01 00:00:31",
          "label": "Memory proposal created",
          "description": "Organize each concept around a single physical transformation that can actually be shot.",
          "entity_kind": "proposal",
          "entity_id": "memprop_demo0001",
          "source_ids": {
            "feedback_id": "fb_demo0001",
            "proposal_id": null,
            "candidate_id": "cand_demo0001",
            "artifact_id": null,
            "prompt_id": "prompt_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0001.md"
        },
        {
          "id": "proposal_created:proposal:memprop_demo0002",
          "event_type": "proposal_created",
          "timestamp": "2026-01-01 00:00:33",
          "label": "Memory proposal created",
          "description": "Keep the product legible in the final beat.",
          "entity_kind": "proposal",
          "entity_id": "memprop_demo0002",
          "source_ids": {
            "feedback_id": "fb_demo0001",
            "proposal_id": null,
            "candidate_id": "cand_demo0001",
            "artifact_id": null,
            "prompt_id": "prompt_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0002.md"
        },
        {
          "id": "proposal_accepted:proposal:memprop_demo0001",
          "event_type": "proposal_accepted",
          "timestamp": "2026-01-01 00:00:38",
          "label": "Proposal accepted",
          "description": "Organize each concept around a single physical transformation that can actually be shot.",
          "entity_kind": "proposal",
          "entity_id": "memprop_demo0001",
          "source_ids": {
            "feedback_id": "fb_demo0001",
            "proposal_id": "memprop_demo0001",
            "candidate_id": "cand_demo0001",
            "artifact_id": null,
            "prompt_id": "prompt_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0001.md"
        },
        {
          "id": "memory_activated:memory:mem_demo0001",
          "event_type": "memory_activated",
          "timestamp": "2026-01-01 00:00:38",
          "label": "Memory activated",
          "description": "Organize each concept around a single physical transformation that can actually be shot.",
          "entity_kind": "memory",
          "entity_id": "mem_demo0001",
          "source_ids": {
            "feedback_id": "fb_demo0001",
            "proposal_id": "memprop_demo0001",
            "candidate_id": "cand_demo0001",
            "artifact_id": null,
            "prompt_id": "prompt_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/memory/mem_demo0001.md"
        },
        {
          "id": "receipt_available:memory:mem_demo0001",
          "event_type": "receipt_available",
          "timestamp": "2026-01-01 00:00:38",
          "label": "Receipt available",
          "description": "A canonical Markdown receipt is available for this accepted memory.",
          "entity_kind": "memory",
          "entity_id": "mem_demo0001",
          "source_ids": {
            "feedback_id": "fb_demo0001",
            "proposal_id": "memprop_demo0001",
            "candidate_id": "cand_demo0001",
            "artifact_id": null,
            "prompt_id": "prompt_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/memory/mem_demo0001.md"
        },
        {
          "id": "proposal_accepted:proposal:memprop_demo0002",
          "event_type": "proposal_accepted",
          "timestamp": "2026-01-01 00:00:44",
          "label": "Proposal accepted",
          "description": "Keep the product legible in the final beat.",
          "entity_kind": "proposal",
          "entity_id": "memprop_demo0002",
          "source_ids": {
            "feedback_id": "fb_demo0001",
            "proposal_id": "memprop_demo0002",
            "candidate_id": "cand_demo0001",
            "artifact_id": null,
            "prompt_id": "prompt_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0002.md"
        },
        {
          "id": "memory_activated:memory:mem_demo0002",
          "event_type": "memory_activated",
          "timestamp": "2026-01-01 00:00:44",
          "label": "Memory activated",
          "description": "Keep the product legible in the final beat.",
          "entity_kind": "memory",
          "entity_id": "mem_demo0002",
          "source_ids": {
            "feedback_id": "fb_demo0001",
            "proposal_id": "memprop_demo0002",
            "candidate_id": "cand_demo0001",
            "artifact_id": null,
            "prompt_id": "prompt_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/memory/mem_demo0002.md"
        },
        {
          "id": "receipt_available:memory:mem_demo0002",
          "event_type": "receipt_available",
          "timestamp": "2026-01-01 00:00:44",
          "label": "Receipt available",
          "description": "A canonical Markdown receipt is available for this accepted memory.",
          "entity_kind": "memory",
          "entity_id": "mem_demo0002",
          "source_ids": {
            "feedback_id": "fb_demo0001",
            "proposal_id": "memprop_demo0002",
            "candidate_id": "cand_demo0001",
            "artifact_id": null,
            "prompt_id": "prompt_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/memory/mem_demo0002.md"
        },
        {
          "id": "feedback_added:feedback:fb_demo0002",
          "event_type": "feedback_added",
          "timestamp": "2026-01-01 00:00:48",
          "label": "Feedback added",
          "description": "Too many tricks competing: rotating bars, a spinning wedge, a leaf shadow, and a negative flip in sixteen seconds. Pick one. The amber and green is also generic set dressing rather than anything you can feel.",
          "entity_kind": "feedback",
          "entity_id": "fb_demo0002",
          "source_ids": {
            "feedback_id": "fb_demo0002",
            "proposal_id": null,
            "candidate_id": "cand_demo0002",
            "artifact_id": null,
            "prompt_id": "prompt_demo0002",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "receipt_url": null
        },
        {
          "id": "proposal_created:proposal:memprop_demo0003",
          "event_type": "proposal_created",
          "timestamp": "2026-01-01 00:00:51",
          "label": "Memory proposal created",
          "description": "Do not stack competing visual tricks in one sixteen-second concept.",
          "entity_kind": "proposal",
          "entity_id": "memprop_demo0003",
          "source_ids": {
            "feedback_id": "fb_demo0002",
            "proposal_id": null,
            "candidate_id": "cand_demo0002",
            "artifact_id": null,
            "prompt_id": "prompt_demo0002",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0003.md"
        },
        {
          "id": "proposal_created:proposal:memprop_demo0004",
          "event_type": "proposal_created",
          "timestamp": "2026-01-01 00:00:53",
          "label": "Memory proposal created",
          "description": "Avoid amber and green palettes.",
          "entity_kind": "proposal",
          "entity_id": "memprop_demo0004",
          "source_ids": {
            "feedback_id": "fb_demo0002",
            "proposal_id": null,
            "candidate_id": "cand_demo0002",
            "artifact_id": null,
            "prompt_id": "prompt_demo0002",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0004.md"
        },
        {
          "id": "proposal_rejected:proposal:memprop_demo0004",
          "event_type": "proposal_rejected",
          "timestamp": "2026-01-01 00:00:53",
          "label": "Proposal rejected",
          "description": "Avoid amber and green palettes.",
          "entity_kind": "proposal",
          "entity_id": "memprop_demo0004",
          "source_ids": {
            "feedback_id": "fb_demo0002",
            "proposal_id": null,
            "candidate_id": "cand_demo0002",
            "artifact_id": null,
            "prompt_id": "prompt_demo0002",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0004.md"
        },
        {
          "id": "proposal_accepted:proposal:memprop_demo0003",
          "event_type": "proposal_accepted",
          "timestamp": "2026-01-01 00:00:58",
          "label": "Proposal accepted",
          "description": "Do not stack competing visual tricks in one sixteen-second concept.",
          "entity_kind": "proposal",
          "entity_id": "memprop_demo0003",
          "source_ids": {
            "feedback_id": "fb_demo0002",
            "proposal_id": "memprop_demo0003",
            "candidate_id": "cand_demo0002",
            "artifact_id": null,
            "prompt_id": "prompt_demo0002",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0003.md"
        },
        {
          "id": "memory_activated:memory:mem_demo0003",
          "event_type": "memory_activated",
          "timestamp": "2026-01-01 00:00:58",
          "label": "Memory activated",
          "description": "Do not stack competing visual tricks in one sixteen-second concept.",
          "entity_kind": "memory",
          "entity_id": "mem_demo0003",
          "source_ids": {
            "feedback_id": "fb_demo0002",
            "proposal_id": "memprop_demo0003",
            "candidate_id": "cand_demo0002",
            "artifact_id": null,
            "prompt_id": "prompt_demo0002",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/memory/mem_demo0003.md"
        },
        {
          "id": "receipt_available:memory:mem_demo0003",
          "event_type": "receipt_available",
          "timestamp": "2026-01-01 00:00:58",
          "label": "Receipt available",
          "description": "A canonical Markdown receipt is available for this accepted memory.",
          "entity_kind": "memory",
          "entity_id": "mem_demo0003",
          "source_ids": {
            "feedback_id": "fb_demo0002",
            "proposal_id": "memprop_demo0003",
            "candidate_id": "cand_demo0002",
            "artifact_id": null,
            "prompt_id": "prompt_demo0002",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/memory/mem_demo0003.md"
        },
        {
          "id": "feedback_added:feedback:fb_demo0003",
          "event_type": "feedback_added",
          "timestamp": "2026-01-01 00:01:05",
          "label": "Feedback added",
          "description": "The crawling sunlight is a real transformation and the creased linen is the kind of material detail I want. The problem is the bottle is just one more prop on a busy table -- by the last beat I still cannot see the product.",
          "entity_kind": "feedback",
          "entity_id": "fb_demo0003",
          "source_ids": {
            "feedback_id": "fb_demo0003",
            "proposal_id": null,
            "candidate_id": "cand_demo0003",
            "artifact_id": null,
            "prompt_id": "prompt_demo0003",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "receipt_url": null
        },
        {
          "id": "proposal_created:proposal:memprop_demo0005",
          "event_type": "proposal_created",
          "timestamp": "2026-01-01 00:01:08",
          "label": "Memory proposal created",
          "description": "Lead with tactile material detail rather than general atmosphere.",
          "entity_kind": "proposal",
          "entity_id": "memprop_demo0005",
          "source_ids": {
            "feedback_id": "fb_demo0003",
            "proposal_id": null,
            "candidate_id": "cand_demo0003",
            "artifact_id": null,
            "prompt_id": "prompt_demo0003",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0005.md"
        },
        {
          "id": "proposal_created:proposal:memprop_demo0006",
          "event_type": "proposal_created",
          "timestamp": "2026-01-01 00:01:10",
          "label": "Memory proposal created",
          "description": "Limit each concept to two on-screen props besides the product.",
          "entity_kind": "proposal",
          "entity_id": "memprop_demo0006",
          "source_ids": {
            "feedback_id": "fb_demo0003",
            "proposal_id": null,
            "candidate_id": "cand_demo0003",
            "artifact_id": null,
            "prompt_id": "prompt_demo0003",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0006.md"
        },
        {
          "id": "proposal_accepted:proposal:memprop_demo0005",
          "event_type": "proposal_accepted",
          "timestamp": "2026-01-01 00:01:15",
          "label": "Proposal accepted",
          "description": "Lead with tactile material detail rather than general atmosphere.",
          "entity_kind": "proposal",
          "entity_id": "memprop_demo0005",
          "source_ids": {
            "feedback_id": "fb_demo0003",
            "proposal_id": "memprop_demo0005",
            "candidate_id": "cand_demo0003",
            "artifact_id": null,
            "prompt_id": "prompt_demo0003",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0005.md"
        },
        {
          "id": "memory_activated:memory:mem_demo0004",
          "event_type": "memory_activated",
          "timestamp": "2026-01-01 00:01:15",
          "label": "Memory activated",
          "description": "Lead with tactile material detail rather than general atmosphere.",
          "entity_kind": "memory",
          "entity_id": "mem_demo0004",
          "source_ids": {
            "feedback_id": "fb_demo0003",
            "proposal_id": "memprop_demo0005",
            "candidate_id": "cand_demo0003",
            "artifact_id": null,
            "prompt_id": "prompt_demo0003",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/memory/mem_demo0004.md"
        },
        {
          "id": "receipt_available:memory:mem_demo0004",
          "event_type": "receipt_available",
          "timestamp": "2026-01-01 00:01:15",
          "label": "Receipt available",
          "description": "A canonical Markdown receipt is available for this accepted memory.",
          "entity_kind": "memory",
          "entity_id": "mem_demo0004",
          "source_ids": {
            "feedback_id": "fb_demo0003",
            "proposal_id": "memprop_demo0005",
            "candidate_id": "cand_demo0003",
            "artifact_id": null,
            "prompt_id": "prompt_demo0003",
            "prompt_batch_id": "batch_demo0001",
            "template_id": "tmpl_demo0001"
          },
          "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/memory/mem_demo0004.md"
        }
      ]
    },
    "claim": "provenance receipt"
  },
  {
    "label": "memory_receipt_1",
    "method": "GET",
    "path": "/skills/skill_demo0001/memory-ledger/receipts/memory/mem_demo0001.md",
    "request": null,
    "status_code": 200,
    "response": "# Memory Receipt: Organize each concept around a single physical transformation that can actually be shot.\n\nSkill ID: skill_demo0001\nEntry kind: Accepted memory\nEntry ID: mem_demo0001\nStatus: active\nPolarity / type: preserve\n\n## Summary\n\nOrganize each concept around a single physical transformation that can actually be shot.\n\n## Source IDs\n\n- Template: tmpl_demo0001\n- Prompt batch: batch_demo0001\n- Prompt: prompt_demo0001\n- Candidate: cand_demo0001\n- Artifact: Not recorded\n- Feedback: fb_demo0001\n- Proposal: memprop_demo0001\n\n## Provenance Chain\n\n- Template (tmpl_demo0001): Default candidate prompt template\n- Prompt batch (batch_demo0001): Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\n- Prompt (prompt_demo0001): Macro on a chilled bottle: condensation beads gather, merge, and run, dragging a clean line down the frosted glass. A thumb of orange peel flexes just off-axis and throws a fine mist across the light. Shallow depth, slow push, cold blue-green key.\n- Candidate (cand_demo0001): feedback_added\n- Artifact: missing\n- Feedback (fb_demo0001): The condensation run is the whole idea -- one physical change I can actually shoot, and the beading reads expensive. But the bottle is never legible; I get texture and no product. Keep the transformation, end on the bottle.\n- Proposal (memprop_demo0001): Organize each concept around a single physical transformation that can actually be shot.\n\n## Raw Ledger Fields\n\n```json\n{\n  \"content\": \"Organize each concept around a single physical transformation that can actually be shot.\",\n  \"copy_policy\": \"reference_only\",\n  \"created_at\": \"2026-01-01 00:00:38\",\n  \"id\": \"mem_demo0001\",\n  \"memory_type\": \"style_dna\",\n  \"negative_fragment\": null,\n  \"polarity\": \"preserve\",\n  \"project_id\": \"proj_demo0001\",\n  \"prompt_fragment\": \"Organize each concept around a single physical transformation that can actually be shot.\",\n  \"scope\": \"skill\",\n  \"skill_id\": \"skill_demo0001\",\n  \"source_artifact_id\": null,\n  \"source_candidate_id\": \"cand_demo0001\",\n  \"source_feedback_id\": \"fb_demo0001\",\n  \"source_prompt_batch_id\": \"batch_demo0001\",\n  \"source_prompt_id\": \"prompt_demo0001\",\n  \"source_proposal_id\": \"memprop_demo0001\",\n  \"source_template_id\": \"tmpl_demo0001\",\n  \"status\": \"active\",\n  \"strength\": \"soft_preference\"\n}\n```\n",
    "claim": "provenance receipt"
  },
  {
    "label": "memory_receipt_2",
    "method": "GET",
    "path": "/skills/skill_demo0001/memory-ledger/receipts/memory/mem_demo0002.md",
    "request": null,
    "status_code": 200,
    "response": "# Memory Receipt: Keep the product legible in the final beat.\n\nSkill ID: skill_demo0001\nEntry kind: Accepted memory\nEntry ID: mem_demo0002\nStatus: active\nPolarity / type: preserve\n\n## Summary\n\nKeep the product legible in the final beat.\n\n## Source IDs\n\n- Template: tmpl_demo0001\n- Prompt batch: batch_demo0001\n- Prompt: prompt_demo0001\n- Candidate: cand_demo0001\n- Artifact: Not recorded\n- Feedback: fb_demo0001\n- Proposal: memprop_demo0002\n\n## Provenance Chain\n\n- Template (tmpl_demo0001): Default candidate prompt template\n- Prompt batch (batch_demo0001): Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\n- Prompt (prompt_demo0001): Macro on a chilled bottle: condensation beads gather, merge, and run, dragging a clean line down the frosted glass. A thumb of orange peel flexes just off-axis and throws a fine mist across the light. Shallow depth, slow push, cold blue-green key.\n- Candidate (cand_demo0001): feedback_added\n- Artifact: missing\n- Feedback (fb_demo0001): The condensation run is the whole idea -- one physical change I can actually shoot, and the beading reads expensive. But the bottle is never legible; I get texture and no product. Keep the transformation, end on the bottle.\n- Proposal (memprop_demo0002): Keep the product legible in the final beat.\n\n## Raw Ledger Fields\n\n```json\n{\n  \"content\": \"Keep the product legible in the final beat.\",\n  \"copy_policy\": \"reference_only\",\n  \"created_at\": \"2026-01-01 00:00:44\",\n  \"id\": \"mem_demo0002\",\n  \"memory_type\": \"style_dna\",\n  \"negative_fragment\": null,\n  \"polarity\": \"preserve\",\n  \"project_id\": \"proj_demo0001\",\n  \"prompt_fragment\": \"Keep the product legible in the final beat.\",\n  \"scope\": \"skill\",\n  \"skill_id\": \"skill_demo0001\",\n  \"source_artifact_id\": null,\n  \"source_candidate_id\": \"cand_demo0001\",\n  \"source_feedback_id\": \"fb_demo0001\",\n  \"source_prompt_batch_id\": \"batch_demo0001\",\n  \"source_prompt_id\": \"prompt_demo0001\",\n  \"source_proposal_id\": \"memprop_demo0002\",\n  \"source_template_id\": \"tmpl_demo0001\",\n  \"status\": \"active\",\n  \"strength\": \"soft_preference\"\n}\n```\n",
    "claim": "provenance receipt"
  },
  {
    "label": "session_receipt",
    "method": "GET",
    "path": "/skills/skill_demo0001/session-export.md",
    "request": null,
    "status_code": 200,
    "response": "# Short Product Films Session Receipt\n\nGenerated by canonical backend export.\n\n## Cockpit\n\n- Workspace: Showcase Workspace (ws_demo0001)\n- Project: Citrus Launch (proj_demo0001)\n- Skill: Short Product Films (skill_demo0001)\n- Skill description: Concept prompts for short launch films for a citrus fragrance.\n\n## Latest generated batch\n\n- batch_id: batch_demo0002\n- prompt_count: 3\n- mode: explore\n- diversity_mode: balanced\n\n1. **aligned**\n\nOne unbroken macro: a single bead of condensation swells on the shoulder of the bottle, releases, and tracks straight down through the label, leaving a clear stripe across frosted glass. The pull-back stops with the full bottle centred and the label sharp.\n\n2. **exploratory**\n\nA thumb presses a strip of orange peel until the oil bursts and atomises through a hard side light. The mist settles across the cap and shoulders of the bottle standing beside it; the final beat holds on the bottle, dressed in a fine sheen.\n\n3. **variation**\n\nA drop of oil lands on still water and blooms into a slow citrus-coloured ring. The ripple reaches the base of the bottle standing in the tray, and the surface settles to a mirror with the bottle and its reflection held square in frame.\n\n## Latest batch candidates\n\n1. **cand_demo0004**\n   - status: prompt_generated\n   - prompt_id: prompt_demo0004\n2. **cand_demo0005**\n   - status: prompt_generated\n   - prompt_id: prompt_demo0005\n3. **cand_demo0006**\n   - status: prompt_generated\n   - prompt_id: prompt_demo0006\n\n## Current skill event counts\n\n- **feedback analyzed:** 3\n- **feedback created:** 3\n- **memory proposal accepted:** 4\n- **memory proposal rejected:** 1\n- **prompt batch generated:** 2\n- **prompt template created:** 2\n- **prompt template used:** 2\n\n## Recent current skill events\n\n1. **Used a prompt template**\n   - created_at: 2026-01-01T00:00:27Z\n   - entity_type: prompt_batch\n   - entity_id: batch_demo0002\n2. **Generated a prompt batch**\n   - created_at: 2026-01-01T00:00:28Z\n   - entity_type: prompt_batch\n   - entity_id: batch_demo0002\n3. **Accepted a memory proposal**\n   - created_at: 2026-01-01T00:00:29Z\n   - entity_type: memory_proposal\n   - entity_id: memprop_demo0005\n4. **Analyzed feedback into memory proposals**\n   - created_at: 2026-01-01T00:00:30Z\n   - entity_type: feedback\n   - entity_id: fb_demo0003\n5. **Added feedback**\n   - created_at: 2026-01-01T00:00:31Z\n   - entity_type: feedback\n   - entity_id: fb_demo0003\n6. **Rejected a memory proposal**\n   - created_at: 2026-01-01T00:00:32Z\n   - entity_type: memory_proposal\n   - entity_id: memprop_demo0004\n7. **Accepted a memory proposal**\n   - created_at: 2026-01-01T00:00:33Z\n   - entity_type: memory_proposal\n   - entity_id: memprop_demo0003\n8. **Analyzed feedback into memory proposals**\n   - created_at: 2026-01-01T00:00:34Z\n   - entity_type: feedback\n   - entity_id: fb_demo0002\n9. **Added feedback**\n   - created_at: 2026-01-01T00:00:35Z\n   - entity_type: feedback\n   - entity_id: fb_demo0002\n10. **Accepted a memory proposal**\n   - created_at: 2026-01-01T00:00:36Z\n   - entity_type: memory_proposal\n   - entity_id: memprop_demo0002\n11. **Accepted a memory proposal**\n   - created_at: 2026-01-01T00:00:37Z\n   - entity_type: memory_proposal\n   - entity_id: memprop_demo0001\n12. **Analyzed feedback into memory proposals**\n   - created_at: 2026-01-01T00:00:38Z\n   - entity_type: feedback\n   - entity_id: fb_demo0001\n13. **Added feedback**\n   - created_at: 2026-01-01T00:00:39Z\n   - entity_type: feedback\n   - entity_id: fb_demo0001\n14. **Used a prompt template**\n   - created_at: 2026-01-01T00:00:40Z\n   - entity_type: prompt_batch\n   - entity_id: batch_demo0001\n15. **Generated a prompt batch**\n   - created_at: 2026-01-01T00:00:41Z\n   - entity_type: prompt_batch\n   - entity_id: batch_demo0001\n\n## All persistent activity counts\n\n- **feedback analyzed:** 3\n- **feedback created:** 3\n- **memory proposal accepted:** 4\n- **memory proposal rejected:** 1\n- **prompt batch generated:** 2\n- **prompt template created:** 2\n- **prompt template used:** 2\n\n## Memory ledger\n\n### Ledger summary\n```json\n{\n  \"accepted_memory_count\": 4,\n  \"proposal_count\": 6,\n  \"resolved_node_count\": 54\n}\n```\n\n### Accepted memory\n1. **Lead with tactile material detail rather than general atmosphere.**\n   - id: mem_demo0004\n   - type: style_dna\n   - polarity: preserve\n   - status: active\n2. **Do not stack competing visual tricks in one sixteen-second concept.**\n   - id: mem_demo0003\n   - type: avoid_element\n   - polarity: avoid\n   - status: active\n3. **Keep the product legible in the final beat.**\n   - id: mem_demo0002\n   - type: style_dna\n   - polarity: preserve\n   - status: active\n4. **Organize each concept around a single physical transformation that can actually be shot.**\n   - id: mem_demo0001\n   - type: style_dna\n   - polarity: preserve\n   - status: active\n\n### Memory proposals\n1. **Limit each concept to two on-screen props besides the product.**\n   - id: memprop_demo0006\n   - type: style_dna\n   - polarity: preserve\n   - status: pending\n   - confidence: 0.44\n2. **Lead with tactile material detail rather than general atmosphere.**\n   - id: memprop_demo0005\n   - type: style_dna\n   - polarity: preserve\n   - status: accepted\n   - confidence: 0.85\n3. **Avoid amber and green palettes.**\n   - id: memprop_demo0004\n   - type: avoid_element\n   - polarity: avoid\n   - status: rejected\n   - confidence: 0.52\n4. **Do not stack competing visual tricks in one sixteen-second concept.**\n   - id: memprop_demo0003\n   - type: avoid_element\n   - polarity: avoid\n   - status: accepted\n   - confidence: 0.9\n5. **Keep the product legible in the final beat.**\n   - id: memprop_demo0002\n   - type: style_dna\n   - polarity: preserve\n   - status: accepted\n   - confidence: 0.74\n6. **Organize each concept around a single physical transformation that can actually be shot.**\n   - id: memprop_demo0001\n   - type: style_dna\n   - polarity: preserve\n   - status: accepted\n   - confidence: 0.89\n\n## Memory lifecycle\n\n1. **mem_demo0004**\n   - status: active\n2. **mem_demo0003**\n   - status: active\n3. **mem_demo0002**\n   - status: active\n4. **mem_demo0001**\n   - status: active\n\n## Memory timeline\n\n1. **feedback_added**\n   - kind: feedback_added\n   - at: 2026-01-01 00:00:28\n2. **proposal_created**\n   - kind: proposal_created\n   - at: 2026-01-01 00:00:31\n3. **proposal_created**\n   - kind: proposal_created\n   - at: 2026-01-01 00:00:33\n4. **proposal_accepted**\n   - kind: proposal_accepted\n   - at: 2026-01-01 00:00:38\n5. **memory_activated**\n   - kind: memory_activated\n   - at: 2026-01-01 00:00:38\n6. **receipt_available**\n   - kind: receipt_available\n   - at: 2026-01-01 00:00:38\n7. **proposal_accepted**\n   - kind: proposal_accepted\n   - at: 2026-01-01 00:00:44\n8. **memory_activated**\n   - kind: memory_activated\n   - at: 2026-01-01 00:00:44\n9. **receipt_available**\n   - kind: receipt_available\n   - at: 2026-01-01 00:00:44\n10. **feedback_added**\n   - kind: feedback_added\n   - at: 2026-01-01 00:00:48\n11. **proposal_created**\n   - kind: proposal_created\n   - at: 2026-01-01 00:00:51\n12. **proposal_created**\n   - kind: proposal_created\n   - at: 2026-01-01 00:00:53\n13. **proposal_rejected**\n   - kind: proposal_rejected\n   - at: 2026-01-01 00:00:53\n14. **proposal_accepted**\n   - kind: proposal_accepted\n   - at: 2026-01-01 00:00:58\n15. **memory_activated**\n   - kind: memory_activated\n   - at: 2026-01-01 00:00:58\n16. **receipt_available**\n   - kind: receipt_available\n   - at: 2026-01-01 00:00:58\n17. **feedback_added**\n   - kind: feedback_added\n   - at: 2026-01-01 00:01:05\n18. **proposal_created**\n   - kind: proposal_created\n   - at: 2026-01-01 00:01:08\n19. **proposal_created**\n   - kind: proposal_created\n   - at: 2026-01-01 00:01:10\n20. **proposal_accepted**\n   - kind: proposal_accepted\n   - at: 2026-01-01 00:01:15\n21. **memory_activated**\n   - kind: memory_activated\n   - at: 2026-01-01 00:01:15\n22. **receipt_available**\n   - kind: receipt_available\n   - at: 2026-01-01 00:01:15\n\n## Latest influence trace\n\n1. **mem_demo0001**\n   - type: style_dna\n   - polarity: preserve\n   - content: Organize each concept around a single physical transformation that can actually be shot.\n   - strength: soft_preference\n   - status: active\n2. **mem_demo0002**\n   - type: style_dna\n   - polarity: preserve\n   - content: Keep the product legible in the final beat.\n   - strength: soft_preference\n   - status: active\n3. **mem_demo0003**\n   - type: avoid_element\n   - polarity: avoid\n   - content: Do not stack competing visual tricks in one sixteen-second concept.\n   - strength: soft_preference\n   - status: active\n4. **mem_demo0004**\n   - type: style_dna\n   - polarity: preserve\n   - content: Lead with tactile material detail rather than general atmosphere.\n   - strength: soft_preference\n   - status: active\n\n## Raw fetch appendix\n\n### skill session recap\n- path: `/skills/skill_demo0001/session-recap?limit=200`\n- status: ok\n\n```json\n{\n  \"events\": [\n    {\n      \"created_at\": \"2026-01-01T00:00:27Z\",\n      \"entity_id\": \"batch_demo0002\",\n      \"entity_type\": \"prompt_batch\",\n      \"event_type\": \"prompt_template_used\",\n      \"id\": \"sevt_demo0001\",\n      \"payload\": {\n        \"recorded_from\": \"PromptBatchTable.after_flush\",\n        \"source\": \"backend-native\",\n        \"template_id\": \"tmpl_demo0001\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Used a prompt template\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:28Z\",\n      \"entity_id\": \"batch_demo0002\",\n      \"entity_type\": \"prompt_batch\",\n      \"event_type\": \"prompt_batch_generated\",\n      \"id\": \"sevt_demo0002\",\n      \"payload\": {\n        \"diversity_mode\": \"balanced\",\n        \"mode\": \"explore\",\n        \"recorded_from\": \"PromptBatchTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Generated a prompt batch\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:29Z\",\n      \"entity_id\": \"memprop_demo0005\",\n      \"entity_type\": \"memory_proposal\",\n      \"event_type\": \"memory_proposal_accepted\",\n      \"id\": \"sevt_demo0003\",\n      \"payload\": {\n        \"memory_id\": \"mem_demo0004\",\n        \"recorded_from\": \"SkillMemoryItemTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Accepted a memory proposal\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:30Z\",\n      \"entity_id\": \"fb_demo0003\",\n      \"entity_type\": \"feedback\",\n      \"event_type\": \"feedback_analyzed\",\n      \"id\": \"sevt_demo0004\",\n      \"payload\": {\n        \"proposal_id\": \"memprop_demo0005\",\n        \"recorded_from\": \"MemoryUpdateProposalTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Analyzed feedback into memory proposals\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:31Z\",\n      \"entity_id\": \"fb_demo0003\",\n      \"entity_type\": \"feedback\",\n      \"event_type\": \"feedback_created\",\n      \"id\": \"sevt_demo0005\",\n      \"payload\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0003\",\n        \"prompt_id\": \"prompt_demo0003\",\n        \"recorded_from\": \"FeedbackTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Added feedback\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:32Z\",\n      \"entity_id\": \"memprop_demo0004\",\n      \"entity_type\": \"memory_proposal\",\n      \"event_type\": \"memory_proposal_rejected\",\n      \"id\": \"sevt_demo0006\",\n      \"payload\": {\n        \"previous_status\": \"pending\",\n        \"recorded_from\": \"MemoryUpdateProposalTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Rejected a memory proposal\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:33Z\",\n      \"entity_id\": \"memprop_demo0003\",\n      \"entity_type\": \"memory_proposal\",\n      \"event_type\": \"memory_proposal_accepted\",\n      \"id\": \"sevt_demo0007\",\n      \"payload\": {\n        \"memory_id\": \"mem_demo0003\",\n        \"recorded_from\": \"SkillMemoryItemTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Accepted a memory proposal\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:34Z\",\n      \"entity_id\": \"fb_demo0002\",\n      \"entity_type\": \"feedback\",\n      \"event_type\": \"feedback_analyzed\",\n      \"id\": \"sevt_demo0008\",\n      \"payload\": {\n        \"proposal_id\": \"memprop_demo0003\",\n        \"recorded_from\": \"MemoryUpdateProposalTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Analyzed feedback into memory proposals\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:35Z\",\n      \"entity_id\": \"fb_demo0002\",\n      \"entity_type\": \"feedback\",\n      \"event_type\": \"feedback_created\",\n      \"id\": \"sevt_demo0009\",\n      \"payload\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0002\",\n        \"prompt_id\": \"prompt_demo0002\",\n        \"recorded_from\": \"FeedbackTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Added feedback\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:36Z\",\n      \"entity_id\": \"memprop_demo0002\",\n      \"entity_type\": \"memory_proposal\",\n      \"event_type\": \"memory_proposal_accepted\",\n      \"id\": \"sevt_demo0010\",\n      \"payload\": {\n        \"memory_id\": \"mem_demo0002\",\n        \"recorded_from\": \"SkillMemoryItemTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Accepted a memory proposal\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:37Z\",\n      \"entity_id\": \"memprop_demo0001\",\n      \"entity_type\": \"memory_proposal\",\n      \"event_type\": \"memory_proposal_accepted\",\n      \"id\": \"sevt_demo0011\",\n      \"payload\": {\n        \"memory_id\": \"mem_demo0001\",\n        \"recorded_from\": \"SkillMemoryItemTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Accepted a memory proposal\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:38Z\",\n      \"entity_id\": \"fb_demo0001\",\n      \"entity_type\": \"feedback\",\n      \"event_type\": \"feedback_analyzed\",\n      \"id\": \"sevt_demo0012\",\n      \"payload\": {\n        \"proposal_id\": \"memprop_demo0001\",\n        \"recorded_from\": \"MemoryUpdateProposalTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Analyzed feedback into memory proposals\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:39Z\",\n      \"entity_id\": \"fb_demo0001\",\n      \"entity_type\": \"feedback\",\n      \"event_type\": \"feedback_created\",\n      \"id\": \"sevt_demo0013\",\n      \"payload\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0001\",\n        \"prompt_id\": \"prompt_demo0001\",\n        \"recorded_from\": \"FeedbackTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Added feedback\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:40Z\",\n      \"entity_id\": \"batch_demo0001\",\n      \"entity_type\": \"prompt_batch\",\n      \"event_type\": \"prompt_template_used\",\n      \"id\": \"sevt_demo0014\",\n      \"payload\": {\n        \"recorded_from\": \"PromptBatchTable.after_flush\",\n        \"source\": \"backend-native\",\n        \"template_id\": \"tmpl_demo0001\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Used a prompt template\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:41Z\",\n      \"entity_id\": \"batch_demo0001\",\n      \"entity_type\": \"prompt_batch\",\n      \"event_type\": \"prompt_batch_generated\",\n      \"id\": \"sevt_demo0015\",\n      \"payload\": {\n        \"diversity_mode\": \"balanced\",\n        \"mode\": \"explore\",\n        \"recorded_from\": \"PromptBatchTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Generated a prompt batch\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:42Z\",\n      \"entity_id\": \"tmpl_demo0001\",\n      \"entity_type\": \"prompt_template\",\n      \"event_type\": \"prompt_template_created\",\n      \"id\": \"sevt_demo0016\",\n      \"payload\": {\n        \"prompt_type\": \"candidate_generation\",\n        \"recorded_from\": \"PromptTemplateTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": null,\n      \"session_run_id\": null,\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Created a prompt template\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:43Z\",\n      \"entity_id\": \"tmpl_demo0002\",\n      \"entity_type\": \"prompt_template\",\n      \"event_type\": \"prompt_template_created\",\n      \"id\": \"sevt_demo0017\",\n      \"payload\": {\n        \"prompt_type\": \"meta_prompt\",\n        \"recorded_from\": \"PromptTemplateTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": null,\n      \"session_run_id\": null,\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Created a prompt template\",\n      \"workspace_id\": \"ws_demo0001\"\n    }\n  ],\n  \"skill_id\": \"skill_demo0001\",\n  \"summary\": {\n    \"event_counts\": {\n      \"feedback_analyzed\": 3,\n      \"feedback_created\": 3,\n      \"memory_proposal_accepted\": 4,\n      \"memory_proposal_rejected\": 1,\n      \"prompt_batch_generated\": 2,\n      \"prompt_template_created\": 2,\n      \"prompt_template_used\": 2\n    },\n    \"latest_event_at\": \"2026-01-01T00:00:27Z\",\n    \"total_events\": 17\n  }\n}\n```\n\n### global session recap\n- path: `/session-recap?limit=200`\n- status: ok\n\n```json\n{\n  \"events\": [\n    {\n      \"created_at\": \"2026-01-01T00:00:27Z\",\n      \"entity_id\": \"batch_demo0002\",\n      \"entity_type\": \"prompt_batch\",\n      \"event_type\": \"prompt_template_used\",\n      \"id\": \"sevt_demo0001\",\n      \"payload\": {\n        \"recorded_from\": \"PromptBatchTable.after_flush\",\n        \"source\": \"backend-native\",\n        \"template_id\": \"tmpl_demo0001\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Used a prompt template\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:28Z\",\n      \"entity_id\": \"batch_demo0002\",\n      \"entity_type\": \"prompt_batch\",\n      \"event_type\": \"prompt_batch_generated\",\n      \"id\": \"sevt_demo0002\",\n      \"payload\": {\n        \"diversity_mode\": \"balanced\",\n        \"mode\": \"explore\",\n        \"recorded_from\": \"PromptBatchTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Generated a prompt batch\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:29Z\",\n      \"entity_id\": \"memprop_demo0005\",\n      \"entity_type\": \"memory_proposal\",\n      \"event_type\": \"memory_proposal_accepted\",\n      \"id\": \"sevt_demo0003\",\n      \"payload\": {\n        \"memory_id\": \"mem_demo0004\",\n        \"recorded_from\": \"SkillMemoryItemTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Accepted a memory proposal\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:30Z\",\n      \"entity_id\": \"fb_demo0003\",\n      \"entity_type\": \"feedback\",\n      \"event_type\": \"feedback_analyzed\",\n      \"id\": \"sevt_demo0004\",\n      \"payload\": {\n        \"proposal_id\": \"memprop_demo0005\",\n        \"recorded_from\": \"MemoryUpdateProposalTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Analyzed feedback into memory proposals\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:31Z\",\n      \"entity_id\": \"fb_demo0003\",\n      \"entity_type\": \"feedback\",\n      \"event_type\": \"feedback_created\",\n      \"id\": \"sevt_demo0005\",\n      \"payload\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0003\",\n        \"prompt_id\": \"prompt_demo0003\",\n        \"recorded_from\": \"FeedbackTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Added feedback\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:32Z\",\n      \"entity_id\": \"memprop_demo0004\",\n      \"entity_type\": \"memory_proposal\",\n      \"event_type\": \"memory_proposal_rejected\",\n      \"id\": \"sevt_demo0006\",\n      \"payload\": {\n        \"previous_status\": \"pending\",\n        \"recorded_from\": \"MemoryUpdateProposalTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Rejected a memory proposal\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:33Z\",\n      \"entity_id\": \"memprop_demo0003\",\n      \"entity_type\": \"memory_proposal\",\n      \"event_type\": \"memory_proposal_accepted\",\n      \"id\": \"sevt_demo0007\",\n      \"payload\": {\n        \"memory_id\": \"mem_demo0003\",\n        \"recorded_from\": \"SkillMemoryItemTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Accepted a memory proposal\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:34Z\",\n      \"entity_id\": \"fb_demo0002\",\n      \"entity_type\": \"feedback\",\n      \"event_type\": \"feedback_analyzed\",\n      \"id\": \"sevt_demo0008\",\n      \"payload\": {\n        \"proposal_id\": \"memprop_demo0003\",\n        \"recorded_from\": \"MemoryUpdateProposalTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Analyzed feedback into memory proposals\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:35Z\",\n      \"entity_id\": \"fb_demo0002\",\n      \"entity_type\": \"feedback\",\n      \"event_type\": \"feedback_created\",\n      \"id\": \"sevt_demo0009\",\n      \"payload\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0002\",\n        \"prompt_id\": \"prompt_demo0002\",\n        \"recorded_from\": \"FeedbackTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Added feedback\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:36Z\",\n      \"entity_id\": \"memprop_demo0002\",\n      \"entity_type\": \"memory_proposal\",\n      \"event_type\": \"memory_proposal_accepted\",\n      \"id\": \"sevt_demo0010\",\n      \"payload\": {\n        \"memory_id\": \"mem_demo0002\",\n        \"recorded_from\": \"SkillMemoryItemTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Accepted a memory proposal\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:37Z\",\n      \"entity_id\": \"memprop_demo0001\",\n      \"entity_type\": \"memory_proposal\",\n      \"event_type\": \"memory_proposal_accepted\",\n      \"id\": \"sevt_demo0011\",\n      \"payload\": {\n        \"memory_id\": \"mem_demo0001\",\n        \"recorded_from\": \"SkillMemoryItemTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Accepted a memory proposal\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:38Z\",\n      \"entity_id\": \"fb_demo0001\",\n      \"entity_type\": \"feedback\",\n      \"event_type\": \"feedback_analyzed\",\n      \"id\": \"sevt_demo0012\",\n      \"payload\": {\n        \"proposal_id\": \"memprop_demo0001\",\n        \"recorded_from\": \"MemoryUpdateProposalTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Analyzed feedback into memory proposals\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:39Z\",\n      \"entity_id\": \"fb_demo0001\",\n      \"entity_type\": \"feedback\",\n      \"event_type\": \"feedback_created\",\n      \"id\": \"sevt_demo0013\",\n      \"payload\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0001\",\n        \"prompt_id\": \"prompt_demo0001\",\n        \"recorded_from\": \"FeedbackTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Added feedback\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:40Z\",\n      \"entity_id\": \"batch_demo0001\",\n      \"entity_type\": \"prompt_batch\",\n      \"event_type\": \"prompt_template_used\",\n      \"id\": \"sevt_demo0014\",\n      \"payload\": {\n        \"recorded_from\": \"PromptBatchTable.after_flush\",\n        \"source\": \"backend-native\",\n        \"template_id\": \"tmpl_demo0001\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Used a prompt template\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:41Z\",\n      \"entity_id\": \"batch_demo0001\",\n      \"entity_type\": \"prompt_batch\",\n      \"event_type\": \"prompt_batch_generated\",\n      \"id\": \"sevt_demo0015\",\n      \"payload\": {\n        \"diversity_mode\": \"balanced\",\n        \"mode\": \"explore\",\n        \"recorded_from\": \"PromptBatchTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": \"proj_demo0001\",\n      \"session_run_id\": \"srun_demo0001\",\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Generated a prompt batch\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:42Z\",\n      \"entity_id\": \"tmpl_demo0001\",\n      \"entity_type\": \"prompt_template\",\n      \"event_type\": \"prompt_template_created\",\n      \"id\": \"sevt_demo0016\",\n      \"payload\": {\n        \"prompt_type\": \"candidate_generation\",\n        \"recorded_from\": \"PromptTemplateTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": null,\n      \"session_run_id\": null,\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Created a prompt template\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    {\n      \"created_at\": \"2026-01-01T00:00:43Z\",\n      \"entity_id\": \"tmpl_demo0002\",\n      \"entity_type\": \"prompt_template\",\n      \"event_type\": \"prompt_template_created\",\n      \"id\": \"sevt_demo0017\",\n      \"payload\": {\n        \"prompt_type\": \"meta_prompt\",\n        \"recorded_from\": \"PromptTemplateTable.after_flush\",\n        \"source\": \"backend-native\"\n      },\n      \"project_id\": null,\n      \"session_run_id\": null,\n      \"skill_id\": \"skill_demo0001\",\n      \"summary\": \"Created a prompt template\",\n      \"workspace_id\": \"ws_demo0001\"\n    }\n  ],\n  \"skill_id\": null,\n  \"summary\": {\n    \"event_counts\": {\n      \"feedback_analyzed\": 3,\n      \"feedback_created\": 3,\n      \"memory_proposal_accepted\": 4,\n      \"memory_proposal_rejected\": 1,\n      \"prompt_batch_generated\": 2,\n      \"prompt_template_created\": 2,\n      \"prompt_template_used\": 2\n    },\n    \"latest_event_at\": \"2026-01-01T00:00:27Z\",\n    \"total_events\": 17\n  }\n}\n```\n\n### memory ledger\n- path: `/skills/skill_demo0001/memory-ledger`\n- status: ok\n\n```json\n{\n  \"accepted_memory\": [\n    {\n      \"memory\": {\n        \"fields\": {\n          \"content\": \"Lead with tactile material detail rather than general atmosphere.\",\n          \"copy_policy\": \"reference_only\",\n          \"created_at\": \"2026-01-01 00:01:15\",\n          \"id\": \"mem_demo0004\",\n          \"memory_type\": \"style_dna\",\n          \"negative_fragment\": null,\n          \"polarity\": \"preserve\",\n          \"project_id\": \"proj_demo0001\",\n          \"prompt_fragment\": \"Lead with tactile material detail rather than general atmosphere.\",\n          \"scope\": \"skill\",\n          \"skill_id\": \"skill_demo0001\",\n          \"source_artifact_id\": null,\n          \"source_candidate_id\": \"cand_demo0003\",\n          \"source_feedback_id\": \"fb_demo0003\",\n          \"source_prompt_batch_id\": \"batch_demo0001\",\n          \"source_prompt_id\": \"prompt_demo0003\",\n          \"source_proposal_id\": \"memprop_demo0005\",\n          \"source_template_id\": \"tmpl_demo0001\",\n          \"status\": \"active\",\n          \"strength\": \"soft_preference\"\n        },\n        \"id\": \"mem_demo0004\",\n        \"kind\": \"memory\"\n      },\n      \"resolved\": {\n        \"artifact\": null,\n        \"candidate\": {\n          \"fields\": {\n            \"artifact_id\": null,\n            \"created_at\": \"2026-01-01 00:00:17\",\n            \"id\": \"cand_demo0003\",\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_batch_id\": \"batch_demo0001\",\n            \"prompt_id\": \"prompt_demo0003\",\n            \"status\": \"feedback_added\",\n            \"workspace_id\": \"ws_demo0001\"\n          },\n          \"id\": \"cand_demo0003\",\n          \"kind\": \"candidate\"\n        },\n        \"feedback\": {\n          \"fields\": {\n            \"artifact_id\": null,\n            \"candidate_id\": \"cand_demo0003\",\n            \"created_at\": \"2026-01-01 00:01:05\",\n            \"id\": \"fb_demo0003\",\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_id\": \"prompt_demo0003\",\n            \"skill_id\": \"skill_demo0001\",\n            \"user_text\": \"The crawling sunlight is a real transformation and the creased linen is the kind of material detail I want. The problem is the bottle is just one more prop on a busy table -- by the last beat I still cannot see the product.\",\n            \"workspace_id\": \"ws_demo0001\"\n          },\n          \"id\": \"fb_demo0003\",\n          \"kind\": \"feedback\"\n        },\n        \"prompt\": {\n          \"fields\": {\n            \"created_at\": \"2026-01-01 00:00:23\",\n            \"id\": \"prompt_demo0003\",\n            \"parent_prompt_id\": null,\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_batch_id\": \"batch_demo0001\",\n            \"skill_id\": \"skill_demo0001\",\n            \"structured_fields_json\": \"{\\\"role\\\": \\\"variation\\\", \\\"index\\\": 3, \\\"brief\\\": \\\"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\\\", \\\"provider\\\": \\\"mock\\\", \\\"provider_model\\\": \\\"mock-prompt-generator\\\", \\\"target_model\\\": \\\"generic\\\", \\\"used_memory_ids\\\": [], \\\"used_memory\\\": [], \\\"reference_image\\\": null}\",\n            \"template_id\": \"tmpl_demo0001\",\n            \"text\": \"A cleared dinner table after guests have gone: linen creased, two glasses, a bowl of clementines. Over sixteen seconds the low sun crawls across the cloth, the peel curls tighten, and the room warms from grey to gold.\",\n            \"version_number\": 1\n          },\n          \"id\": \"prompt_demo0003\",\n          \"kind\": \"prompt\"\n        },\n        \"prompt_batch\": {\n          \"fields\": {\n            \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\",\n            \"created_at\": \"2026-01-01 00:00:19\",\n            \"diversity_mode\": \"balanced\",\n            \"generation_plan_json\": \"{\\\"provider\\\": \\\"mock\\\", \\\"mode\\\": \\\"explore\\\", \\\"diversity_mode\\\": \\\"balanced\\\", \\\"roles\\\": [\\\"aligned\\\", \\\"exploratory\\\", \\\"variation\\\"], \\\"n\\\": 3, \\\"uses_accepted_memory\\\": false, \\\"template_id\\\": \\\"tmpl_demo0001\\\", \\\"template_name\\\": \\\"Default candidate prompt template\\\", \\\"meta_template_id\\\": \\\"tmpl_demo0002\\\", \\\"meta_template_name\\\": \\\"Default meta-prompt template\\\", \\\"target_model\\\": \\\"generic\\\", \\\"memory_inclusion\\\": \\\"all\\\", \\\"selected_memory_ids\\\": [], \\\"reference_image\\\": null, \\\"recipe\\\": {\\\"target_model\\\": \\\"generic\\\", \\\"meta_template_id\\\": \\\"tmpl_demo0002\\\", \\\"meta_template_updated_at\\\": \\\"2026-01-01T00:00:00Z\\\", \\\"candidate_template_id\\\": \\\"tmpl_demo0001\\\", \\\"candidate_template_updated_at\\\": \\\"2026-01-01T00:00:01Z\\\", \\\"brief\\\": \\\"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\\\", \\\"mode\\\": \\\"explore\\\", \\\"diversity_mode\\\": \\\"balanced\\\", \\\"variable_values\\\": {}, \\\"reference_image\\\": null}, \\\"memory_influence_trace\\\": {\\\"trace_version\\\": 1, \\\"attribution_scope\\\": \\\"prompt_batch\\\", \\\"attribution_note\\\": \\\"Batch-level trace of active accepted memories available to generate-next. This is not per-token or per-candidate attribution.\\\", \\\"active_memory_count\\\": 0, \\\"memory_refs\\\": []}, \\\"applied_memory_refs\\\": []}\",\n            \"id\": \"batch_demo0001\",\n            \"mode\": \"explore\",\n            \"project_id\": \"proj_demo0001\",\n            \"skill_id\": \"skill_demo0001\"\n          },\n          \"id\": \"batch_demo0001\",\n          \"kind\": \"prompt_batch\"\n        },\n        \"proposal\": {\n          \"fields\": {\n            \"confidence\": \"0.85\",\n            \"content\": \"Lead with tactile material detail rather than general atmosphere.\",\n            \"created_at\": \"2026-01-01 00:01:08\",\n            \"feedback_id\": \"fb_demo0003\",\n            \"id\": \"memprop_demo0005\",\n            \"memory_type\": \"style_dna\",\n            \"polarity\": \"preserve\",\n            \"project_id\": \"proj_demo0001\",\n            \"proposed_action\": \"preserve\",\n            \"rationale\": \"The judgment praised the creased linen as the wanted material detail.\",\n            \"scope\": \"skill\",\n            \"skill_id\": \"skill_demo0001\",\n            \"source_artifact_id\": null,\n            \"source_candidate_id\": \"cand_demo0003\",\n            \"source_prompt_batch_id\": \"batch_demo0001\",\n            \"source_prompt_id\": \"prompt_demo0003\",\n            \"source_template_id\": \"tmpl_demo0001\",\n            \"status\": \"accepted\"\n          },\n          \"id\": \"memprop_demo0005\",\n          \"kind\": \"proposal\"\n        },\n        \"template\": {\n          \"fields\": {\n            \"created_at\": \"2026-01-01 00:00:10\",\n            \"description\": \"System-created default candidate prompt template.\",\n            \"fields_json\": \"{}\",\n            \"id\": \"tmpl_demo0001\",\n            \"model_target\": \"generic\",\n            \"name\": \"Default candidate prompt template\",\n            \"prompt_type\": \"candidate_generation\",\n            \"skill_id\": \"skill_demo0001\",\n            \"template_text\": \"A single self-contained prompt for {TARGET_MODEL}.\\n\\nIt must:\\n- commit to one concrete subject and one clear point of view\\n- make the style constraints explicit\\n- name what to avoid (negative constraints)\",\n            \"variables_json\": \"[\\\"TARGET_MODEL\\\"]\"\n          },\n          \"id\": \"tmpl_demo0001\",\n          \"kind\": \"template\"\n        }\n      },\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0003\",\n        \"feedback_id\": \"fb_demo0003\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0003\",\n        \"proposal_id\": \"memprop_demo0005\",\n        \"template_id\": \"tmpl_demo0001\"\n      }\n    },\n    {\n      \"memory\": {\n        \"fields\": {\n          \"content\": \"Do not stack competing visual tricks in one sixteen-second concept.\",\n          \"copy_policy\": \"reference_only\",\n          \"created_at\": \"2026-01-01 00:00:58\",\n          \"id\": \"mem_demo0003\",\n          \"memory_type\": \"avoid_element\",\n          \"negative_fragment\": \"Do not stack competing visual tricks in one sixteen-second concept.\",\n          \"polarity\": \"avoid\",\n          \"project_id\": \"proj_demo0001\",\n          \"prompt_fragment\": null,\n          \"scope\": \"skill\",\n          \"skill_id\": \"skill_demo0001\",\n          \"source_artifact_id\": null,\n          \"source_candidate_id\": \"cand_demo0002\",\n          \"source_feedback_id\": \"fb_demo0002\",\n          \"source_prompt_batch_id\": \"batch_demo0001\",\n          \"source_prompt_id\": \"prompt_demo0002\",\n          \"source_proposal_id\": \"memprop_demo0003\",\n          \"source_template_id\": \"tmpl_demo0001\",\n          \"status\": \"active\",\n          \"strength\": \"soft_preference\"\n        },\n        \"id\": \"mem_demo0003\",\n        \"kind\": \"memory\"\n      },\n      \"resolved\": {\n        \"artifact\": null,\n        \"candidate\": {\n          \"fields\": {\n            \"artifact_id\": null,\n            \"created_at\": \"2026-01-01 00:00:15\",\n            \"id\": \"cand_demo0002\",\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_batch_id\": \"batch_demo0001\",\n            \"prompt_id\": \"prompt_demo0002\",\n            \"status\": \"feedback_added\",\n            \"workspace_id\": \"ws_demo0001\"\n          },\n          \"id\": \"cand_demo0002\",\n          \"kind\": \"candidate\"\n        },\n        \"feedback\": {\n          \"fields\": {\n            \"artifact_id\": null,\n            \"candidate_id\": \"cand_demo0002\",\n            \"created_at\": \"2026-01-01 00:00:48\",\n            \"id\": \"fb_demo0002\",\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_id\": \"prompt_demo0002\",\n            \"skill_id\": \"skill_demo0001\",\n            \"user_text\": \"Too many tricks competing: rotating bars, a spinning wedge, a leaf shadow, and a negative flip in sixteen seconds. Pick one. The amber and green is also generic set dressing rather than anything you can feel.\",\n            \"workspace_id\": \"ws_demo0001\"\n          },\n          \"id\": \"fb_demo0002\",\n          \"kind\": \"feedback\"\n        },\n        \"prompt\": {\n          \"fields\": {\n            \"created_at\": \"2026-01-01 00:00:22\",\n            \"id\": \"prompt_demo0002\",\n            \"parent_prompt_id\": null,\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_batch_id\": \"batch_demo0001\",\n            \"skill_id\": \"skill_demo0001\",\n            \"structured_fields_json\": \"{\\\"role\\\": \\\"exploratory\\\", \\\"index\\\": 2, \\\"brief\\\": \\\"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\\\", \\\"provider\\\": \\\"mock\\\", \\\"provider_model\\\": \\\"mock-prompt-generator\\\", \\\"target_model\\\": \\\"generic\\\", \\\"used_memory_ids\\\": [], \\\"used_memory\\\": [], \\\"reference_image\\\": null}\",\n            \"template_id\": \"tmpl_demo0001\",\n            \"text\": \"Hard sunlight through a slatted blind rakes across a seamless backdrop in amber and deep green. Bars of light rotate, a wedge of grapefruit spins, the shadow of a leaf sweeps past, and the palette flips to negative on the final beat.\",\n            \"version_number\": 1\n          },\n          \"id\": \"prompt_demo0002\",\n          \"kind\": \"prompt\"\n        },\n        \"prompt_batch\": {\n          \"fields\": {\n            \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\",\n            \"created_at\": \"2026-01-01 00:00:19\",\n            \"diversity_mode\": \"balanced\",\n            \"generation_plan_json\": \"{\\\"provider\\\": \\\"mock\\\", \\\"mode\\\": \\\"explore\\\", \\\"diversity_mode\\\": \\\"balanced\\\", \\\"roles\\\": [\\\"aligned\\\", \\\"exploratory\\\", \\\"variation\\\"], \\\"n\\\": 3, \\\"uses_accepted_memory\\\": false, \\\"template_id\\\": \\\"tmpl_demo0001\\\", \\\"template_name\\\": \\\"Default candidate prompt template\\\", \\\"meta_template_id\\\": \\\"tmpl_demo0002\\\", \\\"meta_template_name\\\": \\\"Default meta-prompt template\\\", \\\"target_model\\\": \\\"generic\\\", \\\"memory_inclusion\\\": \\\"all\\\", \\\"selected_memory_ids\\\": [], \\\"reference_image\\\": null, \\\"recipe\\\": {\\\"target_model\\\": \\\"generic\\\", \\\"meta_template_id\\\": \\\"tmpl_demo0002\\\", \\\"meta_template_updated_at\\\": \\\"2026-01-01T00:00:00Z\\\", \\\"candidate_template_id\\\": \\\"tmpl_demo0001\\\", \\\"candidate_template_updated_at\\\": \\\"2026-01-01T00:00:01Z\\\", \\\"brief\\\": \\\"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\\\", \\\"mode\\\": \\\"explore\\\", \\\"diversity_mode\\\": \\\"balanced\\\", \\\"variable_values\\\": {}, \\\"reference_image\\\": null}, \\\"memory_influence_trace\\\": {\\\"trace_version\\\": 1, \\\"attribution_scope\\\": \\\"prompt_batch\\\", \\\"attribution_note\\\": \\\"Batch-level trace of active accepted memories available to generate-next. This is not per-token or per-candidate attribution.\\\", \\\"active_memory_count\\\": 0, \\\"memory_refs\\\": []}, \\\"applied_memory_refs\\\": []}\",\n            \"id\": \"batch_demo0001\",\n            \"mode\": \"explore\",\n            \"project_id\": \"proj_demo0001\",\n            \"skill_id\": \"skill_demo0001\"\n          },\n          \"id\": \"batch_demo0001\",\n          \"kind\": \"prompt_batch\"\n        },\n        \"proposal\": {\n          \"fields\": {\n            \"confidence\": \"0.9\",\n            \"content\": \"Do not stack competing visual tricks in one sixteen-second concept.\",\n            \"created_at\": \"2026-01-01 00:00:51\",\n            \"feedback_id\": \"fb_demo0002\",\n            \"id\": \"memprop_demo0003\",\n            \"memory_type\": \"avoid_element\",\n            \"polarity\": \"avoid\",\n            \"project_id\": \"proj_demo0001\",\n            \"proposed_action\": \"avoid\",\n            \"rationale\": \"The judgment listed four effects competing inside one film.\",\n            \"scope\": \"skill\",\n            \"skill_id\": \"skill_demo0001\",\n            \"source_artifact_id\": null,\n            \"source_candidate_id\": \"cand_demo0002\",\n            \"source_prompt_batch_id\": \"batch_demo0001\",\n            \"source_prompt_id\": \"prompt_demo0002\",\n            \"source_template_id\": \"tmpl_demo0001\",\n            \"status\": \"accepted\"\n          },\n          \"id\": \"memprop_demo0003\",\n          \"kind\": \"proposal\"\n        },\n        \"template\": {\n          \"fields\": {\n            \"created_at\": \"2026-01-01 00:00:10\",\n            \"description\": \"System-created default candidate prompt template.\",\n            \"fields_json\": \"{}\",\n            \"id\": \"tmpl_demo0001\",\n            \"model_target\": \"generic\",\n            \"name\": \"Default candidate prompt template\",\n            \"prompt_type\": \"candidate_generation\",\n            \"skill_id\": \"skill_demo0001\",\n            \"template_text\": \"A single self-contained prompt for {TARGET_MODEL}.\\n\\nIt must:\\n- commit to one concrete subject and one clear point of view\\n- make the style constraints explicit\\n- name what to avoid (negative constraints)\",\n            \"variables_json\": \"[\\\"TARGET_MODEL\\\"]\"\n          },\n          \"id\": \"tmpl_demo0001\",\n          \"kind\": \"template\"\n        }\n      },\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0002\",\n        \"feedback_id\": \"fb_demo0002\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0002\",\n        \"proposal_id\": \"memprop_demo0003\",\n        \"template_id\": \"tmpl_demo0001\"\n      }\n    },\n    {\n      \"memory\": {\n        \"fields\": {\n          \"content\": \"Keep the product legible in the final beat.\",\n          \"copy_policy\": \"reference_only\",\n          \"created_at\": \"2026-01-01 00:00:44\",\n          \"id\": \"mem_demo0002\",\n          \"memory_type\": \"style_dna\",\n          \"negative_fragment\": null,\n          \"polarity\": \"preserve\",\n          \"project_id\": \"proj_demo0001\",\n          \"prompt_fragment\": \"Keep the product legible in the final beat.\",\n          \"scope\": \"skill\",\n          \"skill_id\": \"skill_demo0001\",\n          \"source_artifact_id\": null,\n          \"source_candidate_id\": \"cand_demo0001\",\n          \"source_feedback_id\": \"fb_demo0001\",\n          \"source_prompt_batch_id\": \"batch_demo0001\",\n          \"source_prompt_id\": \"prompt_demo0001\",\n          \"source_proposal_id\": \"memprop_demo0002\",\n          \"source_template_id\": \"tmpl_demo0001\",\n          \"status\": \"active\",\n          \"strength\": \"soft_preference\"\n        },\n        \"id\": \"mem_demo0002\",\n        \"kind\": \"memory\"\n      },\n      \"resolved\": {\n        \"artifact\": null,\n        \"candidate\": {\n          \"fields\": {\n            \"artifact_id\": null,\n            \"created_at\": \"2026-01-01 00:00:13\",\n            \"id\": \"cand_demo0001\",\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_batch_id\": \"batch_demo0001\",\n            \"prompt_id\": \"prompt_demo0001\",\n            \"status\": \"feedback_added\",\n            \"workspace_id\": \"ws_demo0001\"\n          },\n          \"id\": \"cand_demo0001\",\n          \"kind\": \"candidate\"\n        },\n        \"feedback\": {\n          \"fields\": {\n            \"artifact_id\": null,\n            \"candidate_id\": \"cand_demo0001\",\n            \"created_at\": \"2026-01-01 00:00:28\",\n            \"id\": \"fb_demo0001\",\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_id\": \"prompt_demo0001\",\n            \"skill_id\": \"skill_demo0001\",\n            \"user_text\": \"The condensation run is the whole idea -- one physical change I can actually shoot, and the beading reads expensive. But the bottle is never legible; I get texture and no product. Keep the transformation, end on the bottle.\",\n            \"workspace_id\": \"ws_demo0001\"\n          },\n          \"id\": \"fb_demo0001\",\n          \"kind\": \"feedback\"\n        },\n        \"prompt\": {\n          \"fields\": {\n            \"created_at\": \"2026-01-01 00:00:21\",\n            \"id\": \"prompt_demo0001\",\n            \"parent_prompt_id\": null,\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_batch_id\": \"batch_demo0001\",\n            \"skill_id\": \"skill_demo0001\",\n            \"structured_fields_json\": \"{\\\"role\\\": \\\"aligned\\\", \\\"index\\\": 1, \\\"brief\\\": \\\"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\\\", \\\"provider\\\": \\\"mock\\\", \\\"provider_model\\\": \\\"mock-prompt-generator\\\", \\\"target_model\\\": \\\"generic\\\", \\\"used_memory_ids\\\": [], \\\"used_memory\\\": [], \\\"reference_image\\\": null}\",\n            \"template_id\": \"tmpl_demo0001\",\n            \"text\": \"Macro on a chilled bottle: condensation beads gather, merge, and run, dragging a clean line down the frosted glass. A thumb of orange peel flexes just off-axis and throws a fine mist across the light. Shallow depth, slow push, cold blue-green key.\",\n            \"version_number\": 1\n          },\n          \"id\": \"prompt_demo0001\",\n          \"kind\": \"prompt\"\n        },\n        \"prompt_batch\": {\n          \"fields\": {\n            \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\",\n            \"created_at\": \"2026-01-01 00:00:19\",\n            \"diversity_mode\": \"balanced\",\n            \"generation_plan_json\": \"{\\\"provider\\\": \\\"mock\\\", \\\"mode\\\": \\\"explore\\\", \\\"diversity_mode\\\": \\\"balanced\\\", \\\"roles\\\": [\\\"aligned\\\", \\\"exploratory\\\", \\\"variation\\\"], \\\"n\\\": 3, \\\"uses_accepted_memory\\\": false, \\\"template_id\\\": \\\"tmpl_demo0001\\\", \\\"template_name\\\": \\\"Default candidate prompt template\\\", \\\"meta_template_id\\\": \\\"tmpl_demo0002\\\", \\\"meta_template_name\\\": \\\"Default meta-prompt template\\\", \\\"target_model\\\": \\\"generic\\\", \\\"memory_inclusion\\\": \\\"all\\\", \\\"selected_memory_ids\\\": [], \\\"reference_image\\\": null, \\\"recipe\\\": {\\\"target_model\\\": \\\"generic\\\", \\\"meta_template_id\\\": \\\"tmpl_demo0002\\\", \\\"meta_template_updated_at\\\": \\\"2026-01-01T00:00:00Z\\\", \\\"candidate_template_id\\\": \\\"tmpl_demo0001\\\", \\\"candidate_template_updated_at\\\": \\\"2026-01-01T00:00:01Z\\\", \\\"brief\\\": \\\"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\\\", \\\"mode\\\": \\\"explore\\\", \\\"diversity_mode\\\": \\\"balanced\\\", \\\"variable_values\\\": {}, \\\"reference_image\\\": null}, \\\"memory_influence_trace\\\": {\\\"trace_version\\\": 1, \\\"attribution_scope\\\": \\\"prompt_batch\\\", \\\"attribution_note\\\": \\\"Batch-level trace of active accepted memories available to generate-next. This is not per-token or per-candidate attribution.\\\", \\\"active_memory_count\\\": 0, \\\"memory_refs\\\": []}, \\\"applied_memory_refs\\\": []}\",\n            \"id\": \"batch_demo0001\",\n            \"mode\": \"explore\",\n            \"project_id\": \"proj_demo0001\",\n            \"skill_id\": \"skill_demo0001\"\n          },\n          \"id\": \"batch_demo0001\",\n          \"kind\": \"prompt_batch\"\n        },\n        \"proposal\": {\n          \"fields\": {\n            \"confidence\": \"0.74\",\n            \"content\": \"Keep the product legible in the final beat.\",\n            \"created_at\": \"2026-01-01 00:00:33\",\n            \"feedback_id\": \"fb_demo0001\",\n            \"id\": \"memprop_demo0002\",\n            \"memory_type\": \"style_dna\",\n            \"polarity\": \"preserve\",\n            \"project_id\": \"proj_demo0001\",\n            \"proposed_action\": \"preserve\",\n            \"rationale\": \"The judgment asked to end on the bottle after the transformation.\",\n            \"scope\": \"skill\",\n            \"skill_id\": \"skill_demo0001\",\n            \"source_artifact_id\": null,\n            \"source_candidate_id\": \"cand_demo0001\",\n            \"source_prompt_batch_id\": \"batch_demo0001\",\n            \"source_prompt_id\": \"prompt_demo0001\",\n            \"source_template_id\": \"tmpl_demo0001\",\n            \"status\": \"accepted\"\n          },\n          \"id\": \"memprop_demo0002\",\n          \"kind\": \"proposal\"\n        },\n        \"template\": {\n          \"fields\": {\n            \"created_at\": \"2026-01-01 00:00:10\",\n            \"description\": \"System-created default candidate prompt template.\",\n            \"fields_json\": \"{}\",\n            \"id\": \"tmpl_demo0001\",\n            \"model_target\": \"generic\",\n            \"name\": \"Default candidate prompt template\",\n            \"prompt_type\": \"candidate_generation\",\n            \"skill_id\": \"skill_demo0001\",\n            \"template_text\": \"A single self-contained prompt for {TARGET_MODEL}.\\n\\nIt must:\\n- commit to one concrete subject and one clear point of view\\n- make the style constraints explicit\\n- name what to avoid (negative constraints)\",\n            \"variables_json\": \"[\\\"TARGET_MODEL\\\"]\"\n          },\n          \"id\": \"tmpl_demo0001\",\n          \"kind\": \"template\"\n        }\n      },\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0001\",\n        \"feedback_id\": \"fb_demo0001\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0001\",\n        \"proposal_id\": \"memprop_demo0002\",\n        \"template_id\": \"tmpl_demo0001\"\n      }\n    },\n    {\n      \"memory\": {\n        \"fields\": {\n          \"content\": \"Organize each concept around a single physical transformation that can actually be shot.\",\n          \"copy_policy\": \"reference_only\",\n          \"created_at\": \"2026-01-01 00:00:38\",\n          \"id\": \"mem_demo0001\",\n          \"memory_type\": \"style_dna\",\n          \"negative_fragment\": null,\n          \"polarity\": \"preserve\",\n          \"project_id\": \"proj_demo0001\",\n          \"prompt_fragment\": \"Organize each concept around a single physical transformation that can actually be shot.\",\n          \"scope\": \"skill\",\n          \"skill_id\": \"skill_demo0001\",\n          \"source_artifact_id\": null,\n          \"source_candidate_id\": \"cand_demo0001\",\n          \"source_feedback_id\": \"fb_demo0001\",\n          \"source_prompt_batch_id\": \"batch_demo0001\",\n          \"source_prompt_id\": \"prompt_demo0001\",\n          \"source_proposal_id\": \"memprop_demo0001\",\n          \"source_template_id\": \"tmpl_demo0001\",\n          \"status\": \"active\",\n          \"strength\": \"soft_preference\"\n        },\n        \"id\": \"mem_demo0001\",\n        \"kind\": \"memory\"\n      },\n      \"resolved\": {\n        \"artifact\": null,\n        \"candidate\": {\n          \"fields\": {\n            \"artifact_id\": null,\n            \"created_at\": \"2026-01-01 00:00:13\",\n            \"id\": \"cand_demo0001\",\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_batch_id\": \"batch_demo0001\",\n            \"prompt_id\": \"prompt_demo0001\",\n            \"status\": \"feedback_added\",\n            \"workspace_id\": \"ws_demo0001\"\n          },\n          \"id\": \"cand_demo0001\",\n          \"kind\": \"candidate\"\n        },\n        \"feedback\": {\n          \"fields\": {\n            \"artifact_id\": null,\n            \"candidate_id\": \"cand_demo0001\",\n            \"created_at\": \"2026-01-01 00:00:28\",\n            \"id\": \"fb_demo0001\",\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_id\": \"prompt_demo0001\",\n            \"skill_id\": \"skill_demo0001\",\n            \"user_text\": \"The condensation run is the whole idea -- one physical change I can actually shoot, and the beading reads expensive. But the bottle is never legible; I get texture and no product. Keep the transformation, end on the bottle.\",\n            \"workspace_id\": \"ws_demo0001\"\n          },\n          \"id\": \"fb_demo0001\",\n          \"kind\": \"feedback\"\n        },\n        \"prompt\": {\n          \"fields\": {\n            \"created_at\": \"2026-01-01 00:00:21\",\n            \"id\": \"prompt_demo0001\",\n            \"parent_prompt_id\": null,\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_batch_id\": \"batch_demo0001\",\n            \"skill_id\": \"skill_demo0001\",\n            \"structured_fields_json\": \"{\\\"role\\\": \\\"aligned\\\", \\\"index\\\": 1, \\\"brief\\\": \\\"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\\\", \\\"provider\\\": \\\"mock\\\", \\\"provider_model\\\": \\\"mock-prompt-generator\\\", \\\"target_model\\\": \\\"generic\\\", \\\"used_memory_ids\\\": [], \\\"used_memory\\\": [], \\\"reference_image\\\": null}\",\n            \"template_id\": \"tmpl_demo0001\",\n            \"text\": \"Macro on a chilled bottle: condensation beads gather, merge, and run, dragging a clean line down the frosted glass. A thumb of orange peel flexes just off-axis and throws a fine mist across the light. Shallow depth, slow push, cold blue-green key.\",\n            \"version_number\": 1\n          },\n          \"id\": \"prompt_demo0001\",\n          \"kind\": \"prompt\"\n        },\n        \"prompt_batch\": {\n          \"fields\": {\n            \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\",\n            \"created_at\": \"2026-01-01 00:00:19\",\n            \"diversity_mode\": \"balanced\",\n            \"generation_plan_json\": \"{\\\"provider\\\": \\\"mock\\\", \\\"mode\\\": \\\"explore\\\", \\\"diversity_mode\\\": \\\"balanced\\\", \\\"roles\\\": [\\\"aligned\\\", \\\"exploratory\\\", \\\"variation\\\"], \\\"n\\\": 3, \\\"uses_accepted_memory\\\": false, \\\"template_id\\\": \\\"tmpl_demo0001\\\", \\\"template_name\\\": \\\"Default candidate prompt template\\\", \\\"meta_template_id\\\": \\\"tmpl_demo0002\\\", \\\"meta_template_name\\\": \\\"Default meta-prompt template\\\", \\\"target_model\\\": \\\"generic\\\", \\\"memory_inclusion\\\": \\\"all\\\", \\\"selected_memory_ids\\\": [], \\\"reference_image\\\": null, \\\"recipe\\\": {\\\"target_model\\\": \\\"generic\\\", \\\"meta_template_id\\\": \\\"tmpl_demo0002\\\", \\\"meta_template_updated_at\\\": \\\"2026-01-01T00:00:00Z\\\", \\\"candidate_template_id\\\": \\\"tmpl_demo0001\\\", \\\"candidate_template_updated_at\\\": \\\"2026-01-01T00:00:01Z\\\", \\\"brief\\\": \\\"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\\\", \\\"mode\\\": \\\"explore\\\", \\\"diversity_mode\\\": \\\"balanced\\\", \\\"variable_values\\\": {}, \\\"reference_image\\\": null}, \\\"memory_influence_trace\\\": {\\\"trace_version\\\": 1, \\\"attribution_scope\\\": \\\"prompt_batch\\\", \\\"attribution_note\\\": \\\"Batch-level trace of active accepted memories available to generate-next. This is not per-token or per-candidate attribution.\\\", \\\"active_memory_count\\\": 0, \\\"memory_refs\\\": []}, \\\"applied_memory_refs\\\": []}\",\n            \"id\": \"batch_demo0001\",\n            \"mode\": \"explore\",\n            \"project_id\": \"proj_demo0001\",\n            \"skill_id\": \"skill_demo0001\"\n          },\n          \"id\": \"batch_demo0001\",\n          \"kind\": \"prompt_batch\"\n        },\n        \"proposal\": {\n          \"fields\": {\n            \"confidence\": \"0.89\",\n            \"content\": \"Organize each concept around a single physical transformation that can actually be shot.\",\n            \"created_at\": \"2026-01-01 00:00:31\",\n            \"feedback_id\": \"fb_demo0001\",\n            \"id\": \"memprop_demo0001\",\n            \"memory_type\": \"style_dna\",\n            \"polarity\": \"preserve\",\n            \"project_id\": \"proj_demo0001\",\n            \"proposed_action\": \"preserve\",\n            \"rationale\": \"The judgment called the condensation run 'the whole idea'.\",\n            \"scope\": \"skill\",\n            \"skill_id\": \"skill_demo0001\",\n            \"source_artifact_id\": null,\n            \"source_candidate_id\": \"cand_demo0001\",\n            \"source_prompt_batch_id\": \"batch_demo0001\",\n            \"source_prompt_id\": \"prompt_demo0001\",\n            \"source_template_id\": \"tmpl_demo0001\",\n            \"status\": \"accepted\"\n          },\n          \"id\": \"memprop_demo0001\",\n          \"kind\": \"proposal\"\n        },\n        \"template\": {\n          \"fields\": {\n            \"created_at\": \"2026-01-01 00:00:10\",\n            \"description\": \"System-created default candidate prompt template.\",\n            \"fields_json\": \"{}\",\n            \"id\": \"tmpl_demo0001\",\n            \"model_target\": \"generic\",\n            \"name\": \"Default candidate prompt template\",\n            \"prompt_type\": \"candidate_generation\",\n            \"skill_id\": \"skill_demo0001\",\n            \"template_text\": \"A single self-contained prompt for {TARGET_MODEL}.\\n\\nIt must:\\n- commit to one concrete subject and one clear point of view\\n- make the style constraints explicit\\n- name what to avoid (negative constraints)\",\n            \"variables_json\": \"[\\\"TARGET_MODEL\\\"]\"\n          },\n          \"id\": \"tmpl_demo0001\",\n          \"kind\": \"template\"\n        }\n      },\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0001\",\n        \"feedback_id\": \"fb_demo0001\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0001\",\n        \"proposal_id\": \"memprop_demo0001\",\n        \"template_id\": \"tmpl_demo0001\"\n      }\n    }\n  ],\n  \"proposals\": [\n    {\n      \"proposal\": {\n        \"fields\": {\n          \"confidence\": \"0.44\",\n          \"content\": \"Limit each concept to two on-screen props besides the product.\",\n          \"created_at\": \"2026-01-01 00:01:10\",\n          \"feedback_id\": \"fb_demo0003\",\n          \"id\": \"memprop_demo0006\",\n          \"memory_type\": \"style_dna\",\n          \"polarity\": \"preserve\",\n          \"project_id\": \"proj_demo0001\",\n          \"proposed_action\": \"preserve\",\n          \"rationale\": \"Only loosely implied by the note about a busy table; not stated.\",\n          \"scope\": \"skill\",\n          \"skill_id\": \"skill_demo0001\",\n          \"source_artifact_id\": null,\n          \"source_candidate_id\": \"cand_demo0003\",\n          \"source_prompt_batch_id\": \"batch_demo0001\",\n          \"source_prompt_id\": \"prompt_demo0003\",\n          \"source_template_id\": \"tmpl_demo0001\",\n          \"status\": \"pending\"\n        },\n        \"id\": \"memprop_demo0006\",\n        \"kind\": \"proposal\"\n      },\n      \"resolved\": {\n        \"artifact\": null,\n        \"candidate\": {\n          \"fields\": {\n            \"artifact_id\": null,\n            \"created_at\": \"2026-01-01 00:00:17\",\n            \"id\": \"cand_demo0003\",\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_batch_id\": \"batch_demo0001\",\n            \"prompt_id\": \"prompt_demo0003\",\n            \"status\": \"feedback_added\",\n            \"workspace_id\": \"ws_demo0001\"\n          },\n          \"id\": \"cand_demo0003\",\n          \"kind\": \"candidate\"\n        },\n        \"feedback\": {\n          \"fields\": {\n            \"artifact_id\": null,\n            \"candidate_id\": \"cand_demo0003\",\n            \"created_at\": \"2026-01-01 00:01:05\",\n            \"id\": \"fb_demo0003\",\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_id\": \"prompt_demo0003\",\n            \"skill_id\": \"skill_demo0001\",\n            \"user_text\": \"The crawling sunlight is a real transformation and the creased linen is the kind of material detail I want. The problem is the bottle is just one more prop on a busy table -- by the last beat I still cannot see the product.\",\n            \"workspace_id\": \"ws_demo0001\"\n          },\n          \"id\": \"fb_demo0003\",\n          \"kind\": \"feedback\"\n        },\n        \"prompt\": {\n          \"fields\": {\n            \"created_at\": \"2026-01-01 00:00:23\",\n            \"id\": \"prompt_demo0003\",\n            \"parent_prompt_id\": null,\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_batch_id\": \"batch_demo0001\",\n            \"skill_id\": \"skill_demo0001\",\n            \"structured_fields_json\": \"{\\\"role\\\": \\\"variation\\\", \\\"index\\\": 3, \\\"brief\\\": \\\"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\\\", \\\"provider\\\": \\\"mock\\\", \\\"provider_model\\\": \\\"mock-prompt-generator\\\", \\\"target_model\\\": \\\"generic\\\", \\\"used_memory_ids\\\": [], \\\"used_memory\\\": [], \\\"reference_image\\\": null}\",\n            \"template_id\": \"tmpl_demo0001\",\n            \"text\": \"A cleared dinner table after guests have gone: linen creased, two glasses, a bowl of clementines. Over sixteen seconds the low sun crawls across the cloth, the peel curls tighten, and the room warms from grey to gold.\",\n            \"version_number\": 1\n          },\n          \"id\": \"prompt_demo0003\",\n          \"kind\": \"prompt\"\n        },\n        \"prompt_batch\": {\n          \"fields\": {\n            \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\",\n            \"created_at\": \"2026-01-01 00:00:19\",\n            \"diversity_mode\": \"balanced\",\n            \"generation_plan_json\": \"{\\\"provider\\\": \\\"mock\\\", \\\"mode\\\": \\\"explore\\\", \\\"diversity_mode\\\": \\\"balanced\\\", \\\"roles\\\": [\\\"aligned\\\", \\\"exploratory\\\", \\\"variation\\\"], \\\"n\\\": 3, \\\"uses_accepted_memory\\\": false, \\\"template_id\\\": \\\"tmpl_demo0001\\\", \\\"template_name\\\": \\\"Default candidate prompt template\\\", \\\"meta_template_id\\\": \\\"tmpl_demo0002\\\", \\\"meta_template_name\\\": \\\"Default meta-prompt template\\\", \\\"target_model\\\": \\\"generic\\\", \\\"memory_inclusion\\\": \\\"all\\\", \\\"selected_memory_ids\\\": [], \\\"reference_image\\\": null, \\\"recipe\\\": {\\\"target_model\\\": \\\"generic\\\", \\\"meta_template_id\\\": \\\"tmpl_demo0002\\\", \\\"meta_template_updated_at\\\": \\\"2026-01-01T00:00:00Z\\\", \\\"candidate_template_id\\\": \\\"tmpl_demo0001\\\", \\\"candidate_template_updated_at\\\": \\\"2026-01-01T00:00:01Z\\\", \\\"brief\\\": \\\"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\\\", \\\"mode\\\": \\\"explore\\\", \\\"diversity_mode\\\": \\\"balanced\\\", \\\"variable_values\\\": {}, \\\"reference_image\\\": null}, \\\"memory_influence_trace\\\": {\\\"trace_version\\\": 1, \\\"attribution_scope\\\": \\\"prompt_batch\\\", \\\"attribution_note\\\": \\\"Batch-level trace of active accepted memories available to generate-next. This is not per-token or per-candidate attribution.\\\", \\\"active_memory_count\\\": 0, \\\"memory_refs\\\": []}, \\\"applied_memory_refs\\\": []}\",\n            \"id\": \"batch_demo0001\",\n            \"mode\": \"explore\",\n            \"project_id\": \"proj_demo0001\",\n            \"skill_id\": \"skill_demo0001\"\n          },\n          \"id\": \"batch_demo0001\",\n          \"kind\": \"prompt_batch\"\n        },\n        \"proposal\": null,\n        \"template\": {\n          \"fields\": {\n            \"created_at\": \"2026-01-01 00:00:10\",\n            \"description\": \"System-created default candidate prompt template.\",\n            \"fields_json\": \"{}\",\n            \"id\": \"tmpl_demo0001\",\n            \"model_target\": \"generic\",\n            \"name\": \"Default candidate prompt template\",\n            \"prompt_type\": \"candidate_generation\",\n            \"skill_id\": \"skill_demo0001\",\n            \"template_text\": \"A single self-contained prompt for {TARGET_MODEL}.\\n\\nIt must:\\n- commit to one concrete subject and one clear point of view\\n- make the style constraints explicit\\n- name what to avoid (negative constraints)\",\n            \"variables_json\": \"[\\\"TARGET_MODEL\\\"]\"\n          },\n          \"id\": \"tmpl_demo0001\",\n          \"kind\": \"template\"\n        }\n      },\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0003\",\n        \"feedback_id\": \"fb_demo0003\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0003\",\n        \"proposal_id\": null,\n        \"template_id\": \"tmpl_demo0001\"\n      }\n    },\n    {\n      \"proposal\": {\n        \"fields\": {\n          \"confidence\": \"0.85\",\n          \"content\": \"Lead with tactile material detail rather than general atmosphere.\",\n          \"created_at\": \"2026-01-01 00:01:08\",\n          \"feedback_id\": \"fb_demo0003\",\n          \"id\": \"memprop_demo0005\",\n          \"memory_type\": \"style_dna\",\n          \"polarity\": \"preserve\",\n          \"project_id\": \"proj_demo0001\",\n          \"proposed_action\": \"preserve\",\n          \"rationale\": \"The judgment praised the creased linen as the wanted material detail.\",\n          \"scope\": \"skill\",\n          \"skill_id\": \"skill_demo0001\",\n          \"source_artifact_id\": null,\n          \"source_candidate_id\": \"cand_demo0003\",\n          \"source_prompt_batch_id\": \"batch_demo0001\",\n          \"source_prompt_id\": \"prompt_demo0003\",\n          \"source_template_id\": \"tmpl_demo0001\",\n          \"status\": \"accepted\"\n        },\n        \"id\": \"memprop_demo0005\",\n        \"kind\": \"proposal\"\n      },\n      \"resolved\": {\n        \"artifact\": null,\n        \"candidate\": {\n          \"fields\": {\n            \"artifact_id\": null,\n            \"created_at\": \"2026-01-01 00:00:17\",\n            \"id\": \"cand_demo0003\",\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_batch_id\": \"batch_demo0001\",\n            \"prompt_id\": \"prompt_demo0003\",\n            \"status\": \"feedback_added\",\n            \"workspace_id\": \"ws_demo0001\"\n          },\n          \"id\": \"cand_demo0003\",\n          \"kind\": \"candidate\"\n        },\n        \"feedback\": {\n          \"fields\": {\n            \"artifact_id\": null,\n            \"candidate_id\": \"cand_demo0003\",\n            \"created_at\": \"2026-01-01 00:01:05\",\n            \"id\": \"fb_demo0003\",\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_id\": \"prompt_demo0003\",\n            \"skill_id\": \"skill_demo0001\",\n            \"user_text\": \"The crawling sunlight is a real transformation and the creased linen is the kind of material detail I want. The problem is the bottle is just one more prop on a busy table -- by the last beat I still cannot see the product.\",\n            \"workspace_id\": \"ws_demo0001\"\n          },\n          \"id\": \"fb_demo0003\",\n          \"kind\": \"feedback\"\n        },\n        \"prompt\": {\n          \"fields\": {\n            \"created_at\": \"2026-01-01 00:00:23\",\n            \"id\": \"prompt_demo0003\",\n            \"parent_prompt_id\": null,\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_batch_id\": \"batch_demo0001\",\n            \"skill_id\": \"skill_demo0001\",\n            \"structured_fields_json\": \"{\\\"role\\\": \\\"variation\\\", \\\"index\\\": 3, \\\"brief\\\": \\\"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\\\", \\\"provider\\\": \\\"mock\\\", \\\"provider_model\\\": \\\"mock-prompt-generator\\\", \\\"target_model\\\": \\\"generic\\\", \\\"used_memory_ids\\\": [], \\\"used_memory\\\": [], \\\"reference_image\\\": null}\",\n            \"template_id\": \"tmpl_demo0001\",\n            \"text\": \"A cleared dinner table after guests have gone: linen creased, two glasses, a bowl of clementines. Over sixteen seconds the low sun crawls across the cloth, the peel curls tighten, and the room warms from grey to gold.\",\n            \"version_number\": 1\n          },\n          \"id\": \"prompt_demo0003\",\n          \"kind\": \"prompt\"\n        },\n        \"prompt_batch\": {\n          \"fields\": {\n            \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\",\n            \"created_at\": \"2026-01-01 00:00:19\",\n            \"diversity_mode\": \"balanced\",\n            \"generation_plan_json\": \"{\\\"provider\\\": \\\"mock\\\", \\\"mode\\\": \\\"explore\\\", \\\"diversity_mode\\\": \\\"balanced\\\", \\\"roles\\\": [\\\"aligned\\\", \\\"exploratory\\\", \\\"variation\\\"], \\\"n\\\": 3, \\\"uses_accepted_memory\\\": false, \\\"template_id\\\": \\\"tmpl_demo0001\\\", \\\"template_name\\\": \\\"Default candidate prompt template\\\", \\\"meta_template_id\\\": \\\"tmpl_demo0002\\\", \\\"meta_template_name\\\": \\\"Default meta-prompt template\\\", \\\"target_model\\\": \\\"generic\\\", \\\"memory_inclusion\\\": \\\"all\\\", \\\"selected_memory_ids\\\": [], \\\"reference_image\\\": null, \\\"recipe\\\": {\\\"target_model\\\": \\\"generic\\\", \\\"meta_template_id\\\": \\\"tmpl_demo0002\\\", \\\"meta_template_updated_at\\\": \\\"2026-01-01T00:00:00Z\\\", \\\"candidate_template_id\\\": \\\"tmpl_demo0001\\\", \\\"candidate_template_updated_at\\\": \\\"2026-01-01T00:00:01Z\\\", \\\"brief\\\": \\\"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\\\", \\\"mode\\\": \\\"explore\\\", \\\"diversity_mode\\\": \\\"balanced\\\", \\\"variable_values\\\": {}, \\\"reference_image\\\": null}, \\\"memory_influence_trace\\\": {\\\"trace_version\\\": 1, \\\"attribution_scope\\\": \\\"prompt_batch\\\", \\\"attribution_note\\\": \\\"Batch-level trace of active accepted memories available to generate-next. This is not per-token or per-candidate attribution.\\\", \\\"active_memory_count\\\": 0, \\\"memory_refs\\\": []}, \\\"applied_memory_refs\\\": []}\",\n            \"id\": \"batch_demo0001\",\n            \"mode\": \"explore\",\n            \"project_id\": \"proj_demo0001\",\n            \"skill_id\": \"skill_demo0001\"\n          },\n          \"id\": \"batch_demo0001\",\n          \"kind\": \"prompt_batch\"\n        },\n        \"proposal\": null,\n        \"template\": {\n          \"fields\": {\n            \"created_at\": \"2026-01-01 00:00:10\",\n            \"description\": \"System-created default candidate prompt template.\",\n            \"fields_json\": \"{}\",\n            \"id\": \"tmpl_demo0001\",\n            \"model_target\": \"generic\",\n            \"name\": \"Default candidate prompt template\",\n            \"prompt_type\": \"candidate_generation\",\n            \"skill_id\": \"skill_demo0001\",\n            \"template_text\": \"A single self-contained prompt for {TARGET_MODEL}.\\n\\nIt must:\\n- commit to one concrete subject and one clear point of view\\n- make the style constraints explicit\\n- name what to avoid (negative constraints)\",\n            \"variables_json\": \"[\\\"TARGET_MODEL\\\"]\"\n          },\n          \"id\": \"tmpl_demo0001\",\n          \"kind\": \"template\"\n        }\n      },\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0003\",\n        \"feedback_id\": \"fb_demo0003\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0003\",\n        \"proposal_id\": null,\n        \"template_id\": \"tmpl_demo0001\"\n      }\n    },\n    {\n      \"proposal\": {\n        \"fields\": {\n          \"confidence\": \"0.52\",\n          \"content\": \"Avoid amber and green palettes.\",\n          \"created_at\": \"2026-01-01 00:00:53\",\n          \"feedback_id\": \"fb_demo0002\",\n          \"id\": \"memprop_demo0004\",\n          \"memory_type\": \"avoid_element\",\n          \"polarity\": \"avoid\",\n          \"project_id\": \"proj_demo0001\",\n          \"proposed_action\": \"avoid\",\n          \"rationale\": \"The judgment described the amber and green as generic set dressing.\",\n          \"scope\": \"skill\",\n          \"skill_id\": \"skill_demo0001\",\n          \"source_artifact_id\": null,\n          \"source_candidate_id\": \"cand_demo0002\",\n          \"source_prompt_batch_id\": \"batch_demo0001\",\n          \"source_prompt_id\": \"prompt_demo0002\",\n          \"source_template_id\": \"tmpl_demo0001\",\n          \"status\": \"rejected\"\n        },\n        \"id\": \"memprop_demo0004\",\n        \"kind\": \"proposal\"\n      },\n      \"resolved\": {\n        \"artifact\": null,\n        \"candidate\": {\n          \"fields\": {\n            \"artifact_id\": null,\n            \"created_at\": \"2026-01-01 00:00:15\",\n            \"id\": \"cand_demo0002\",\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_batch_id\": \"batch_demo0001\",\n            \"prompt_id\": \"prompt_demo0002\",\n            \"status\": \"feedback_added\",\n            \"workspace_id\": \"ws_demo0001\"\n          },\n          \"id\": \"cand_demo0002\",\n          \"kind\": \"candidate\"\n        },\n        \"feedback\": {\n          \"fields\": {\n            \"artifact_id\": null,\n            \"candidate_id\": \"cand_demo0002\",\n            \"created_at\": \"2026-01-01 00:00:48\",\n            \"id\": \"fb_demo0002\",\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_id\": \"prompt_demo0002\",\n            \"skill_id\": \"skill_demo0001\",\n            \"user_text\": \"Too many tricks competing: rotating bars, a spinning wedge, a leaf shadow, and a negative flip in sixteen seconds. Pick one. The amber and green is also generic set dressing rather than anything you can feel.\",\n            \"workspace_id\": \"ws_demo0001\"\n          },\n          \"id\": \"fb_demo0002\",\n          \"kind\": \"feedback\"\n        },\n        \"prompt\": {\n          \"fields\": {\n            \"created_at\": \"2026-01-01 00:00:22\",\n            \"id\": \"prompt_demo0002\",\n            \"parent_prompt_id\": null,\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_batch_id\": \"batch_demo0001\",\n            \"skill_id\": \"skill_demo0001\",\n            \"structured_fields_json\": \"{\\\"role\\\": \\\"exploratory\\\", \\\"index\\\": 2, \\\"brief\\\": \\\"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\\\", \\\"provider\\\": \\\"mock\\\", \\\"provider_model\\\": \\\"mock-prompt-generator\\\", \\\"target_model\\\": \\\"generic\\\", \\\"used_memory_ids\\\": [], \\\"used_memory\\\": [], \\\"reference_image\\\": null}\",\n            \"template_id\": \"tmpl_demo0001\",\n            \"text\": \"Hard sunlight through a slatted blind rakes across a seamless backdrop in amber and deep green. Bars of light rotate, a wedge of grapefruit spins, the shadow of a leaf sweeps past, and the palette flips to negative on the final beat.\",\n            \"version_number\": 1\n          },\n          \"id\": \"prompt_demo0002\",\n          \"kind\": \"prompt\"\n        },\n        \"prompt_batch\": {\n          \"fields\": {\n            \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\",\n            \"created_at\": \"2026-01-01 00:00:19\",\n            \"diversity_mode\": \"balanced\",\n            \"generation_plan_json\": \"{\\\"provider\\\": \\\"mock\\\", \\\"mode\\\": \\\"explore\\\", \\\"diversity_mode\\\": \\\"balanced\\\", \\\"roles\\\": [\\\"aligned\\\", \\\"exploratory\\\", \\\"variation\\\"], \\\"n\\\": 3, \\\"uses_accepted_memory\\\": false, \\\"template_id\\\": \\\"tmpl_demo0001\\\", \\\"template_name\\\": \\\"Default candidate prompt template\\\", \\\"meta_template_id\\\": \\\"tmpl_demo0002\\\", \\\"meta_template_name\\\": \\\"Default meta-prompt template\\\", \\\"target_model\\\": \\\"generic\\\", \\\"memory_inclusion\\\": \\\"all\\\", \\\"selected_memory_ids\\\": [], \\\"reference_image\\\": null, \\\"recipe\\\": {\\\"target_model\\\": \\\"generic\\\", \\\"meta_template_id\\\": \\\"tmpl_demo0002\\\", \\\"meta_template_updated_at\\\": \\\"2026-01-01T00:00:00Z\\\", \\\"candidate_template_id\\\": \\\"tmpl_demo0001\\\", \\\"candidate_template_updated_at\\\": \\\"2026-01-01T00:00:01Z\\\", \\\"brief\\\": \\\"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\\\", \\\"mode\\\": \\\"explore\\\", \\\"diversity_mode\\\": \\\"balanced\\\", \\\"variable_values\\\": {}, \\\"reference_image\\\": null}, \\\"memory_influence_trace\\\": {\\\"trace_version\\\": 1, \\\"attribution_scope\\\": \\\"prompt_batch\\\", \\\"attribution_note\\\": \\\"Batch-level trace of active accepted memories available to generate-next. This is not per-token or per-candidate attribution.\\\", \\\"active_memory_count\\\": 0, \\\"memory_refs\\\": []}, \\\"applied_memory_refs\\\": []}\",\n            \"id\": \"batch_demo0001\",\n            \"mode\": \"explore\",\n            \"project_id\": \"proj_demo0001\",\n            \"skill_id\": \"skill_demo0001\"\n          },\n          \"id\": \"batch_demo0001\",\n          \"kind\": \"prompt_batch\"\n        },\n        \"proposal\": null,\n        \"template\": {\n          \"fields\": {\n            \"created_at\": \"2026-01-01 00:00:10\",\n            \"description\": \"System-created default candidate prompt template.\",\n            \"fields_json\": \"{}\",\n            \"id\": \"tmpl_demo0001\",\n            \"model_target\": \"generic\",\n            \"name\": \"Default candidate prompt template\",\n            \"prompt_type\": \"candidate_generation\",\n            \"skill_id\": \"skill_demo0001\",\n            \"template_text\": \"A single self-contained prompt for {TARGET_MODEL}.\\n\\nIt must:\\n- commit to one concrete subject and one clear point of view\\n- make the style constraints explicit\\n- name what to avoid (negative constraints)\",\n            \"variables_json\": \"[\\\"TARGET_MODEL\\\"]\"\n          },\n          \"id\": \"tmpl_demo0001\",\n          \"kind\": \"template\"\n        }\n      },\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0002\",\n        \"feedback_id\": \"fb_demo0002\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0002\",\n        \"proposal_id\": null,\n        \"template_id\": \"tmpl_demo0001\"\n      }\n    },\n    {\n      \"proposal\": {\n        \"fields\": {\n          \"confidence\": \"0.9\",\n          \"content\": \"Do not stack competing visual tricks in one sixteen-second concept.\",\n          \"created_at\": \"2026-01-01 00:00:51\",\n          \"feedback_id\": \"fb_demo0002\",\n          \"id\": \"memprop_demo0003\",\n          \"memory_type\": \"avoid_element\",\n          \"polarity\": \"avoid\",\n          \"project_id\": \"proj_demo0001\",\n          \"proposed_action\": \"avoid\",\n          \"rationale\": \"The judgment listed four effects competing inside one film.\",\n          \"scope\": \"skill\",\n          \"skill_id\": \"skill_demo0001\",\n          \"source_artifact_id\": null,\n          \"source_candidate_id\": \"cand_demo0002\",\n          \"source_prompt_batch_id\": \"batch_demo0001\",\n          \"source_prompt_id\": \"prompt_demo0002\",\n          \"source_template_id\": \"tmpl_demo0001\",\n          \"status\": \"accepted\"\n        },\n        \"id\": \"memprop_demo0003\",\n        \"kind\": \"proposal\"\n      },\n      \"resolved\": {\n        \"artifact\": null,\n        \"candidate\": {\n          \"fields\": {\n            \"artifact_id\": null,\n            \"created_at\": \"2026-01-01 00:00:15\",\n            \"id\": \"cand_demo0002\",\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_batch_id\": \"batch_demo0001\",\n            \"prompt_id\": \"prompt_demo0002\",\n            \"status\": \"feedback_added\",\n            \"workspace_id\": \"ws_demo0001\"\n          },\n          \"id\": \"cand_demo0002\",\n          \"kind\": \"candidate\"\n        },\n        \"feedback\": {\n          \"fields\": {\n            \"artifact_id\": null,\n            \"candidate_id\": \"cand_demo0002\",\n            \"created_at\": \"2026-01-01 00:00:48\",\n            \"id\": \"fb_demo0002\",\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_id\": \"prompt_demo0002\",\n            \"skill_id\": \"skill_demo0001\",\n            \"user_text\": \"Too many tricks competing: rotating bars, a spinning wedge, a leaf shadow, and a negative flip in sixteen seconds. Pick one. The amber and green is also generic set dressing rather than anything you can feel.\",\n            \"workspace_id\": \"ws_demo0001\"\n          },\n          \"id\": \"fb_demo0002\",\n          \"kind\": \"feedback\"\n        },\n        \"prompt\": {\n          \"fields\": {\n            \"created_at\": \"2026-01-01 00:00:22\",\n            \"id\": \"prompt_demo0002\",\n            \"parent_prompt_id\": null,\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_batch_id\": \"batch_demo0001\",\n            \"skill_id\": \"skill_demo0001\",\n            \"structured_fields_json\": \"{\\\"role\\\": \\\"exploratory\\\", \\\"index\\\": 2, \\\"brief\\\": \\\"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\\\", \\\"provider\\\": \\\"mock\\\", \\\"provider_model\\\": \\\"mock-prompt-generator\\\", \\\"target_model\\\": \\\"generic\\\", \\\"used_memory_ids\\\": [], \\\"used_memory\\\": [], \\\"reference_image\\\": null}\",\n            \"template_id\": \"tmpl_demo0001\",\n            \"text\": \"Hard sunlight through a slatted blind rakes across a seamless backdrop in amber and deep green. Bars of light rotate, a wedge of grapefruit spins, the shadow of a leaf sweeps past, and the palette flips to negative on the final beat.\",\n            \"version_number\": 1\n          },\n          \"id\": \"prompt_demo0002\",\n          \"kind\": \"prompt\"\n        },\n        \"prompt_batch\": {\n          \"fields\": {\n            \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\",\n            \"created_at\": \"2026-01-01 00:00:19\",\n            \"diversity_mode\": \"balanced\",\n            \"generation_plan_json\": \"{\\\"provider\\\": \\\"mock\\\", \\\"mode\\\": \\\"explore\\\", \\\"diversity_mode\\\": \\\"balanced\\\", \\\"roles\\\": [\\\"aligned\\\", \\\"exploratory\\\", \\\"variation\\\"], \\\"n\\\": 3, \\\"uses_accepted_memory\\\": false, \\\"template_id\\\": \\\"tmpl_demo0001\\\", \\\"template_name\\\": \\\"Default candidate prompt template\\\", \\\"meta_template_id\\\": \\\"tmpl_demo0002\\\", \\\"meta_template_name\\\": \\\"Default meta-prompt template\\\", \\\"target_model\\\": \\\"generic\\\", \\\"memory_inclusion\\\": \\\"all\\\", \\\"selected_memory_ids\\\": [], \\\"reference_image\\\": null, \\\"recipe\\\": {\\\"target_model\\\": \\\"generic\\\", \\\"meta_template_id\\\": \\\"tmpl_demo0002\\\", \\\"meta_template_updated_at\\\": \\\"2026-01-01T00:00:00Z\\\", \\\"candidate_template_id\\\": \\\"tmpl_demo0001\\\", \\\"candidate_template_updated_at\\\": \\\"2026-01-01T00:00:01Z\\\", \\\"brief\\\": \\\"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\\\", \\\"mode\\\": \\\"explore\\\", \\\"diversity_mode\\\": \\\"balanced\\\", \\\"variable_values\\\": {}, \\\"reference_image\\\": null}, \\\"memory_influence_trace\\\": {\\\"trace_version\\\": 1, \\\"attribution_scope\\\": \\\"prompt_batch\\\", \\\"attribution_note\\\": \\\"Batch-level trace of active accepted memories available to generate-next. This is not per-token or per-candidate attribution.\\\", \\\"active_memory_count\\\": 0, \\\"memory_refs\\\": []}, \\\"applied_memory_refs\\\": []}\",\n            \"id\": \"batch_demo0001\",\n            \"mode\": \"explore\",\n            \"project_id\": \"proj_demo0001\",\n            \"skill_id\": \"skill_demo0001\"\n          },\n          \"id\": \"batch_demo0001\",\n          \"kind\": \"prompt_batch\"\n        },\n        \"proposal\": null,\n        \"template\": {\n          \"fields\": {\n            \"created_at\": \"2026-01-01 00:00:10\",\n            \"description\": \"System-created default candidate prompt template.\",\n            \"fields_json\": \"{}\",\n            \"id\": \"tmpl_demo0001\",\n            \"model_target\": \"generic\",\n            \"name\": \"Default candidate prompt template\",\n            \"prompt_type\": \"candidate_generation\",\n            \"skill_id\": \"skill_demo0001\",\n            \"template_text\": \"A single self-contained prompt for {TARGET_MODEL}.\\n\\nIt must:\\n- commit to one concrete subject and one clear point of view\\n- make the style constraints explicit\\n- name what to avoid (negative constraints)\",\n            \"variables_json\": \"[\\\"TARGET_MODEL\\\"]\"\n          },\n          \"id\": \"tmpl_demo0001\",\n          \"kind\": \"template\"\n        }\n      },\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0002\",\n        \"feedback_id\": \"fb_demo0002\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0002\",\n        \"proposal_id\": null,\n        \"template_id\": \"tmpl_demo0001\"\n      }\n    },\n    {\n      \"proposal\": {\n        \"fields\": {\n          \"confidence\": \"0.74\",\n          \"content\": \"Keep the product legible in the final beat.\",\n          \"created_at\": \"2026-01-01 00:00:33\",\n          \"feedback_id\": \"fb_demo0001\",\n          \"id\": \"memprop_demo0002\",\n          \"memory_type\": \"style_dna\",\n          \"polarity\": \"preserve\",\n          \"project_id\": \"proj_demo0001\",\n          \"proposed_action\": \"preserve\",\n          \"rationale\": \"The judgment asked to end on the bottle after the transformation.\",\n          \"scope\": \"skill\",\n          \"skill_id\": \"skill_demo0001\",\n          \"source_artifact_id\": null,\n          \"source_candidate_id\": \"cand_demo0001\",\n          \"source_prompt_batch_id\": \"batch_demo0001\",\n          \"source_prompt_id\": \"prompt_demo0001\",\n          \"source_template_id\": \"tmpl_demo0001\",\n          \"status\": \"accepted\"\n        },\n        \"id\": \"memprop_demo0002\",\n        \"kind\": \"proposal\"\n      },\n      \"resolved\": {\n        \"artifact\": null,\n        \"candidate\": {\n          \"fields\": {\n            \"artifact_id\": null,\n            \"created_at\": \"2026-01-01 00:00:13\",\n            \"id\": \"cand_demo0001\",\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_batch_id\": \"batch_demo0001\",\n            \"prompt_id\": \"prompt_demo0001\",\n            \"status\": \"feedback_added\",\n            \"workspace_id\": \"ws_demo0001\"\n          },\n          \"id\": \"cand_demo0001\",\n          \"kind\": \"candidate\"\n        },\n        \"feedback\": {\n          \"fields\": {\n            \"artifact_id\": null,\n            \"candidate_id\": \"cand_demo0001\",\n            \"created_at\": \"2026-01-01 00:00:28\",\n            \"id\": \"fb_demo0001\",\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_id\": \"prompt_demo0001\",\n            \"skill_id\": \"skill_demo0001\",\n            \"user_text\": \"The condensation run is the whole idea -- one physical change I can actually shoot, and the beading reads expensive. But the bottle is never legible; I get texture and no product. Keep the transformation, end on the bottle.\",\n            \"workspace_id\": \"ws_demo0001\"\n          },\n          \"id\": \"fb_demo0001\",\n          \"kind\": \"feedback\"\n        },\n        \"prompt\": {\n          \"fields\": {\n            \"created_at\": \"2026-01-01 00:00:21\",\n            \"id\": \"prompt_demo0001\",\n            \"parent_prompt_id\": null,\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_batch_id\": \"batch_demo0001\",\n            \"skill_id\": \"skill_demo0001\",\n            \"structured_fields_json\": \"{\\\"role\\\": \\\"aligned\\\", \\\"index\\\": 1, \\\"brief\\\": \\\"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\\\", \\\"provider\\\": \\\"mock\\\", \\\"provider_model\\\": \\\"mock-prompt-generator\\\", \\\"target_model\\\": \\\"generic\\\", \\\"used_memory_ids\\\": [], \\\"used_memory\\\": [], \\\"reference_image\\\": null}\",\n            \"template_id\": \"tmpl_demo0001\",\n            \"text\": \"Macro on a chilled bottle: condensation beads gather, merge, and run, dragging a clean line down the frosted glass. A thumb of orange peel flexes just off-axis and throws a fine mist across the light. Shallow depth, slow push, cold blue-green key.\",\n            \"version_number\": 1\n          },\n          \"id\": \"prompt_demo0001\",\n          \"kind\": \"prompt\"\n        },\n        \"prompt_batch\": {\n          \"fields\": {\n            \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\",\n            \"created_at\": \"2026-01-01 00:00:19\",\n            \"diversity_mode\": \"balanced\",\n            \"generation_plan_json\": \"{\\\"provider\\\": \\\"mock\\\", \\\"mode\\\": \\\"explore\\\", \\\"diversity_mode\\\": \\\"balanced\\\", \\\"roles\\\": [\\\"aligned\\\", \\\"exploratory\\\", \\\"variation\\\"], \\\"n\\\": 3, \\\"uses_accepted_memory\\\": false, \\\"template_id\\\": \\\"tmpl_demo0001\\\", \\\"template_name\\\": \\\"Default candidate prompt template\\\", \\\"meta_template_id\\\": \\\"tmpl_demo0002\\\", \\\"meta_template_name\\\": \\\"Default meta-prompt template\\\", \\\"target_model\\\": \\\"generic\\\", \\\"memory_inclusion\\\": \\\"all\\\", \\\"selected_memory_ids\\\": [], \\\"reference_image\\\": null, \\\"recipe\\\": {\\\"target_model\\\": \\\"generic\\\", \\\"meta_template_id\\\": \\\"tmpl_demo0002\\\", \\\"meta_template_updated_at\\\": \\\"2026-01-01T00:00:00Z\\\", \\\"candidate_template_id\\\": \\\"tmpl_demo0001\\\", \\\"candidate_template_updated_at\\\": \\\"2026-01-01T00:00:01Z\\\", \\\"brief\\\": \\\"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\\\", \\\"mode\\\": \\\"explore\\\", \\\"diversity_mode\\\": \\\"balanced\\\", \\\"variable_values\\\": {}, \\\"reference_image\\\": null}, \\\"memory_influence_trace\\\": {\\\"trace_version\\\": 1, \\\"attribution_scope\\\": \\\"prompt_batch\\\", \\\"attribution_note\\\": \\\"Batch-level trace of active accepted memories available to generate-next. This is not per-token or per-candidate attribution.\\\", \\\"active_memory_count\\\": 0, \\\"memory_refs\\\": []}, \\\"applied_memory_refs\\\": []}\",\n            \"id\": \"batch_demo0001\",\n            \"mode\": \"explore\",\n            \"project_id\": \"proj_demo0001\",\n            \"skill_id\": \"skill_demo0001\"\n          },\n          \"id\": \"batch_demo0001\",\n          \"kind\": \"prompt_batch\"\n        },\n        \"proposal\": null,\n        \"template\": {\n          \"fields\": {\n            \"created_at\": \"2026-01-01 00:00:10\",\n            \"description\": \"System-created default candidate prompt template.\",\n            \"fields_json\": \"{}\",\n            \"id\": \"tmpl_demo0001\",\n            \"model_target\": \"generic\",\n            \"name\": \"Default candidate prompt template\",\n            \"prompt_type\": \"candidate_generation\",\n            \"skill_id\": \"skill_demo0001\",\n            \"template_text\": \"A single self-contained prompt for {TARGET_MODEL}.\\n\\nIt must:\\n- commit to one concrete subject and one clear point of view\\n- make the style constraints explicit\\n- name what to avoid (negative constraints)\",\n            \"variables_json\": \"[\\\"TARGET_MODEL\\\"]\"\n          },\n          \"id\": \"tmpl_demo0001\",\n          \"kind\": \"template\"\n        }\n      },\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0001\",\n        \"feedback_id\": \"fb_demo0001\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0001\",\n        \"proposal_id\": null,\n        \"template_id\": \"tmpl_demo0001\"\n      }\n    },\n    {\n      \"proposal\": {\n        \"fields\": {\n          \"confidence\": \"0.89\",\n          \"content\": \"Organize each concept around a single physical transformation that can actually be shot.\",\n          \"created_at\": \"2026-01-01 00:00:31\",\n          \"feedback_id\": \"fb_demo0001\",\n          \"id\": \"memprop_demo0001\",\n          \"memory_type\": \"style_dna\",\n          \"polarity\": \"preserve\",\n          \"project_id\": \"proj_demo0001\",\n          \"proposed_action\": \"preserve\",\n          \"rationale\": \"The judgment called the condensation run 'the whole idea'.\",\n          \"scope\": \"skill\",\n          \"skill_id\": \"skill_demo0001\",\n          \"source_artifact_id\": null,\n          \"source_candidate_id\": \"cand_demo0001\",\n          \"source_prompt_batch_id\": \"batch_demo0001\",\n          \"source_prompt_id\": \"prompt_demo0001\",\n          \"source_template_id\": \"tmpl_demo0001\",\n          \"status\": \"accepted\"\n        },\n        \"id\": \"memprop_demo0001\",\n        \"kind\": \"proposal\"\n      },\n      \"resolved\": {\n        \"artifact\": null,\n        \"candidate\": {\n          \"fields\": {\n            \"artifact_id\": null,\n            \"created_at\": \"2026-01-01 00:00:13\",\n            \"id\": \"cand_demo0001\",\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_batch_id\": \"batch_demo0001\",\n            \"prompt_id\": \"prompt_demo0001\",\n            \"status\": \"feedback_added\",\n            \"workspace_id\": \"ws_demo0001\"\n          },\n          \"id\": \"cand_demo0001\",\n          \"kind\": \"candidate\"\n        },\n        \"feedback\": {\n          \"fields\": {\n            \"artifact_id\": null,\n            \"candidate_id\": \"cand_demo0001\",\n            \"created_at\": \"2026-01-01 00:00:28\",\n            \"id\": \"fb_demo0001\",\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_id\": \"prompt_demo0001\",\n            \"skill_id\": \"skill_demo0001\",\n            \"user_text\": \"The condensation run is the whole idea -- one physical change I can actually shoot, and the beading reads expensive. But the bottle is never legible; I get texture and no product. Keep the transformation, end on the bottle.\",\n            \"workspace_id\": \"ws_demo0001\"\n          },\n          \"id\": \"fb_demo0001\",\n          \"kind\": \"feedback\"\n        },\n        \"prompt\": {\n          \"fields\": {\n            \"created_at\": \"2026-01-01 00:00:21\",\n            \"id\": \"prompt_demo0001\",\n            \"parent_prompt_id\": null,\n            \"project_id\": \"proj_demo0001\",\n            \"prompt_batch_id\": \"batch_demo0001\",\n            \"skill_id\": \"skill_demo0001\",\n            \"structured_fields_json\": \"{\\\"role\\\": \\\"aligned\\\", \\\"index\\\": 1, \\\"brief\\\": \\\"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\\\", \\\"provider\\\": \\\"mock\\\", \\\"provider_model\\\": \\\"mock-prompt-generator\\\", \\\"target_model\\\": \\\"generic\\\", \\\"used_memory_ids\\\": [], \\\"used_memory\\\": [], \\\"reference_image\\\": null}\",\n            \"template_id\": \"tmpl_demo0001\",\n            \"text\": \"Macro on a chilled bottle: condensation beads gather, merge, and run, dragging a clean line down the frosted glass. A thumb of orange peel flexes just off-axis and throws a fine mist across the light. Shallow depth, slow push, cold blue-green key.\",\n            \"version_number\": 1\n          },\n          \"id\": \"prompt_demo0001\",\n          \"kind\": \"prompt\"\n        },\n        \"prompt_batch\": {\n          \"fields\": {\n            \"brief\": \"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\",\n            \"created_at\": \"2026-01-01 00:00:19\",\n            \"diversity_mode\": \"balanced\",\n            \"generation_plan_json\": \"{\\\"provider\\\": \\\"mock\\\", \\\"mode\\\": \\\"explore\\\", \\\"diversity_mode\\\": \\\"balanced\\\", \\\"roles\\\": [\\\"aligned\\\", \\\"exploratory\\\", \\\"variation\\\"], \\\"n\\\": 3, \\\"uses_accepted_memory\\\": false, \\\"template_id\\\": \\\"tmpl_demo0001\\\", \\\"template_name\\\": \\\"Default candidate prompt template\\\", \\\"meta_template_id\\\": \\\"tmpl_demo0002\\\", \\\"meta_template_name\\\": \\\"Default meta-prompt template\\\", \\\"target_model\\\": \\\"generic\\\", \\\"memory_inclusion\\\": \\\"all\\\", \\\"selected_memory_ids\\\": [], \\\"reference_image\\\": null, \\\"recipe\\\": {\\\"target_model\\\": \\\"generic\\\", \\\"meta_template_id\\\": \\\"tmpl_demo0002\\\", \\\"meta_template_updated_at\\\": \\\"2026-01-01T00:00:00Z\\\", \\\"candidate_template_id\\\": \\\"tmpl_demo0001\\\", \\\"candidate_template_updated_at\\\": \\\"2026-01-01T00:00:01Z\\\", \\\"brief\\\": \\\"Develop three visual concepts for a 16-second launch film for a new citrus fragrance. No dialogue or on-screen text. Each concept should feel tactile, premium, and feasible to shoot, with one clear visual idea.\\\", \\\"mode\\\": \\\"explore\\\", \\\"diversity_mode\\\": \\\"balanced\\\", \\\"variable_values\\\": {}, \\\"reference_image\\\": null}, \\\"memory_influence_trace\\\": {\\\"trace_version\\\": 1, \\\"attribution_scope\\\": \\\"prompt_batch\\\", \\\"attribution_note\\\": \\\"Batch-level trace of active accepted memories available to generate-next. This is not per-token or per-candidate attribution.\\\", \\\"active_memory_count\\\": 0, \\\"memory_refs\\\": []}, \\\"applied_memory_refs\\\": []}\",\n            \"id\": \"batch_demo0001\",\n            \"mode\": \"explore\",\n            \"project_id\": \"proj_demo0001\",\n            \"skill_id\": \"skill_demo0001\"\n          },\n          \"id\": \"batch_demo0001\",\n          \"kind\": \"prompt_batch\"\n        },\n        \"proposal\": null,\n        \"template\": {\n          \"fields\": {\n            \"created_at\": \"2026-01-01 00:00:10\",\n            \"description\": \"System-created default candidate prompt template.\",\n            \"fields_json\": \"{}\",\n            \"id\": \"tmpl_demo0001\",\n            \"model_target\": \"generic\",\n            \"name\": \"Default candidate prompt template\",\n            \"prompt_type\": \"candidate_generation\",\n            \"skill_id\": \"skill_demo0001\",\n            \"template_text\": \"A single self-contained prompt for {TARGET_MODEL}.\\n\\nIt must:\\n- commit to one concrete subject and one clear point of view\\n- make the style constraints explicit\\n- name what to avoid (negative constraints)\",\n            \"variables_json\": \"[\\\"TARGET_MODEL\\\"]\"\n          },\n          \"id\": \"tmpl_demo0001\",\n          \"kind\": \"template\"\n        }\n      },\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0001\",\n        \"feedback_id\": \"fb_demo0001\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0001\",\n        \"proposal_id\": null,\n        \"template_id\": \"tmpl_demo0001\"\n      }\n    }\n  ],\n  \"skill\": {\n    \"fields\": {\n      \"created_at\": \"2026-01-01 00:00:05\",\n      \"description\": \"Concept prompts for short launch films for a citrus fragrance.\",\n      \"id\": \"skill_demo0001\",\n      \"name\": \"Short Product Films\",\n      \"workspace_id\": \"ws_demo0001\"\n    },\n    \"id\": \"skill_demo0001\",\n    \"kind\": \"skill\"\n  },\n  \"skill_id\": \"skill_demo0001\",\n  \"summary\": {\n    \"accepted_memory_count\": 4,\n    \"proposal_count\": 6,\n    \"resolved_node_count\": 54\n  }\n}\n```\n\n### memory timeline\n- path: `/skills/skill_demo0001/memory-timeline`\n- status: ok\n\n```json\n{\n  \"events\": [\n    {\n      \"description\": \"The condensation run is the whole idea -- one physical change I can actually shoot, and the beading reads expensive. But the bottle is never legible; I get texture and no product. Keep the transformation, end on the bottle.\",\n      \"entity_id\": \"fb_demo0001\",\n      \"entity_kind\": \"feedback\",\n      \"event_type\": \"feedback_added\",\n      \"id\": \"feedback_added:feedback:fb_demo0001\",\n      \"label\": \"Feedback added\",\n      \"receipt_url\": null,\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0001\",\n        \"feedback_id\": \"fb_demo0001\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0001\",\n        \"proposal_id\": null,\n        \"template_id\": \"tmpl_demo0001\"\n      },\n      \"timestamp\": \"2026-01-01 00:00:28\"\n    },\n    {\n      \"description\": \"Organize each concept around a single physical transformation that can actually be shot.\",\n      \"entity_id\": \"memprop_demo0001\",\n      \"entity_kind\": \"proposal\",\n      \"event_type\": \"proposal_created\",\n      \"id\": \"proposal_created:proposal:memprop_demo0001\",\n      \"label\": \"Memory proposal created\",\n      \"receipt_url\": \"/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0001.md\",\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0001\",\n        \"feedback_id\": \"fb_demo0001\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0001\",\n        \"proposal_id\": null,\n        \"template_id\": \"tmpl_demo0001\"\n      },\n      \"timestamp\": \"2026-01-01 00:00:31\"\n    },\n    {\n      \"description\": \"Keep the product legible in the final beat.\",\n      \"entity_id\": \"memprop_demo0002\",\n      \"entity_kind\": \"proposal\",\n      \"event_type\": \"proposal_created\",\n      \"id\": \"proposal_created:proposal:memprop_demo0002\",\n      \"label\": \"Memory proposal created\",\n      \"receipt_url\": \"/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0002.md\",\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0001\",\n        \"feedback_id\": \"fb_demo0001\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0001\",\n        \"proposal_id\": null,\n        \"template_id\": \"tmpl_demo0001\"\n      },\n      \"timestamp\": \"2026-01-01 00:00:33\"\n    },\n    {\n      \"description\": \"Organize each concept around a single physical transformation that can actually be shot.\",\n      \"entity_id\": \"memprop_demo0001\",\n      \"entity_kind\": \"proposal\",\n      \"event_type\": \"proposal_accepted\",\n      \"id\": \"proposal_accepted:proposal:memprop_demo0001\",\n      \"label\": \"Proposal accepted\",\n      \"receipt_url\": \"/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0001.md\",\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0001\",\n        \"feedback_id\": \"fb_demo0001\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0001\",\n        \"proposal_id\": \"memprop_demo0001\",\n        \"template_id\": \"tmpl_demo0001\"\n      },\n      \"timestamp\": \"2026-01-01 00:00:38\"\n    },\n    {\n      \"description\": \"Organize each concept around a single physical transformation that can actually be shot.\",\n      \"entity_id\": \"mem_demo0001\",\n      \"entity_kind\": \"memory\",\n      \"event_type\": \"memory_activated\",\n      \"id\": \"memory_activated:memory:mem_demo0001\",\n      \"label\": \"Memory activated\",\n      \"receipt_url\": \"/skills/skill_demo0001/memory-ledger/receipts/memory/mem_demo0001.md\",\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0001\",\n        \"feedback_id\": \"fb_demo0001\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0001\",\n        \"proposal_id\": \"memprop_demo0001\",\n        \"template_id\": \"tmpl_demo0001\"\n      },\n      \"timestamp\": \"2026-01-01 00:00:38\"\n    },\n    {\n      \"description\": \"A canonical Markdown receipt is available for this accepted memory.\",\n      \"entity_id\": \"mem_demo0001\",\n      \"entity_kind\": \"memory\",\n      \"event_type\": \"receipt_available\",\n      \"id\": \"receipt_available:memory:mem_demo0001\",\n      \"label\": \"Receipt available\",\n      \"receipt_url\": \"/skills/skill_demo0001/memory-ledger/receipts/memory/mem_demo0001.md\",\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0001\",\n        \"feedback_id\": \"fb_demo0001\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0001\",\n        \"proposal_id\": \"memprop_demo0001\",\n        \"template_id\": \"tmpl_demo0001\"\n      },\n      \"timestamp\": \"2026-01-01 00:00:38\"\n    },\n    {\n      \"description\": \"Keep the product legible in the final beat.\",\n      \"entity_id\": \"memprop_demo0002\",\n      \"entity_kind\": \"proposal\",\n      \"event_type\": \"proposal_accepted\",\n      \"id\": \"proposal_accepted:proposal:memprop_demo0002\",\n      \"label\": \"Proposal accepted\",\n      \"receipt_url\": \"/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0002.md\",\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0001\",\n        \"feedback_id\": \"fb_demo0001\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0001\",\n        \"proposal_id\": \"memprop_demo0002\",\n        \"template_id\": \"tmpl_demo0001\"\n      },\n      \"timestamp\": \"2026-01-01 00:00:44\"\n    },\n    {\n      \"description\": \"Keep the product legible in the final beat.\",\n      \"entity_id\": \"mem_demo0002\",\n      \"entity_kind\": \"memory\",\n      \"event_type\": \"memory_activated\",\n      \"id\": \"memory_activated:memory:mem_demo0002\",\n      \"label\": \"Memory activated\",\n      \"receipt_url\": \"/skills/skill_demo0001/memory-ledger/receipts/memory/mem_demo0002.md\",\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0001\",\n        \"feedback_id\": \"fb_demo0001\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0001\",\n        \"proposal_id\": \"memprop_demo0002\",\n        \"template_id\": \"tmpl_demo0001\"\n      },\n      \"timestamp\": \"2026-01-01 00:00:44\"\n    },\n    {\n      \"description\": \"A canonical Markdown receipt is available for this accepted memory.\",\n      \"entity_id\": \"mem_demo0002\",\n      \"entity_kind\": \"memory\",\n      \"event_type\": \"receipt_available\",\n      \"id\": \"receipt_available:memory:mem_demo0002\",\n      \"label\": \"Receipt available\",\n      \"receipt_url\": \"/skills/skill_demo0001/memory-ledger/receipts/memory/mem_demo0002.md\",\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0001\",\n        \"feedback_id\": \"fb_demo0001\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0001\",\n        \"proposal_id\": \"memprop_demo0002\",\n        \"template_id\": \"tmpl_demo0001\"\n      },\n      \"timestamp\": \"2026-01-01 00:00:44\"\n    },\n    {\n      \"description\": \"Too many tricks competing: rotating bars, a spinning wedge, a leaf shadow, and a negative flip in sixteen seconds. Pick one. The amber and green is also generic set dressing rather than anything you can feel.\",\n      \"entity_id\": \"fb_demo0002\",\n      \"entity_kind\": \"feedback\",\n      \"event_type\": \"feedback_added\",\n      \"id\": \"feedback_added:feedback:fb_demo0002\",\n      \"label\": \"Feedback added\",\n      \"receipt_url\": null,\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0002\",\n        \"feedback_id\": \"fb_demo0002\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0002\",\n        \"proposal_id\": null,\n        \"template_id\": \"tmpl_demo0001\"\n      },\n      \"timestamp\": \"2026-01-01 00:00:48\"\n    },\n    {\n      \"description\": \"Do not stack competing visual tricks in one sixteen-second concept.\",\n      \"entity_id\": \"memprop_demo0003\",\n      \"entity_kind\": \"proposal\",\n      \"event_type\": \"proposal_created\",\n      \"id\": \"proposal_created:proposal:memprop_demo0003\",\n      \"label\": \"Memory proposal created\",\n      \"receipt_url\": \"/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0003.md\",\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0002\",\n        \"feedback_id\": \"fb_demo0002\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0002\",\n        \"proposal_id\": null,\n        \"template_id\": \"tmpl_demo0001\"\n      },\n      \"timestamp\": \"2026-01-01 00:00:51\"\n    },\n    {\n      \"description\": \"Avoid amber and green palettes.\",\n      \"entity_id\": \"memprop_demo0004\",\n      \"entity_kind\": \"proposal\",\n      \"event_type\": \"proposal_created\",\n      \"id\": \"proposal_created:proposal:memprop_demo0004\",\n      \"label\": \"Memory proposal created\",\n      \"receipt_url\": \"/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0004.md\",\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0002\",\n        \"feedback_id\": \"fb_demo0002\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0002\",\n        \"proposal_id\": null,\n        \"template_id\": \"tmpl_demo0001\"\n      },\n      \"timestamp\": \"2026-01-01 00:00:53\"\n    },\n    {\n      \"description\": \"Avoid amber and green palettes.\",\n      \"entity_id\": \"memprop_demo0004\",\n      \"entity_kind\": \"proposal\",\n      \"event_type\": \"proposal_rejected\",\n      \"id\": \"proposal_rejected:proposal:memprop_demo0004\",\n      \"label\": \"Proposal rejected\",\n      \"receipt_url\": \"/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0004.md\",\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0002\",\n        \"feedback_id\": \"fb_demo0002\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0002\",\n        \"proposal_id\": null,\n        \"template_id\": \"tmpl_demo0001\"\n      },\n      \"timestamp\": \"2026-01-01 00:00:53\"\n    },\n    {\n      \"description\": \"Do not stack competing visual tricks in one sixteen-second concept.\",\n      \"entity_id\": \"memprop_demo0003\",\n      \"entity_kind\": \"proposal\",\n      \"event_type\": \"proposal_accepted\",\n      \"id\": \"proposal_accepted:proposal:memprop_demo0003\",\n      \"label\": \"Proposal accepted\",\n      \"receipt_url\": \"/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0003.md\",\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0002\",\n        \"feedback_id\": \"fb_demo0002\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0002\",\n        \"proposal_id\": \"memprop_demo0003\",\n        \"template_id\": \"tmpl_demo0001\"\n      },\n      \"timestamp\": \"2026-01-01 00:00:58\"\n    },\n    {\n      \"description\": \"Do not stack competing visual tricks in one sixteen-second concept.\",\n      \"entity_id\": \"mem_demo0003\",\n      \"entity_kind\": \"memory\",\n      \"event_type\": \"memory_activated\",\n      \"id\": \"memory_activated:memory:mem_demo0003\",\n      \"label\": \"Memory activated\",\n      \"receipt_url\": \"/skills/skill_demo0001/memory-ledger/receipts/memory/mem_demo0003.md\",\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0002\",\n        \"feedback_id\": \"fb_demo0002\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0002\",\n        \"proposal_id\": \"memprop_demo0003\",\n        \"template_id\": \"tmpl_demo0001\"\n      },\n      \"timestamp\": \"2026-01-01 00:00:58\"\n    },\n    {\n      \"description\": \"A canonical Markdown receipt is available for this accepted memory.\",\n      \"entity_id\": \"mem_demo0003\",\n      \"entity_kind\": \"memory\",\n      \"event_type\": \"receipt_available\",\n      \"id\": \"receipt_available:memory:mem_demo0003\",\n      \"label\": \"Receipt available\",\n      \"receipt_url\": \"/skills/skill_demo0001/memory-ledger/receipts/memory/mem_demo0003.md\",\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0002\",\n        \"feedback_id\": \"fb_demo0002\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0002\",\n        \"proposal_id\": \"memprop_demo0003\",\n        \"template_id\": \"tmpl_demo0001\"\n      },\n      \"timestamp\": \"2026-01-01 00:00:58\"\n    },\n    {\n      \"description\": \"The crawling sunlight is a real transformation and the creased linen is the kind of material detail I want. The problem is the bottle is just one more prop on a busy table -- by the last beat I still cannot see the product.\",\n      \"entity_id\": \"fb_demo0003\",\n      \"entity_kind\": \"feedback\",\n      \"event_type\": \"feedback_added\",\n      \"id\": \"feedback_added:feedback:fb_demo0003\",\n      \"label\": \"Feedback added\",\n      \"receipt_url\": null,\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0003\",\n        \"feedback_id\": \"fb_demo0003\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0003\",\n        \"proposal_id\": null,\n        \"template_id\": \"tmpl_demo0001\"\n      },\n      \"timestamp\": \"2026-01-01 00:01:05\"\n    },\n    {\n      \"description\": \"Lead with tactile material detail rather than general atmosphere.\",\n      \"entity_id\": \"memprop_demo0005\",\n      \"entity_kind\": \"proposal\",\n      \"event_type\": \"proposal_created\",\n      \"id\": \"proposal_created:proposal:memprop_demo0005\",\n      \"label\": \"Memory proposal created\",\n      \"receipt_url\": \"/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0005.md\",\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0003\",\n        \"feedback_id\": \"fb_demo0003\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0003\",\n        \"proposal_id\": null,\n        \"template_id\": \"tmpl_demo0001\"\n      },\n      \"timestamp\": \"2026-01-01 00:01:08\"\n    },\n    {\n      \"description\": \"Limit each concept to two on-screen props besides the product.\",\n      \"entity_id\": \"memprop_demo0006\",\n      \"entity_kind\": \"proposal\",\n      \"event_type\": \"proposal_created\",\n      \"id\": \"proposal_created:proposal:memprop_demo0006\",\n      \"label\": \"Memory proposal created\",\n      \"receipt_url\": \"/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0006.md\",\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0003\",\n        \"feedback_id\": \"fb_demo0003\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0003\",\n        \"proposal_id\": null,\n        \"template_id\": \"tmpl_demo0001\"\n      },\n      \"timestamp\": \"2026-01-01 00:01:10\"\n    },\n    {\n      \"description\": \"Lead with tactile material detail rather than general atmosphere.\",\n      \"entity_id\": \"memprop_demo0005\",\n      \"entity_kind\": \"proposal\",\n      \"event_type\": \"proposal_accepted\",\n      \"id\": \"proposal_accepted:proposal:memprop_demo0005\",\n      \"label\": \"Proposal accepted\",\n      \"receipt_url\": \"/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0005.md\",\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0003\",\n        \"feedback_id\": \"fb_demo0003\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0003\",\n        \"proposal_id\": \"memprop_demo0005\",\n        \"template_id\": \"tmpl_demo0001\"\n      },\n      \"timestamp\": \"2026-01-01 00:01:15\"\n    },\n    {\n      \"description\": \"Lead with tactile material detail rather than general atmosphere.\",\n      \"entity_id\": \"mem_demo0004\",\n      \"entity_kind\": \"memory\",\n      \"event_type\": \"memory_activated\",\n      \"id\": \"memory_activated:memory:mem_demo0004\",\n      \"label\": \"Memory activated\",\n      \"receipt_url\": \"/skills/skill_demo0001/memory-ledger/receipts/memory/mem_demo0004.md\",\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0003\",\n        \"feedback_id\": \"fb_demo0003\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0003\",\n        \"proposal_id\": \"memprop_demo0005\",\n        \"template_id\": \"tmpl_demo0001\"\n      },\n      \"timestamp\": \"2026-01-01 00:01:15\"\n    },\n    {\n      \"description\": \"A canonical Markdown receipt is available for this accepted memory.\",\n      \"entity_id\": \"mem_demo0004\",\n      \"entity_kind\": \"memory\",\n      \"event_type\": \"receipt_available\",\n      \"id\": \"receipt_available:memory:mem_demo0004\",\n      \"label\": \"Receipt available\",\n      \"receipt_url\": \"/skills/skill_demo0001/memory-ledger/receipts/memory/mem_demo0004.md\",\n      \"source_ids\": {\n        \"artifact_id\": null,\n        \"candidate_id\": \"cand_demo0003\",\n        \"feedback_id\": \"fb_demo0003\",\n        \"prompt_batch_id\": \"batch_demo0001\",\n        \"prompt_id\": \"prompt_demo0003\",\n        \"proposal_id\": \"memprop_demo0005\",\n        \"template_id\": \"tmpl_demo0001\"\n      },\n      \"timestamp\": \"2026-01-01 00:01:15\"\n    }\n  ],\n  \"skill_id\": \"skill_demo0001\",\n  \"summary\": {\n    \"event_count\": 22,\n    \"feedback_event_count\": 3,\n    \"memory_event_count\": 4,\n    \"proposal_event_count\": 11,\n    \"receipt_event_count\": 4\n  }\n}\n```\n\n### memory lifecycle\n- path: `/skills/skill_demo0001/memory-lifecycle`\n- status: ok\n\n```json\n[\n  {\n    \"archived_at\": null,\n    \"last_reviewed_at\": null,\n    \"lifecycle_note\": null,\n    \"lifecycle_status\": \"active\",\n    \"memory_id\": \"mem_demo0004\",\n    \"pinned_at\": null,\n    \"skill_id\": \"skill_demo0001\"\n  },\n  {\n    \"archived_at\": null,\n    \"last_reviewed_at\": null,\n    \"lifecycle_note\": null,\n    \"lifecycle_status\": \"active\",\n    \"memory_id\": \"mem_demo0003\",\n    \"pinned_at\": null,\n    \"skill_id\": \"skill_demo0001\"\n  },\n  {\n    \"archived_at\": null,\n    \"last_reviewed_at\": null,\n    \"lifecycle_note\": null,\n    \"lifecycle_status\": \"active\",\n    \"memory_id\": \"mem_demo0002\",\n    \"pinned_at\": null,\n    \"skill_id\": \"skill_demo0001\"\n  },\n  {\n    \"archived_at\": null,\n    \"last_reviewed_at\": null,\n    \"lifecycle_note\": null,\n    \"lifecycle_status\": \"active\",\n    \"memory_id\": \"mem_demo0001\",\n    \"pinned_at\": null,\n    \"skill_id\": \"skill_demo0001\"\n  }\n]\n```\n\n### latest memory influence\n- path: `/skills/skill_demo0001/memory-influence/latest`\n- status: ok\n\n```json\n{\n  \"attribution_note\": \"Batch-level trace of active accepted memories available to generate-next. This is not per-token or per-candidate attribution.\",\n  \"influences\": [\n    {\n      \"content\": \"Organize each concept around a single physical transformation that can actually be shot.\",\n      \"copy_policy\": \"reference_only\",\n      \"memory_id\": \"mem_demo0001\",\n      \"memory_type\": \"style_dna\",\n      \"negative_fragment\": null,\n      \"polarity\": \"preserve\",\n      \"prompt_fragment\": \"Organize each concept around a single physical transformation that can actually be shot.\",\n      \"scope\": \"skill\",\n      \"source_artifact_id\": null,\n      \"source_candidate_id\": \"cand_demo0001\",\n      \"source_feedback_id\": \"fb_demo0001\",\n      \"source_prompt_batch_id\": \"batch_demo0001\",\n      \"source_prompt_id\": \"prompt_demo0001\",\n      \"source_proposal_id\": \"memprop_demo0001\",\n      \"source_template_id\": \"tmpl_demo0001\",\n      \"status\": \"active\",\n      \"strength\": \"soft_preference\"\n    },\n    {\n      \"content\": \"Keep the product legible in the final beat.\",\n      \"copy_policy\": \"reference_only\",\n      \"memory_id\": \"mem_demo0002\",\n      \"memory_type\": \"style_dna\",\n      \"negative_fragment\": null,\n      \"polarity\": \"preserve\",\n      \"prompt_fragment\": \"Keep the product legible in the final beat.\",\n      \"scope\": \"skill\",\n      \"source_artifact_id\": null,\n      \"source_candidate_id\": \"cand_demo0001\",\n      \"source_feedback_id\": \"fb_demo0001\",\n      \"source_prompt_batch_id\": \"batch_demo0001\",\n      \"source_prompt_id\": \"prompt_demo0001\",\n      \"source_proposal_id\": \"memprop_demo0002\",\n      \"source_template_id\": \"tmpl_demo0001\",\n      \"status\": \"active\",\n      \"strength\": \"soft_preference\"\n    },\n    {\n      \"content\": \"Do not stack competing visual tricks in one sixteen-second concept.\",\n      \"copy_policy\": \"reference_only\",\n      \"memory_id\": \"mem_demo0003\",\n      \"memory_type\": \"avoid_element\",\n      \"negative_fragment\": \"Do not stack competing visual tricks in one sixteen-second concept.\",\n      \"polarity\": \"avoid\",\n      \"prompt_fragment\": null,\n      \"scope\": \"skill\",\n      \"source_artifact_id\": null,\n      \"source_candidate_id\": \"cand_demo0002\",\n      \"source_feedback_id\": \"fb_demo0002\",\n      \"source_prompt_batch_id\": \"batch_demo0001\",\n      \"source_prompt_id\": \"prompt_demo0002\",\n      \"source_proposal_id\": \"memprop_demo0003\",\n      \"source_template_id\": \"tmpl_demo0001\",\n      \"status\": \"active\",\n      \"strength\": \"soft_preference\"\n    },\n    {\n      \"content\": \"Lead with tactile material detail rather than general atmosphere.\",\n      \"copy_policy\": \"reference_only\",\n      \"memory_id\": \"mem_demo0004\",\n      \"memory_type\": \"style_dna\",\n      \"negative_fragment\": null,\n      \"polarity\": \"preserve\",\n      \"prompt_fragment\": \"Lead with tactile material detail rather than general atmosphere.\",\n      \"scope\": \"skill\",\n      \"source_artifact_id\": null,\n      \"source_candidate_id\": \"cand_demo0003\",\n      \"source_feedback_id\": \"fb_demo0003\",\n      \"source_prompt_batch_id\": \"batch_demo0001\",\n      \"source_prompt_id\": \"prompt_demo0003\",\n      \"source_proposal_id\": \"memprop_demo0005\",\n      \"source_template_id\": \"tmpl_demo0001\",\n      \"status\": \"active\",\n      \"strength\": \"soft_preference\"\n    }\n  ],\n  \"prompt_batch_id\": \"batch_demo0002\",\n  \"skill_id\": \"skill_demo0001\",\n  \"summary\": {\n    \"attribution_scope\": \"prompt_batch\",\n    \"influence_count\": 4,\n    \"trace_version\": 1\n  }\n}\n```\n",
    "claim": "a provenance or session receipt"
  }
]
