Files
theclaymethod__unslop/evals/core-benchmark.json
2026-08-04 19:05:27 -07:00

241 lines
29 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"schema": "unslop-core-benchmark-v1",
"required_arms": ["with_skill", "without_skill"],
"cases": [
{
"id": "core-mkt-tune-01",
"split": "tune",
"genre": "marketing/business memo",
"register": "polished launch memo",
"word_count": 182,
"provenance": {
"kind": "luna_synthetic",
"model": "gpt-5.6-luna",
"generator_task": "/root/core_corpus_draft",
"description": "Synthetic benchmark text authored for UNSLOP. Fictional Northstar kettle launch; scanner-known AI tells are seeded while amounts, claims, cohort details, and decision date are deliberately stable domain facts.",
"annotation_note": "The appended scanner-independent gold issue was authored before confirming that banned_phrase_scan does not flag the span."
},
"source": "Here's the thing: our Q3 launch plan is a game-changer for the Northstar kettle line; in today's market landscape, buyers expect a clear reason to switch, and our message gives them one. We will leverage our data to segment the email run, then take a deep dive into the two landing-page variants. The proposed copy is concise, warm, and actionable; it frames the £48,000 test budget as a disciplined bet rather than a splashy gamble.\n\nThe pilot starts with 184 opted-in customers from the UK cohort; keep the product claims exact: \"Boils 1.7 L in 3:05 ± 0:08\" and \"2-year warranty\". The control page stays at 2.8% conversion, while the target page needs 3.4% before we expand spend; at the end of the day, the numbers will tell us whether the message earns another week.\n\nThe decision is Friday, 18 October. In conclusion, this campaign raises the bar for focused positioning, and one thing is certain: we have a clean experiment with a date for the decision.\n\nThis launch marks an exciting new chapter in our journey.",
"issues": [
{"id":"mkt01-i01","start":0,"end":17,"text":"Here's the thing:","category":"throat_clearing","severity":"hard","rationale":"Canned opener delays the launch claim and asks the reader to wait for a reveal."},
{"id":"mkt01-i02","start":42,"end":54,"text":"game-changer","category":"jargon","severity":"hard","rationale":"Hype label replaces a measurable description of what changes."},
{"id":"mkt01-i03","start":86,"end":96,"text":"in today's","category":"filler","severity":"hard","rationale":"Generic time-setting filler adds no market fact."},
{"id":"mkt01-i04","start":195,"end":212,"text":"leverage our data","category":"jargon","severity":"hard","rationale":"Business metaphor can be stated as the concrete verb use."},
{"id":"mkt01-i05","start":251,"end":260,"text":"deep dive","category":"jargon","severity":"hard","rationale":"Vague analysis metaphor should name the actual comparison."},
{"id":"mkt01-i06","start":337,"end":347,"text":"actionable","category":"jargon","severity":"hard","rationale":"Unspecified praise does not say what the copy enables a team to do."},
{"id":"mkt01-i07","start":683,"end":704,"text":"at the end of the day","category":"filler","severity":"hard","rationale":"Empty summary transition can be removed before the metric."},
{"id":"mkt01-i08","start":808,"end":821,"text":"In conclusion","category":"conclusion_scaffold","severity":"hard","rationale":"Stock wrap-up announces a conclusion instead of stating it."},
{"id":"mkt01-i09","start":837,"end":851,"text":"raises the bar","category":"significance_inflation","severity":"hard","rationale":"Unmeasured status claim inflates an ordinary positioning choice."},
{"id":"mkt01-i10","start":881,"end":901,"text":"one thing is certain","category":"generic_conclusion","severity":"hard","rationale":"Generic certainty frame adds no evidence beyond the experiment details."},
{"id":"mkt01-i11","start":982,"end":1017,"text":"exciting new chapter in our journey","category":"significance_inflation","severity":"hard","rationale":"Empty milestone metaphor inflates the launch instead of stating a concrete outcome."}
],
"protected_spans": [
{"id":"mkt01-g01","start":363,"end":382,"text":"£48,000 test budget","policy":"Preserve the exact currency amount and its role as the experiment budget."},
{"id":"mkt01-g02","start":457,"end":479,"text":"184 opted-in customers","policy":"Preserve the cohort size and consent qualifier."},
{"id":"mkt01-g03","start":531,"end":559,"text":"\"Boils 1.7 L in 3:05 ± 0:08\"","policy":"Keep this product-performance claim verbatim, including units, tolerance, and punctuation."},
{"id":"mkt01-g04","start":564,"end":581,"text":"\"2-year warranty\"","policy":"Keep the quoted warranty term verbatim."},
{"id":"mkt01-g05","start":609,"end":624,"text":"2.8% conversion","policy":"Preserve the control conversion metric."},
{"id":"mkt01-g06","start":654,"end":658,"text":"3.4%","policy":"Preserve the target threshold; do not imply it was reached."},
{"id":"mkt01-g07","start":788,"end":806,"text":"Friday, 18 October","policy":"Preserve the stated decision date."},
{"id":"mkt01-g08","start":435,"end":582,"text":"The pilot starts with 184 opted-in customers from the UK cohort; keep the product claims exact: \"Boils 1.7 L in 3:05 ± 0:08\" and \"2-year warranty\".","kind":"good_prose","policy":"Preserve this sentence's meaning, register, and natural prose; allow only necessary local grammar changes."}
],
"constraints": [
{"id":"mkt01-c01","description":"Preserve all product claims, currency, cohort size, control/target metrics, and decision date exactly."},
{"id":"mkt01-c02","description":"A rewrite may remove hype but must not imply that the 3.4% target was reached or that the campaign already won."},
{"id":"mkt01-c03","description":"Keep the experiment framing: one control, one target, and a decision date."}
]
},
{
"id": "core-tech-tune-01",
"split": "tune",
"genre": "technical/security incident update",
"register": "incident-response status note",
"word_count": 173,
"provenance": {
"kind": "luna_synthetic",
"model": "gpt-5.6-luna",
"generator_task": "/root/core_corpus_draft",
"description": "Synthetic benchmark text authored for UNSLOP. Fictional gateway incident with a CVE, request line, digest, IP, token, timestamps, counts, rate limit, and rollback command; AI-ish status language is intentionally interleaved."
},
"source": "It turns out the gateway patch is a game-changer for our edge service. At its core, the change lets us utilize one policy file and streamline the response path; Let's unpack the key point, because the attacker did not reach the database and the exposed service was GET /healthz HTTP/1.1 on port 8443. The CVE-2026-1842 fix landed at 14:32 UTC, and the SHA-256 digest is 9f2a7d8c1b6e4a0f3d9c7b2a1e5f6c8d.\n\nWe rotated the svc-reporter token, revoked active sessions, and replayed the request sample in a staging account. The logs speak for themselves: 17 denied requests, zero writes, and one noisy probe from 198.51.100.24; moving forward, we will keep the rate limit at 120 requests per minute and retain the captured headers for the incident review; this matters because the old rule accepted a missing Host header, although the database was never exposed.\n\nThe rollback command remains \u0060kubectl rollout undo deploy/gateway --to-revision=41\u0060; do not alter it in the runbook.\n\nThe network link has 80 MHz of bandwidth on channel 36.",
"issues": [
{"id":"tech01-i01","start":0,"end":12,"text":"It turns out","category":"throat_clearing","severity":"hard","rationale":"Canned reveal framing delays the concrete patch result."},
{"id":"tech01-i02","start":36,"end":48,"text":"game-changer","category":"jargon","severity":"hard","rationale":"Hype label substitutes for the specific rule change."},
{"id":"tech01-i03","start":71,"end":82,"text":"At its core","category":"filler","severity":"hard","rationale":"Generic framing can be cut before the mechanism."},
{"id":"tech01-i04","start":103,"end":110,"text":"utilize","category":"jargon","severity":"hard","rationale":"Formal business synonym obscures the simple verb use."},
{"id":"tech01-i05","start":131,"end":141,"text":"streamline","category":"jargon","severity":"hard","rationale":"Vague optimization claim should identify the changed path."},
{"id":"tech01-i06","start":161,"end":173,"text":"Let's unpack","category":"throat_clearing","severity":"hard","rationale":"Meta invitation delays the security fact that follows."},
{"id":"tech01-i07","start":528,"end":548,"text":"speak for themselves","category":"false_agency","severity":"hard","rationale":"Logs cannot narrate; state the counts directly."},
{"id":"tech01-i08","start":623,"end":637,"text":"moving forward","category":"jargon","severity":"hard","rationale":"Business transition filler can be replaced by the next action."},
{"id":"tech01-i09","start":751,"end":771,"text":"this matters because","category":"emphasis_crutch","severity":"hard","rationale":"Emphasis cue tells the reader that the next fact matters instead of stating the consequence."}
],
"protected_spans": [
{"id":"tech01-g01","start":265,"end":299,"text":"GET /healthz HTTP/1.1 on port 8443","policy":"Preserve the exact exposed request line and port."},
{"id":"tech01-g02","start":305,"end":318,"text":"CVE-2026-1842","policy":"Preserve the vulnerability identifier verbatim."},
{"id":"tech01-g03","start":333,"end":342,"text":"14:32 UTC","policy":"Preserve the patch-deployment timestamp."},
{"id":"tech01-g04","start":352,"end":402,"text":"SHA-256 digest is 9f2a7d8c1b6e4a0f3d9c7b2a1e5f6c8d","policy":"Preserve the algorithm label and full digest exactly."},
{"id":"tech01-g05","start":420,"end":438,"text":"svc-reporter token","policy":"Preserve the affected service principal name."},
{"id":"tech01-g06","start":550,"end":581,"text":"17 denied requests, zero writes","policy":"Preserve the incident counts and the no-write finding."},
{"id":"tech01-g07","start":608,"end":621,"text":"198.51.100.24","policy":"Preserve the source IP address."},
{"id":"tech01-g08","start":670,"end":693,"text":"120 requests per minute","policy":"Preserve the rate-limit value and unit."},
{"id":"tech01-g09","start":796,"end":815,"text":"missing Host header","policy":"Preserve the exact malformed-request condition."},
{"id":"tech01-g10","start":888,"end":942,"text":"\u0060kubectl rollout undo deploy/gateway --to-revision=41\u0060","policy":"Preserve the rollback command byte-for-byte."},
{"id":"tech01-g11","start":1008,"end":1017,"text":"bandwidth","policy":"Preserve this literal network-capacity term and its measured 80 MHz context; it is not business jargon here."},
{"id":"tech01-g12","start":405,"end":518,"text":"We rotated the svc-reporter token, revoked active sessions, and replayed the request sample in a staging account.","kind":"good_prose","policy":"Preserve this sentence's meaning, register, and natural prose; allow only necessary local grammar changes."}
],
"constraints": [
{"id":"tech01-c01","description":"Preserve identifiers, request line, digest, IP, timestamps, counts, rate limit, and rollback command byte-for-byte."},
{"id":"tech01-c02","description":"Do not change the factual finding: the database was not reached and zero writes were observed."},
{"id":"tech01-c03","description":"Keep the rollback instruction executable and unchanged."},
{"id":"tech01-c04","description":"Preserve the literal network-capacity statement, including 80 MHz, bandwidth, and channel 36."}
]
},
{
"id": "core-science-holdout-01",
"split": "holdout",
"genre": "scientific/medical trial summary",
"register": "clinical-results abstract",
"word_count": 191,
"provenance": {
"kind": "luna_synthetic",
"model": "gpt-5.6-luna",
"generator_task": "/root/core_corpus_draft",
"description": "Synthetic benchmark text authored for UNSLOP. Fictional pilot report with plausible trial notation and endpoint language; the optimistic and formulaic phrases are seeded for held-out detection.",
"annotation_note": "The appended scanner-independent gold issue was authored before confirming that banned_phrase_scan does not flag the span."
},
"source": "It should be noted that the NCT05839214 pilot did not reduce every symptom; the randomized arm enrolled 48 adults with refractory asthma, with 24 receiving 40 mg/kg of ABX-17 and 24 receiving saline. At day 42, the ABX-17 group improved FEV1 by 0.18 L versus 0.07 L for placebo (p=0.018; 95% CI 1.12–2.44). The serum panel measured IL-6R, eosinophils, and ALT at baseline and week 6.\n\nThe report calls the result a breakthrough but says the treatment holds great promise. That language is not a clinical endpoint; keep the adverse-event count exact: 3/24 in the ABX-17 arm and 2/24 in placebo, with no grade-3 events. The protocol's primary endpoint remains \"change in pre-bronchodilator FEV1 at day 42\"; preserve that wording in any summary.\n\nThe small sample supports a larger trial but does not establish efficacy; in conclusion, the findings underscore the importance of preregistered endpoints, blinded analysis, and a prespecified missing-data rule.\n\nFor the histology audit, the technician will delve into the archived tissue blocks to retrieve the stained slides.\n\nThese findings open the door to a brighter future for patients.",
"issues": [
{"id":"sci01-i01","start":0,"end":23,"text":"It should be noted that","category":"throat_clearing","severity":"hard","rationale":"Formulaic academic preface can be removed before the sample description."},
{"id":"sci01-i02","start":451,"end":470,"text":"holds great promise","category":"significance_inflation","severity":"hard","rationale":"Unqualified optimism is not evidence of efficacy."},
{"id":"sci01-i03","start":818,"end":831,"text":"in conclusion","category":"conclusion_scaffold","severity":"hard","rationale":"Stock conclusion marker can be replaced by the direct limitation."},
{"id":"sci01-i04","start":846,"end":874,"text":"underscore the importance of","category":"significance_inflation","severity":"hard","rationale":"Boilerplate significance closer inflates a methodological recommendation."},
{"id":"sci01-i05","start":1088,"end":1135,"text":"open the door to a brighter future for patients","category":"significance_inflation","severity":"hard","rationale":"Hopeful door-opening metaphor overstates what this small pilot establishes for patients."}
],
"protected_spans": [
{"id":"sci01-g01","start":28,"end":39,"text":"NCT05839214","policy":"Preserve the trial registration identifier."},
{"id":"sci01-g02","start":104,"end":136,"text":"48 adults with refractory asthma","policy":"Preserve the sample description and disease population."},
{"id":"sci01-g03","start":143,"end":174,"text":"24 receiving 40 mg/kg of ABX-17","policy":"Preserve arm size, dose, units, and treatment name."},
{"id":"sci01-g04","start":179,"end":198,"text":"24 receiving saline","policy":"Preserve the control-arm count and intervention."},
{"id":"sci01-g05","start":245,"end":265,"text":"0.18 L versus 0.07 L","policy":"Preserve both effect-size values and their units."},
{"id":"sci01-g06","start":278,"end":305,"text":"(p=0.018; 95% CI 1.12–2.44)","policy":"Preserve the p-value, confidence interval, punctuation, and en dash."},
{"id":"sci01-g07","start":332,"end":359,"text":"IL-6R, eosinophils, and ALT","policy":"Preserve the exact biomarker panel."},
{"id":"sci01-g08","start":550,"end":616,"text":"3/24 in the ABX-17 arm and 2/24 in placebo, with no grade-3 events","policy":"Preserve adverse-event counts and severity statement."},
{"id":"sci01-g09","start":658,"end":703,"text":"\"change in pre-bronchodilator FEV1 at day 42\"","policy":"Preserve the protocol endpoint wording verbatim."},
{"id":"sci01-g10","start":1002,"end":1012,"text":"delve into","policy":"Preserve this literal histology action involving archived tissue blocks; it is not a prose issue in this context."},
{"id":"sci01-g11","start":200,"end":306,"text":"At day 42, the ABX-17 group improved FEV1 by 0.18 L versus 0.07 L for placebo (p=0.018; 95% CI 1.12–2.44).","kind":"good_prose","policy":"Preserve this sentence's meaning, register, and natural prose; allow only necessary local grammar changes."}
],
"constraints": [
{"id":"sci01-c01","description":"Preserve sample size, arm allocation, dose, effect sizes, p-value, confidence interval, biomarkers, and adverse-event counts."},
{"id":"sci01-c02","description":"Do not rewrite a pilot result into a claim of established efficacy."},
{"id":"sci01-c03","description":"Keep the quoted primary-endpoint wording verbatim."},
{"id":"sci01-c04","description":"Preserve the literal histology sentence about the archived tissue blocks and stained slides."}
]
},
{
"id": "core-legal-holdout-01",
"split": "holdout",
"genre": "legal memorandum",
"register": "litigation recommendation",
"word_count": 151,
"provenance": {
"kind": "luna_synthetic",
"model": "gpt-5.6-luna",
"generator_task": "/root/core_corpus_draft",
"description": "Synthetic benchmark text authored for UNSLOP. Fictional discovery-motion memo with a quoted legal term, statute citation, docket, declaration, response deadline, and service receipt; seeded wrap-up filler is held out."
},
"source": "Here's the thing: the motion looks simple, but it asks the court to treat a discovery dispute as a merits ruling; the bottom line is that the request is premature. The record contains the signed order, the service affidavit, and the 21-day response date, none of which supports dismissal.\n\nThe opposing brief calls the notice \"without prejudice,\" a term that preserves refiling; do not rewrite that quotation, and keep the citation Cal. Civ. Code § 1714 and docket 3:24-cv-01872 exactly; the declaration says, \"I mailed the packet on March 4, 2026,\" and the proof of service lists certified-mail receipt 9405 5036 9930 0142 7718 06.\n\nNeedless to say, the chronology is decisive; the court can deny the motion without reaching liability, and in conclusion, the requested order is narrow and should not imply a finding on the merits. This memo recommends a narrow order and does not predict the judge's ruling.",
"issues": [
{"id":"legal01-i01","start":0,"end":17,"text":"Here's the thing:","category":"throat_clearing","severity":"hard","rationale":"Canned opener delays the concrete procedural recommendation."},
{"id":"legal01-i02","start":114,"end":129,"text":"the bottom line","category":"filler","severity":"hard","rationale":"Summary filler can be replaced by the stated procedural conclusion."},
{"id":"legal01-i03","start":634,"end":649,"text":"Needless to say","category":"filler","severity":"hard","rationale":"Dismissive filler adds no legal reasoning."},
{"id":"legal01-i04","start":741,"end":754,"text":"in conclusion","category":"conclusion_scaffold","severity":"hard","rationale":"Stock conclusion marker can be removed while keeping the narrow order."}
],
"protected_spans": [
{"id":"legal01-g01","start":233,"end":253,"text":"21-day response date","policy":"Preserve the response deadline and its hyphenation."},
{"id":"legal01-g02","start":326,"end":346,"text":"\"without prejudice,\"","policy":"Preserve this quoted legal term verbatim."},
{"id":"legal01-g03","start":432,"end":453,"text":"Cal. Civ. Code § 1714","policy":"Preserve the statute citation exactly, including abbreviations and section sign."},
{"id":"legal01-g04","start":465,"end":478,"text":"3:24-cv-01872","policy":"Preserve the docket identifier."},
{"id":"legal01-g05","start":510,"end":549,"text":"\"I mailed the packet on March 4, 2026,\"","policy":"Preserve the declaration quotation verbatim, including date and comma."},
{"id":"legal01-g06","start":604,"end":631,"text":"9405 5036 9930 0142 7718 06","policy":"Preserve the certified-mail receipt number."},
{"id":"legal01-g07","start":693,"end":735,"text":"deny the motion without reaching liability","policy":"Preserve the narrow procedural recommendation and its no-merits qualifier."},
{"id":"legal01-g08","start":872,"end":907,"text":"does not predict the judge's ruling","policy":"Preserve the uncertainty boundary; do not turn the recommendation into a forecast."},
{"id":"legal01-g09","start":164,"end":288,"text":"The record contains the signed order, the service affidavit, and the 21-day response date, none of which supports dismissal.","kind":"good_prose","policy":"Preserve this sentence's meaning, register, and natural prose; allow only necessary local grammar changes."}
],
"constraints": [
{"id":"legal01-c01","description":"Preserve quotations, statute citation, docket, deadline, declaration date, and receipt number exactly."},
{"id":"legal01-c02","description":"Keep the recommendation narrow: deny the motion without reaching liability and do not predict the judge."},
{"id":"legal01-c03","description":"Do not add a merits finding or alter the procedural posture."}
]
},
{
"id": "core-clean-holdback-01",
"split": "holdout",
"genre": "personal maintenance note",
"register": "plain first-person field note",
"word_count": 166,
"provenance": {
"kind": "luna_synthetic",
"model": "gpt-5.6-luna",
"generator_task": "/root/core_corpus_draft",
"description": "Synthetic benchmark text authored for UNSLOP as a public clean human-like no-op challenge. Fictional weekend repair note with uneven cadence and concrete measurements."
},
"source": "On Saturday I fixed the loose hinge on the kitchen door. The top screw had stripped the soft pine, so I moved the plate 6 mm to the left and packed the old holes with matchsticks and glue. It is not pretty, but the door closes without scraping the tile. I used a 3 mm hex key for the lower bracket and tightened the new M4 screws to 2 N·m; those details are in the note taped inside the cupboard.\n\nAfter lunch, Mara brought over a bag of plums from her tree, and we ate six on the back step while the glue cured. The weather turned cold around four, so I brought the tools in before the rain; I still need to sand the patched edge and paint it, though I may leave that job for next weekend. The hinge held through ten test swings; good enough for now.\n\nI will delve into the crawlspace to check the joists before I replace the insulation.",
"issues": [],
"protected_spans": [
{"id":"clean01-g01","start":120,"end":124,"text":"6 mm","policy":"Preserve the measured hinge-plate offset and unit."},
{"id":"clean01-g02","start":263,"end":275,"text":"3 mm hex key","policy":"Preserve the tool size and type."},
{"id":"clean01-g03","start":320,"end":329,"text":"M4 screws","policy":"Preserve the fastener specification."},
{"id":"clean01-g04","start":333,"end":338,"text":"2 N·m","policy":"Preserve the tightening torque and unit glyph."},
{"id":"clean01-g05","start":411,"end":415,"text":"Mara","policy":"Preserve the person name."},
{"id":"clean01-g06","start":714,"end":729,"text":"ten test swings","policy":"Preserve the final functional check."},
{"id":"clean01-g07","start":760,"end":770,"text":"delve into","policy":"Preserve this literal crawlspace-inspection wording; it is not a prose issue in this first-person repair note."},
{"id":"clean01-g08","start":398,"end":512,"text":"After lunch, Mara brought over a bag of plums from her tree, and we ate six on the back step while the glue cured.","kind":"good_prose","policy":"Preserve this sentence's meaning, register, and natural prose; allow only necessary local grammar changes."}
],
"constraints": [
{"id":"clean01-c01","description":"Expected behavior is no rewrite: preserve the first-person voice, sequence, and all repair details."},
{"id":"clean01-c02","description":"Preserve measurements, tool and fastener specifications, torque, name, and test count exactly."},
{"id":"clean01-c03","description":"Do not add advice, summary framing, or invented safety claims."},
{"id":"clean01-c04","description":"Preserve the literal crawlspace inspection and joist-checking sentence in the repair sequence."}
]
},
{
"id": "core-support-holdback-01",
"split": "holdout",
"genre": "customer-support transcript",
"register": "speaker-labeled billing exchange",
"word_count": 142,
"provenance": {
"kind": "luna_synthetic",
"model": "gpt-5.6-luna",
"generator_task": "/root/core_corpus_draft",
"description": "Synthetic benchmark text authored for UNSLOP as a public support-transcript challenge. Fictional billing exchange uses speaker turns, transaction identifiers, timestamps, and a product SKU; its structure differs from the memo and abstract cases."
},
"source": "Agent: Here's what stood out: your renewal charge was posted twice, but only one capture settled; I can return the second amount to the card ending 1108 after you confirm the invoice reference.\n\nCustomer: I see two lines for $49.00, one at 09:14 UTC and one at 09:16 UTC; please keep INV-2026-0718-44 unchanged in the ticket.\n\nBilling: The key takeaway is that the duplicate authorization should fall off in 3–5 business days; in other words, no second shipment will leave the warehouse; if the hold remains, quote case CS-88421 and processor trace 8a71c0d5.\n\nCustomer: I will check the card tomorrow; the order contains one replacement filter, SKU RF-22B, and the address is unchanged.\n\nSupport: I hope this helps; we logged the refund request at 16:07 UTC and attached the payment record without editing its amount or timestamp.",
"issues": [
{"id":"support01-i01","start":7,"end":28,"text":"Here's what stood out","category":"reader_steering","severity":"hard","rationale":"Reader-steering frame announces an observation instead of stating the billing fact."},
{"id":"support01-i02","start":336,"end":352,"text":"The key takeaway","category":"filler","severity":"hard","rationale":"Summary label delays the actual authorization explanation."},
{"id":"support01-i03","start":427,"end":441,"text":"in other words","category":"meta","severity":"hard","rationale":"Meta paraphrase can be removed while keeping the shipping consequence."},
{"id":"support01-i04","start":697,"end":714,"text":"I hope this helps","category":"communication_artifact","severity":"hard","rationale":"Chatbot sign-off is not part of the support record."}
],
"protected_spans": [
{"id":"support01-g01","start":136,"end":152,"text":"card ending 1108","policy":"Preserve the card suffix; do not expose or invent a full card number."},
{"id":"support01-g02","start":225,"end":231,"text":"$49.00","policy":"Preserve the duplicate-charge amount and currency."},
{"id":"support01-g03","start":240,"end":249,"text":"09:14 UTC","policy":"Preserve the first capture timestamp."},
{"id":"support01-g04","start":261,"end":270,"text":"09:16 UTC","policy":"Preserve the second capture timestamp."},
{"id":"support01-g05","start":284,"end":300,"text":"INV-2026-0718-44","policy":"Preserve the invoice reference exactly."},
{"id":"support01-g06","start":408,"end":425,"text":"3–5 business days","policy":"Preserve the stated authorization-release window and en dash."},
{"id":"support01-g07","start":520,"end":528,"text":"CS-88421","policy":"Preserve the support case identifier."},
{"id":"support01-g08","start":549,"end":557,"text":"8a71c0d5","policy":"Preserve the processor trace."},
{"id":"support01-g09","start":645,"end":655,"text":"SKU RF-22B","policy":"Preserve the replacement-filter SKU."},
{"id":"support01-g10","start":748,"end":757,"text":"16:07 UTC","policy":"Preserve the refund-request timestamp."},
{"id":"support01-g11","start":560,"end":686,"text":"Customer: I will check the card tomorrow; the order contains one replacement filter, SKU RF-22B, and the address is unchanged.","kind":"good_prose","policy":"Preserve this sentence's meaning, register, and natural prose; allow only necessary local grammar changes."}
],
"constraints": [
{"id":"support01-c01","description":"Keep speaker labels and turn order intact while removing canned support phrasing."},
{"id":"support01-c02","description":"Preserve monetary amount, card suffix, timestamps, invoice, case, trace, SKU, and refund-request time exactly."},
{"id":"support01-c03","description":"Do not promise a refund beyond the stated request or change the authorization-release window."}
]
}
]
}