# LLM semantic review contract Read the sanitized `work/review/semantic-batch.json`, not raw STEP geometry. Maintain stable proposal identifiers when an existing candidate expresses the same method. Write `work/review/experience-draft.json` with this shape: ```json { "schema_version": "1.0", "draft_kind": "llm_generalized_experience_proposals", "proposals": [ { "id": "constraint.part_family.shared_axis", "kind": "constraint", "scope": ["part_family"], "evidence_query": { "required_features": ["rotational_body", "central_passage"], "required_relations": ["dominant_axis_alignment"], "context_features": ["rotational_body", "central_passage"] }, "guidance": "Preserve a shared axis across the participating feature roles.", "semantic_rationale": "The relationship remains meaningful when individual dimensions change.", "check": "Confirm that participating features retain their intended common axis." } ] } ``` Allowed kinds are `feature_motif`, `constraint`, `design_rule`, `validation_rule`, `failure_repair`, `dimensionless_distribution`, and `reconstruction_grammar`. Distribution proposals also provide `observation_name`; the publisher computes the distribution from private evidence and never accepts values from the draft. A `reconstruction_grammar` proposal must additionally contain symbolic, number-free reconstruction content: ```json { "id": "reconstruction.patterned_prismatic_part.primary", "kind": "reconstruction_grammar", "scope": ["patterned_prismatic_part"], "evidence_query": { "required_features": ["planar_dominant_body", "cylindrical_feature_network"], "required_relations": [], "context_features": ["planar_dominant_body"] }, "guidance": "Build a datum-driven envelope before adding the passage network and repeated features.", "semantic_rationale": "The staged method transfers across dimensional variants while preserving feature relationships.", "reconstruction_grammar": { "parameter_roles": ["overall_long_span", "overall_middle_span", "overall_short_span"], "datum_roles": ["part_center", "primary_axis", "primary_transverse_plane"], "feature_roles": ["planar_dominant_body", "cylindrical_feature_network"], "relation_roles": [], "canonical_stages": [ { "id": "establish_reference_frame", "operation": "define_datums", "feature_roles": [], "reference_roles": ["part_center", "primary_axis"] }, { "id": "construct_primary_envelope", "operation": "extrude_profile", "feature_roles": ["planar_dominant_body"], "reference_roles": ["part_center", "primary_axis"] } ], "cardinality_classes": ["plane_dense", "cylinder_dense"], "validation_roles": ["closed_solid", "surface_mix_consistency"] } } ``` Follow these rules: - Require an evidence query composed only of semantic feature and relation tokens present in the sanitized batch. - Use scopes to prevent unrelated part families from supporting a proposal. - Use `context_features` to define the conditional population used for confidence, so a valid subtype method is not diluted by unrelated variants in the same broad family. - Explain why a proposal transfers across dimensions and variants. - Avoid dimensions, coordinates, source identifiers, face references, and numeric literals in prose. - Do not infer build order or causal failure mechanisms from final geometry. - Treat `canonical_stages` as a recommended reconstruction order, never as a claim about the source CAD history. - For reconstruction grammars, retain only roles and stages repeated by the scoped evidence. Do not insert family knowledge that the sanitized batch does not support. - Prefer a small set of meaningful methods over every possible feature pair. - Preserve earlier proposal IDs when evidence still supports the same meaning. - Let the publisher calculate support and confidence; never claim them in the draft.