{"abstract":"Moderately loose lines look far better than they are.","category":"Typography line breaking","checks":8,"contract":"Input [natural, stretch, shrink, width, tolerance] (ints). shortfall=width-natural. Positive shortfall with zero stretch is underfull 10000 very_loose; shrinking past total shrink is overfull 1000000 tight. r=shortfall/stretch (or /shrink when negative); badness=min(10000, floor(100*|r|^3+1/2)); fitness tight r<-1/2, decent r<=1/2, loose r<=1, else very_loose; status ok iff badness<=tolerance. Return [status, badness, fitness].","evaluation_group":"w2-typography-line-breaking-glue-badness","failed_approach":"Multiplying square by ratio but dropping the half-unit rounding still yields off-by-one ratings.","family":"w2-typography-line-breaking-glue-badness-cubic-badness-curve","id":"FA-79851","implementations":{"attempt":{"sha256":"3877101dc4c587c6eca52efbc80294c3871abf2e8e4e1afe160fe1b3a5f9dfec","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    natural, stretch, shrink, width, tolerance = x\n    shortfall = width - natural\n    if shortfall > 0:\n        if stretch == 0:\n            return ['underfull', 10000, 'very_loose']\n        r = Fraction(shortfall, stretch)\n    elif shortfall < 0:\n        if -shortfall > shrink:\n            return ['overfull', 1000000, 'tight']\n        r = Fraction(shortfall, shrink)\n    else:\n        r = Fraction(0)\n    badness = min(10000, math.floor(100 * abs(r) ** 2 * abs(r)))\n    if r < Fraction(-1, 2):\n        fitness = 'tight'\n    elif r <= Fraction(1, 2):\n        fitness = 'decent'\n    elif r <= 1:\n        fitness = 'loose'\n    else:\n        fitness = 'very_loose'\n    status = 'ok' if badness <= tolerance else 'underfull'\n    return [status, badness, fitness]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('half stretch ratio rounds 12.5 up', [100, 10, 5, 105, 200], ['ok', 13, 'decent']), ('regression: cubic badness curve', [111, 10, 12, 125, 1000], ['ok', 274, 'very_loose']), ('regression: cubic badness curve', [76, 8, 4, 74, 500], ['ok', 13, 'decent']), ('regression: cubic badness curve', [88, 4, 3, 105, 1000], ['underfull', 7677, 'very_loose']), ('full shrink is still acceptable', [100, 10, 5, 95, 200], ['ok', 100, 'tight']), ('one unit past total shrink', [100, 10, 5, 94, 200], ['overfull', 1000000, 'tight']), ('control layout', [62, 4, 4, 58, 200], ['ok', 100, 'tight']), ('control layout', [97, 1, 3, 91, 500], ['overfull', 1000000, 'tight'])], [('regression: cubic badness curve', [86, 10, 8, 106, 100], ['underfull', 800, 'very_loose']), ('regression: cubic badness curve', [119, 3, 8, 117, 500], ['ok', 2, 'decent']), ('regression: cubic badness curve', [99, 8, 9, 96, 100], ['ok', 4, 'decent']), ('regression: cubic badness curve', [105, 12, 6, 100, 1000], ['ok', 58, 'tight']), ('negative half ratio is decent', [100, 10, 6, 97, 200], ['ok', 13, 'decent']), ('exact natural width', [100, 10, 5, 100, 200], ['ok', 0, 'decent']), ('control layout', [75, 3, 3, 78, 500], ['ok', 100, 'loose']), ('control layout', [101, 8, 2, 91, 1000], ['overfull', 1000000, 'tight'])], [('regression: cubic badness curve', [114, 2, 7, 113, 200], ['ok', 0, 'decent']), ('regression: cubic badness curve', [81, 1, 3, 83, 100], ['underfull', 800, 'very_loose']), ('regression: cubic badness curve', [73, 10, 1, 79, 150], ['ok', 22, 'loose']), ('regression: cubic badness curve', [109, 16, 4, 117, 200], ['ok', 13, 'decent']), ('exact natural width', [100, 10, 5, 100, 200], ['ok', 0, 'decent']), ('negative half ratio is decent', [100, 10, 6, 97, 200], ['ok', 13, 'decent']), ('control layout', [91, 16, 1, 85, 150], ['overfull', 1000000, 'tight']), ('control layout', [82, 1, 9, 82, 500], ['ok', 0, 'decent'])], [('regression: cubic badness curve', [82, 6, 9, 86, 1000], ['ok', 30, 'loose']), ('regression: cubic badness curve', [99, 16, 2, 111, 1000], ['ok', 42, 'loose']), ('regression: cubic badness curve', [80, 4, 2, 97, 500], ['underfull', 7677, 'very_loose']), ('regression: cubic badness curve', [82, 3, 10, 77, 100], ['ok', 13, 'decent']), ('badness cap at 10000', [100, 2, 0, 150, 200], ['underfull', 10000, 'very_loose']), ('negative half ratio is decent', [100, 10, 6, 97, 200], ['ok', 13, 'decent']), ('control layout', [105, 1, 1, 120, 500], ['underfull', 10000, 'very_loose']), ('control layout', [111, 1, 1, 134, 500], ['underfull', 10000, 'very_loose'])], [('regression: cubic badness curve', [79, 12, 5, 78, 1000], ['ok', 1, 'decent']), ('regression: cubic badness curve', [88, 4, 3, 105, 1000], ['underfull', 7677, 'very_loose']), ('regression: cubic badness curve', [108, 0, 6, 105, 1000], ['ok', 13, 'decent']), ('regression: cubic badness curve', [75, 20, 6, 71, 1000], ['ok', 30, 'tight']), ('rigid line with slack', [100, 0, 5, 110, 200], ['underfull', 10000, 'very_loose']), ('exact natural width', [100, 10, 5, 100, 200], ['ok', 0, 'decent']), ('control layout', [71, 8, 8, 71, 150], ['ok', 0, 'decent']), ('control layout', [118, 0, 2, 133, 200], ['underfull', 10000, 'very_loose'])]]\nfor label, args, expected in fixtures[N - 1]:\n    check(label, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"3a978be0f7ba7d0538211dd65b3355cc6baad99c3610e11a33c3b08175d28419","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    natural, stretch, shrink, width, tolerance = x\n    shortfall = width - natural\n    if shortfall > 0:\n        if stretch == 0:\n            return ['underfull', 10000, 'very_loose']\n        r = Fraction(shortfall, stretch)\n    elif shortfall < 0:\n        if -shortfall > shrink:\n            return ['overfull', 1000000, 'tight']\n        r = Fraction(shortfall, shrink)\n    else:\n        r = Fraction(0)\n    badness = min(10000, math.floor(100 * abs(r) ** 2 + Fraction(1, 2)))\n    if r < Fraction(-1, 2):\n        fitness = 'tight'\n    elif r <= Fraction(1, 2):\n        fitness = 'decent'\n    elif r <= 1:\n        fitness = 'loose'\n    else:\n        fitness = 'very_loose'\n    status = 'ok' if badness <= tolerance else 'underfull'\n    return [status, badness, fitness]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('half stretch ratio rounds 12.5 up', [100, 10, 5, 105, 200], ['ok', 13, 'decent']), ('regression: cubic badness curve', [111, 10, 12, 125, 1000], ['ok', 274, 'very_loose']), ('regression: cubic badness curve', [76, 8, 4, 74, 500], ['ok', 13, 'decent']), ('regression: cubic badness curve', [88, 4, 3, 105, 1000], ['underfull', 7677, 'very_loose']), ('full shrink is still acceptable', [100, 10, 5, 95, 200], ['ok', 100, 'tight']), ('one unit past total shrink', [100, 10, 5, 94, 200], ['overfull', 1000000, 'tight']), ('control layout', [62, 4, 4, 58, 200], ['ok', 100, 'tight']), ('control layout', [97, 1, 3, 91, 500], ['overfull', 1000000, 'tight'])], [('regression: cubic badness curve', [86, 10, 8, 106, 100], ['underfull', 800, 'very_loose']), ('regression: cubic badness curve', [119, 3, 8, 117, 500], ['ok', 2, 'decent']), ('regression: cubic badness curve', [99, 8, 9, 96, 100], ['ok', 4, 'decent']), ('regression: cubic badness curve', [105, 12, 6, 100, 1000], ['ok', 58, 'tight']), ('negative half ratio is decent', [100, 10, 6, 97, 200], ['ok', 13, 'decent']), ('exact natural width', [100, 10, 5, 100, 200], ['ok', 0, 'decent']), ('control layout', [75, 3, 3, 78, 500], ['ok', 100, 'loose']), ('control layout', [101, 8, 2, 91, 1000], ['overfull', 1000000, 'tight'])], [('regression: cubic badness curve', [114, 2, 7, 113, 200], ['ok', 0, 'decent']), ('regression: cubic badness curve', [81, 1, 3, 83, 100], ['underfull', 800, 'very_loose']), ('regression: cubic badness curve', [73, 10, 1, 79, 150], ['ok', 22, 'loose']), ('regression: cubic badness curve', [109, 16, 4, 117, 200], ['ok', 13, 'decent']), ('exact natural width', [100, 10, 5, 100, 200], ['ok', 0, 'decent']), ('negative half ratio is decent', [100, 10, 6, 97, 200], ['ok', 13, 'decent']), ('control layout', [91, 16, 1, 85, 150], ['overfull', 1000000, 'tight']), ('control layout', [82, 1, 9, 82, 500], ['ok', 0, 'decent'])], [('regression: cubic badness curve', [82, 6, 9, 86, 1000], ['ok', 30, 'loose']), ('regression: cubic badness curve', [99, 16, 2, 111, 1000], ['ok', 42, 'loose']), ('regression: cubic badness curve', [80, 4, 2, 97, 500], ['underfull', 7677, 'very_loose']), ('regression: cubic badness curve', [82, 3, 10, 77, 100], ['ok', 13, 'decent']), ('badness cap at 10000', [100, 2, 0, 150, 200], ['underfull', 10000, 'very_loose']), ('negative half ratio is decent', [100, 10, 6, 97, 200], ['ok', 13, 'decent']), ('control layout', [105, 1, 1, 120, 500], ['underfull', 10000, 'very_loose']), ('control layout', [111, 1, 1, 134, 500], ['underfull', 10000, 'very_loose'])], [('regression: cubic badness curve', [79, 12, 5, 78, 1000], ['ok', 1, 'decent']), ('regression: cubic badness curve', [88, 4, 3, 105, 1000], ['underfull', 7677, 'very_loose']), ('regression: cubic badness curve', [108, 0, 6, 105, 1000], ['ok', 13, 'decent']), ('regression: cubic badness curve', [75, 20, 6, 71, 1000], ['ok', 30, 'tight']), ('rigid line with slack', [100, 0, 5, 110, 200], ['underfull', 10000, 'very_loose']), ('exact natural width', [100, 10, 5, 100, 200], ['ok', 0, 'decent']), ('control layout', [71, 8, 8, 71, 150], ['ok', 0, 'decent']), ('control layout', [118, 0, 2, 133, 200], ['underfull', 10000, 'very_loose'])]]\nfor label, args, expected in fixtures[N - 1]:\n    check(label, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"49c018cf2b70d2ea1c1fe8b6c415a639831951f9c8f75be1cfa1e9365d1f81b8","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    natural, stretch, shrink, width, tolerance = x\n    shortfall = width - natural\n    if shortfall > 0:\n        if stretch == 0:\n            return ['underfull', 10000, 'very_loose']\n        r = Fraction(shortfall, stretch)\n    elif shortfall < 0:\n        if -shortfall > shrink:\n            return ['overfull', 1000000, 'tight']\n        r = Fraction(shortfall, shrink)\n    else:\n        r = Fraction(0)\n    badness = min(10000, math.floor(100 * abs(r) ** 3 + Fraction(1, 2)))\n    if r < Fraction(-1, 2):\n        fitness = 'tight'\n    elif r <= Fraction(1, 2):\n        fitness = 'decent'\n    elif r <= 1:\n        fitness = 'loose'\n    else:\n        fitness = 'very_loose'\n    status = 'ok' if badness <= tolerance else 'underfull'\n    return [status, badness, fitness]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('half stretch ratio rounds 12.5 up', [100, 10, 5, 105, 200], ['ok', 13, 'decent']), ('regression: cubic badness curve', [111, 10, 12, 125, 1000], ['ok', 274, 'very_loose']), ('regression: cubic badness curve', [76, 8, 4, 74, 500], ['ok', 13, 'decent']), ('regression: cubic badness curve', [88, 4, 3, 105, 1000], ['underfull', 7677, 'very_loose']), ('full shrink is still acceptable', [100, 10, 5, 95, 200], ['ok', 100, 'tight']), ('one unit past total shrink', [100, 10, 5, 94, 200], ['overfull', 1000000, 'tight']), ('control layout', [62, 4, 4, 58, 200], ['ok', 100, 'tight']), ('control layout', [97, 1, 3, 91, 500], ['overfull', 1000000, 'tight'])], [('regression: cubic badness curve', [86, 10, 8, 106, 100], ['underfull', 800, 'very_loose']), ('regression: cubic badness curve', [119, 3, 8, 117, 500], ['ok', 2, 'decent']), ('regression: cubic badness curve', [99, 8, 9, 96, 100], ['ok', 4, 'decent']), ('regression: cubic badness curve', [105, 12, 6, 100, 1000], ['ok', 58, 'tight']), ('negative half ratio is decent', [100, 10, 6, 97, 200], ['ok', 13, 'decent']), ('exact natural width', [100, 10, 5, 100, 200], ['ok', 0, 'decent']), ('control layout', [75, 3, 3, 78, 500], ['ok', 100, 'loose']), ('control layout', [101, 8, 2, 91, 1000], ['overfull', 1000000, 'tight'])], [('regression: cubic badness curve', [114, 2, 7, 113, 200], ['ok', 0, 'decent']), ('regression: cubic badness curve', [81, 1, 3, 83, 100], ['underfull', 800, 'very_loose']), ('regression: cubic badness curve', [73, 10, 1, 79, 150], ['ok', 22, 'loose']), ('regression: cubic badness curve', [109, 16, 4, 117, 200], ['ok', 13, 'decent']), ('exact natural width', [100, 10, 5, 100, 200], ['ok', 0, 'decent']), ('negative half ratio is decent', [100, 10, 6, 97, 200], ['ok', 13, 'decent']), ('control layout', [91, 16, 1, 85, 150], ['overfull', 1000000, 'tight']), ('control layout', [82, 1, 9, 82, 500], ['ok', 0, 'decent'])], [('regression: cubic badness curve', [82, 6, 9, 86, 1000], ['ok', 30, 'loose']), ('regression: cubic badness curve', [99, 16, 2, 111, 1000], ['ok', 42, 'loose']), ('regression: cubic badness curve', [80, 4, 2, 97, 500], ['underfull', 7677, 'very_loose']), ('regression: cubic badness curve', [82, 3, 10, 77, 100], ['ok', 13, 'decent']), ('badness cap at 10000', [100, 2, 0, 150, 200], ['underfull', 10000, 'very_loose']), ('negative half ratio is decent', [100, 10, 6, 97, 200], ['ok', 13, 'decent']), ('control layout', [105, 1, 1, 120, 500], ['underfull', 10000, 'very_loose']), ('control layout', [111, 1, 1, 134, 500], ['underfull', 10000, 'very_loose'])], [('regression: cubic badness curve', [79, 12, 5, 78, 1000], ['ok', 1, 'decent']), ('regression: cubic badness curve', [88, 4, 3, 105, 1000], ['underfull', 7677, 'very_loose']), ('regression: cubic badness curve', [108, 0, 6, 105, 1000], ['ok', 13, 'decent']), ('regression: cubic badness curve', [75, 20, 6, 71, 1000], ['ok', 30, 'tight']), ('rigid line with slack', [100, 0, 5, 110, 200], ['underfull', 10000, 'very_loose']), ('exact natural width', [100, 10, 5, 100, 200], ['ok', 0, 'decent']), ('control layout', [71, 8, 8, 71, 150], ['ok', 0, 'decent']), ('control layout', [118, 0, 2, 133, 200], ['underfull', 10000, 'very_loose'])]]\nfor label, args, expected in fixtures[N - 1]:\n    check(label, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"A deterministic toy typesetting model with integer widths and a stipulated rule set; it does not claim conformance to any engine. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-typography-line-breaking-glue-badness-cubic-badness-curve","generated_at":"2026-09-29T14:49:48.261772+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Line breaking decides where paragraphs wrap on screen and in print; a wrong decision point shifts every following line.","repair":"Rate badness as 100 times the cube of the ratio magnitude.","root_cause":"Badness squares the adjustment ratio instead of cubing it.","sha256":"ed32952ef64e3ee57638ece6a4905260ccbcfe1fa8e53e2efeacc428ae8af221","title":"Glue-set badness rating: cubic badness curve · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.582,"exit_code":1,"observations":[{"actual":["ok",12,"decent"],"check":"half stretch ratio rounds 12.5 up","expected":["ok",13,"decent"],"passed":false},{"actual":["ok",274,"very_loose"],"check":"regression: cubic badness curve","expected":["ok",274,"very_loose"],"passed":true},{"actual":["ok",12,"decent"],"check":"regression: cubic badness curve","expected":["ok",13,"decent"],"passed":false},{"actual":["underfull",7676,"very_loose"],"check":"regression: cubic badness curve","expected":["underfull",7677,"very_loose"],"passed":false},{"actual":["ok",100,"tight"],"check":"full shrink is still acceptable","expected":["ok",100,"tight"],"passed":true},{"actual":["overfull",1000000,"tight"],"check":"one unit past total shrink","expected":["overfull",1000000,"tight"],"passed":true},{"actual":["ok",100,"tight"],"check":"control layout","expected":["ok",100,"tight"],"passed":true},{"actual":["overfull",1000000,"tight"],"check":"control layout","expected":["overfull",1000000,"tight"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"half stretch ratio rounds 12.5 up\", \"actual\": [\"ok\", 12, \"decent\"], \"expected\": [\"ok\", 13, \"decent\"], \"passed\": false}, {\"check\": \"regression: cubic badness curve\", \"actual\": [\"ok\", 274, \"very_loose\"], \"expected\": [\"ok\", 274, \"very_loose\"], \"passed\": true}, {\"check\": \"regression: cubic badness curve\", \"actual\": [\"ok\", 12, \"decent\"], \"expected\": [\"ok\", 13, \"decent\"], \"passed\": false}, {\"check\": \"regression: cubic badness curve\", \"actual\": [\"underfull\", 7676, \"very_loose\"], \"expected\": [\"underfull\", 7677, \"very_loose\"], \"passed\": false}, {\"check\": \"full shrink is still acceptable\", \"actual\": [\"ok\", 100, \"tight\"], \"expected\": [\"ok\", 100, \"tight\"], \"passed\": true}, {\"check\": \"one unit past total shrink\", \"actual\": [\"overfull\", 1000000, \"tight\"], \"expected\": [\"overfull\", 1000000, \"tight\"], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [\"ok\", 100, \"tight\"], \"expected\": [\"ok\", 100, \"tight\"], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [\"overfull\", 1000000, \"tight\"], \"expected\": [\"overfull\", 1000000, \"tight\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":44.804,"exit_code":1,"observations":[{"actual":["ok",25,"decent"],"check":"half stretch ratio rounds 12.5 up","expected":["ok",13,"decent"],"passed":false},{"actual":["ok",196,"very_loose"],"check":"regression: cubic badness curve","expected":["ok",274,"very_loose"],"passed":false},{"actual":["ok",25,"decent"],"check":"regression: cubic badness curve","expected":["ok",13,"decent"],"passed":false},{"actual":["underfull",1806,"very_loose"],"check":"regression: cubic badness curve","expected":["underfull",7677,"very_loose"],"passed":false},{"actual":["ok",100,"tight"],"check":"full shrink is still acceptable","expected":["ok",100,"tight"],"passed":true},{"actual":["overfull",1000000,"tight"],"check":"one unit past total shrink","expected":["overfull",1000000,"tight"],"passed":true},{"actual":["ok",100,"tight"],"check":"control layout","expected":["ok",100,"tight"],"passed":true},{"actual":["overfull",1000000,"tight"],"check":"control layout","expected":["overfull",1000000,"tight"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"half stretch ratio rounds 12.5 up\", \"actual\": [\"ok\", 25, \"decent\"], \"expected\": [\"ok\", 13, \"decent\"], \"passed\": false}, {\"check\": \"regression: cubic badness curve\", \"actual\": [\"ok\", 196, \"very_loose\"], \"expected\": [\"ok\", 274, \"very_loose\"], \"passed\": false}, {\"check\": \"regression: cubic badness curve\", \"actual\": [\"ok\", 25, \"decent\"], \"expected\": [\"ok\", 13, \"decent\"], \"passed\": false}, {\"check\": \"regression: cubic badness curve\", \"actual\": [\"underfull\", 1806, \"very_loose\"], \"expected\": [\"underfull\", 7677, \"very_loose\"], \"passed\": false}, {\"check\": \"full shrink is still acceptable\", \"actual\": [\"ok\", 100, \"tight\"], \"expected\": [\"ok\", 100, \"tight\"], \"passed\": true}, {\"check\": \"one unit past total shrink\", \"actual\": [\"overfull\", 1000000, \"tight\"], \"expected\": [\"overfull\", 1000000, \"tight\"], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [\"ok\", 100, \"tight\"], \"expected\": [\"ok\", 100, \"tight\"], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [\"overfull\", 1000000, \"tight\"], \"expected\": [\"overfull\", 1000000, \"tight\"], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.679,"exit_code":0,"observations":[{"actual":["ok",13,"decent"],"check":"half stretch ratio rounds 12.5 up","expected":["ok",13,"decent"],"passed":true},{"actual":["ok",274,"very_loose"],"check":"regression: cubic badness curve","expected":["ok",274,"very_loose"],"passed":true},{"actual":["ok",13,"decent"],"check":"regression: cubic badness curve","expected":["ok",13,"decent"],"passed":true},{"actual":["underfull",7677,"very_loose"],"check":"regression: cubic badness curve","expected":["underfull",7677,"very_loose"],"passed":true},{"actual":["ok",100,"tight"],"check":"full shrink is still acceptable","expected":["ok",100,"tight"],"passed":true},{"actual":["overfull",1000000,"tight"],"check":"one unit past total shrink","expected":["overfull",1000000,"tight"],"passed":true},{"actual":["ok",100,"tight"],"check":"control layout","expected":["ok",100,"tight"],"passed":true},{"actual":["overfull",1000000,"tight"],"check":"control layout","expected":["overfull",1000000,"tight"],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"half stretch ratio rounds 12.5 up\", \"actual\": [\"ok\", 13, \"decent\"], \"expected\": [\"ok\", 13, \"decent\"], \"passed\": true}, {\"check\": \"regression: cubic badness curve\", \"actual\": [\"ok\", 274, \"very_loose\"], \"expected\": [\"ok\", 274, \"very_loose\"], \"passed\": true}, {\"check\": \"regression: cubic badness curve\", \"actual\": [\"ok\", 13, \"decent\"], \"expected\": [\"ok\", 13, \"decent\"], \"passed\": true}, {\"check\": \"regression: cubic badness curve\", \"actual\": [\"underfull\", 7677, \"very_loose\"], \"expected\": [\"underfull\", 7677, \"very_loose\"], \"passed\": true}, {\"check\": \"full shrink is still acceptable\", \"actual\": [\"ok\", 100, \"tight\"], \"expected\": [\"ok\", 100, \"tight\"], \"passed\": true}, {\"check\": \"one unit past total shrink\", \"actual\": [\"overfull\", 1000000, \"tight\"], \"expected\": [\"overfull\", 1000000, \"tight\"], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [\"ok\", 100, \"tight\"], \"expected\": [\"ok\", 100, \"tight\"], \"passed\": true}, {\"check\": \"control layout\", \"actual\": [\"overfull\", 1000000, \"tight\"], \"expected\": [\"overfull\", 1000000, \"tight\"], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}