{"note":"What each engine endpoint requires, and what it refuses to guess.","evaluate":{"path":"POST /v1/evaluate","hard_gates":["demand","distinct_task","business_value","information_advantage","technical_feasibility","maintainability","measurement","compliance"],"gate_rule":"Every gate must be an explicit boolean. A missing or partial gate is an error, never an implied pass.","value_factors":["demand_confidence","business_fit","task_value","information_advantage","conversion_value","attainability","existing_signal","reuse_potential","learning_value"],"cost_factors":["production_effort","technical_risk","maintenance_burden","time_to_learning","opportunity_cost"],"score_range":"0–5 per factor; confidence values are probabilities 0–1.","bands":[{"min":1.5,"decision":"P0_OR_P1","meaning":"Schedule now. High value against low cost and risk."},{"min":1,"decision":"P2","meaning":"Schedule in the current cycle."},{"min":0.6,"decision":"P3","meaning":"Backlog. Revisit when cost falls or evidence improves."},{"min":0,"decision":"P4_MONITOR_OR_EXPERIMENT","meaning":"Do not build yet. Monitor, or run a cheap experiment first.","exclusive":true}]},"volume":{"path":"POST /v1/volume","max_sample":10000,"rule":"The Cartesian product is never enumerated for large spaces and never returned as a publishing plan."},"cluster":{"path":"POST /v1/cluster","facts":[{"id":"same_sense","question":"Do both queries refer to the same sense of the concept?","splits_on":"sense differs"},{"id":"same_task","question":"Is the user trying to complete the same task?","splits_on":"task differs"},{"id":"compatible_answer_structure","question":"Can one answer structure serve both without padding?","splits_on":"combined answer harms usability"},{"id":"compatible_result_class","question":"Do the search results return the same class of page?","splits_on":"result class differs"},{"id":"compatible_next_action","question":"Does the same next action follow for both?","splits_on":"different conversion path"}],"hard_splits":[{"id":"local_inventory_differs","reason":"Real local or product inventory differs, so the answers cannot be the same page."},{"id":"legal_context_differs","reason":"The legal or regulatory context differs, so one page would be wrong for one audience."}],"rule":"An unknown fact routes to TEST — one provisional cluster and an observation — never to a second page."},"equation":{"path":"POST /v1/equation","factors":[{"id":"valuable_demand","name":"Valuable demand"},{"id":"technical_eligibility","name":"Technical eligibility"},{"id":"intent_fit","name":"Intent fit"},{"id":"information_advantage","name":"Information advantage"},{"id":"discoverability","name":"Discoverability"},{"id":"prominence","name":"Prominence"},{"id":"search_result_response","name":"Search-result response"},{"id":"conversion_efficiency","name":"Conversion efficiency"},{"id":"contribution_margin","name":"Contribution margin"},{"id":"learning_velocity","name":"Learning velocity"}]},"experiment":{"path":"POST /v1/experiment","required":["object","intervention","primary_metric","mechanism"]},"validate":{"path":"POST /v1/validate","schema":"GET /v1/schema"},"resolve":{"path":"POST /v1/resolve"},"laka":{"path":"POST /v1/laka"},"safe_failure":"Where the grammar cannot decide without a fact the caller has not supplied, the response names the missing fact rather than assuming a value."}