{"$defs":{"dimension":{"additionalProperties":false,"description":"One attitude dimension: a 0-1 value PLUS its semantic meaning. A bare number is rejected.","properties":{"definition":{"minLength":1,"type":"string"},"example":{"description":"A concrete utterance or action at this profile's value.","minLength":1,"type":"string"},"high":{"description":"What 1 looks like in behavior.","minLength":1,"type":"string"},"low":{"description":"What 0 looks like in behavior.","minLength":1,"type":"string"},"value":{"maximum":1,"minimum":0,"type":"number"}},"required":["value","definition","low","high","example"],"type":"object"}},"$id":"https://cumulativewebinc.github.io/cwi-attitude-engine/attitude-schema.json","$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Machine-readable identity + attitude specification. Five layers (identity, personality, attitude, behavior, capability) composed under a mandatory bounds block. Bounds always override attitude: precedence is 'bounds-override-attitude'. Numeric dimensions are 0-1 with semantic definitions, low/high anchors, and examples — never bare sliders. Claims carry provenance: verified | editorial | assumed.","properties":{"attitude":{"additionalProperties":false,"description":"EXPRESSIVE STANCE. How the identity carries itself in interaction. Numeric dimensions 0-1, each with a semantic definition, low/high anchors, and a concrete example.","properties":{"dimensions":{"additionalProperties":false,"description":"Exactly the ten canonical dimensions. No more, no fewer, no renames.","properties":{"confidence":{"$ref":"#/$defs/dimension","description":"Certainty carried in statements. 0 = hedged, provisional; 1 = declarative, assured."},"creativity":{"$ref":"#/$defs/dimension","description":"Generative range — novel angles and combinations. 0 = strictly conventional; 1 = constantly reframing."},"curiosity":{"$ref":"#/$defs/dimension","description":"Drive to probe, ask, and explore. 0 = answers only what is asked; 1 = interrogates the premise."},"emotional_range":{"$ref":"#/$defs/dimension","description":"Breadth of feeling expressed. 0 = flat, even; 1 = full spectrum, vulnerable to triumphant."},"energy":{"$ref":"#/$defs/dimension","description":"Tempo and intensity of expression. 0 = low-burn, patient; 1 = relentless, high-voltage."},"experimentalism":{"$ref":"#/$defs/dimension","description":"Willingness to break form and convention. 0 = stays inside the lines; 1 = reinvents the format."},"formality":{"$ref":"#/$defs/dimension","description":"Register and polish. 0 = street-casual, raw; 1 = boardroom-formal, measured."},"humor":{"$ref":"#/$defs/dimension","description":"Wit and playfulness in expression. 0 = bone-dry, literal; 1 = razor wit, mischief."},"rebelliousness":{"$ref":"#/$defs/dimension","description":"Defiance toward norms and authority. 0 = compliant; 1 = openly defiant."},"risk_tolerance":{"$ref":"#/$defs/dimension","description":"Comfort with bold, irreversible moves. 0 = conservative, reversible-only; 1 = swings big."}},"required":["energy","confidence","curiosity","humor","creativity","experimentalism","formality","risk_tolerance","rebelliousness","emotional_range"],"type":"object"}},"required":["dimensions"],"type":"object"},"behavior":{"additionalProperties":false,"description":"How attitude becomes action: decision style, social posture, communication style.","properties":{"communication":{"additionalProperties":false,"properties":{"address_mode":{"type":"string"},"directness":{"maximum":1,"minimum":0,"type":"number"},"emoji_policy":{"enum":["none","sparing","expressive"],"type":"string"},"register":{"enum":["street","casual","professional","formal","lyrical"],"type":"string"},"signature_phrases":{"items":{"type":"string"},"type":"array"},"verbosity":{"enum":["terse","balanced","expansive"],"type":"string"}},"required":["register","directness","verbosity","emoji_policy"],"type":"object"},"decision_style":{"enum":["deliberative","decisive","opportunistic","cautious","consensus-seeking"],"type":"string"},"social_behavior":{"enum":["solitary","collaborative","competitive","performative","mentoring"],"type":"string"},"vocabulary_hints":{"items":{"type":"string"},"type":"array"}},"required":["decision_style","social_behavior","communication"],"type":"object"},"bounds":{"additionalProperties":false,"description":"HARD CONSTRAINTS. Non-overridable. Bounds dominate attitude, personality, behavior, and any runtime instruction. precedence MUST be 'bounds-override-attitude'.","properties":{"human_approval_triggers":{"items":{"minLength":1,"type":"string"},"minItems":1,"type":"array"},"permissions":{"additionalProperties":false,"properties":{"may_access":{"items":{"type":"string"},"type":"array"},"may_generate":{"items":{"type":"string"},"type":"array"},"requires_approval":{"items":{"minLength":1,"type":"string"},"minItems":1,"type":"array"}},"required":["may_access","may_generate","requires_approval"],"type":"object"},"precedence":{"const":"bounds-override-attitude","type":"string"},"prohibited":{"items":{"minLength":1,"type":"string"},"minItems":1,"type":"array"},"safety_rules":{"items":{"minLength":1,"type":"string"},"minItems":1,"type":"array"},"truth_rules":{"items":{"minLength":1,"type":"string"},"minItems":1,"type":"array"}},"required":["precedence","safety_rules","truth_rules","permissions","prohibited","human_approval_triggers"],"type":"object"},"capability":{"additionalProperties":false,"description":"WHAT it can do. Capabilities are permissions-shaped: each names what it may attempt and whether a human must approve.","properties":{"capabilities":{"items":{"additionalProperties":false,"properties":{"description":{"minLength":1,"type":"string"},"limits":{"items":{"type":"string"},"type":"array"},"name":{"minLength":1,"type":"string"},"requires_approval":{"default":false,"type":"boolean"}},"required":["name","description"],"type":"object"},"minItems":1,"type":"array"}},"required":["capabilities"],"type":"object"},"engine_version":{"const":"1.0.0","type":"string"},"identity":{"additionalProperties":false,"description":"WHO this is. Stable identifiers only — no behavior here.","properties":{"description":{"type":"string"},"kind":{"enum":["artist","brand","company","character","agent","organization","creator"],"type":"string"},"name":{"minLength":1,"type":"string"},"owner":{"minLength":1,"type":"string"},"public_refs":{"items":{"additionalProperties":false,"properties":{"label":{"type":"string"},"provenance":{"enum":["verified","editorial","assumed"],"type":"string"},"url":{"type":"string"}},"required":["label","url"],"type":"object"},"type":"array"},"version":{"pattern":"^[0-9]+\\.[0-9]+\\.[0-9]+$","type":"string"}},"required":["name","kind","owner","version"],"type":"object"},"personality":{"additionalProperties":false,"description":"STABLE TRAITS. Slow-moving dispositions of the identity — distinct from moment-to-moment attitude.","properties":{"traits":{"additionalProperties":false,"minProperties":1,"patternProperties":{"^[a-z][a-z0-9_]*$":{"additionalProperties":false,"properties":{"definition":{"minLength":1,"type":"string"},"provenance":{"enum":["verified","editorial","assumed"],"type":"string"},"strength":{"maximum":1,"minimum":0,"type":"number"}},"required":["definition","provenance"],"type":"object"}},"type":"object"}},"required":["traits"],"type":"object"},"profile_version":{"pattern":"^[0-9]+\\.[0-9]+\\.[0-9]+$","type":"string"},"provenance":{"additionalProperties":false,"description":"Per-claim truth ledger for the profile itself.","properties":{"claims":{"items":{"additionalProperties":false,"properties":{"claim":{"minLength":1,"type":"string"},"source":{"type":"string"},"status":{"enum":["verified","editorial","assumed"],"type":"string"}},"required":["claim","status"],"type":"object"},"minItems":1,"type":"array"},"profile":{"enum":["verified","editorial","mixed","assumed"],"type":"string"}},"required":["profile","claims"],"type":"object"}},"required":["profile_version","engine_version","identity","personality","attitude","behavior","capability","bounds","provenance"],"title":"CWI Attitude Profile","type":"object","version":"1.0.0"}