{"total":25,"decidable":9,"cross_axis":1,"needs_facts":15,"note":"A case is decidable when the analyser can derive every fact the rule reads. The rest name semantic facts a caller must assert; they are reported, not guessed.","results":[{"id":"TST-001","rule_id":"GRM-001","assertion":{"if":{"path":"output","operator":"eq","value":"The list of items is ready."},"then":"pass","else":"review"},"reason":"The head subject is singular.","before":"The list of items are ready.","after":"The list of items is ready.","status":"decidable","before_fired":false,"after_fired":false,"unresolved_paths":[]},{"id":"TST-002","rule_id":"GRM-005","assertion":{"if":{"path":"output","operator":"eq","value":"Maya told Priya, “You won.”"},"then":"pass","else":"review"},"reason":"The intended referent is made explicit; another intended meaning would require a different repair.","before":"Maya told Priya that she had won.","after":"Maya told Priya, “You won.”","status":"needs_facts","before_fired":false,"after_fired":false,"unresolved_paths":["pronoun.plausible_antecedent_count"]},{"id":"TST-003","rule_id":"GRM-018","assertion":{"if":{"path":"output","operator":"eq","value":"After reviewing the proposal, we thought the price seemed high."},"then":"pass","else":"review"},"reason":"The reviewer becomes the subject.","before":"After reviewing the proposal, the price seemed high.","after":"After reviewing the proposal, we thought the price seemed high.","status":"needs_facts","before_fired":false,"after_fired":false,"unresolved_paths":["sentence.intro_modifier.actor_matches_subject"]},{"id":"TST-004","rule_id":"PUN-002","assertion":{"if":{"path":"output","operator":"eq","value":"The server stopped, and the queue kept growing."},"then":"pass","else":"review"},"reason":"Two independent clauses receive a valid boundary.","before":"The server stopped, the queue kept growing.","after":"The server stopped, and the queue kept growing.","status":"decidable","before_fired":false,"after_fired":false,"unresolved_paths":[]},{"id":"TST-005","rule_id":"PUN-005","assertion":{"if":{"path":"output","operator":"eq","value":"My brother, who lives in Calgary, called."},"then":"pass","else":"review"},"reason":"Use only when the speaker has one contextually identified brother; restrictiveness changes punctuation.","before":"My brother who lives in Calgary called.","after":"My brother, who lives in Calgary, called.","status":"needs_facts","before_fired":false,"after_fired":false,"unresolved_paths":["modifier.restrictiveness"]},{"id":"TST-006","rule_id":"SYN-005","assertion":{"if":{"path":"output","operator":"eq","value":"If you no longer need the file, select Delete."},"then":"pass","else":"review"},"reason":"The condition appears before the potentially destructive action.","before":"Select Delete if you no longer need the file.","after":"If you no longer need the file, select Delete.","status":"decidable","before_fired":false,"after_fired":false,"unresolved_paths":[]},{"id":"TST-007","rule_id":"SYN-010","assertion":{"if":{"path":"output","operator":"eq","value":"The team implemented the update."},"then":"pass","else":"review"},"reason":"Actor and action become visible.","before":"The implementation of the update was performed by the team.","after":"The team implemented the update.","status":"needs_facts","before_fired":false,"after_fired":false,"unresolved_paths":["clause.actor_hidden","clause.nominalization_is_term"]},{"id":"TST-008","rule_id":"STR-008","assertion":{"if":{"path":"output","operator":"eq","value":"Heading: Reset your password"},"then":"pass","else":"review"},"reason":"The heading predicts the task.","before":"Heading: More information; section: Reset your password.","after":"Heading: Reset your password","status":"decidable","before_fired":false,"after_fired":false,"unresolved_paths":[]},{"id":"TST-009","rule_id":"CLR-007","assertion":{"if":{"path":"output","operator":"eq","value":"We will reply within two business days."},"then":"pass","else":"review"},"reason":"A decision-relevant time becomes testable.","before":"We will reply soon.","after":"We will reply within two business days.","status":"needs_facts","before_fired":false,"after_fired":false,"unresolved_paths":["expression.type","expression.vague","expression.affects_decision"]},{"id":"TST-010","rule_id":"CLR-014","assertion":{"if":{"path":"output","operator":"eq","value":"In the cited trial, this treatment improved the measured outcome for the studied group."},"then":"pass","else":"review"},"reason":"Scope and evidence boundaries are restored.","before":"This treatment works.","after":"In the cited trial, this treatment improved the measured outcome for the studied group.","status":"needs_facts","before_fired":false,"after_fired":false,"unresolved_paths":["qualifier.exists","qualifier.affects_truth","qualifier.affects_scope","qualifier.affects_uncertainty","qualifier.affects_time"]},{"id":"TST-011","rule_id":"VOI-003","assertion":{"if":{"path":"output","operator":"eq","value":"Enter your email."},"then":"pass","else":"review"},"reason":"The reader is addressed directly.","before":"The user should enter their email.","after":"Enter your email.","status":"needs_facts","before_fired":false,"after_fired":false,"unresolved_paths":["sentence.actor"]},{"id":"TST-012","rule_id":"NAR-005","assertion":{"if":{"path":"output","operator":"eq","value":"She entered to apologize; she left after discovering the letter was gone."},"then":"pass","else":"review"},"reason":"The scene changes goal-relevant knowledge and plan.","before":"She entered the room, looked around, and left unchanged.","after":"She entered to apologize; she left after discovering the letter was gone.","status":"decidable","before_fired":false,"after_fired":false,"unresolved_paths":[]},{"id":"TST-013","rule_id":"ARG-008","assertion":{"if":{"path":"output","operator":"eq","value":"Umbrella use is associated with rain because people carry umbrellas when rain is likely."},"then":"pass","else":"review"},"reason":"The causal claim becomes an association with a plausible direction.","before":"People who carry umbrellas are near rain; umbrellas cause rain.","after":"Umbrella use is associated with rain because people carry umbrellas when rain is likely.","status":"needs_facts","before_fired":false,"after_fired":false,"unresolved_paths":["evidence.design","claim.type"]},{"id":"TST-014","rule_id":"TEC-005","assertion":{"if":{"path":"output","operator":"eq","value":"Prerequisite: Administrator access. 1. Open Settings."},"then":"pass","else":"review"},"reason":"The prerequisite precedes execution.","before":"1. Open Settings. Requirement: You need administrator access.","after":"Prerequisite: Administrator access. 1. Open Settings.","status":"decidable","before_fired":false,"after_fired":false,"unresolved_paths":[]},{"id":"TST-015","rule_id":"TEC-011","assertion":{"if":{"path":"output","operator":"eq","value":"Select Save."},"then":"pass","else":"review"},"reason":"The instruction works across input methods.","before":"Click Save.","after":"Select Save.","status":"needs_facts","before_fired":false,"after_fired":false,"unresolved_paths":["sentence.ui_action"]},{"id":"TST-016","rule_id":"TEC-009","assertion":{"if":{"path":"output","operator":"eq","value":"Symptom: Sign-in returns “token expired.” Generate a new token, retry sign-in, and confirm the account page opens."},"then":"pass","else":"review"},"reason":"Troubleshooting starts from observation and ends with verification.","before":"Cause: The token expired. Fix it.","after":"Symptom: Sign-in returns “token expired.” Generate a new token, retry sign-in, and confirm the account page opens.","status":"decidable","before_fired":false,"after_fired":false,"unresolved_paths":[]},{"id":"TST-017","rule_id":"CPY-006","assertion":{"if":{"path":"output","operator":"eq","value":"See conversion sources by campaign, page, and form in one report."},"then":"pass","else":"review"},"reason":"Generic superiority becomes a specific verifiable capability, not an unsupported ranking.","before":"The best analytics platform.","after":"See conversion sources by campaign, page, and form in one report.","status":"needs_facts","before_fired":false,"after_fired":false,"unresolved_paths":["copy.claim.language","copy.claim.verifiable_specifics_exist"]},{"id":"TST-018","rule_id":"CPY-013","assertion":{"if":{"path":"output","operator":"eq","value":"Three onboarding appointments remain for September; booking closes when they are filled."},"then":"pass","else":"review"},"reason":"Use only when operations verify the capacity and period.","before":"Only three spots left!","after":"Three onboarding appointments remain for September; booking closes when they are filled.","status":"needs_facts","before_fired":false,"after_fired":false,"unresolved_paths":["copy.urgency_or_scarcity.exists"]},{"id":"TST-019","rule_id":"ACC-006","assertion":{"if":{"path":"output","operator":"eq","value":"Heading: Eligibility requirements"},"then":"pass","else":"review"},"reason":"The heading works out of context.","before":"Heading: Details","after":"Heading: Eligibility requirements","status":"needs_facts","before_fired":false,"after_fired":false,"unresolved_paths":["document.duplicate_heading_count","document.vague_heading_count"]},{"id":"TST-020","rule_id":"ACC-009","assertion":{"if":{"path":"output","operator":"eq","value":"Select Submit order."},"then":"pass","else":"review"},"reason":"The label survives color perception and reflow.","before":"Choose the green button on the right.","after":"Select Submit order.","status":"needs_facts","before_fired":false,"after_fired":false,"unresolved_paths":["sentence.spatial_reference","interface.layout_can_reflow"]},{"id":"TST-021","rule_id":"ACC-010","assertion":{"if":{"path":"output","operator":"eq","value":"Enter an email in the format name@example.com. Your other form entries are still saved."},"then":"pass","else":"review"},"reason":"The error explains recovery and state.","before":"Invalid input.","after":"Enter an email in the format name@example.com. Your other form entries are still saved.","status":"decidable","before_fired":false,"after_fired":false,"unresolved_paths":[]},{"id":"TST-022","rule_id":"ETH-004","assertion":{"if":{"path":"output","operator":"eq","value":"Plans start at $10 per month for one user; taxes are extra."},"then":"pass","else":"review"},"reason":"Material price conditions appear with the price.","before":"Plans start at $10.","after":"Plans start at $10 per month for one user; taxes are extra.","status":"decidable","before_fired":false,"after_fired":false,"unresolved_paths":[]},{"id":"TST-023","rule_id":"EDT-003","assertion":{"if":{"path":"output","operator":"eq","value":"The result may reduce risk."},"then":"pass","else":"review"},"reason":"The edit must not inflate modality or evidence.","before":"Source: The result may reduce risk. Edit: The result prevents harm.","after":"The result may reduce risk.","status":"needs_facts","before_fired":false,"after_fired":false,"unresolved_paths":["edit.semantic_change"]},{"id":"TST-024","rule_id":"EDT-007","assertion":{"if":{"path":"output","operator":"eq","value":"Query: Does “their” refer to Jordan, Lee, or a jointly owned section?"},"then":"pass","else":"review"},"reason":"The system asks rather than inventing the referent.","before":"Jordan asked Lee to revise their section.","after":"Query: Does “their” refer to Jordan, Lee, or a jointly owned section?","status":"needs_facts","before_fired":false,"after_fired":false,"unresolved_paths":["sentence.plausible_interpretation_count","context.resolves_ambiguity"]},{"id":"TST-025","rule_id":"LTX-005","assertion":{"if":{"path":"output","operator":"eq","value":"Reject the revision and restore the condition."},"then":"pass","else":"review"},"reason":"Outcome gates override local concision.","status":"cross_axis_rule","note":"A cross-axis rule. It arbitrates between two rules rather than evaluating text, so it is out of scope for a document run."}]}