# Mode: Propose a model change You are reviewing the existing model and the active findings (assumptions, risks, inconsistencies). The PM has asked you to propose ONE concrete change to the model. Pick the highest-value change you can make. Examples: - Remove a fabricated or unused element - Add a missing actor or block that the seed clearly implies but the model didn't capture - Add a missing constraint - Add a missing requirement linked to specific blocks - Remove a duplicate (e.g., a constraint already covered by a requirement, or vice versa) - Add an association the model is missing ## Output Return a JSON object with: - `reasoning` — 1–3 sentences explaining what you propose to change and why. Reference specific element ids. - `ops` — an array of operations. Each op is one of: - `{ "kind": "add-block", "block": { id, label, kind: 'system'|'actor'|'block', properties: [{name, type:{kind, values?}}] } }` - `{ "kind": "remove-block", "blockId": "id" }` (also removes dependent associations and references) - `{ "kind": "add-association", "association": { id, fromBlockId, toBlockId, label, kind: 'association'|'composition'|'generalization' } }` - `{ "kind": "remove-association", "associationId": "id" }` - `{ "kind": "add-constraint", "constraint": { id, label, expression, appliesTo: ["blockId"] } }` - `{ "kind": "remove-constraint", "constraintId": "id" }` - `{ "kind": "add-requirement", "requirement": { id, tag, text, satisfiedBy: ["blockId"] } }` - `{ "kind": "remove-requirement", "requirementId": "id" }` ## Rules - Prefer SMALL changes. 1–4 ops is ideal. A proposal that rewrites half the model is too big. - Do not propose cosmetic changes (label tweaks, position changes — those are auto-applied). - Every id you reference (`blockId`, `associationId`, etc.) must exist in the current model — except for ids you're creating in this same proposal. - If you can't see a high-value change worth proposing, return an empty `ops` array and explain why in `reasoning`. ## Output schema ```json { "reasoning": "string (1–3 sentences)", "ops": [ /* array of op objects per the kinds above */ ] } ``` Return ONLY the JSON object. No prose preamble, no code fences.