# Short Product Films Session Receipt

Generated by canonical backend export.

## Cockpit

- Workspace: Showcase Workspace (ws_demo0001)
- Project: Citrus Launch (proj_demo0001)
- Skill: Short Product Films (skill_demo0001)
- Skill description: Concept prompts for short launch films for a citrus fragrance.

## Latest generated batch

- batch_id: batch_demo0002
- prompt_count: 3
- mode: explore
- diversity_mode: balanced

1. **aligned**

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.

2. **exploratory**

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.

3. **variation**

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.

## Latest batch candidates

1. **cand_demo0004**
   - status: prompt_generated
   - prompt_id: prompt_demo0004
2. **cand_demo0005**
   - status: prompt_generated
   - prompt_id: prompt_demo0005
3. **cand_demo0006**
   - status: prompt_generated
   - prompt_id: prompt_demo0006

## Current skill event counts

- **feedback analyzed:** 3
- **feedback created:** 3
- **memory proposal accepted:** 4
- **memory proposal rejected:** 1
- **prompt batch generated:** 2
- **prompt template created:** 2
- **prompt template used:** 2

## Recent current skill events

1. **Used a prompt template**
   - created_at: 2026-01-01T00:00:27Z
   - entity_type: prompt_batch
   - entity_id: batch_demo0002
2. **Generated a prompt batch**
   - created_at: 2026-01-01T00:00:28Z
   - entity_type: prompt_batch
   - entity_id: batch_demo0002
3. **Accepted a memory proposal**
   - created_at: 2026-01-01T00:00:29Z
   - entity_type: memory_proposal
   - entity_id: memprop_demo0005
4. **Analyzed feedback into memory proposals**
   - created_at: 2026-01-01T00:00:30Z
   - entity_type: feedback
   - entity_id: fb_demo0003
5. **Added feedback**
   - created_at: 2026-01-01T00:00:31Z
   - entity_type: feedback
   - entity_id: fb_demo0003
6. **Rejected a memory proposal**
   - created_at: 2026-01-01T00:00:32Z
   - entity_type: memory_proposal
   - entity_id: memprop_demo0004
7. **Accepted a memory proposal**
   - created_at: 2026-01-01T00:00:33Z
   - entity_type: memory_proposal
   - entity_id: memprop_demo0003
8. **Analyzed feedback into memory proposals**
   - created_at: 2026-01-01T00:00:34Z
   - entity_type: feedback
   - entity_id: fb_demo0002
9. **Added feedback**
   - created_at: 2026-01-01T00:00:35Z
   - entity_type: feedback
   - entity_id: fb_demo0002
10. **Accepted a memory proposal**
   - created_at: 2026-01-01T00:00:36Z
   - entity_type: memory_proposal
   - entity_id: memprop_demo0002
11. **Accepted a memory proposal**
   - created_at: 2026-01-01T00:00:37Z
   - entity_type: memory_proposal
   - entity_id: memprop_demo0001
12. **Analyzed feedback into memory proposals**
   - created_at: 2026-01-01T00:00:38Z
   - entity_type: feedback
   - entity_id: fb_demo0001
13. **Added feedback**
   - created_at: 2026-01-01T00:00:39Z
   - entity_type: feedback
   - entity_id: fb_demo0001
14. **Used a prompt template**
   - created_at: 2026-01-01T00:00:40Z
   - entity_type: prompt_batch
   - entity_id: batch_demo0001
15. **Generated a prompt batch**
   - created_at: 2026-01-01T00:00:41Z
   - entity_type: prompt_batch
   - entity_id: batch_demo0001

## All persistent activity counts

- **feedback analyzed:** 3
- **feedback created:** 3
- **memory proposal accepted:** 4
- **memory proposal rejected:** 1
- **prompt batch generated:** 2
- **prompt template created:** 2
- **prompt template used:** 2

## Memory ledger

### Ledger summary
```json
{
  "accepted_memory_count": 4,
  "proposal_count": 6,
  "resolved_node_count": 54
}
```

### Accepted memory
1. **Lead with tactile material detail rather than general atmosphere.**
   - id: mem_demo0004
   - type: style_dna
   - polarity: preserve
   - status: active
2. **Do not stack competing visual tricks in one sixteen-second concept.**
   - id: mem_demo0003
   - type: avoid_element
   - polarity: avoid
   - status: active
3. **Keep the product legible in the final beat.**
   - id: mem_demo0002
   - type: style_dna
   - polarity: preserve
   - status: active
4. **Organize each concept around a single physical transformation that can actually be shot.**
   - id: mem_demo0001
   - type: style_dna
   - polarity: preserve
   - status: active

### Memory proposals
1. **Limit each concept to two on-screen props besides the product.**
   - id: memprop_demo0006
   - type: style_dna
   - polarity: preserve
   - status: pending
   - confidence: 0.44
2. **Lead with tactile material detail rather than general atmosphere.**
   - id: memprop_demo0005
   - type: style_dna
   - polarity: preserve
   - status: accepted
   - confidence: 0.85
3. **Avoid amber and green palettes.**
   - id: memprop_demo0004
   - type: avoid_element
   - polarity: avoid
   - status: rejected
   - confidence: 0.52
4. **Do not stack competing visual tricks in one sixteen-second concept.**
   - id: memprop_demo0003
   - type: avoid_element
   - polarity: avoid
   - status: accepted
   - confidence: 0.9
5. **Keep the product legible in the final beat.**
   - id: memprop_demo0002
   - type: style_dna
   - polarity: preserve
   - status: accepted
   - confidence: 0.74
6. **Organize each concept around a single physical transformation that can actually be shot.**
   - id: memprop_demo0001
   - type: style_dna
   - polarity: preserve
   - status: accepted
   - confidence: 0.89

## Memory lifecycle

1. **mem_demo0004**
   - status: active
2. **mem_demo0003**
   - status: active
3. **mem_demo0002**
   - status: active
4. **mem_demo0001**
   - status: active

## Memory timeline

1. **feedback_added**
   - kind: feedback_added
   - at: 2026-01-01 00:00:28
2. **proposal_created**
   - kind: proposal_created
   - at: 2026-01-01 00:00:31
3. **proposal_created**
   - kind: proposal_created
   - at: 2026-01-01 00:00:33
4. **proposal_accepted**
   - kind: proposal_accepted
   - at: 2026-01-01 00:00:38
5. **memory_activated**
   - kind: memory_activated
   - at: 2026-01-01 00:00:38
6. **receipt_available**
   - kind: receipt_available
   - at: 2026-01-01 00:00:38
7. **proposal_accepted**
   - kind: proposal_accepted
   - at: 2026-01-01 00:00:44
8. **memory_activated**
   - kind: memory_activated
   - at: 2026-01-01 00:00:44
9. **receipt_available**
   - kind: receipt_available
   - at: 2026-01-01 00:00:44
10. **feedback_added**
   - kind: feedback_added
   - at: 2026-01-01 00:00:48
11. **proposal_created**
   - kind: proposal_created
   - at: 2026-01-01 00:00:51
12. **proposal_created**
   - kind: proposal_created
   - at: 2026-01-01 00:00:53
13. **proposal_rejected**
   - kind: proposal_rejected
   - at: 2026-01-01 00:00:53
14. **proposal_accepted**
   - kind: proposal_accepted
   - at: 2026-01-01 00:00:58
15. **memory_activated**
   - kind: memory_activated
   - at: 2026-01-01 00:00:58
16. **receipt_available**
   - kind: receipt_available
   - at: 2026-01-01 00:00:58
17. **feedback_added**
   - kind: feedback_added
   - at: 2026-01-01 00:01:05
18. **proposal_created**
   - kind: proposal_created
   - at: 2026-01-01 00:01:08
19. **proposal_created**
   - kind: proposal_created
   - at: 2026-01-01 00:01:10
20. **proposal_accepted**
   - kind: proposal_accepted
   - at: 2026-01-01 00:01:15
21. **memory_activated**
   - kind: memory_activated
   - at: 2026-01-01 00:01:15
22. **receipt_available**
   - kind: receipt_available
   - at: 2026-01-01 00:01:15

## Latest influence trace

1. **mem_demo0001**
   - type: style_dna
   - polarity: preserve
   - content: Organize each concept around a single physical transformation that can actually be shot.
   - strength: soft_preference
   - status: active
2. **mem_demo0002**
   - type: style_dna
   - polarity: preserve
   - content: Keep the product legible in the final beat.
   - strength: soft_preference
   - status: active
3. **mem_demo0003**
   - type: avoid_element
   - polarity: avoid
   - content: Do not stack competing visual tricks in one sixteen-second concept.
   - strength: soft_preference
   - status: active
4. **mem_demo0004**
   - type: style_dna
   - polarity: preserve
   - content: Lead with tactile material detail rather than general atmosphere.
   - strength: soft_preference
   - status: active

## Raw fetch appendix

### skill session recap
- path: `/skills/skill_demo0001/session-recap?limit=200`
- status: ok

```json
{
  "events": [
    {
      "created_at": "2026-01-01T00:00:27Z",
      "entity_id": "batch_demo0002",
      "entity_type": "prompt_batch",
      "event_type": "prompt_template_used",
      "id": "sevt_demo0001",
      "payload": {
        "recorded_from": "PromptBatchTable.after_flush",
        "source": "backend-native",
        "template_id": "tmpl_demo0001"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Used a prompt template",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:28Z",
      "entity_id": "batch_demo0002",
      "entity_type": "prompt_batch",
      "event_type": "prompt_batch_generated",
      "id": "sevt_demo0002",
      "payload": {
        "diversity_mode": "balanced",
        "mode": "explore",
        "recorded_from": "PromptBatchTable.after_flush",
        "source": "backend-native"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Generated a prompt batch",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:29Z",
      "entity_id": "memprop_demo0005",
      "entity_type": "memory_proposal",
      "event_type": "memory_proposal_accepted",
      "id": "sevt_demo0003",
      "payload": {
        "memory_id": "mem_demo0004",
        "recorded_from": "SkillMemoryItemTable.after_flush",
        "source": "backend-native"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Accepted a memory proposal",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:30Z",
      "entity_id": "fb_demo0003",
      "entity_type": "feedback",
      "event_type": "feedback_analyzed",
      "id": "sevt_demo0004",
      "payload": {
        "proposal_id": "memprop_demo0005",
        "recorded_from": "MemoryUpdateProposalTable.after_flush",
        "source": "backend-native"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Analyzed feedback into memory proposals",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:31Z",
      "entity_id": "fb_demo0003",
      "entity_type": "feedback",
      "event_type": "feedback_created",
      "id": "sevt_demo0005",
      "payload": {
        "artifact_id": null,
        "candidate_id": "cand_demo0003",
        "prompt_id": "prompt_demo0003",
        "recorded_from": "FeedbackTable.after_flush",
        "source": "backend-native"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Added feedback",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:32Z",
      "entity_id": "memprop_demo0004",
      "entity_type": "memory_proposal",
      "event_type": "memory_proposal_rejected",
      "id": "sevt_demo0006",
      "payload": {
        "previous_status": "pending",
        "recorded_from": "MemoryUpdateProposalTable.after_flush",
        "source": "backend-native"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Rejected a memory proposal",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:33Z",
      "entity_id": "memprop_demo0003",
      "entity_type": "memory_proposal",
      "event_type": "memory_proposal_accepted",
      "id": "sevt_demo0007",
      "payload": {
        "memory_id": "mem_demo0003",
        "recorded_from": "SkillMemoryItemTable.after_flush",
        "source": "backend-native"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Accepted a memory proposal",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:34Z",
      "entity_id": "fb_demo0002",
      "entity_type": "feedback",
      "event_type": "feedback_analyzed",
      "id": "sevt_demo0008",
      "payload": {
        "proposal_id": "memprop_demo0003",
        "recorded_from": "MemoryUpdateProposalTable.after_flush",
        "source": "backend-native"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Analyzed feedback into memory proposals",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:35Z",
      "entity_id": "fb_demo0002",
      "entity_type": "feedback",
      "event_type": "feedback_created",
      "id": "sevt_demo0009",
      "payload": {
        "artifact_id": null,
        "candidate_id": "cand_demo0002",
        "prompt_id": "prompt_demo0002",
        "recorded_from": "FeedbackTable.after_flush",
        "source": "backend-native"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Added feedback",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:36Z",
      "entity_id": "memprop_demo0002",
      "entity_type": "memory_proposal",
      "event_type": "memory_proposal_accepted",
      "id": "sevt_demo0010",
      "payload": {
        "memory_id": "mem_demo0002",
        "recorded_from": "SkillMemoryItemTable.after_flush",
        "source": "backend-native"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Accepted a memory proposal",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:37Z",
      "entity_id": "memprop_demo0001",
      "entity_type": "memory_proposal",
      "event_type": "memory_proposal_accepted",
      "id": "sevt_demo0011",
      "payload": {
        "memory_id": "mem_demo0001",
        "recorded_from": "SkillMemoryItemTable.after_flush",
        "source": "backend-native"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Accepted a memory proposal",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:38Z",
      "entity_id": "fb_demo0001",
      "entity_type": "feedback",
      "event_type": "feedback_analyzed",
      "id": "sevt_demo0012",
      "payload": {
        "proposal_id": "memprop_demo0001",
        "recorded_from": "MemoryUpdateProposalTable.after_flush",
        "source": "backend-native"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Analyzed feedback into memory proposals",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:39Z",
      "entity_id": "fb_demo0001",
      "entity_type": "feedback",
      "event_type": "feedback_created",
      "id": "sevt_demo0013",
      "payload": {
        "artifact_id": null,
        "candidate_id": "cand_demo0001",
        "prompt_id": "prompt_demo0001",
        "recorded_from": "FeedbackTable.after_flush",
        "source": "backend-native"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Added feedback",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:40Z",
      "entity_id": "batch_demo0001",
      "entity_type": "prompt_batch",
      "event_type": "prompt_template_used",
      "id": "sevt_demo0014",
      "payload": {
        "recorded_from": "PromptBatchTable.after_flush",
        "source": "backend-native",
        "template_id": "tmpl_demo0001"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Used a prompt template",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:41Z",
      "entity_id": "batch_demo0001",
      "entity_type": "prompt_batch",
      "event_type": "prompt_batch_generated",
      "id": "sevt_demo0015",
      "payload": {
        "diversity_mode": "balanced",
        "mode": "explore",
        "recorded_from": "PromptBatchTable.after_flush",
        "source": "backend-native"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Generated a prompt batch",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:42Z",
      "entity_id": "tmpl_demo0001",
      "entity_type": "prompt_template",
      "event_type": "prompt_template_created",
      "id": "sevt_demo0016",
      "payload": {
        "prompt_type": "candidate_generation",
        "recorded_from": "PromptTemplateTable.after_flush",
        "source": "backend-native"
      },
      "project_id": null,
      "session_run_id": null,
      "skill_id": "skill_demo0001",
      "summary": "Created a prompt template",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:43Z",
      "entity_id": "tmpl_demo0002",
      "entity_type": "prompt_template",
      "event_type": "prompt_template_created",
      "id": "sevt_demo0017",
      "payload": {
        "prompt_type": "meta_prompt",
        "recorded_from": "PromptTemplateTable.after_flush",
        "source": "backend-native"
      },
      "project_id": null,
      "session_run_id": null,
      "skill_id": "skill_demo0001",
      "summary": "Created a prompt template",
      "workspace_id": "ws_demo0001"
    }
  ],
  "skill_id": "skill_demo0001",
  "summary": {
    "event_counts": {
      "feedback_analyzed": 3,
      "feedback_created": 3,
      "memory_proposal_accepted": 4,
      "memory_proposal_rejected": 1,
      "prompt_batch_generated": 2,
      "prompt_template_created": 2,
      "prompt_template_used": 2
    },
    "latest_event_at": "2026-01-01T00:00:27Z",
    "total_events": 17
  }
}
```

### global session recap
- path: `/session-recap?limit=200`
- status: ok

```json
{
  "events": [
    {
      "created_at": "2026-01-01T00:00:27Z",
      "entity_id": "batch_demo0002",
      "entity_type": "prompt_batch",
      "event_type": "prompt_template_used",
      "id": "sevt_demo0001",
      "payload": {
        "recorded_from": "PromptBatchTable.after_flush",
        "source": "backend-native",
        "template_id": "tmpl_demo0001"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Used a prompt template",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:28Z",
      "entity_id": "batch_demo0002",
      "entity_type": "prompt_batch",
      "event_type": "prompt_batch_generated",
      "id": "sevt_demo0002",
      "payload": {
        "diversity_mode": "balanced",
        "mode": "explore",
        "recorded_from": "PromptBatchTable.after_flush",
        "source": "backend-native"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Generated a prompt batch",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:29Z",
      "entity_id": "memprop_demo0005",
      "entity_type": "memory_proposal",
      "event_type": "memory_proposal_accepted",
      "id": "sevt_demo0003",
      "payload": {
        "memory_id": "mem_demo0004",
        "recorded_from": "SkillMemoryItemTable.after_flush",
        "source": "backend-native"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Accepted a memory proposal",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:30Z",
      "entity_id": "fb_demo0003",
      "entity_type": "feedback",
      "event_type": "feedback_analyzed",
      "id": "sevt_demo0004",
      "payload": {
        "proposal_id": "memprop_demo0005",
        "recorded_from": "MemoryUpdateProposalTable.after_flush",
        "source": "backend-native"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Analyzed feedback into memory proposals",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:31Z",
      "entity_id": "fb_demo0003",
      "entity_type": "feedback",
      "event_type": "feedback_created",
      "id": "sevt_demo0005",
      "payload": {
        "artifact_id": null,
        "candidate_id": "cand_demo0003",
        "prompt_id": "prompt_demo0003",
        "recorded_from": "FeedbackTable.after_flush",
        "source": "backend-native"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Added feedback",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:32Z",
      "entity_id": "memprop_demo0004",
      "entity_type": "memory_proposal",
      "event_type": "memory_proposal_rejected",
      "id": "sevt_demo0006",
      "payload": {
        "previous_status": "pending",
        "recorded_from": "MemoryUpdateProposalTable.after_flush",
        "source": "backend-native"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Rejected a memory proposal",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:33Z",
      "entity_id": "memprop_demo0003",
      "entity_type": "memory_proposal",
      "event_type": "memory_proposal_accepted",
      "id": "sevt_demo0007",
      "payload": {
        "memory_id": "mem_demo0003",
        "recorded_from": "SkillMemoryItemTable.after_flush",
        "source": "backend-native"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Accepted a memory proposal",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:34Z",
      "entity_id": "fb_demo0002",
      "entity_type": "feedback",
      "event_type": "feedback_analyzed",
      "id": "sevt_demo0008",
      "payload": {
        "proposal_id": "memprop_demo0003",
        "recorded_from": "MemoryUpdateProposalTable.after_flush",
        "source": "backend-native"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Analyzed feedback into memory proposals",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:35Z",
      "entity_id": "fb_demo0002",
      "entity_type": "feedback",
      "event_type": "feedback_created",
      "id": "sevt_demo0009",
      "payload": {
        "artifact_id": null,
        "candidate_id": "cand_demo0002",
        "prompt_id": "prompt_demo0002",
        "recorded_from": "FeedbackTable.after_flush",
        "source": "backend-native"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Added feedback",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:36Z",
      "entity_id": "memprop_demo0002",
      "entity_type": "memory_proposal",
      "event_type": "memory_proposal_accepted",
      "id": "sevt_demo0010",
      "payload": {
        "memory_id": "mem_demo0002",
        "recorded_from": "SkillMemoryItemTable.after_flush",
        "source": "backend-native"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Accepted a memory proposal",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:37Z",
      "entity_id": "memprop_demo0001",
      "entity_type": "memory_proposal",
      "event_type": "memory_proposal_accepted",
      "id": "sevt_demo0011",
      "payload": {
        "memory_id": "mem_demo0001",
        "recorded_from": "SkillMemoryItemTable.after_flush",
        "source": "backend-native"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Accepted a memory proposal",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:38Z",
      "entity_id": "fb_demo0001",
      "entity_type": "feedback",
      "event_type": "feedback_analyzed",
      "id": "sevt_demo0012",
      "payload": {
        "proposal_id": "memprop_demo0001",
        "recorded_from": "MemoryUpdateProposalTable.after_flush",
        "source": "backend-native"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Analyzed feedback into memory proposals",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:39Z",
      "entity_id": "fb_demo0001",
      "entity_type": "feedback",
      "event_type": "feedback_created",
      "id": "sevt_demo0013",
      "payload": {
        "artifact_id": null,
        "candidate_id": "cand_demo0001",
        "prompt_id": "prompt_demo0001",
        "recorded_from": "FeedbackTable.after_flush",
        "source": "backend-native"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Added feedback",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:40Z",
      "entity_id": "batch_demo0001",
      "entity_type": "prompt_batch",
      "event_type": "prompt_template_used",
      "id": "sevt_demo0014",
      "payload": {
        "recorded_from": "PromptBatchTable.after_flush",
        "source": "backend-native",
        "template_id": "tmpl_demo0001"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Used a prompt template",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:41Z",
      "entity_id": "batch_demo0001",
      "entity_type": "prompt_batch",
      "event_type": "prompt_batch_generated",
      "id": "sevt_demo0015",
      "payload": {
        "diversity_mode": "balanced",
        "mode": "explore",
        "recorded_from": "PromptBatchTable.after_flush",
        "source": "backend-native"
      },
      "project_id": "proj_demo0001",
      "session_run_id": "srun_demo0001",
      "skill_id": "skill_demo0001",
      "summary": "Generated a prompt batch",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:42Z",
      "entity_id": "tmpl_demo0001",
      "entity_type": "prompt_template",
      "event_type": "prompt_template_created",
      "id": "sevt_demo0016",
      "payload": {
        "prompt_type": "candidate_generation",
        "recorded_from": "PromptTemplateTable.after_flush",
        "source": "backend-native"
      },
      "project_id": null,
      "session_run_id": null,
      "skill_id": "skill_demo0001",
      "summary": "Created a prompt template",
      "workspace_id": "ws_demo0001"
    },
    {
      "created_at": "2026-01-01T00:00:43Z",
      "entity_id": "tmpl_demo0002",
      "entity_type": "prompt_template",
      "event_type": "prompt_template_created",
      "id": "sevt_demo0017",
      "payload": {
        "prompt_type": "meta_prompt",
        "recorded_from": "PromptTemplateTable.after_flush",
        "source": "backend-native"
      },
      "project_id": null,
      "session_run_id": null,
      "skill_id": "skill_demo0001",
      "summary": "Created a prompt template",
      "workspace_id": "ws_demo0001"
    }
  ],
  "skill_id": null,
  "summary": {
    "event_counts": {
      "feedback_analyzed": 3,
      "feedback_created": 3,
      "memory_proposal_accepted": 4,
      "memory_proposal_rejected": 1,
      "prompt_batch_generated": 2,
      "prompt_template_created": 2,
      "prompt_template_used": 2
    },
    "latest_event_at": "2026-01-01T00:00:27Z",
    "total_events": 17
  }
}
```

### memory ledger
- path: `/skills/skill_demo0001/memory-ledger`
- status: ok

```json
{
  "accepted_memory": [
    {
      "memory": {
        "fields": {
          "content": "Lead with tactile material detail rather than general atmosphere.",
          "copy_policy": "reference_only",
          "created_at": "2026-01-01 00:01:15",
          "id": "mem_demo0004",
          "memory_type": "style_dna",
          "negative_fragment": null,
          "polarity": "preserve",
          "project_id": "proj_demo0001",
          "prompt_fragment": "Lead with tactile material detail rather than general atmosphere.",
          "scope": "skill",
          "skill_id": "skill_demo0001",
          "source_artifact_id": null,
          "source_candidate_id": "cand_demo0003",
          "source_feedback_id": "fb_demo0003",
          "source_prompt_batch_id": "batch_demo0001",
          "source_prompt_id": "prompt_demo0003",
          "source_proposal_id": "memprop_demo0005",
          "source_template_id": "tmpl_demo0001",
          "status": "active",
          "strength": "soft_preference"
        },
        "id": "mem_demo0004",
        "kind": "memory"
      },
      "resolved": {
        "artifact": null,
        "candidate": {
          "fields": {
            "artifact_id": null,
            "created_at": "2026-01-01 00:00:17",
            "id": "cand_demo0003",
            "project_id": "proj_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "prompt_id": "prompt_demo0003",
            "status": "feedback_added",
            "workspace_id": "ws_demo0001"
          },
          "id": "cand_demo0003",
          "kind": "candidate"
        },
        "feedback": {
          "fields": {
            "artifact_id": null,
            "candidate_id": "cand_demo0003",
            "created_at": "2026-01-01 00:01:05",
            "id": "fb_demo0003",
            "project_id": "proj_demo0001",
            "prompt_id": "prompt_demo0003",
            "skill_id": "skill_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.",
            "workspace_id": "ws_demo0001"
          },
          "id": "fb_demo0003",
          "kind": "feedback"
        },
        "prompt": {
          "fields": {
            "created_at": "2026-01-01 00:00:23",
            "id": "prompt_demo0003",
            "parent_prompt_id": null,
            "project_id": "proj_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "skill_id": "skill_demo0001",
            "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}",
            "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.",
            "version_number": 1
          },
          "id": "prompt_demo0003",
          "kind": "prompt"
        },
        "prompt_batch": {
          "fields": {
            "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.",
            "created_at": "2026-01-01 00:00:19",
            "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\": []}",
            "id": "batch_demo0001",
            "mode": "explore",
            "project_id": "proj_demo0001",
            "skill_id": "skill_demo0001"
          },
          "id": "batch_demo0001",
          "kind": "prompt_batch"
        },
        "proposal": {
          "fields": {
            "confidence": "0.85",
            "content": "Lead with tactile material detail rather than general atmosphere.",
            "created_at": "2026-01-01 00:01:08",
            "feedback_id": "fb_demo0003",
            "id": "memprop_demo0005",
            "memory_type": "style_dna",
            "polarity": "preserve",
            "project_id": "proj_demo0001",
            "proposed_action": "preserve",
            "rationale": "The judgment praised the creased linen as the wanted material detail.",
            "scope": "skill",
            "skill_id": "skill_demo0001",
            "source_artifact_id": null,
            "source_candidate_id": "cand_demo0003",
            "source_prompt_batch_id": "batch_demo0001",
            "source_prompt_id": "prompt_demo0003",
            "source_template_id": "tmpl_demo0001",
            "status": "accepted"
          },
          "id": "memprop_demo0005",
          "kind": "proposal"
        },
        "template": {
          "fields": {
            "created_at": "2026-01-01 00:00:10",
            "description": "System-created default candidate prompt template.",
            "fields_json": "{}",
            "id": "tmpl_demo0001",
            "model_target": "generic",
            "name": "Default candidate prompt template",
            "prompt_type": "candidate_generation",
            "skill_id": "skill_demo0001",
            "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\"]"
          },
          "id": "tmpl_demo0001",
          "kind": "template"
        }
      },
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0003",
        "feedback_id": "fb_demo0003",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0003",
        "proposal_id": "memprop_demo0005",
        "template_id": "tmpl_demo0001"
      }
    },
    {
      "memory": {
        "fields": {
          "content": "Do not stack competing visual tricks in one sixteen-second concept.",
          "copy_policy": "reference_only",
          "created_at": "2026-01-01 00:00:58",
          "id": "mem_demo0003",
          "memory_type": "avoid_element",
          "negative_fragment": "Do not stack competing visual tricks in one sixteen-second concept.",
          "polarity": "avoid",
          "project_id": "proj_demo0001",
          "prompt_fragment": null,
          "scope": "skill",
          "skill_id": "skill_demo0001",
          "source_artifact_id": null,
          "source_candidate_id": "cand_demo0002",
          "source_feedback_id": "fb_demo0002",
          "source_prompt_batch_id": "batch_demo0001",
          "source_prompt_id": "prompt_demo0002",
          "source_proposal_id": "memprop_demo0003",
          "source_template_id": "tmpl_demo0001",
          "status": "active",
          "strength": "soft_preference"
        },
        "id": "mem_demo0003",
        "kind": "memory"
      },
      "resolved": {
        "artifact": null,
        "candidate": {
          "fields": {
            "artifact_id": null,
            "created_at": "2026-01-01 00:00:15",
            "id": "cand_demo0002",
            "project_id": "proj_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "prompt_id": "prompt_demo0002",
            "status": "feedback_added",
            "workspace_id": "ws_demo0001"
          },
          "id": "cand_demo0002",
          "kind": "candidate"
        },
        "feedback": {
          "fields": {
            "artifact_id": null,
            "candidate_id": "cand_demo0002",
            "created_at": "2026-01-01 00:00:48",
            "id": "fb_demo0002",
            "project_id": "proj_demo0001",
            "prompt_id": "prompt_demo0002",
            "skill_id": "skill_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.",
            "workspace_id": "ws_demo0001"
          },
          "id": "fb_demo0002",
          "kind": "feedback"
        },
        "prompt": {
          "fields": {
            "created_at": "2026-01-01 00:00:22",
            "id": "prompt_demo0002",
            "parent_prompt_id": null,
            "project_id": "proj_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "skill_id": "skill_demo0001",
            "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}",
            "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.",
            "version_number": 1
          },
          "id": "prompt_demo0002",
          "kind": "prompt"
        },
        "prompt_batch": {
          "fields": {
            "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.",
            "created_at": "2026-01-01 00:00:19",
            "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\": []}",
            "id": "batch_demo0001",
            "mode": "explore",
            "project_id": "proj_demo0001",
            "skill_id": "skill_demo0001"
          },
          "id": "batch_demo0001",
          "kind": "prompt_batch"
        },
        "proposal": {
          "fields": {
            "confidence": "0.9",
            "content": "Do not stack competing visual tricks in one sixteen-second concept.",
            "created_at": "2026-01-01 00:00:51",
            "feedback_id": "fb_demo0002",
            "id": "memprop_demo0003",
            "memory_type": "avoid_element",
            "polarity": "avoid",
            "project_id": "proj_demo0001",
            "proposed_action": "avoid",
            "rationale": "The judgment listed four effects competing inside one film.",
            "scope": "skill",
            "skill_id": "skill_demo0001",
            "source_artifact_id": null,
            "source_candidate_id": "cand_demo0002",
            "source_prompt_batch_id": "batch_demo0001",
            "source_prompt_id": "prompt_demo0002",
            "source_template_id": "tmpl_demo0001",
            "status": "accepted"
          },
          "id": "memprop_demo0003",
          "kind": "proposal"
        },
        "template": {
          "fields": {
            "created_at": "2026-01-01 00:00:10",
            "description": "System-created default candidate prompt template.",
            "fields_json": "{}",
            "id": "tmpl_demo0001",
            "model_target": "generic",
            "name": "Default candidate prompt template",
            "prompt_type": "candidate_generation",
            "skill_id": "skill_demo0001",
            "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\"]"
          },
          "id": "tmpl_demo0001",
          "kind": "template"
        }
      },
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0002",
        "feedback_id": "fb_demo0002",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0002",
        "proposal_id": "memprop_demo0003",
        "template_id": "tmpl_demo0001"
      }
    },
    {
      "memory": {
        "fields": {
          "content": "Keep the product legible in the final beat.",
          "copy_policy": "reference_only",
          "created_at": "2026-01-01 00:00:44",
          "id": "mem_demo0002",
          "memory_type": "style_dna",
          "negative_fragment": null,
          "polarity": "preserve",
          "project_id": "proj_demo0001",
          "prompt_fragment": "Keep the product legible in the final beat.",
          "scope": "skill",
          "skill_id": "skill_demo0001",
          "source_artifact_id": null,
          "source_candidate_id": "cand_demo0001",
          "source_feedback_id": "fb_demo0001",
          "source_prompt_batch_id": "batch_demo0001",
          "source_prompt_id": "prompt_demo0001",
          "source_proposal_id": "memprop_demo0002",
          "source_template_id": "tmpl_demo0001",
          "status": "active",
          "strength": "soft_preference"
        },
        "id": "mem_demo0002",
        "kind": "memory"
      },
      "resolved": {
        "artifact": null,
        "candidate": {
          "fields": {
            "artifact_id": null,
            "created_at": "2026-01-01 00:00:13",
            "id": "cand_demo0001",
            "project_id": "proj_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "prompt_id": "prompt_demo0001",
            "status": "feedback_added",
            "workspace_id": "ws_demo0001"
          },
          "id": "cand_demo0001",
          "kind": "candidate"
        },
        "feedback": {
          "fields": {
            "artifact_id": null,
            "candidate_id": "cand_demo0001",
            "created_at": "2026-01-01 00:00:28",
            "id": "fb_demo0001",
            "project_id": "proj_demo0001",
            "prompt_id": "prompt_demo0001",
            "skill_id": "skill_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.",
            "workspace_id": "ws_demo0001"
          },
          "id": "fb_demo0001",
          "kind": "feedback"
        },
        "prompt": {
          "fields": {
            "created_at": "2026-01-01 00:00:21",
            "id": "prompt_demo0001",
            "parent_prompt_id": null,
            "project_id": "proj_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "skill_id": "skill_demo0001",
            "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}",
            "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.",
            "version_number": 1
          },
          "id": "prompt_demo0001",
          "kind": "prompt"
        },
        "prompt_batch": {
          "fields": {
            "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.",
            "created_at": "2026-01-01 00:00:19",
            "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\": []}",
            "id": "batch_demo0001",
            "mode": "explore",
            "project_id": "proj_demo0001",
            "skill_id": "skill_demo0001"
          },
          "id": "batch_demo0001",
          "kind": "prompt_batch"
        },
        "proposal": {
          "fields": {
            "confidence": "0.74",
            "content": "Keep the product legible in the final beat.",
            "created_at": "2026-01-01 00:00:33",
            "feedback_id": "fb_demo0001",
            "id": "memprop_demo0002",
            "memory_type": "style_dna",
            "polarity": "preserve",
            "project_id": "proj_demo0001",
            "proposed_action": "preserve",
            "rationale": "The judgment asked to end on the bottle after the transformation.",
            "scope": "skill",
            "skill_id": "skill_demo0001",
            "source_artifact_id": null,
            "source_candidate_id": "cand_demo0001",
            "source_prompt_batch_id": "batch_demo0001",
            "source_prompt_id": "prompt_demo0001",
            "source_template_id": "tmpl_demo0001",
            "status": "accepted"
          },
          "id": "memprop_demo0002",
          "kind": "proposal"
        },
        "template": {
          "fields": {
            "created_at": "2026-01-01 00:00:10",
            "description": "System-created default candidate prompt template.",
            "fields_json": "{}",
            "id": "tmpl_demo0001",
            "model_target": "generic",
            "name": "Default candidate prompt template",
            "prompt_type": "candidate_generation",
            "skill_id": "skill_demo0001",
            "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\"]"
          },
          "id": "tmpl_demo0001",
          "kind": "template"
        }
      },
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0001",
        "feedback_id": "fb_demo0001",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0001",
        "proposal_id": "memprop_demo0002",
        "template_id": "tmpl_demo0001"
      }
    },
    {
      "memory": {
        "fields": {
          "content": "Organize each concept around a single physical transformation that can actually be shot.",
          "copy_policy": "reference_only",
          "created_at": "2026-01-01 00:00:38",
          "id": "mem_demo0001",
          "memory_type": "style_dna",
          "negative_fragment": null,
          "polarity": "preserve",
          "project_id": "proj_demo0001",
          "prompt_fragment": "Organize each concept around a single physical transformation that can actually be shot.",
          "scope": "skill",
          "skill_id": "skill_demo0001",
          "source_artifact_id": null,
          "source_candidate_id": "cand_demo0001",
          "source_feedback_id": "fb_demo0001",
          "source_prompt_batch_id": "batch_demo0001",
          "source_prompt_id": "prompt_demo0001",
          "source_proposal_id": "memprop_demo0001",
          "source_template_id": "tmpl_demo0001",
          "status": "active",
          "strength": "soft_preference"
        },
        "id": "mem_demo0001",
        "kind": "memory"
      },
      "resolved": {
        "artifact": null,
        "candidate": {
          "fields": {
            "artifact_id": null,
            "created_at": "2026-01-01 00:00:13",
            "id": "cand_demo0001",
            "project_id": "proj_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "prompt_id": "prompt_demo0001",
            "status": "feedback_added",
            "workspace_id": "ws_demo0001"
          },
          "id": "cand_demo0001",
          "kind": "candidate"
        },
        "feedback": {
          "fields": {
            "artifact_id": null,
            "candidate_id": "cand_demo0001",
            "created_at": "2026-01-01 00:00:28",
            "id": "fb_demo0001",
            "project_id": "proj_demo0001",
            "prompt_id": "prompt_demo0001",
            "skill_id": "skill_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.",
            "workspace_id": "ws_demo0001"
          },
          "id": "fb_demo0001",
          "kind": "feedback"
        },
        "prompt": {
          "fields": {
            "created_at": "2026-01-01 00:00:21",
            "id": "prompt_demo0001",
            "parent_prompt_id": null,
            "project_id": "proj_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "skill_id": "skill_demo0001",
            "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}",
            "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.",
            "version_number": 1
          },
          "id": "prompt_demo0001",
          "kind": "prompt"
        },
        "prompt_batch": {
          "fields": {
            "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.",
            "created_at": "2026-01-01 00:00:19",
            "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\": []}",
            "id": "batch_demo0001",
            "mode": "explore",
            "project_id": "proj_demo0001",
            "skill_id": "skill_demo0001"
          },
          "id": "batch_demo0001",
          "kind": "prompt_batch"
        },
        "proposal": {
          "fields": {
            "confidence": "0.89",
            "content": "Organize each concept around a single physical transformation that can actually be shot.",
            "created_at": "2026-01-01 00:00:31",
            "feedback_id": "fb_demo0001",
            "id": "memprop_demo0001",
            "memory_type": "style_dna",
            "polarity": "preserve",
            "project_id": "proj_demo0001",
            "proposed_action": "preserve",
            "rationale": "The judgment called the condensation run 'the whole idea'.",
            "scope": "skill",
            "skill_id": "skill_demo0001",
            "source_artifact_id": null,
            "source_candidate_id": "cand_demo0001",
            "source_prompt_batch_id": "batch_demo0001",
            "source_prompt_id": "prompt_demo0001",
            "source_template_id": "tmpl_demo0001",
            "status": "accepted"
          },
          "id": "memprop_demo0001",
          "kind": "proposal"
        },
        "template": {
          "fields": {
            "created_at": "2026-01-01 00:00:10",
            "description": "System-created default candidate prompt template.",
            "fields_json": "{}",
            "id": "tmpl_demo0001",
            "model_target": "generic",
            "name": "Default candidate prompt template",
            "prompt_type": "candidate_generation",
            "skill_id": "skill_demo0001",
            "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\"]"
          },
          "id": "tmpl_demo0001",
          "kind": "template"
        }
      },
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0001",
        "feedback_id": "fb_demo0001",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0001",
        "proposal_id": "memprop_demo0001",
        "template_id": "tmpl_demo0001"
      }
    }
  ],
  "proposals": [
    {
      "proposal": {
        "fields": {
          "confidence": "0.44",
          "content": "Limit each concept to two on-screen props besides the product.",
          "created_at": "2026-01-01 00:01:10",
          "feedback_id": "fb_demo0003",
          "id": "memprop_demo0006",
          "memory_type": "style_dna",
          "polarity": "preserve",
          "project_id": "proj_demo0001",
          "proposed_action": "preserve",
          "rationale": "Only loosely implied by the note about a busy table; not stated.",
          "scope": "skill",
          "skill_id": "skill_demo0001",
          "source_artifact_id": null,
          "source_candidate_id": "cand_demo0003",
          "source_prompt_batch_id": "batch_demo0001",
          "source_prompt_id": "prompt_demo0003",
          "source_template_id": "tmpl_demo0001",
          "status": "pending"
        },
        "id": "memprop_demo0006",
        "kind": "proposal"
      },
      "resolved": {
        "artifact": null,
        "candidate": {
          "fields": {
            "artifact_id": null,
            "created_at": "2026-01-01 00:00:17",
            "id": "cand_demo0003",
            "project_id": "proj_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "prompt_id": "prompt_demo0003",
            "status": "feedback_added",
            "workspace_id": "ws_demo0001"
          },
          "id": "cand_demo0003",
          "kind": "candidate"
        },
        "feedback": {
          "fields": {
            "artifact_id": null,
            "candidate_id": "cand_demo0003",
            "created_at": "2026-01-01 00:01:05",
            "id": "fb_demo0003",
            "project_id": "proj_demo0001",
            "prompt_id": "prompt_demo0003",
            "skill_id": "skill_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.",
            "workspace_id": "ws_demo0001"
          },
          "id": "fb_demo0003",
          "kind": "feedback"
        },
        "prompt": {
          "fields": {
            "created_at": "2026-01-01 00:00:23",
            "id": "prompt_demo0003",
            "parent_prompt_id": null,
            "project_id": "proj_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "skill_id": "skill_demo0001",
            "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}",
            "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.",
            "version_number": 1
          },
          "id": "prompt_demo0003",
          "kind": "prompt"
        },
        "prompt_batch": {
          "fields": {
            "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.",
            "created_at": "2026-01-01 00:00:19",
            "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\": []}",
            "id": "batch_demo0001",
            "mode": "explore",
            "project_id": "proj_demo0001",
            "skill_id": "skill_demo0001"
          },
          "id": "batch_demo0001",
          "kind": "prompt_batch"
        },
        "proposal": null,
        "template": {
          "fields": {
            "created_at": "2026-01-01 00:00:10",
            "description": "System-created default candidate prompt template.",
            "fields_json": "{}",
            "id": "tmpl_demo0001",
            "model_target": "generic",
            "name": "Default candidate prompt template",
            "prompt_type": "candidate_generation",
            "skill_id": "skill_demo0001",
            "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\"]"
          },
          "id": "tmpl_demo0001",
          "kind": "template"
        }
      },
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0003",
        "feedback_id": "fb_demo0003",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0003",
        "proposal_id": null,
        "template_id": "tmpl_demo0001"
      }
    },
    {
      "proposal": {
        "fields": {
          "confidence": "0.85",
          "content": "Lead with tactile material detail rather than general atmosphere.",
          "created_at": "2026-01-01 00:01:08",
          "feedback_id": "fb_demo0003",
          "id": "memprop_demo0005",
          "memory_type": "style_dna",
          "polarity": "preserve",
          "project_id": "proj_demo0001",
          "proposed_action": "preserve",
          "rationale": "The judgment praised the creased linen as the wanted material detail.",
          "scope": "skill",
          "skill_id": "skill_demo0001",
          "source_artifact_id": null,
          "source_candidate_id": "cand_demo0003",
          "source_prompt_batch_id": "batch_demo0001",
          "source_prompt_id": "prompt_demo0003",
          "source_template_id": "tmpl_demo0001",
          "status": "accepted"
        },
        "id": "memprop_demo0005",
        "kind": "proposal"
      },
      "resolved": {
        "artifact": null,
        "candidate": {
          "fields": {
            "artifact_id": null,
            "created_at": "2026-01-01 00:00:17",
            "id": "cand_demo0003",
            "project_id": "proj_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "prompt_id": "prompt_demo0003",
            "status": "feedback_added",
            "workspace_id": "ws_demo0001"
          },
          "id": "cand_demo0003",
          "kind": "candidate"
        },
        "feedback": {
          "fields": {
            "artifact_id": null,
            "candidate_id": "cand_demo0003",
            "created_at": "2026-01-01 00:01:05",
            "id": "fb_demo0003",
            "project_id": "proj_demo0001",
            "prompt_id": "prompt_demo0003",
            "skill_id": "skill_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.",
            "workspace_id": "ws_demo0001"
          },
          "id": "fb_demo0003",
          "kind": "feedback"
        },
        "prompt": {
          "fields": {
            "created_at": "2026-01-01 00:00:23",
            "id": "prompt_demo0003",
            "parent_prompt_id": null,
            "project_id": "proj_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "skill_id": "skill_demo0001",
            "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}",
            "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.",
            "version_number": 1
          },
          "id": "prompt_demo0003",
          "kind": "prompt"
        },
        "prompt_batch": {
          "fields": {
            "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.",
            "created_at": "2026-01-01 00:00:19",
            "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\": []}",
            "id": "batch_demo0001",
            "mode": "explore",
            "project_id": "proj_demo0001",
            "skill_id": "skill_demo0001"
          },
          "id": "batch_demo0001",
          "kind": "prompt_batch"
        },
        "proposal": null,
        "template": {
          "fields": {
            "created_at": "2026-01-01 00:00:10",
            "description": "System-created default candidate prompt template.",
            "fields_json": "{}",
            "id": "tmpl_demo0001",
            "model_target": "generic",
            "name": "Default candidate prompt template",
            "prompt_type": "candidate_generation",
            "skill_id": "skill_demo0001",
            "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\"]"
          },
          "id": "tmpl_demo0001",
          "kind": "template"
        }
      },
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0003",
        "feedback_id": "fb_demo0003",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0003",
        "proposal_id": null,
        "template_id": "tmpl_demo0001"
      }
    },
    {
      "proposal": {
        "fields": {
          "confidence": "0.52",
          "content": "Avoid amber and green palettes.",
          "created_at": "2026-01-01 00:00:53",
          "feedback_id": "fb_demo0002",
          "id": "memprop_demo0004",
          "memory_type": "avoid_element",
          "polarity": "avoid",
          "project_id": "proj_demo0001",
          "proposed_action": "avoid",
          "rationale": "The judgment described the amber and green as generic set dressing.",
          "scope": "skill",
          "skill_id": "skill_demo0001",
          "source_artifact_id": null,
          "source_candidate_id": "cand_demo0002",
          "source_prompt_batch_id": "batch_demo0001",
          "source_prompt_id": "prompt_demo0002",
          "source_template_id": "tmpl_demo0001",
          "status": "rejected"
        },
        "id": "memprop_demo0004",
        "kind": "proposal"
      },
      "resolved": {
        "artifact": null,
        "candidate": {
          "fields": {
            "artifact_id": null,
            "created_at": "2026-01-01 00:00:15",
            "id": "cand_demo0002",
            "project_id": "proj_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "prompt_id": "prompt_demo0002",
            "status": "feedback_added",
            "workspace_id": "ws_demo0001"
          },
          "id": "cand_demo0002",
          "kind": "candidate"
        },
        "feedback": {
          "fields": {
            "artifact_id": null,
            "candidate_id": "cand_demo0002",
            "created_at": "2026-01-01 00:00:48",
            "id": "fb_demo0002",
            "project_id": "proj_demo0001",
            "prompt_id": "prompt_demo0002",
            "skill_id": "skill_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.",
            "workspace_id": "ws_demo0001"
          },
          "id": "fb_demo0002",
          "kind": "feedback"
        },
        "prompt": {
          "fields": {
            "created_at": "2026-01-01 00:00:22",
            "id": "prompt_demo0002",
            "parent_prompt_id": null,
            "project_id": "proj_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "skill_id": "skill_demo0001",
            "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}",
            "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.",
            "version_number": 1
          },
          "id": "prompt_demo0002",
          "kind": "prompt"
        },
        "prompt_batch": {
          "fields": {
            "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.",
            "created_at": "2026-01-01 00:00:19",
            "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\": []}",
            "id": "batch_demo0001",
            "mode": "explore",
            "project_id": "proj_demo0001",
            "skill_id": "skill_demo0001"
          },
          "id": "batch_demo0001",
          "kind": "prompt_batch"
        },
        "proposal": null,
        "template": {
          "fields": {
            "created_at": "2026-01-01 00:00:10",
            "description": "System-created default candidate prompt template.",
            "fields_json": "{}",
            "id": "tmpl_demo0001",
            "model_target": "generic",
            "name": "Default candidate prompt template",
            "prompt_type": "candidate_generation",
            "skill_id": "skill_demo0001",
            "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\"]"
          },
          "id": "tmpl_demo0001",
          "kind": "template"
        }
      },
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0002",
        "feedback_id": "fb_demo0002",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0002",
        "proposal_id": null,
        "template_id": "tmpl_demo0001"
      }
    },
    {
      "proposal": {
        "fields": {
          "confidence": "0.9",
          "content": "Do not stack competing visual tricks in one sixteen-second concept.",
          "created_at": "2026-01-01 00:00:51",
          "feedback_id": "fb_demo0002",
          "id": "memprop_demo0003",
          "memory_type": "avoid_element",
          "polarity": "avoid",
          "project_id": "proj_demo0001",
          "proposed_action": "avoid",
          "rationale": "The judgment listed four effects competing inside one film.",
          "scope": "skill",
          "skill_id": "skill_demo0001",
          "source_artifact_id": null,
          "source_candidate_id": "cand_demo0002",
          "source_prompt_batch_id": "batch_demo0001",
          "source_prompt_id": "prompt_demo0002",
          "source_template_id": "tmpl_demo0001",
          "status": "accepted"
        },
        "id": "memprop_demo0003",
        "kind": "proposal"
      },
      "resolved": {
        "artifact": null,
        "candidate": {
          "fields": {
            "artifact_id": null,
            "created_at": "2026-01-01 00:00:15",
            "id": "cand_demo0002",
            "project_id": "proj_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "prompt_id": "prompt_demo0002",
            "status": "feedback_added",
            "workspace_id": "ws_demo0001"
          },
          "id": "cand_demo0002",
          "kind": "candidate"
        },
        "feedback": {
          "fields": {
            "artifact_id": null,
            "candidate_id": "cand_demo0002",
            "created_at": "2026-01-01 00:00:48",
            "id": "fb_demo0002",
            "project_id": "proj_demo0001",
            "prompt_id": "prompt_demo0002",
            "skill_id": "skill_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.",
            "workspace_id": "ws_demo0001"
          },
          "id": "fb_demo0002",
          "kind": "feedback"
        },
        "prompt": {
          "fields": {
            "created_at": "2026-01-01 00:00:22",
            "id": "prompt_demo0002",
            "parent_prompt_id": null,
            "project_id": "proj_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "skill_id": "skill_demo0001",
            "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}",
            "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.",
            "version_number": 1
          },
          "id": "prompt_demo0002",
          "kind": "prompt"
        },
        "prompt_batch": {
          "fields": {
            "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.",
            "created_at": "2026-01-01 00:00:19",
            "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\": []}",
            "id": "batch_demo0001",
            "mode": "explore",
            "project_id": "proj_demo0001",
            "skill_id": "skill_demo0001"
          },
          "id": "batch_demo0001",
          "kind": "prompt_batch"
        },
        "proposal": null,
        "template": {
          "fields": {
            "created_at": "2026-01-01 00:00:10",
            "description": "System-created default candidate prompt template.",
            "fields_json": "{}",
            "id": "tmpl_demo0001",
            "model_target": "generic",
            "name": "Default candidate prompt template",
            "prompt_type": "candidate_generation",
            "skill_id": "skill_demo0001",
            "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\"]"
          },
          "id": "tmpl_demo0001",
          "kind": "template"
        }
      },
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0002",
        "feedback_id": "fb_demo0002",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0002",
        "proposal_id": null,
        "template_id": "tmpl_demo0001"
      }
    },
    {
      "proposal": {
        "fields": {
          "confidence": "0.74",
          "content": "Keep the product legible in the final beat.",
          "created_at": "2026-01-01 00:00:33",
          "feedback_id": "fb_demo0001",
          "id": "memprop_demo0002",
          "memory_type": "style_dna",
          "polarity": "preserve",
          "project_id": "proj_demo0001",
          "proposed_action": "preserve",
          "rationale": "The judgment asked to end on the bottle after the transformation.",
          "scope": "skill",
          "skill_id": "skill_demo0001",
          "source_artifact_id": null,
          "source_candidate_id": "cand_demo0001",
          "source_prompt_batch_id": "batch_demo0001",
          "source_prompt_id": "prompt_demo0001",
          "source_template_id": "tmpl_demo0001",
          "status": "accepted"
        },
        "id": "memprop_demo0002",
        "kind": "proposal"
      },
      "resolved": {
        "artifact": null,
        "candidate": {
          "fields": {
            "artifact_id": null,
            "created_at": "2026-01-01 00:00:13",
            "id": "cand_demo0001",
            "project_id": "proj_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "prompt_id": "prompt_demo0001",
            "status": "feedback_added",
            "workspace_id": "ws_demo0001"
          },
          "id": "cand_demo0001",
          "kind": "candidate"
        },
        "feedback": {
          "fields": {
            "artifact_id": null,
            "candidate_id": "cand_demo0001",
            "created_at": "2026-01-01 00:00:28",
            "id": "fb_demo0001",
            "project_id": "proj_demo0001",
            "prompt_id": "prompt_demo0001",
            "skill_id": "skill_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.",
            "workspace_id": "ws_demo0001"
          },
          "id": "fb_demo0001",
          "kind": "feedback"
        },
        "prompt": {
          "fields": {
            "created_at": "2026-01-01 00:00:21",
            "id": "prompt_demo0001",
            "parent_prompt_id": null,
            "project_id": "proj_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "skill_id": "skill_demo0001",
            "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}",
            "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.",
            "version_number": 1
          },
          "id": "prompt_demo0001",
          "kind": "prompt"
        },
        "prompt_batch": {
          "fields": {
            "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.",
            "created_at": "2026-01-01 00:00:19",
            "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\": []}",
            "id": "batch_demo0001",
            "mode": "explore",
            "project_id": "proj_demo0001",
            "skill_id": "skill_demo0001"
          },
          "id": "batch_demo0001",
          "kind": "prompt_batch"
        },
        "proposal": null,
        "template": {
          "fields": {
            "created_at": "2026-01-01 00:00:10",
            "description": "System-created default candidate prompt template.",
            "fields_json": "{}",
            "id": "tmpl_demo0001",
            "model_target": "generic",
            "name": "Default candidate prompt template",
            "prompt_type": "candidate_generation",
            "skill_id": "skill_demo0001",
            "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\"]"
          },
          "id": "tmpl_demo0001",
          "kind": "template"
        }
      },
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0001",
        "feedback_id": "fb_demo0001",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0001",
        "proposal_id": null,
        "template_id": "tmpl_demo0001"
      }
    },
    {
      "proposal": {
        "fields": {
          "confidence": "0.89",
          "content": "Organize each concept around a single physical transformation that can actually be shot.",
          "created_at": "2026-01-01 00:00:31",
          "feedback_id": "fb_demo0001",
          "id": "memprop_demo0001",
          "memory_type": "style_dna",
          "polarity": "preserve",
          "project_id": "proj_demo0001",
          "proposed_action": "preserve",
          "rationale": "The judgment called the condensation run 'the whole idea'.",
          "scope": "skill",
          "skill_id": "skill_demo0001",
          "source_artifact_id": null,
          "source_candidate_id": "cand_demo0001",
          "source_prompt_batch_id": "batch_demo0001",
          "source_prompt_id": "prompt_demo0001",
          "source_template_id": "tmpl_demo0001",
          "status": "accepted"
        },
        "id": "memprop_demo0001",
        "kind": "proposal"
      },
      "resolved": {
        "artifact": null,
        "candidate": {
          "fields": {
            "artifact_id": null,
            "created_at": "2026-01-01 00:00:13",
            "id": "cand_demo0001",
            "project_id": "proj_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "prompt_id": "prompt_demo0001",
            "status": "feedback_added",
            "workspace_id": "ws_demo0001"
          },
          "id": "cand_demo0001",
          "kind": "candidate"
        },
        "feedback": {
          "fields": {
            "artifact_id": null,
            "candidate_id": "cand_demo0001",
            "created_at": "2026-01-01 00:00:28",
            "id": "fb_demo0001",
            "project_id": "proj_demo0001",
            "prompt_id": "prompt_demo0001",
            "skill_id": "skill_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.",
            "workspace_id": "ws_demo0001"
          },
          "id": "fb_demo0001",
          "kind": "feedback"
        },
        "prompt": {
          "fields": {
            "created_at": "2026-01-01 00:00:21",
            "id": "prompt_demo0001",
            "parent_prompt_id": null,
            "project_id": "proj_demo0001",
            "prompt_batch_id": "batch_demo0001",
            "skill_id": "skill_demo0001",
            "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}",
            "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.",
            "version_number": 1
          },
          "id": "prompt_demo0001",
          "kind": "prompt"
        },
        "prompt_batch": {
          "fields": {
            "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.",
            "created_at": "2026-01-01 00:00:19",
            "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\": []}",
            "id": "batch_demo0001",
            "mode": "explore",
            "project_id": "proj_demo0001",
            "skill_id": "skill_demo0001"
          },
          "id": "batch_demo0001",
          "kind": "prompt_batch"
        },
        "proposal": null,
        "template": {
          "fields": {
            "created_at": "2026-01-01 00:00:10",
            "description": "System-created default candidate prompt template.",
            "fields_json": "{}",
            "id": "tmpl_demo0001",
            "model_target": "generic",
            "name": "Default candidate prompt template",
            "prompt_type": "candidate_generation",
            "skill_id": "skill_demo0001",
            "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\"]"
          },
          "id": "tmpl_demo0001",
          "kind": "template"
        }
      },
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0001",
        "feedback_id": "fb_demo0001",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0001",
        "proposal_id": null,
        "template_id": "tmpl_demo0001"
      }
    }
  ],
  "skill": {
    "fields": {
      "created_at": "2026-01-01 00:00:05",
      "description": "Concept prompts for short launch films for a citrus fragrance.",
      "id": "skill_demo0001",
      "name": "Short Product Films",
      "workspace_id": "ws_demo0001"
    },
    "id": "skill_demo0001",
    "kind": "skill"
  },
  "skill_id": "skill_demo0001",
  "summary": {
    "accepted_memory_count": 4,
    "proposal_count": 6,
    "resolved_node_count": 54
  }
}
```

### memory timeline
- path: `/skills/skill_demo0001/memory-timeline`
- status: ok

```json
{
  "events": [
    {
      "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_id": "fb_demo0001",
      "entity_kind": "feedback",
      "event_type": "feedback_added",
      "id": "feedback_added:feedback:fb_demo0001",
      "label": "Feedback added",
      "receipt_url": null,
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0001",
        "feedback_id": "fb_demo0001",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0001",
        "proposal_id": null,
        "template_id": "tmpl_demo0001"
      },
      "timestamp": "2026-01-01 00:00:28"
    },
    {
      "description": "Organize each concept around a single physical transformation that can actually be shot.",
      "entity_id": "memprop_demo0001",
      "entity_kind": "proposal",
      "event_type": "proposal_created",
      "id": "proposal_created:proposal:memprop_demo0001",
      "label": "Memory proposal created",
      "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0001.md",
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0001",
        "feedback_id": "fb_demo0001",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0001",
        "proposal_id": null,
        "template_id": "tmpl_demo0001"
      },
      "timestamp": "2026-01-01 00:00:31"
    },
    {
      "description": "Keep the product legible in the final beat.",
      "entity_id": "memprop_demo0002",
      "entity_kind": "proposal",
      "event_type": "proposal_created",
      "id": "proposal_created:proposal:memprop_demo0002",
      "label": "Memory proposal created",
      "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0002.md",
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0001",
        "feedback_id": "fb_demo0001",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0001",
        "proposal_id": null,
        "template_id": "tmpl_demo0001"
      },
      "timestamp": "2026-01-01 00:00:33"
    },
    {
      "description": "Organize each concept around a single physical transformation that can actually be shot.",
      "entity_id": "memprop_demo0001",
      "entity_kind": "proposal",
      "event_type": "proposal_accepted",
      "id": "proposal_accepted:proposal:memprop_demo0001",
      "label": "Proposal accepted",
      "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0001.md",
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0001",
        "feedback_id": "fb_demo0001",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0001",
        "proposal_id": "memprop_demo0001",
        "template_id": "tmpl_demo0001"
      },
      "timestamp": "2026-01-01 00:00:38"
    },
    {
      "description": "Organize each concept around a single physical transformation that can actually be shot.",
      "entity_id": "mem_demo0001",
      "entity_kind": "memory",
      "event_type": "memory_activated",
      "id": "memory_activated:memory:mem_demo0001",
      "label": "Memory activated",
      "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/memory/mem_demo0001.md",
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0001",
        "feedback_id": "fb_demo0001",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0001",
        "proposal_id": "memprop_demo0001",
        "template_id": "tmpl_demo0001"
      },
      "timestamp": "2026-01-01 00:00:38"
    },
    {
      "description": "A canonical Markdown receipt is available for this accepted memory.",
      "entity_id": "mem_demo0001",
      "entity_kind": "memory",
      "event_type": "receipt_available",
      "id": "receipt_available:memory:mem_demo0001",
      "label": "Receipt available",
      "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/memory/mem_demo0001.md",
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0001",
        "feedback_id": "fb_demo0001",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0001",
        "proposal_id": "memprop_demo0001",
        "template_id": "tmpl_demo0001"
      },
      "timestamp": "2026-01-01 00:00:38"
    },
    {
      "description": "Keep the product legible in the final beat.",
      "entity_id": "memprop_demo0002",
      "entity_kind": "proposal",
      "event_type": "proposal_accepted",
      "id": "proposal_accepted:proposal:memprop_demo0002",
      "label": "Proposal accepted",
      "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0002.md",
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0001",
        "feedback_id": "fb_demo0001",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0001",
        "proposal_id": "memprop_demo0002",
        "template_id": "tmpl_demo0001"
      },
      "timestamp": "2026-01-01 00:00:44"
    },
    {
      "description": "Keep the product legible in the final beat.",
      "entity_id": "mem_demo0002",
      "entity_kind": "memory",
      "event_type": "memory_activated",
      "id": "memory_activated:memory:mem_demo0002",
      "label": "Memory activated",
      "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/memory/mem_demo0002.md",
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0001",
        "feedback_id": "fb_demo0001",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0001",
        "proposal_id": "memprop_demo0002",
        "template_id": "tmpl_demo0001"
      },
      "timestamp": "2026-01-01 00:00:44"
    },
    {
      "description": "A canonical Markdown receipt is available for this accepted memory.",
      "entity_id": "mem_demo0002",
      "entity_kind": "memory",
      "event_type": "receipt_available",
      "id": "receipt_available:memory:mem_demo0002",
      "label": "Receipt available",
      "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/memory/mem_demo0002.md",
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0001",
        "feedback_id": "fb_demo0001",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0001",
        "proposal_id": "memprop_demo0002",
        "template_id": "tmpl_demo0001"
      },
      "timestamp": "2026-01-01 00:00:44"
    },
    {
      "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_id": "fb_demo0002",
      "entity_kind": "feedback",
      "event_type": "feedback_added",
      "id": "feedback_added:feedback:fb_demo0002",
      "label": "Feedback added",
      "receipt_url": null,
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0002",
        "feedback_id": "fb_demo0002",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0002",
        "proposal_id": null,
        "template_id": "tmpl_demo0001"
      },
      "timestamp": "2026-01-01 00:00:48"
    },
    {
      "description": "Do not stack competing visual tricks in one sixteen-second concept.",
      "entity_id": "memprop_demo0003",
      "entity_kind": "proposal",
      "event_type": "proposal_created",
      "id": "proposal_created:proposal:memprop_demo0003",
      "label": "Memory proposal created",
      "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0003.md",
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0002",
        "feedback_id": "fb_demo0002",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0002",
        "proposal_id": null,
        "template_id": "tmpl_demo0001"
      },
      "timestamp": "2026-01-01 00:00:51"
    },
    {
      "description": "Avoid amber and green palettes.",
      "entity_id": "memprop_demo0004",
      "entity_kind": "proposal",
      "event_type": "proposal_created",
      "id": "proposal_created:proposal:memprop_demo0004",
      "label": "Memory proposal created",
      "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0004.md",
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0002",
        "feedback_id": "fb_demo0002",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0002",
        "proposal_id": null,
        "template_id": "tmpl_demo0001"
      },
      "timestamp": "2026-01-01 00:00:53"
    },
    {
      "description": "Avoid amber and green palettes.",
      "entity_id": "memprop_demo0004",
      "entity_kind": "proposal",
      "event_type": "proposal_rejected",
      "id": "proposal_rejected:proposal:memprop_demo0004",
      "label": "Proposal rejected",
      "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0004.md",
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0002",
        "feedback_id": "fb_demo0002",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0002",
        "proposal_id": null,
        "template_id": "tmpl_demo0001"
      },
      "timestamp": "2026-01-01 00:00:53"
    },
    {
      "description": "Do not stack competing visual tricks in one sixteen-second concept.",
      "entity_id": "memprop_demo0003",
      "entity_kind": "proposal",
      "event_type": "proposal_accepted",
      "id": "proposal_accepted:proposal:memprop_demo0003",
      "label": "Proposal accepted",
      "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0003.md",
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0002",
        "feedback_id": "fb_demo0002",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0002",
        "proposal_id": "memprop_demo0003",
        "template_id": "tmpl_demo0001"
      },
      "timestamp": "2026-01-01 00:00:58"
    },
    {
      "description": "Do not stack competing visual tricks in one sixteen-second concept.",
      "entity_id": "mem_demo0003",
      "entity_kind": "memory",
      "event_type": "memory_activated",
      "id": "memory_activated:memory:mem_demo0003",
      "label": "Memory activated",
      "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/memory/mem_demo0003.md",
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0002",
        "feedback_id": "fb_demo0002",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0002",
        "proposal_id": "memprop_demo0003",
        "template_id": "tmpl_demo0001"
      },
      "timestamp": "2026-01-01 00:00:58"
    },
    {
      "description": "A canonical Markdown receipt is available for this accepted memory.",
      "entity_id": "mem_demo0003",
      "entity_kind": "memory",
      "event_type": "receipt_available",
      "id": "receipt_available:memory:mem_demo0003",
      "label": "Receipt available",
      "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/memory/mem_demo0003.md",
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0002",
        "feedback_id": "fb_demo0002",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0002",
        "proposal_id": "memprop_demo0003",
        "template_id": "tmpl_demo0001"
      },
      "timestamp": "2026-01-01 00:00:58"
    },
    {
      "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_id": "fb_demo0003",
      "entity_kind": "feedback",
      "event_type": "feedback_added",
      "id": "feedback_added:feedback:fb_demo0003",
      "label": "Feedback added",
      "receipt_url": null,
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0003",
        "feedback_id": "fb_demo0003",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0003",
        "proposal_id": null,
        "template_id": "tmpl_demo0001"
      },
      "timestamp": "2026-01-01 00:01:05"
    },
    {
      "description": "Lead with tactile material detail rather than general atmosphere.",
      "entity_id": "memprop_demo0005",
      "entity_kind": "proposal",
      "event_type": "proposal_created",
      "id": "proposal_created:proposal:memprop_demo0005",
      "label": "Memory proposal created",
      "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0005.md",
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0003",
        "feedback_id": "fb_demo0003",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0003",
        "proposal_id": null,
        "template_id": "tmpl_demo0001"
      },
      "timestamp": "2026-01-01 00:01:08"
    },
    {
      "description": "Limit each concept to two on-screen props besides the product.",
      "entity_id": "memprop_demo0006",
      "entity_kind": "proposal",
      "event_type": "proposal_created",
      "id": "proposal_created:proposal:memprop_demo0006",
      "label": "Memory proposal created",
      "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0006.md",
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0003",
        "feedback_id": "fb_demo0003",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0003",
        "proposal_id": null,
        "template_id": "tmpl_demo0001"
      },
      "timestamp": "2026-01-01 00:01:10"
    },
    {
      "description": "Lead with tactile material detail rather than general atmosphere.",
      "entity_id": "memprop_demo0005",
      "entity_kind": "proposal",
      "event_type": "proposal_accepted",
      "id": "proposal_accepted:proposal:memprop_demo0005",
      "label": "Proposal accepted",
      "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/proposal/memprop_demo0005.md",
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0003",
        "feedback_id": "fb_demo0003",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0003",
        "proposal_id": "memprop_demo0005",
        "template_id": "tmpl_demo0001"
      },
      "timestamp": "2026-01-01 00:01:15"
    },
    {
      "description": "Lead with tactile material detail rather than general atmosphere.",
      "entity_id": "mem_demo0004",
      "entity_kind": "memory",
      "event_type": "memory_activated",
      "id": "memory_activated:memory:mem_demo0004",
      "label": "Memory activated",
      "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/memory/mem_demo0004.md",
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0003",
        "feedback_id": "fb_demo0003",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0003",
        "proposal_id": "memprop_demo0005",
        "template_id": "tmpl_demo0001"
      },
      "timestamp": "2026-01-01 00:01:15"
    },
    {
      "description": "A canonical Markdown receipt is available for this accepted memory.",
      "entity_id": "mem_demo0004",
      "entity_kind": "memory",
      "event_type": "receipt_available",
      "id": "receipt_available:memory:mem_demo0004",
      "label": "Receipt available",
      "receipt_url": "/skills/skill_demo0001/memory-ledger/receipts/memory/mem_demo0004.md",
      "source_ids": {
        "artifact_id": null,
        "candidate_id": "cand_demo0003",
        "feedback_id": "fb_demo0003",
        "prompt_batch_id": "batch_demo0001",
        "prompt_id": "prompt_demo0003",
        "proposal_id": "memprop_demo0005",
        "template_id": "tmpl_demo0001"
      },
      "timestamp": "2026-01-01 00:01:15"
    }
  ],
  "skill_id": "skill_demo0001",
  "summary": {
    "event_count": 22,
    "feedback_event_count": 3,
    "memory_event_count": 4,
    "proposal_event_count": 11,
    "receipt_event_count": 4
  }
}
```

### memory lifecycle
- path: `/skills/skill_demo0001/memory-lifecycle`
- status: ok

```json
[
  {
    "archived_at": null,
    "last_reviewed_at": null,
    "lifecycle_note": null,
    "lifecycle_status": "active",
    "memory_id": "mem_demo0004",
    "pinned_at": null,
    "skill_id": "skill_demo0001"
  },
  {
    "archived_at": null,
    "last_reviewed_at": null,
    "lifecycle_note": null,
    "lifecycle_status": "active",
    "memory_id": "mem_demo0003",
    "pinned_at": null,
    "skill_id": "skill_demo0001"
  },
  {
    "archived_at": null,
    "last_reviewed_at": null,
    "lifecycle_note": null,
    "lifecycle_status": "active",
    "memory_id": "mem_demo0002",
    "pinned_at": null,
    "skill_id": "skill_demo0001"
  },
  {
    "archived_at": null,
    "last_reviewed_at": null,
    "lifecycle_note": null,
    "lifecycle_status": "active",
    "memory_id": "mem_demo0001",
    "pinned_at": null,
    "skill_id": "skill_demo0001"
  }
]
```

### latest memory influence
- path: `/skills/skill_demo0001/memory-influence/latest`
- status: ok

```json
{
  "attribution_note": "Batch-level trace of active accepted memories available to generate-next. This is not per-token or per-candidate attribution.",
  "influences": [
    {
      "content": "Organize each concept around a single physical transformation that can actually be shot.",
      "copy_policy": "reference_only",
      "memory_id": "mem_demo0001",
      "memory_type": "style_dna",
      "negative_fragment": null,
      "polarity": "preserve",
      "prompt_fragment": "Organize each concept around a single physical transformation that can actually be shot.",
      "scope": "skill",
      "source_artifact_id": null,
      "source_candidate_id": "cand_demo0001",
      "source_feedback_id": "fb_demo0001",
      "source_prompt_batch_id": "batch_demo0001",
      "source_prompt_id": "prompt_demo0001",
      "source_proposal_id": "memprop_demo0001",
      "source_template_id": "tmpl_demo0001",
      "status": "active",
      "strength": "soft_preference"
    },
    {
      "content": "Keep the product legible in the final beat.",
      "copy_policy": "reference_only",
      "memory_id": "mem_demo0002",
      "memory_type": "style_dna",
      "negative_fragment": null,
      "polarity": "preserve",
      "prompt_fragment": "Keep the product legible in the final beat.",
      "scope": "skill",
      "source_artifact_id": null,
      "source_candidate_id": "cand_demo0001",
      "source_feedback_id": "fb_demo0001",
      "source_prompt_batch_id": "batch_demo0001",
      "source_prompt_id": "prompt_demo0001",
      "source_proposal_id": "memprop_demo0002",
      "source_template_id": "tmpl_demo0001",
      "status": "active",
      "strength": "soft_preference"
    },
    {
      "content": "Do not stack competing visual tricks in one sixteen-second concept.",
      "copy_policy": "reference_only",
      "memory_id": "mem_demo0003",
      "memory_type": "avoid_element",
      "negative_fragment": "Do not stack competing visual tricks in one sixteen-second concept.",
      "polarity": "avoid",
      "prompt_fragment": null,
      "scope": "skill",
      "source_artifact_id": null,
      "source_candidate_id": "cand_demo0002",
      "source_feedback_id": "fb_demo0002",
      "source_prompt_batch_id": "batch_demo0001",
      "source_prompt_id": "prompt_demo0002",
      "source_proposal_id": "memprop_demo0003",
      "source_template_id": "tmpl_demo0001",
      "status": "active",
      "strength": "soft_preference"
    },
    {
      "content": "Lead with tactile material detail rather than general atmosphere.",
      "copy_policy": "reference_only",
      "memory_id": "mem_demo0004",
      "memory_type": "style_dna",
      "negative_fragment": null,
      "polarity": "preserve",
      "prompt_fragment": "Lead with tactile material detail rather than general atmosphere.",
      "scope": "skill",
      "source_artifact_id": null,
      "source_candidate_id": "cand_demo0003",
      "source_feedback_id": "fb_demo0003",
      "source_prompt_batch_id": "batch_demo0001",
      "source_prompt_id": "prompt_demo0003",
      "source_proposal_id": "memprop_demo0005",
      "source_template_id": "tmpl_demo0001",
      "status": "active",
      "strength": "soft_preference"
    }
  ],
  "prompt_batch_id": "batch_demo0002",
  "skill_id": "skill_demo0001",
  "summary": {
    "attribution_scope": "prompt_batch",
    "influence_count": 4,
    "trace_version": 1
  }
}
```
