{"type":"thread.started","thread_id":"019ffeb4-8acd-7b53-9232-23904b854b86"}
{"type":"turn.started"}
{"type":"item.completed","item":{"id":"item_0","type":"agent_message","text":"I’ll inspect the existing build, verify the Go toolchain, then implement the tagged-JSON behavior within the authorized build directory and run the declared acceptance checks plus focused tests."}}
{"type":"item.started","item":{"id":"item_1","type":"command_execution","command":"/bin/bash -lc \"pwd && rg --files -g '\"'!sources/*'\"' -g '\"'!*.sum'\"' | sort && go version && find . -maxdepth 2 -type f -print | sort\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_1","type":"command_execution","command":"/bin/bash -lc \"pwd && rg --files -g '\"'!sources/*'\"' -g '\"'!*.sum'\"' | sort && go version && find . -maxdepth 2 -type f -print | sort\"","aggregated_output":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml\ncmd/toml-decoder/main.go\ncmd/toml-decoder/main_test.go\ngo.mod\ninternal/toml/decode.go\ninternal/toml/value.go\ninternal/toml/value_test.go\ntoml-decoder\ngo version go1.24.6 linux/amd64\n./go.mod\n./sources/full_test.sh\n./sources/run_conformance.sh\n./sources/setup_harness.sh\n./sources/stage_test.sh\n./toml-decoder\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_2","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,240p' internal/toml/value.go && sed -n '1,320p' internal/toml/decode.go\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_2","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,240p' internal/toml/value.go && sed -n '1,320p' internal/toml/decode.go\"","aggregated_output":"package toml\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n)\n\n// Kind identifies the TOML type represented by a Value.\ntype Kind string\n\nconst (\n\tString        Kind = \"string\"\n\tInteger       Kind = \"integer\"\n\tFloat         Kind = \"float\"\n\tBool          Kind = \"bool\"\n\tDatetime      Kind = \"datetime\"\n\tDatetimeLocal Kind = \"datetime-local\"\n\tDateLocal     Kind = \"date-local\"\n\tTimeLocal     Kind = \"time-local\"\n)\n\n// Value is a scalar TOML value. Lexeme is retained as supplied by the parser\n// so integer values never pass through floating-point representation.\ntype Value struct {\n\tKind   Kind\n\tLexeme string\n}\n\n// Object is the internal representation of a TOML table or array.\ntype Object map[string]any\n\n// Tagged returns the JSON-compatible tagged representation of v.\nfunc Tagged(v any) (any, error) {\n\tswitch value := v.(type) {\n\tcase Value:\n\t\treturn struct {\n\t\t\tType  Kind   `json:\"type\"`\n\t\t\tValue string `json:\"value\"`\n\t\t}{value.Kind, value.Lexeme}, nil\n\tcase Object:\n\t\tresult := make(map[string]any, len(value))\n\t\tfor key, item := range value {\n\t\t\tencoded, err := Tagged(item)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"encode %q: %w\", key, err)\n\t\t\t}\n\t\t\tresult[key] = encoded\n\t\t}\n\t\treturn result, nil\n\tcase []any:\n\t\tresult := make([]any, len(value))\n\t\tfor i, item := range value {\n\t\t\tencoded, err := Tagged(item)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"encode array item %d: %w\", i, err)\n\t\t\t}\n\t\t\tresult[i] = encoded\n\t\t}\n\t\treturn result, nil\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"unsupported TOML value %T\", v)\n\t}\n}\n\n// MarshalJSON encodes a Value as the required tagged JSON scalar.\nfunc (v Value) MarshalJSON() ([]byte, error) {\n\treturn json.Marshal(struct {\n\t\tType  Kind   `json:\"type\"`\n\t\tValue string `json:\"value\"`\n\t}{v.Kind, v.Lexeme})\n}\npackage toml\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode/utf8\"\n)\n\n// Decode parses a TOML 1.0 document into tables, arrays, and tagged scalar values.\nfunc Decode(document string) (Object, error) {\n\tif !utf8.ValidString(document) {\n\t\treturn nil, fmt.Errorf(\"invalid UTF-8\")\n\t}\n\troot := Object{}\n\tcurrent := root\n\tdeclared := map[string]bool{}\n\tlines, err := statements(document)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tfor n, raw := range lines {\n\t\tline := strings.TrimSpace(raw)\n\t\tif line == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tif strings.HasPrefix(line, \"[[\") && strings.HasSuffix(line, \"]]\") {\n\t\t\tpath, err := parseKey(line[2 : len(line)-2])\n\t\t\tif err != nil {\n\t\t\t\treturn nil, lineErr(n, err)\n\t\t\t}\n\t\t\tparent, leaf, err := ensureParent(root, path)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, lineErr(n, err)\n\t\t\t}\n\t\t\tarr, ok := parent[leaf].([]any)\n\t\t\tif !ok {\n\t\t\t\tarr = []any{}\n\t\t\t\tparent[leaf] = arr\n\t\t\t}\n\t\t\tobj := Object{}\n\t\t\tarr = append(arr, obj)\n\t\t\tparent[leaf] = arr\n\t\t\tcurrent = obj\n\t\t\tdeclared[strings.Join(path, \".\")] = true\n\t\t\tcontinue\n\t\t}\n\t\tif strings.HasPrefix(line, \"[\") && strings.HasSuffix(line, \"]\") {\n\t\t\tpath, err := parseKey(line[1 : len(line)-1])\n\t\t\tif err != nil {\n\t\t\t\treturn nil, lineErr(n, err)\n\t\t\t}\n\t\t\tobj, err := ensureTable(root, path, declared)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, lineErr(n, err)\n\t\t\t}\n\t\t\tcurrent = obj\n\t\t\tcontinue\n\t\t}\n\t\tpos, err := assignmentEquals(line)\n\t\tif err != nil {\n\t\t\treturn nil, lineErr(n, err)\n\t\t}\n\t\tkey, err := parseKey(line[:pos])\n\t\tif err != nil {\n\t\t\treturn nil, lineErr(n, err)\n\t\t}\n\t\tif len(key) == 0 {\n\t\t\treturn nil, lineErr(n, fmt.Errorf(\"empty key\"))\n\t\t}\n\t\tvalue, err := parseValue(strings.TrimSpace(line[pos+1:]))\n\t\tif err != nil {\n\t\t\treturn nil, lineErr(n, err)\n\t\t}\n\t\ttarget := current\n\t\tfor _, part := range key[:len(key)-1] {\n\t\t\tnext, ok := target[part].(Object)\n\t\t\tif !ok {\n\t\t\t\tif target[part] != nil {\n\t\t\t\t\treturn nil, lineErr(n, fmt.Errorf(\"key %q is not a table\", part))\n\t\t\t\t}\n\t\t\t\tnext = Object{}\n\t\t\t\ttarget[part] = next\n\t\t\t}\n\t\t\ttarget = next\n\t\t}\n\t\tleaf := key[len(key)-1]\n\t\tif _, exists := target[leaf]; exists {\n\t\t\treturn nil, lineErr(n, fmt.Errorf(\"duplicate key %q\", leaf))\n\t\t}\n\t\ttarget[leaf] = value\n\t}\n\treturn root, nil\n}\n\nfunc lineErr(n int, err error) error { return fmt.Errorf(\"line %d: %w\", n+1, err) }\n\nfunc statements(s string) ([]string, error) {\n\tvar out []string\n\tstart, depth := 0, 0\n\tquote := byte(0)\n\tescaped := false\n\tfor i := 0; i < len(s); i++ {\n\t\tc := s[i]\n\t\tif quote == 0 && c == '#' {\n\t\t\tfor i < len(s) && s[i] != '\\n' {\n\t\t\t\ti++\n\t\t\t}\n\t\t\tif i == len(s) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tc = s[i]\n\t\t}\n\t\tif quote != 0 {\n\t\t\tif quote == '\"' && escaped {\n\t\t\t\tescaped = false\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif quote == '\"' && c == '\\\\' {\n\t\t\t\tescaped = true\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif c == quote {\n\t\t\t\tif i+2 < len(s) && s[i+1] == quote && s[i+2] == quote {\n\t\t\t\t\ti += 2\n\t\t\t\t\tquote = 0\n\t\t\t\t} else {\n\t\t\t\t\tquote = 0\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif c == '\"' || c == '\\'' {\n\t\t\tquote = c\n\t\t\tcontinue\n\t\t}\n\t\tif c == '[' || c == '{' {\n\t\t\tdepth++\n\t\t}\n\t\tif c == ']' || c == '}' {\n\t\t\tdepth--\n\t\t\tif depth < 0 {\n\t\t\t\treturn nil, fmt.Errorf(\"unexpected closing delimiter\")\n\t\t\t}\n\t\t}\n\t\tif c == '\\n' && depth == 0 {\n\t\t\tout = append(out, stripComment(s[start:i]))\n\t\t\tstart = i + 1\n\t\t}\n\t}\n\tif quote != 0 || depth != 0 {\n\t\treturn nil, fmt.Errorf(\"unterminated value\")\n\t}\n\tout = append(out, stripComment(s[start:]))\n\treturn out, nil\n}\n\nfunc stripComment(s string) string {\n\tquote := byte(0)\n\tescaped := false\n\tvar out strings.Builder\n\tfor i := 0; i < len(s); i++ {\n\t\tc := s[i]\n\t\tif quote != 0 {\n\t\t\tif quote == '\"' && escaped {\n\t\t\t\tescaped = false\n\t\t\t\tout.WriteByte(c)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif quote == '\"' && c == '\\\\' {\n\t\t\t\tescaped = true\n\t\t\t\tout.WriteByte(c)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif c == quote {\n\t\t\t\tquote = 0\n\t\t\t}\n\t\t\tout.WriteByte(c)\n\t\t\tcontinue\n\t\t}\n\t\tif c == '\"' || c == '\\'' {\n\t\t\tquote = c\n\t\t}\n\t\tif c == '#' {\n\t\t\tfor i < len(s) && s[i] != '\\n' {\n\t\t\t\ti++\n\t\t\t}\n\t\t\tif i < len(s) {\n\t\t\t\tout.WriteByte('\\n')\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tout.WriteByte(c)\n\t}\n\treturn out.String()\n}\n\nfunc assignmentEquals(s string) (int, error) {\n\tquote := byte(0)\n\tdepth := 0\n\tfor i, c := range []byte(s) {\n\t\tif quote != 0 {\n\t\t\tif c == quote && (i == 0 || s[i-1] != '\\\\') {\n\t\t\t\tquote = 0\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif c == '\"' || c == '\\'' {\n\t\t\tquote = c\n\t\t}\n\t\tif c == '[' || c == '{' {\n\t\t\tdepth++\n\t\t}\n\t\tif c == ']' || c == '}' {\n\t\t\tdepth--\n\t\t}\n\t\tif c == '=' && depth == 0 {\n\t\t\treturn i, nil\n\t\t}\n\t}\n\treturn 0, fmt.Errorf(\"expected key/value pair\")\n}\n\nfunc parseKey(s string) ([]string, error) {\n\tvar keys []string\n\tfor {\n\t\ts = strings.TrimSpace(s)\n\t\tif s == \"\" {\n\t\t\tbreak\n\t\t}\n\t\tvar key string\n\t\tif s[0] == '\"' || s[0] == '\\'' {\n\t\t\tq := s[0]\n\t\t\tend := strings.IndexByte(s[1:], q)\n\t\t\tif end < 0 {\n\t\t\t\treturn nil, fmt.Errorf(\"unterminated key\")\n\t\t\t}\n\t\t\traw := s[1 : end+1]\n\t\t\tif q == '\"' {\n\t\t\t\tvar err error\n\t\t\t\traw, err = unquote(raw)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t}\n\t\t\tkey = raw\n\t\t\tif strings.ContainsAny(key, \"\\r\\n\") {\n\t\t\t\treturn nil, fmt.Errorf(\"newline in key\")\n\t\t\t}\n\t\t\ts = s[end+2:]\n\t\t} else {\n\t\t\ti := 0\n\t\t\tfor i < len(s) && s[i] != '.' {\n\t\t\t\ti++\n\t\t\t}\n\t\t\tkey = strings.TrimSpace(s[:i])\n\t\t\tif key == \"\" {\n\t\t\t\treturn nil, fmt.Errorf(\"invalid key\")\n\t\t\t}\n\t\t\tfor _, r := range key {\n\t\t\t\tif !(r == '_' || r == '-' || r >= 'a' && r <= 'z' || r >= 'A' && r <= 'Z' || r >= '0' && r <= '9') {\n\t\t\t\t\treturn nil, fmt.Errorf(\"invalid bare key\")\n\t\t\t\t}\n\t\t\t}\n\t\t\ts = s[i:]\n\t\t}\n\t\tkeys = append(keys, key)\n\t\ts = strings.TrimSpace(s)\n\t\tif s == \"\" {\n\t\t\tbreak\n\t\t}\n\t\tif s[0] != '.' {\n\t\t\treturn nil, fmt.Errorf(\"invalid dotted key\")\n\t\t}\n\t\ts = s[1:]\n\t\tif strings.TrimSpace(s) == \"\" {\n\t\t\treturn nil, fmt.Errorf(\"invalid dotted key\")\n\t\t}\n\t}\n\tif len(keys) == 0 || strings.HasSuffix(strings.TrimSpace(s), \".\") {\n\t\treturn nil, fmt.Errorf(\"invalid dotted key\")\n\t}\n\treturn keys, nil\n}\n\nfunc ensureParent(root Object, path []string) (Object, string, error) {\n\tif len(path) == 0 {\n\t\treturn nil, \"\", fmt.Errorf(\"empty table\")\n\t}\n\tobj := root\n\tfor _, p := range path[:len(path)-1] {\n\t\tif x, ok := obj[p].(Object); ok {\n\t\t\tobj = x\n\t\t} else if obj[p] == nil {\n\t\t\tx := Object{}\n\t\t\tobj[p] = x\n\t\t\tobj = x\n\t\t} else {\n\t\t\treturn nil, \"\", fmt.Errorf(\"table conflict\")\n\t\t}\n\t}\n\treturn obj, path[len(path)-1], nil\n}\nfunc ensureTable(root Object, path []string, decl map[string]bool) (Object, error) {\n\tobj := root\n\tfor i, p := range path {\n\t\tif x, ok := obj[p].(Object); ok {\n\t\t\tobj = x\n\t\t\tcontinue\n\t\t}\n\t\tif arr, ok := obj[p].([]any); ok && len(arr) > 0 {\n\t\t\tif x, ok := arr[len(arr)-1].(Object); ok {\n\t\t\t\tobj = x\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tif obj[p] != nil {\n\t\t\treturn nil, fmt.Errorf(\"table conflict\")\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_3","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,260p' internal/toml/value_test.go && sed -n '1,220p' cmd/toml-decoder/main.go && sed -n '1,220p' cmd/toml-decoder/main_test.go && sed -n '1,120p' go.mod\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_3","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,260p' internal/toml/value_test.go && sed -n '1,220p' cmd/toml-decoder/main.go && sed -n '1,220p' cmd/toml-decoder/main_test.go && sed -n '1,120p' go.mod\"","aggregated_output":"package toml\n\nimport (\n\t\"encoding/json\"\n\t\"reflect\"\n\t\"testing\"\n)\n\nfunc TestDecodeEmptyDocumentIsEmptyObject(t *testing.T) {\n\tgot, err := Decode(\"\\n# comment\\n\")\n\tif err != nil {\n\t\tt.Fatalf(\"Decode returned error: %v\", err)\n\t}\n\tif !reflect.DeepEqual(got, Object{}) {\n\t\tt.Fatalf(\"Decode returned %#v, want empty object\", got)\n\t}\n}\n\nfunc TestTaggedPreservesScalarLexemes(t *testing.T) {\n\tgot, err := Tagged(Object{\"n\": Value{Kind: Integer, Lexeme: \"9223372036854775807\"}})\n\tif err != nil {\n\t\tt.Fatalf(\"Tagged returned error: %v\", err)\n\t}\n\twant := map[string]any{\"n\": map[string]any{\"type\": \"integer\", \"value\": \"9223372036854775807\"}}\n\tdata, err := json.Marshal(got)\n\tif err != nil {\n\t\tt.Fatalf(\"Marshal returned error: %v\", err)\n\t}\n\tvar decoded map[string]any\n\tif err := json.Unmarshal(data, &decoded); err != nil {\n\t\tt.Fatalf(\"Unmarshal returned error: %v\", err)\n\t}\n\tif !reflect.DeepEqual(decoded, want) {\n\t\tt.Fatalf(\"JSON = %#v, want %#v\", decoded, want)\n\t}\n}\n\nfunc TestDecodeRejectsDuplicateKeys(t *testing.T) {\n\tif _, err := Decode(\"a = 1\\na = 2\"); err == nil {\n\t\tt.Fatal(\"Decode accepted duplicate key\")\n\t}\n}\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\n\t\"github.com/owner/toml-decoder/internal/toml\"\n)\n\nfunc main() {\n\tif len(os.Args) != 1 {\n\t\tfmt.Fprintln(os.Stderr, \"toml-decoder accepts no arguments\")\n\t\tos.Exit(2)\n\t}\n\tinput, err := io.ReadAll(os.Stdin)\n\tif err != nil {\n\t\tfmt.Fprintln(os.Stderr, err)\n\t\tos.Exit(1)\n\t}\n\tparsed, err := toml.Decode(string(input))\n\tif err != nil {\n\t\tfmt.Fprintln(os.Stderr, err)\n\t\tos.Exit(1)\n\t}\n\ttagged, err := toml.Tagged(parsed)\n\tif err != nil {\n\t\tfmt.Fprintln(os.Stderr, err)\n\t\tos.Exit(1)\n\t}\n\tif err := json.NewEncoder(os.Stdout).Encode(tagged); err != nil {\n\t\tfmt.Fprintln(os.Stderr, err)\n\t\tos.Exit(1)\n\t}\n}\npackage main\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"os/exec\"\n\t\"strings\"\n\t\"testing\"\n)\n\nfunc TestDecoderValidStdinProducesJSON(t *testing.T) {\n\tcmd := exec.Command(\"go\", \"run\", \".\")\n\tcmd.Stdin = strings.NewReader(\"answer = 42\\n\")\n\tout, err := cmd.Output()\n\tif err != nil {\n\t\tt.Fatalf(\"decoder failed: %v\", err)\n\t}\n\tvar decoded map[string]any\n\tif err := json.Unmarshal(out, &decoded); err != nil {\n\t\tt.Fatalf(\"stdout is not JSON: %v\", err)\n\t}\n\tif decoded[\"answer\"].(map[string]any)[\"value\"] != \"42\" {\n\t\tt.Fatalf(\"decoded JSON = %#v\", decoded)\n\t}\n}\n\nfunc TestDecoderRejectsArguments(t *testing.T) {\n\tcmd := exec.Command(\"go\", \"run\", \".\", \"--help\")\n\tif err := cmd.Run(); err == nil {\n\t\tt.Fatal(\"decoder accepted an argument\")\n\t}\n}\n\nfunc TestDecoderSuccessfulRunLeavesStderrEmpty(t *testing.T) {\n\tcmd := exec.Command(\"go\", \"run\", \".\")\n\tcmd.Stdin = strings.NewReader(\"enabled = true\\n\")\n\tvar stderr bytes.Buffer\n\tcmd.Stderr = &stderr\n\tif err := cmd.Run(); err != nil {\n\t\tt.Fatalf(\"decoder failed: %v\", err)\n\t}\n\tif stderr.Len() != 0 {\n\t\tt.Fatalf(\"stderr = %q\", stderr.String())\n\t}\n}\n\nfunc TestDecoderInvalidInputUsesFailureBoundary(t *testing.T) {\n\tcmd := exec.Command(\"go\", \"run\", \".\")\n\tcmd.Stdin = strings.NewReader(\"broken = [\\n\")\n\tvar stderr bytes.Buffer\n\tcmd.Stderr = &stderr\n\n\tstdout, err := cmd.Output()\n\tif err == nil {\n\t\tt.Fatal(\"decoder accepted malformed TOML\")\n\t}\n\tif stderr.Len() == 0 {\n\t\tt.Fatal(\"decoder produced no diagnostic on stderr\")\n\t}\n\tif len(stdout) != 0 {\n\t\tt.Fatalf(\"decoder produced successful stdout: %q\", stdout)\n\t}\n}\nmodule github.com/owner/toml-decoder\n\ngo 1.24\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_4","type":"command_execution","command":"/bin/bash -lc 'git status --short --untracked-files=all && sha256sum sources/*.sh'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_4","type":"command_execution","command":"/bin/bash -lc 'git status --short --untracked-files=all && sha256sum sources/*.sh'","aggregated_output":"54fcd3c5b0b92e31d7c4c90c3a04ff65617600dcd858947455cda8fbcb2800a6  sources/full_test.sh\n08bc510bd052f639f3ea85afb174ad1774e6ba7541a262f146590a4ea92d0f86  sources/run_conformance.sh\na94f9cee6ae45b4265e244f40b882f9692f59c67aff16953d2db837fb3885a56  sources/setup_harness.sh\n93254a9d7ac72f19345b48fc36faffb1dc79dcc66f55cf18fee48c2cdce988cd  sources/stage_test.sh\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_5","type":"command_execution","command":"/bin/bash -lc \"sed -n '240,620p' internal/toml/decode.go && sed -n '1,220p' sources/full_test.sh && sed -n '1,260p' sources/run_conformance.sh\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_5","type":"command_execution","command":"/bin/bash -lc \"sed -n '240,620p' internal/toml/decode.go && sed -n '1,220p' sources/full_test.sh && sed -n '1,260p' sources/run_conformance.sh\"","aggregated_output":"\t\t\traw := s[1 : end+1]\n\t\t\tif q == '\"' {\n\t\t\t\tvar err error\n\t\t\t\traw, err = unquote(raw)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t}\n\t\t\tkey = raw\n\t\t\tif strings.ContainsAny(key, \"\\r\\n\") {\n\t\t\t\treturn nil, fmt.Errorf(\"newline in key\")\n\t\t\t}\n\t\t\ts = s[end+2:]\n\t\t} else {\n\t\t\ti := 0\n\t\t\tfor i < len(s) && s[i] != '.' {\n\t\t\t\ti++\n\t\t\t}\n\t\t\tkey = strings.TrimSpace(s[:i])\n\t\t\tif key == \"\" {\n\t\t\t\treturn nil, fmt.Errorf(\"invalid key\")\n\t\t\t}\n\t\t\tfor _, r := range key {\n\t\t\t\tif !(r == '_' || r == '-' || r >= 'a' && r <= 'z' || r >= 'A' && r <= 'Z' || r >= '0' && r <= '9') {\n\t\t\t\t\treturn nil, fmt.Errorf(\"invalid bare key\")\n\t\t\t\t}\n\t\t\t}\n\t\t\ts = s[i:]\n\t\t}\n\t\tkeys = append(keys, key)\n\t\ts = strings.TrimSpace(s)\n\t\tif s == \"\" {\n\t\t\tbreak\n\t\t}\n\t\tif s[0] != '.' {\n\t\t\treturn nil, fmt.Errorf(\"invalid dotted key\")\n\t\t}\n\t\ts = s[1:]\n\t\tif strings.TrimSpace(s) == \"\" {\n\t\t\treturn nil, fmt.Errorf(\"invalid dotted key\")\n\t\t}\n\t}\n\tif len(keys) == 0 || strings.HasSuffix(strings.TrimSpace(s), \".\") {\n\t\treturn nil, fmt.Errorf(\"invalid dotted key\")\n\t}\n\treturn keys, nil\n}\n\nfunc ensureParent(root Object, path []string) (Object, string, error) {\n\tif len(path) == 0 {\n\t\treturn nil, \"\", fmt.Errorf(\"empty table\")\n\t}\n\tobj := root\n\tfor _, p := range path[:len(path)-1] {\n\t\tif x, ok := obj[p].(Object); ok {\n\t\t\tobj = x\n\t\t} else if obj[p] == nil {\n\t\t\tx := Object{}\n\t\t\tobj[p] = x\n\t\t\tobj = x\n\t\t} else {\n\t\t\treturn nil, \"\", fmt.Errorf(\"table conflict\")\n\t\t}\n\t}\n\treturn obj, path[len(path)-1], nil\n}\nfunc ensureTable(root Object, path []string, decl map[string]bool) (Object, error) {\n\tobj := root\n\tfor i, p := range path {\n\t\tif x, ok := obj[p].(Object); ok {\n\t\t\tobj = x\n\t\t\tcontinue\n\t\t}\n\t\tif arr, ok := obj[p].([]any); ok && len(arr) > 0 {\n\t\t\tif x, ok := arr[len(arr)-1].(Object); ok {\n\t\t\t\tobj = x\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tif obj[p] != nil {\n\t\t\treturn nil, fmt.Errorf(\"table conflict\")\n\t\t}\n\t\tx := Object{}\n\t\tobj[p] = x\n\t\tobj = x\n\t\t_ = i\n\t}\n\tname := strings.Join(path, \".\")\n\tif decl[name] && !hasArrayAncestor(root, path) {\n\t\treturn nil, fmt.Errorf(\"table redefinition\")\n\t}\n\tdecl[name] = true\n\treturn obj, nil\n}\n\nfunc hasArrayAncestor(root Object, path []string) bool {\n\tobj := root\n\tfor _, part := range path[:len(path)-1] {\n\t\tif arr, ok := obj[part].([]any); ok {\n\t\t\treturn len(arr) > 0\n\t\t}\n\t\tx, ok := obj[part].(Object)\n\t\tif !ok {\n\t\t\treturn false\n\t\t}\n\t\tobj = x\n\t}\n\treturn false\n}\n\nfunc parseValue(s string) (any, error) {\n\ts = strings.TrimSpace(s)\n\tif s == \"true\" || s == \"false\" {\n\t\treturn Value{Bool, s}, nil\n\t}\n\tif len(s) >= 2 && (s[0] == '\"' || s[0] == '\\'') {\n\t\treturn parseString(s)\n\t}\n\tif strings.HasPrefix(s, \"[\") {\n\t\treturn parseArray(s)\n\t}\n\tif strings.HasPrefix(s, \"{\") {\n\t\treturn parseInline(s)\n\t}\n\tfor _, layout := range []struct {\n\t\tkind   Kind\n\t\tlayout string\n\t}{{Datetime, \"2006-01-02T15:04:05Z07:00\"}, {DatetimeLocal, \"2006-01-02T15:04:05\"}, {DateLocal, \"2006-01-02\"}, {TimeLocal, \"15:04:05\"}} {\n\t\tcandidate := s\n\t\tif layout.kind == Datetime || layout.kind == DatetimeLocal {\n\t\t\tcandidate = strings.Replace(candidate, \" \", \"T\", 1)\n\t\t}\n\t\tcandidate = strings.ReplaceAll(candidate, \"z\", \"Z\")\n\t\tif _, err := time.Parse(layout.layout, candidate); err == nil {\n\t\t\treturn Value{layout.kind, s}, nil\n\t\t}\n\t}\n\tclean := strings.ReplaceAll(s, \"_\", \"\")\n\tif s == \"inf\" || s == \"+inf\" || s == \"-inf\" || s == \"nan\" || s == \"+nan\" || s == \"-nan\" {\n\t\treturn Value{Float, strings.TrimPrefix(strings.TrimPrefix(s, \"+\"), \"-\")}, nil\n\t}\n\tif _, err := strconv.ParseInt(clean, 0, 64); err == nil && validNumber(s) {\n\t\treturn Value{Integer, normalizeInteger(clean)}, nil\n\t}\n\tif validNumber(s) {\n\t\tif f, err := strconv.ParseFloat(clean, 64); err == nil && !math.IsInf(f, 0) && !math.IsNaN(f) {\n\t\t\treturn Value{Float, s}, nil\n\t\t}\n\t}\n\treturn nil, fmt.Errorf(\"invalid value %q\", s)\n}\n\nfunc normalizeInteger(s string) string {\n\tnegative := strings.HasPrefix(s, \"-\")\n\ts = strings.TrimLeft(s, \"+-\")\n\tbase := 10\n\tif strings.HasPrefix(s, \"0x\") {\n\t\tbase = 16\n\t\ts = s[2:]\n\t} else if strings.HasPrefix(s, \"0o\") {\n\t\tbase = 8\n\t\ts = s[2:]\n\t} else if strings.HasPrefix(s, \"0b\") {\n\t\tbase = 2\n\t\ts = s[2:]\n\t}\n\tn, _ := strconv.ParseInt(s, base, 64)\n\tif negative {\n\t\tn = -n\n\t}\n\treturn strconv.FormatInt(n, 10)\n}\n\nfunc validNumber(s string) bool {\n\tif s == \"\" {\n\t\treturn false\n\t}\n\tfor _, r := range s {\n\t\tif !(r >= '0' && r <= '9' || r >= 'a' && r <= 'f' || r >= 'A' && r <= 'F' || strings.ContainsRune(\"+-._xobXOBeE\", r)) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\nfunc parseString(s string) (Value, error) {\n\tq := s[0]\n\tif len(s) >= 6 && s[:3] == s[:3] && (s[:3] == \"\\\"\\\"\\\"\" || s[:3] == \"'''\") {\n\t\tif s[len(s)-3:] != s[:3] {\n\t\t\treturn Value{}, fmt.Errorf(\"unterminated multiline string\")\n\t\t}\n\t\tbody := s[3 : len(s)-3]\n\t\tif s[:3] == \"\\\"\\\"\\\"\" {\n\t\t\tbody = strings.ReplaceAll(body, \"\\\\\\n\", \"\")\n\t\t\tbody = strings.TrimPrefix(body, \"\\n\")\n\t\t}\n\t\treturn Value{String, body}, nil\n\t}\n\tif len(s) < 2 || s[len(s)-1] != q {\n\t\treturn Value{}, fmt.Errorf(\"unterminated string\")\n\t}\n\tif q == '\\'' {\n\t\tif strings.ContainsAny(s[1:len(s)-1], \"\\n\\r\") {\n\t\t\treturn Value{}, fmt.Errorf(\"newline in string\")\n\t\t}\n\t\treturn Value{String, s[1 : len(s)-1]}, nil\n\t}\n\traw, err := unquote(s)\n\treturn Value{String, raw}, err\n}\nfunc unquote(s string) (string, error) {\n\tv, err := strconv.Unquote(s)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"invalid string: %w\", err)\n\t}\n\treturn v, nil\n}\nfunc splitItems(s string) ([]string, error) {\n\tvar out []string\n\tstart, depth := 0, 0\n\tquote := byte(0)\n\tfor i, c := range []byte(s) {\n\t\tif quote != 0 {\n\t\t\tif c == quote && s[i-1] != '\\\\' {\n\t\t\t\tquote = 0\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif c == '\"' || c == '\\'' {\n\t\t\tquote = c\n\t\t}\n\t\tif c == '[' || c == '{' {\n\t\t\tdepth++\n\t\t}\n\t\tif c == ']' || c == '}' {\n\t\t\tdepth--\n\t\t}\n\t\tif c == ',' && depth == 0 {\n\t\t\tout = append(out, strings.TrimSpace(s[start:i]))\n\t\t\tstart = i + 1\n\t\t}\n\t}\n\tif strings.TrimSpace(s[start:]) != \"\" {\n\t\tout = append(out, strings.TrimSpace(s[start:]))\n\t}\n\treturn out, nil\n}\nfunc parseArray(s string) ([]any, error) {\n\ts = stripComment(s)\n\tif len(s) < 2 || s[len(s)-1] != ']' {\n\t\treturn nil, fmt.Errorf(\"unterminated array\")\n\t}\n\titems, _ := splitItems(s[1 : len(s)-1])\n\tout := make([]any, 0, len(items))\n\tfor _, item := range items {\n\t\tv, e := parseValue(item)\n\t\tif e != nil {\n\t\t\treturn nil, e\n\t\t}\n\t\tout = append(out, v)\n\t}\n\treturn out, nil\n}\nfunc parseInline(s string) (Object, error) {\n\ts = stripComment(s)\n\tif len(s) < 2 || s[len(s)-1] != '}' {\n\t\treturn nil, fmt.Errorf(\"unterminated inline table\")\n\t}\n\to := Object{}\n\tfor _, item := range mustSplit(s[1 : len(s)-1]) {\n\t\tp, e := assignmentEquals(item)\n\t\tif e != nil {\n\t\t\treturn nil, e\n\t\t}\n\t\tk, e := parseKey(item[:p])\n\t\tif e != nil || len(k) == 0 {\n\t\t\treturn nil, fmt.Errorf(\"invalid inline key\")\n\t\t}\n\t\ttarget := o\n\t\tfor _, part := range k[:len(k)-1] {\n\t\t\tnext, ok := target[part].(Object)\n\t\t\tif !ok {\n\t\t\t\tif target[part] != nil {\n\t\t\t\t\treturn nil, fmt.Errorf(\"duplicate key\")\n\t\t\t\t}\n\t\t\t\tnext = Object{}\n\t\t\t\ttarget[part] = next\n\t\t\t}\n\t\t\ttarget = next\n\t\t}\n\t\tif _, ok := target[k[len(k)-1]]; ok {\n\t\t\treturn nil, fmt.Errorf(\"duplicate key\")\n\t\t}\n\t\tv, e := parseValue(strings.TrimSpace(item[p+1:]))\n\t\tif e != nil {\n\t\t\treturn nil, e\n\t\t}\n\t\ttarget[k[len(k)-1]] = v\n\t}\n\treturn o, nil\n}\nfunc mustSplit(s string) []string { x, _ := splitItems(s); return x }\n#!/bin/sh\n# full_test.sh — scoring entry point. Do not filter, skip, or reinterpret.\nset -eu\n# The version setup_harness.sh installs. run_conformance.sh refuses a different one, so a\n# passing verdict names a specific exam rather than whichever harness was on PATH.\nTOML_TEST_VERSION=\"${TOML_TEST_VERSION:-v2.2.0}\"\nexport TOML_TEST_VERSION\ngo build -o toml-decoder ./cmd/toml-decoder\nDECODER=\"$PWD/toml-decoder\" exec sh sources/run_conformance.sh\n#!/bin/sh\n# Run the upstream toml-test conformance suite against the built decoder.\n#\n# Imported sources land in sources/ inside the application directory, so this is\n# normally invoked as `sh sources/run_conformance.sh` from that directory.\n#\n# Usage:\n#   DECODER=./toml-decoder sh sources/run_conformance.sh                        # full suite\n#   DECODER=./toml-decoder sh sources/run_conformance.sh -run 'valid/string/*'  # one group\n#   DECODER=./toml-decoder sh sources/run_conformance.sh -json                  # machine-readable\n#\n# Environment:\n#   DECODER    decoder command. Required — this harness is language-neutral and\n#              deliberately has no default implementation language.\n#   TOML_TEST  absolute path to the toml-test binary (default: found on PATH)\n#\n# Exit code is the harness exit code: 0 only when every test passes.\n\nset -u\n\nif [ -z \"${DECODER:-}\" ]; then\n    echo \"error: DECODER is not set; give the command that runs your decoder.\" >&2\n    exit 2\nfi\n\nif [ -n \"${TOML_TEST:-}\" ] && [ -x \"${TOML_TEST}\" ]; then\n    HARNESS=\"${TOML_TEST}\"\nelif command -v toml-test >/dev/null 2>&1; then\n    HARNESS=\"$(command -v toml-test)\"\nelse\n    cat >&2 <<'EOF'\nerror: toml-test not found.\n\nInstall the harness once:\n\n    sh sources/setup_harness.sh\n\nor set TOML_TEST to an existing binary:\n\n    TOML_TEST=/path/to/toml-test sh sources/run_conformance.sh\nEOF\n    exit 127\nfi\n\n# The suite's identity is part of the verdict. Without this, \"the authoritative suite passed\"\n# names no particular suite: whichever toml-test happened to be on PATH decided the run, and a\n# different version on a different machine is a different exam. Recorded always, and enforced\n# when the caller states which version it expects.\nHARNESS_VERSION=\"$(\"${HARNESS}\" version 2>/dev/null | head -n 1 || true)\"\necho \"harness: ${HARNESS} ${HARNESS_VERSION:-(version unknown)}\" >&2\nif [ -n \"${TOML_TEST_VERSION:-}\" ] && [ -n \"${HARNESS_VERSION}\" ]; then\n    case \"${HARNESS_VERSION}\" in\n        *\"${TOML_TEST_VERSION}\"*) ;;\n        *)\n            echo \"error: harness is ${HARNESS_VERSION}, expected ${TOML_TEST_VERSION}.\" >&2\n            echo \"Run: sh sources/setup_harness.sh\" >&2\n            exit 2\n            ;;\n    esac\nfi\n\nNO_COLOR=1 exec \"${HARNESS}\" test -toml 1.0 -decoder \"${DECODER}\" \"$@\"\n","exit_code":0,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_6","type":"agent_message","text":"The project already has a parser and a `Tagged` encoder, but its test coverage does not yet cover all declared scalar kinds and structural edge cases. I’m validating the current behavior first, then I’ll add focused encoder tests and only adjust implementation where the required representation is not met."}}
{"type":"item.started","item":{"id":"item_7","type":"command_execution","command":"/bin/bash -lc \"go test ./... && go vet ./... && gofmt -l . && printf '%s' 'offset = 1979-05-27T07:32:00Z\nlocal = 1979-05-27T07:32:00\ndate = 1979-05-27\ntime = 07:32:00\n' | ./toml-decoder 2>/tmp/toml.err; status=\"'$?; echo STATUS=$status; cat /tmp/toml.err'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_7","type":"command_execution","command":"/bin/bash -lc \"go test ./... && go vet ./... && gofmt -l . && printf '%s' 'offset = 1979-05-27T07:32:00Z\nlocal = 1979-05-27T07:32:00\ndate = 1979-05-27\ntime = 07:32:00\n' | ./toml-decoder 2>/tmp/toml.err; status=\"'$?; echo STATUS=$status; cat /tmp/toml.err'","aggregated_output":"ok  \tgithub.com/owner/toml-decoder/cmd/toml-decoder\t0.984s\nok  \tgithub.com/owner/toml-decoder/internal/toml\t(cached)\n{\"date\":{\"type\":\"date-local\",\"value\":\"1979-05-27\"},\"local\":{\"type\":\"datetime-local\",\"value\":\"1979-05-27T07:32:00\"},\"offset\":{\"type\":\"datetime\",\"value\":\"1979-05-27T07:32:00Z\"},\"time\":{\"type\":\"time-local\",\"value\":\"07:32:00\"}}\nSTATUS=0\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_8","type":"command_execution","command":"/bin/bash -lc 'command -v toml-test || true; sh sources/full_test.sh'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_8","type":"command_execution","command":"/bin/bash -lc 'command -v toml-test || true; sh sources/full_test.sh'","aggregated_output":"harness: /home/barlo/.local/bin/toml-test toml-test v2.2.0; go1.24.6 linux/amd64; race=false; cgo=true\nFAIL valid/comment/tricky\n     line 16: invalid string: invalid syntax\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754005):\n        1 │\u001b[0m [section]#attached comment\n        2 │\u001b[0m #[notsection]\n        3 │\u001b[0m one = \"11\"#cmt\n        4 │\u001b[0m two = \"22#\"\n        5 │\u001b[0m three = '#'\n        6 │\u001b[0m\n        7 │\u001b[0m four = \"\"\"# no comment\n        8 │\u001b[0m # nor this\n        9 │\u001b[0m #also not comment\"\"\"#is_comment\n       10 │\u001b[0m\n       11 │\u001b[0m five = 5.5#66\n       12 │\u001b[0m six = 6#7\n       13 │\u001b[0m 8 = \"eight\"\n       14 │\u001b[0m #nine = 99\n       15 │\u001b[0m ten = 10e2#1\n       16 │\u001b[0m eleven = 1.11e1#23\n       17 │\u001b[0m\n       18 │\u001b[0m [\"hash#tag\"]\n       19 │\u001b[0m \"#!\" = \"hash bang\"\n       20 │\u001b[0m arr3 = [ \"#\", '#', \"\"\"###\"\"\" ]\n       21 │\u001b[0m arr4 = [ 1,# 9, 9,\n       22 │\u001b[0m 2#,9\n       23 │\u001b[0m ,#9\n       24 │\u001b[0m 3#]\n       25 │\u001b[0m ,4]\n       26 │\u001b[0m arr5 = [[[[#[\"#\"],\n       27 │\u001b[0m [\"#\"]]]]#]\n       28 │\u001b[0m ]\n       29 │\u001b[0m tbl1 = { \"#\" = '}#'}#}}\n\n     output from parser-cmd (PID 754005) (stderr):\n        1 │\u001b[0m line 16: invalid string: invalid syntax\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/datetime/datetime\n     line 4: invalid value \"1987-07-05t17:45:00z\"\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754002):\n        1 │\u001b[0m space = 1987-07-05 17:45:00Z\n        2 │\u001b[0m\n        3 │\u001b[0m # ABNF is case-insensitive, both \"Z\" and \"z\" must be supported.\n        4 │\u001b[0m lower = 1987-07-05t17:45:00z\n\n     output from parser-cmd (PID 754002) (stderr):\n        1 │\u001b[0m line 4: invalid value \"1987-07-05t17:45:00z\"\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/float/inf-and-nan\n     Values for key \"infinity_neg\" don't match:\n       Expected:     -Inf\n       Your encoder: +Inf\n\n     input sent to parser-cmd (PID 754207):\n        1 │\u001b[0m # We don't encode +nan and -nan back with the signs; many languages don't\n        2 │\u001b[0m # support a sign on NaN (it doesn't really make much sense).\n        3 │\u001b[0m nan = nan\n        4 │\u001b[0m nan_neg = -nan\n        5 │\u001b[0m nan_plus = +nan\n        6 │\u001b[0m infinity = inf\n        7 │\u001b[0m infinity_neg = -inf\n        8 │\u001b[0m infinity_plus = +inf\n\n     output from parser-cmd (PID 754207) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"infinity\":      {\"type\": \"float\", \"value\": \"inf\"},\n        3 │\u001b[0m   \"infinity_neg\":  {\"type\": \"float\", \"value\": \"inf\"},\n        4 │\u001b[0m   \"infinity_plus\": {\"type\": \"float\", \"value\": \"inf\"},\n        5 │\u001b[0m   \"nan\":           {\"type\": \"float\", \"value\": \"nan\"},\n        6 │\u001b[0m   \"nan_neg\":       {\"type\": \"float\", \"value\": \"nan\"},\n        7 │\u001b[0m   \"nan_plus\":      {\"type\": \"float\", \"value\": \"nan\"}\n        8 │\u001b[0m }\n\n     want:\n        1 │\u001b[0m {\n        2 │\u001b[0m     \"infinity\":      {\"type\": \"float\", \"value\": \"inf\"},\n        3 │\u001b[0m     \"infinity_neg\":  {\"type\": \"float\", \"value\": \"-inf\"},\n        4 │\u001b[0m     \"infinity_plus\": {\"type\": \"float\", \"value\": \"inf\"},\n        5 │\u001b[0m     \"nan\":           {\"type\": \"float\", \"value\": \"nan\"},\n        6 │\u001b[0m     \"nan_neg\":       {\"type\": \"float\", \"value\": \"nan\"},\n        7 │\u001b[0m     \"nan_plus\":      {\"type\": \"float\", \"value\": \"nan\"}\n        8 │\u001b[0m }\n\nFAIL valid/inline-table/empty\n     line 6: invalid inline key\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754256):\n        1 │\u001b[0m empty1 = {}\n        2 │\u001b[0m empty2 = { }\n        3 │\u001b[0m empty_in_array = [ { not_empty = 1 }, {} ]\n        4 │\u001b[0m empty_in_array2 = [{},{not_empty=1}]\n        5 │\u001b[0m many_empty = [{},{},{}]\n        6 │\u001b[0m nested_empty = {\"empty\"={}}\n        7 │\u001b[0m with_cmt ={            }#nothing here\n\n     output from parser-cmd (PID 754256) (stderr):\n        1 │\u001b[0m line 6: invalid inline key\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/inline-table/inline-table\n     line 4: invalid inline key\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754259):\n        1 │\u001b[0m name        = { first = \"Tom\", last = \"Preston-Werner\" }\n        2 │\u001b[0m point       = { x = 1, y = 2 }\n        3 │\u001b[0m simple      = { a = 1 }\n        4 │\u001b[0m str-key     = { \"a\" = 1 }\n        5 │\u001b[0m table-array = [{ \"a\" = 1 }, { \"b\" = 2 }]\n\n     output from parser-cmd (PID 754259) (stderr):\n        1 │\u001b[0m line 4: invalid inline key\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/inline-table/key-dotted-01\n     line 2: invalid inline key\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754261):\n        1 │\u001b[0m a = {   a.b  =  1   }\n        2 │\u001b[0m b = {   \"a\".\"b\"  =  1   }\n        3 │\u001b[0m c = {   a   .   b  =  1   }\n        4 │\u001b[0m d = {   'a'   .   \"b\"  =  1   }\n        5 │\u001b[0m e = {a.b=1}\n\n     output from parser-cmd (PID 754261) (stderr):\n        1 │\u001b[0m line 2: invalid inline key\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/inline-table/spaces\n     line 5: invalid inline key\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754304):\n        1 │\u001b[0m # https://github.com/toml-lang/toml-test/issues/146\n        2 │\u001b[0m clap-1 = { version = \"4\"  , features = [\"derive\", \"cargo\"] }\n        3 │\u001b[0m\n        4 │\u001b[0m # Contains some literal tabs!\n        5 │\u001b[0m clap-2 = { version = \"4\"\t   \t,\t  \tfeatures = [   \"derive\" \t  ,  \t  \"cargo\"   ]   , nest   =   {  \t  \"a\"   =   'x'  , \t  'b'   = [ 1.5    ,   9.0  ]  }  }\n\n     output from parser-cmd (PID 754304) (stderr):\n        1 │\u001b[0m line 5: invalid inline key\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/integer/long\n     Values for key \"int64-max-neg\" don't match:\n       Expected:     -9223372036854775808\n       Your encoder: -9223372036854775807\n\n     input sent to parser-cmd (PID 754364):\n        1 │\u001b[0m # int64 \"should\" be supported, but is not mandatory. It's fine to skip this\n        2 │\u001b[0m # test.\n        3 │\u001b[0m int64-max     = 9223372036854775807\n        4 │\u001b[0m int64-max-neg = -9223372036854775808\n\n     output from parser-cmd (PID 754364) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"int64-max\":     {\"type\": \"integer\", \"value\": \"9223372036854775807\"},\n        3 │\u001b[0m   \"int64-max-neg\": {\"type\": \"integer\", \"value\": \"-9223372036854775807\"}\n        4 │\u001b[0m }\n\n     want:\n        1 │\u001b[0m {\n        2 │\u001b[0m     \"int64-max\":     {\"type\": \"integer\", \"value\": \"9223372036854775807\"},\n        3 │\u001b[0m     \"int64-max-neg\": {\"type\": \"integer\", \"value\": \"-9223372036854775808\"}\n        4 │\u001b[0m }\n\nFAIL valid/key/case-sensitive\n     line 10: invalid string: invalid syntax\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754336):\n        1 │\u001b[0m sectioN = \"NN\"\n        2 │\u001b[0m\n        3 │\u001b[0m [section]\n        4 │\u001b[0m name = \"lower\"\n        5 │\u001b[0m NAME = \"upper\"\n        6 │\u001b[0m Name = \"capitalized\"\n        7 │\u001b[0m\n        8 │\u001b[0m [Section]\n        9 │\u001b[0m name = \"different section!!\"\n       10 │\u001b[0m \"μ\" = \"greek small letter mu\"\n       11 │\u001b[0m \"Μ\" = \"greek capital letter MU\"\n       12 │\u001b[0m M = \"latin letter M\"\n\n     output from parser-cmd (PID 754336) (stderr):\n        1 │\u001b[0m line 10: invalid string: invalid syntax\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/key/dotted-01\n     line 2: invalid string: invalid syntax\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754357):\n        1 │\u001b[0m name.first = \"Arthur\"\n        2 │\u001b[0m \"name\".'last' = \"Dent\"\n        3 │\u001b[0m\n        4 │\u001b[0m many.dots.dot.dot.dot = 42\n\n     output from parser-cmd (PID 754357) (stderr):\n        1 │\u001b[0m line 2: invalid string: invalid syntax\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/key/dotted-02\n     line 6: invalid string: invalid syntax\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754361):\n        1 │\u001b[0m # Note: this file contains literal tab characters.\n        2 │\u001b[0m\n        3 │\u001b[0m # Space are ignored, and key parts can be quoted.\n        4 │\u001b[0m count.a       = 1\n        5 │\u001b[0m count . b     = 2\n        6 │\u001b[0m \"count\".\"c\"   = 3\n        7 │\u001b[0m \"count\" . \"d\" = 4\n        8 │\u001b[0m 'count'.'e'   = 5\n        9 │\u001b[0m 'count' . 'f' = 6\n       10 │\u001b[0m \"count\".'g'   = 7\n       11 │\u001b[0m \"count\" . 'h' = 8\n       12 │\u001b[0m count.'i'     = 9\n       13 │\u001b[0m count \t.\t 'j'\t   = 10\n       14 │\u001b[0m \"count\".k     = 11\n       15 │\u001b[0m \"count\" . l   = 12\n\n     output from parser-cmd (PID 754361) (stderr):\n        1 │\u001b[0m line 6: invalid string: invalid syntax\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/key/dotted-empty\n     line 2: invalid string: invalid syntax\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754384):\n        1 │\u001b[0m ''.x = \"empty.x\"\n        2 │\u001b[0m x.\"\" = \"x.empty\"\n        3 │\u001b[0m [a]\n        4 │\u001b[0m \"\".'' = \"empty.empty\"\n\n     output from parser-cmd (PID 754384) (stderr):\n        1 │\u001b[0m line 2: invalid string: invalid syntax\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/key/empty-01\n     line 1: invalid string: invalid syntax\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754393):\n        1 │\u001b[0m \"\" = \"blank\"\n\n     output from parser-cmd (PID 754393) (stderr):\n        1 │\u001b[0m line 1: invalid string: invalid syntax\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/key/escapes\n     line 1: invalid string: invalid syntax\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754396):\n        1 │\u001b[0m \"\\n\" = \"newline\"\n        2 │\u001b[0m \"\\b\" = \"bell\"\n        3 │\u001b[0m \"\\u00c0\" = \"latin capital letter A with grave\"\n        4 │\u001b[0m \"\\\"\" = \"just a quote\"\n        5 │\u001b[0m\n        6 │\u001b[0m [\"backsp\\b\\b\"]\n        7 │\u001b[0m\n        8 │\u001b[0m [\"\\\"quoted\\\"\"]\n        9 │\u001b[0m quote = true\n       10 │\u001b[0m\n       11 │\u001b[0m [\"a.b\".\"\\u00c0\"]\n\n     output from parser-cmd (PID 754396) (stderr):\n        1 │\u001b[0m line 1: invalid string: invalid syntax\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/key/like-date\n     line 3: invalid string: invalid syntax\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754419):\n        1 │\u001b[0m # '-' is a valid character in keys: make a key that looks like a date.\n        2 │\u001b[0m 2001-02-03   = 1\n        3 │\u001b[0m \"2001-02-04\" = 2\n        4 │\u001b[0m '2001-02-05' = 3\n        5 │\u001b[0m\n        6 │\u001b[0m # Also include datetime and time for good measure; these need to be quoted as\n        7 │\u001b[0m # ':' isn't a valid bare key.\n        8 │\u001b[0m \"2001-02-06T15:16:17+01:00\" = 4\n        9 │\u001b[0m \"2001-02-07T15:16:17\"       = 5\n       10 │\u001b[0m \"15:16:17\"                  = 6\n       11 │\u001b[0m\n       12 │\u001b[0m # Dotted keys\n       13 │\u001b[0m a.2001-02-08 = 7\n       14 │\u001b[0m a.2001-02-09.2001-02-10 = 8\n       15 │\u001b[0m 2001-02-11.a.2001-02-12 = 9\n       16 │\u001b[0m\n       17 │\u001b[0m # Table names\n       18 │\u001b[0m [2002-01-02]\n       19 │\u001b[0m k = 10\n       20 │\u001b[0m\n       21 │\u001b[0m [2002-01-02.2024-01-03]\n       22 │\u001b[0m k = 11\n       23 │\u001b[0m\n       24 │\u001b[0m [[2002-01-04]]\n       25 │\u001b[0m k = 12\n\n     output from parser-cmd (PID 754419) (stderr):\n        1 │\u001b[0m line 3: invalid string: invalid syntax\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/key/quoted-dots\n     line 2: invalid string: invalid syntax\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754475):\n        1 │\u001b[0m plain = 1\n        2 │\u001b[0m \"with.dot\" = 2\n        3 │\u001b[0m\n        4 │\u001b[0m [plain_table]\n        5 │\u001b[0m plain = 3\n        6 │\u001b[0m \"with.dot\" = 4\n        7 │\u001b[0m\n        8 │\u001b[0m [table.withdot]\n        9 │\u001b[0m plain = 5\n       10 │\u001b[0m \"key.with.dots\" = 6\n       11 │\u001b[0m \"escaped\\u002edot\" = 7\n\n     output from parser-cmd (PID 754475) (stderr):\n        1 │\u001b[0m line 2: invalid string: invalid syntax\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/key/quoted-unicode\n     line 2: invalid string: invalid syntax\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754457):\n        1 │\u001b[0m\n        2 │\u001b[0m \"\\u0000\" = \"null\"\n        3 │\u001b[0m '\\u0000' = \"different key\"\n        4 │\u001b[0m \"\\u0008 \\u000c \\U00000041 \\u007f \\u0080 \\u00ff \\ud7ff \\ue000 \\uffff \\U00010000 \\U0010ffff\" = \"escaped key\"\n        5 │\u001b[0m\n        6 │\u001b[0m \"~  ÿ ퟿  ￿ 𐀀 􏿿\" = \"basic key\"\n        7 │\u001b[0m 'l ~  ÿ ퟿  ￿ 𐀀 􏿿' = \"literal key\"\n\n     output from parser-cmd (PID 754457) (stderr):\n        1 │\u001b[0m line 2: invalid string: invalid syntax\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/key/space\n     line 2: invalid string: invalid syntax\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754487):\n        1 │\u001b[0m # Keep whitespace inside quotes keys at all positions.\n        2 │\u001b[0m \"a b\"   = 1\n        3 │\u001b[0m \" c d \" = 2\n        4 │\u001b[0m \"  much \t\t  whitespace  \t\\n  \\r\\n  \" = 3\n        5 │\u001b[0m\n        6 │\u001b[0m [ \" tbl \" ]\n        7 │\u001b[0m \"\\ttab\\ttab\\t\" = \"tab\"\n\n     output from parser-cmd (PID 754487) (stderr):\n        1 │\u001b[0m line 2: invalid string: invalid syntax\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/key/special-chars\n     line 1: invalid string: invalid syntax\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754458):\n        1 │\u001b[0m \"=~!@$^&*()_+-`1234567890[]|/?><.,;:'=\" = 1\n\n     output from parser-cmd (PID 754458) (stderr):\n        1 │\u001b[0m line 1: invalid string: invalid syntax\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/multibyte\n     line 15: invalid string: invalid syntax\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754499):\n        1 │\u001b[0m # Test multibyte throughout\n        2 │\u001b[0m\n        3 │\u001b[0m # Tèƨƭ ƒïℓè ƒôř TÓM£\n        4 │\u001b[0m # Óñℓ¥ ƭλïƨ ôñè ƭřïèƨ ƭô è₥úℓáƭè á TÓM£ ƒïℓè ωřïƭƭèñ β¥ á úƨèř ôƒ ƭλè ƙïñδ ôƒ ƥářƨèř ωřïƭèřƨ ƥřôβáβℓ¥ λáƭè\n        5 │\u001b[0m\n        6 │\u001b[0m ['𝐭𝐛𝐥']\n        7 │\u001b[0m string = \"𝓼𝓽𝓻𝓲𝓷𝓰 - #\"          # \" 𝓼𝓽𝓻𝓲𝓷𝓰\n        8 │\u001b[0m \t['𝐭𝐛𝐥'.sub]\n        9 │\u001b[0m \t'𝕒𝕣𝕣𝕒𝕪' = [ \"] \", \" # \"]      # ] 𝓪𝓻𝓻𝓪𝔂\n       10 │\u001b[0m \t'𝕒𝕣𝕣𝕒𝕪𝟚' = [ \"Tèƨƭ #11 ]ƥřôƲèδ ƭλáƭ\", \"Éжƥèřï₥èñƭ #9 ωáƨ á ƨúççèƨƨ\" ]\n       11 │\u001b[0m \t# Ýôú δïδñ'ƭ ƭλïñƙ ïƭ'δ áƨ èáƨ¥ áƨ çλúçƙïñϱ ôúƭ ƭλè ℓáƨƭ #, δïδ ¥ôú?\n       12 │\u001b[0m \tanother_test_string = \"§á₥è ƭλïñϱ, βúƭ ωïƭλ á ƨƭřïñϱ #\"\n       13 │\u001b[0m \tescapes = \" Âñδ ωλèñ \\\"'ƨ ářè ïñ ƭλè ƨƭřïñϱ, áℓôñϱ ωïƭλ # \\\"\"   # \"áñδ çô₥₥èñƭƨ ářè ƭλèřè ƭôô\"\n       14 │\u001b[0m \t# Tλïñϱƨ ωïℓℓ ϱèƭ λářδèř\n       15 │\u001b[0m \t\t['𝐭𝐛𝐥'.sub.\"βïƭ#\"]\n       16 │\u001b[0m \t\t\"ωλáƭ?\" = \"Ýôú δôñ'ƭ ƭλïñƙ ƨô₥è úƨèř ωôñ'ƭ δô ƭλáƭ?\"\n       17 │\u001b[0m \t\tmulti_line_array = [\n       18 │\u001b[0m \t\t\t\"]\",\n       19 │\u001b[0m \t\t\t# ] Óλ ¥èƨ Ì δïδ\n       20 │\u001b[0m \t\t\t]\n\n     output from parser-cmd (PID 754499) (stderr):\n        1 │\u001b[0m line 15: invalid string: invalid syntax\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/spec-1.0.0/array-of-tables-1\n     line 8: table conflict\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754489):\n        1 │\u001b[0m [[fruits]]\n        2 │\u001b[0m name = \"apple\"\n        3 │\u001b[0m\n        4 │\u001b[0m [fruits.physical]  # subtable\n        5 │\u001b[0m color = \"red\"\n        6 │\u001b[0m shape = \"round\"\n        7 │\u001b[0m\n        8 │\u001b[0m [[fruits.varieties]]  # nested array of tables\n        9 │\u001b[0m name = \"red delicious\"\n       10 │\u001b[0m\n       11 │\u001b[0m [[fruits.varieties]]\n       12 │\u001b[0m name = \"granny smith\"\n       13 │\u001b[0m\n       14 │\u001b[0m\n       15 │\u001b[0m [[fruits]]\n       16 │\u001b[0m name = \"banana\"\n       17 │\u001b[0m\n       18 │\u001b[0m [[fruits.varieties]]\n       19 │\u001b[0m name = \"plantain\"\n\n     output from parser-cmd (PID 754489) (stderr):\n        1 │\u001b[0m line 8: table conflict\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/spec-1.0.0/float-2\n     Values for key \"sf3\" don't match:\n       Expected:     -Inf\n       Your encoder: +Inf\n\n     input sent to parser-cmd (PID 754543):\n        1 │\u001b[0m # infinity\n        2 │\u001b[0m sf1 = inf  # positive infinity\n        3 │\u001b[0m sf2 = +inf # positive infinity\n        4 │\u001b[0m sf3 = -inf # negative infinity\n        5 │\u001b[0m\n        6 │\u001b[0m # not a number\n        7 │\u001b[0m sf4 = nan  # actual sNaN/qNaN encoding is implementation-specific\n        8 │\u001b[0m sf5 = +nan # same as `nan`\n        9 │\u001b[0m sf6 = -nan # valid, actual encoding is implementation-specific\n\n     output from parser-cmd (PID 754543) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"sf1\": {\"type\": \"float\", \"value\": \"inf\"},\n        3 │\u001b[0m   \"sf2\": {\"type\": \"float\", \"value\": \"inf\"},\n        4 │\u001b[0m   \"sf3\": {\"type\": \"float\", \"value\": \"inf\"},\n        5 │\u001b[0m   \"sf4\": {\"type\": \"float\", \"value\": \"nan\"},\n        6 │\u001b[0m   \"sf5\": {\"type\": \"float\", \"value\": \"nan\"},\n        7 │\u001b[0m   \"sf6\": {\"type\": \"float\", \"value\": \"nan\"}\n        8 │\u001b[0m }\n\n     want:\n        1 │\u001b[0m {\n        2 │\u001b[0m     \"sf1\": {\"type\": \"float\", \"value\": \"inf\"},\n        3 │\u001b[0m     \"sf2\": {\"type\": \"float\", \"value\": \"inf\"},\n        4 │\u001b[0m     \"sf3\": {\"type\": \"float\", \"value\": \"-inf\"},\n        5 │\u001b[0m     \"sf4\": {\"type\": \"float\", \"value\": \"nan\"},\n        6 │\u001b[0m     \"sf5\": {\"type\": \"float\", \"value\": \"nan\"},\n        7 │\u001b[0m     \"sf6\": {\"type\": \"float\", \"value\": \"nan\"}\n        8 │\u001b[0m }\n\nFAIL valid/spec-1.0.0/keys-1\n     line 1: invalid string: invalid syntax\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754566):\n        1 │\u001b[0m \"127.0.0.1\" = \"value\"\n        2 │\u001b[0m \"character encoding\" = \"value\"\n        3 │\u001b[0m \"ʎǝʞ\" = \"value\"\n        4 │\u001b[0m 'key2' = \"value\"\n        5 │\u001b[0m 'quoted \"value\"' = \"value\"\n\n     output from parser-cmd (PID 754566) (stderr):\n        1 │\u001b[0m line 1: invalid string: invalid syntax\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/spec-1.0.0/keys-3\n     line 4: invalid string: invalid syntax\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754568):\n        1 │\u001b[0m name = \"Orange\"\n        2 │\u001b[0m physical.color = \"orange\"\n        3 │\u001b[0m physical.shape = \"round\"\n        4 │\u001b[0m site.\"google.com\" = true\n\n     output from parser-cmd (PID 754568) (stderr):\n        1 │\u001b[0m line 4: invalid string: invalid syntax\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/spec-1.0.0/string-3\n     Values for key \"str2\" don't match:\n       Expected:     The quick brown fox jumps over the lazy dog.\n       Your encoder: The quick brown\n \n       fox jumps over     the lazy dog.\n\n     input sent to parser-cmd (PID 754585):\n        1 │\u001b[0m # The following strings are byte-for-byte equivalent:\n        2 │\u001b[0m str1 = \"The quick brown fox jumps over the lazy dog.\"\n        3 │\u001b[0m\n        4 │\u001b[0m str2 = \"\"\"\n        5 │\u001b[0m The quick brown \\\n        6 │\u001b[0m\n        7 │\u001b[0m\n        8 │\u001b[0m   fox jumps over \\\n        9 │\u001b[0m     the lazy dog.\"\"\"\n       10 │\u001b[0m\n       11 │\u001b[0m str3 = \"\"\"\\\n       12 │\u001b[0m        The quick brown \\\n       13 │\u001b[0m        fox jumps over \\\n       14 │\u001b[0m        the lazy dog.\\\n       15 │\u001b[0m        \"\"\"\n\n     output from parser-cmd (PID 754585) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"str1\": {\"type\": \"string\", \"value\": \"The quick brown fox jumps over the lazy dog.\"},\n        3 │\u001b[0m   \"str2\": {\"type\": \"string\", \"value\": \"The quick brown \\n\\n  fox jumps over     the lazy dog.\"},\n        4 │\u001b[0m   \"str3\": {\n        5 │\u001b[0m     \"type\":  \"string\",\n        6 │\u001b[0m     \"value\": \"       The quick brown        fox jumps over        the lazy dog.       \"\n        7 │\u001b[0m   }\n        8 │\u001b[0m }\n\n     want:\n        1 │\u001b[0m {\n        2 │\u001b[0m     \"str1\": {\"type\": \"string\", \"value\": \"The quick brown fox jumps over the lazy dog.\"},\n        3 │\u001b[0m     \"str2\": {\"type\": \"string\", \"value\": \"The quick brown fox jumps over the lazy dog.\"},\n        4 │\u001b[0m     \"str3\": {\"type\": \"string\", \"value\": \"The quick brown fox jumps over the lazy dog.\"}\n        5 │\u001b[0m }\n\nFAIL valid/spec-1.0.0/string-4\n     Values for key \"str5\" don't match:\n       Expected:     Here are three quotation marks: \"\"\".\n       Your encoder: Here are three quotation marks: \"\"\\\".\n\n     input sent to parser-cmd (PID 754586):\n        1 │\u001b[0m str4 = \"\"\"Here are two quotation marks: \"\". Simple enough.\"\"\"\n        2 │\u001b[0m # str5 = \"\"\"Here are three quotation marks: \"\"\".\"\"\"  # INVALID\n        3 │\u001b[0m str5 = \"\"\"Here are three quotation marks: \"\"\\\".\"\"\"\n        4 │\u001b[0m str6 = \"\"\"Here are fifteen quotation marks: \"\"\\\"\"\"\\\"\"\"\\\"\"\"\\\"\"\"\\\".\"\"\"\n        5 │\u001b[0m\n        6 │\u001b[0m # \"This,\" she said, \"is just a pointless statement.\"\n        7 │\u001b[0m str7 = \"\"\"\"This,\" she said, \"is just a pointless statement.\"\"\"\"\n\n     output from parser-cmd (PID 754586) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"str4\": {\"type\": \"string\", \"value\": \"Here are two quotation marks: \\\"\\\". Simple enough.\"},\n        3 │\u001b[0m   \"str5\": {\"type\": \"string\", \"value\": \"Here are three quotation marks: \\\"\\\"\\\\\\\".\"},\n        4 │\u001b[0m   \"str7\": {\"type\": \"string\", \"value\": \"\\\"This,\\\" she said, \\\"is just a pointless statement.\\\"\"},\n        5 │\u001b[0m   \"str6\": {\n        6 │\u001b[0m     \"type\":  \"string\",\n        7 │\u001b[0m     \"value\": \"Here are fifteen quotation marks: \\\"\\\"\\\\\\\"\\\"\\\"\\\\\\\"\\\"\\\"\\\\\\\"\\\"\\\"\\\\\\\"\\\"\\\"\\\\\\\".\"\n        8 │\u001b[0m   }\n        9 │\u001b[0m }\n\n     want:\n        1 │\u001b[0m {\n        2 │\u001b[0m     \"str4\": {\"type\": \"string\", \"value\": \"Here are two quotation marks: \\\"\\\". Simple enough.\"},\n        3 │\u001b[0m     \"str5\": {\"type\": \"string\", \"value\": \"Here are three quotation marks: \\\"\\\"\\\".\"},\n        4 │\u001b[0m     \"str6\": {\"type\": \"string\", \"value\": \"Here are fifteen quotation marks: \\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\".\"},\n        5 │\u001b[0m     \"str7\": {\"type\": \"string\", \"value\": \"\\\"This,\\\" she said, \\\"is just a pointless statement.\\\"\"}\n        6 │\u001b[0m }\n\nFAIL valid/spec-1.0.0/string-6\n     unterminated value\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754588):\n        1 │\u001b[0m regex2 = '''I [dw]on't need \\d{2} apples'''\n        2 │\u001b[0m lines  = '''\n        3 │\u001b[0m The first newline is\n        4 │\u001b[0m trimmed in raw strings.\n        5 │\u001b[0m    All other whitespace\n        6 │\u001b[0m    is preserved.\n        7 │\u001b[0m '''\n\n     output from parser-cmd (PID 754588) (stderr):\n        1 │\u001b[0m unterminated value\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/spec-1.0.0/table-2\n     line 1: invalid string: invalid syntax\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754692):\n        1 │\u001b[0m [dog.\"tater.man\"]\n        2 │\u001b[0m type.name = \"pug\"\n\n     output from parser-cmd (PID 754692) (stderr):\n        1 │\u001b[0m line 1: invalid string: invalid syntax\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/spec-1.0.0/table-3\n     line 4: invalid string: invalid syntax\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754699):\n        1 │\u001b[0m [a.b.c]            # this is best practice\n        2 │\u001b[0m [ d.e.f ]          # same as [d.e.f]\n        3 │\u001b[0m [ g .  h  . i ]    # same as [g.h.i]\n        4 │\u001b[0m [ j . \"ʞ\" . 'l' ]  # same as [j.\"ʞ\".'l']\n\n     output from parser-cmd (PID 754699) (stderr):\n        1 │\u001b[0m line 4: invalid string: invalid syntax\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/string/ends-in-whitespace-escape\n     Values for key \"beee\" don't match:\n       Expected:     heeee\n     geeee\n       Your encoder: heeee\n     geeee\\\n\n     input sent to parser-cmd (PID 754774):\n        1 │\u001b[0m beee = \"\"\"\n        2 │\u001b[0m heeee\n        3 │\u001b[0m geeee\\\n        4 │\u001b[0m\n        5 │\u001b[0m\n        6 │\u001b[0m       \"\"\"\n\n     output from parser-cmd (PID 754774) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"beee\": {\"type\": \"string\", \"value\": \"heeee\\ngeeee\\\\  \\n\\n\\n      \"}\n        3 │\u001b[0m }\n\n     want:\n        1 │\u001b[0m {\n        2 │\u001b[0m     \"beee\": {\"type\": \"string\", \"value\": \"heeee\\ngeeee\"}\n        3 │\u001b[0m }\n\nFAIL valid/string/escape-tricky\n     Values for key \"lit_multiline_not_unicode\" don't match:\n       Expected:     \\u007f\n       Your encoder:\n     \\u007f\n\n     input sent to parser-cmd (PID 754777):\n        1 │\u001b[0m end_esc = \"String does not end here\\\" but ends here\\\\\"\n        2 │\u001b[0m lit_end_esc = 'String ends here\\'\n        3 │\u001b[0m\n        4 │\u001b[0m multiline_unicode = \"\"\"\n        5 │\u001b[0m \\u00a0\"\"\"\n        6 │\u001b[0m\n        7 │\u001b[0m multiline_not_unicode = \"\"\"\n        8 │\u001b[0m \\\\u0041\"\"\"\n        9 │\u001b[0m\n       10 │\u001b[0m multiline_end_esc = \"\"\"When will it end? \\\"\"\"...\"\"\\\" should be here\\\"\"\"\"\n       11 │\u001b[0m\n       12 │\u001b[0m lit_multiline_not_unicode = '''\n       13 │\u001b[0m \\u007f'''\n       14 │\u001b[0m\n       15 │\u001b[0m lit_multiline_end = '''There is no escape\\'''\n\n     output from parser-cmd (PID 754777) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"end_esc\":                   {\"type\": \"string\", \"value\": \"String does not end here\\\" but ends here\\\\\"},\n        3 │\u001b[0m   \"lit_end_esc\":               {\"type\": \"string\", \"value\": \"String ends here\\\\\"},\n        4 │\u001b[0m   \"lit_multiline_end\":         {\"type\": \"string\", \"value\": \"There is no escape\\\\\"},\n        5 │\u001b[0m   \"lit_multiline_not_unicode\": {\"type\": \"string\", \"value\": \"\\n\\\\u007f\"},\n        6 │\u001b[0m   \"multiline_end_esc\":         {\"type\": \"string\", \"value\": \"When will it end? \\\\\\\"\\\"\\\"...\\\"\\\"\\\\\\\" should be here\\\\\\\"\"},\n        7 │\u001b[0m   \"multiline_not_unicode\":     {\"type\": \"string\", \"value\": \"\\\\\\\\u0041\"},\n        8 │\u001b[0m   \"multiline_unicode\":         {\"type\": \"string\", \"value\": \"\\\\u00a0\"}\n        9 │\u001b[0m }\n\n     want:\n        1 │\u001b[0m {\n        2 │\u001b[0m     \"end_esc\":                   {\"type\": \"string\", \"value\": \"String does not end here\\\" but ends here\\\\\"},\n        3 │\u001b[0m     \"lit_end_esc\":               {\"type\": \"string\", \"value\": \"String ends here\\\\\"},\n        4 │\u001b[0m     \"lit_multiline_end\":         {\"type\": \"string\", \"value\": \"There is no escape\\\\\"},\n        5 │\u001b[0m     \"lit_multiline_not_unicode\": {\"type\": \"string\", \"value\": \"\\\\u007f\"},\n        6 │\u001b[0m     \"multiline_end_esc\":         {\"type\": \"string\", \"value\": \"When will it end? \\\"\\\"\\\"...\\\"\\\"\\\" should be here\\\"\"},\n        7 │\u001b[0m     \"multiline_not_unicode\":     {\"type\": \"string\", \"value\": \"\\\\u0041\"},\n        8 │\u001b[0m     \"multiline_unicode\":         {\"type\": \"string\", \"value\": \" \"}\n        9 │\u001b[0m }\n\nFAIL valid/string/multibyte-escape\n     Values for key \"ml-basic-1\" don't match:\n       Expected:     ɑ € 𐫱 ɑ€𐫱\n       Your encoder: \\u0251 \\u20ac \\U00010AF1 \\u0251\\u20ac\\U00010AF1\n\n     input sent to parser-cmd (PID 754804):\n        1 │\u001b[0m # Test each multibyte length: 2, 3, and 4 bytes:\n        2 │\u001b[0m # ɑ € 𐫱\n        3 │\u001b[0m\n        4 │\u001b[0m basic-1    = \"\\u0251 \\u20ac \\U00010AF1 \\u0251\\u20ac\\U00010AF1\"\n        5 │\u001b[0m ml-basic-1 = \"\"\"\\u0251 \\u20ac \\U00010AF1 \\u0251\\u20ac\\U00010AF1\"\"\"\n        6 │\u001b[0m\n        7 │\u001b[0m # Again, but only using \\U\n        8 │\u001b[0m basic-2    = \"\\U00000251 \\U000020ac \\U00010AF1 \\U00000251\\U000020ac\\U00010AF1\"\n        9 │\u001b[0m ml-basic-2 = \"\"\"\\U00000251 \\U000020ac \\U00010AF1 \\U00000251\\U000020ac\\U00010AF1\"\"\"\n\n     output from parser-cmd (PID 754804) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"basic-1\":    {\"type\": \"string\", \"value\": \"ɑ € 𐫱 ɑ€𐫱\"},\n        3 │\u001b[0m   \"basic-2\":    {\"type\": \"string\", \"value\": \"ɑ € 𐫱 ɑ€𐫱\"},\n        4 │\u001b[0m   \"ml-basic-1\": {\"type\": \"string\", \"value\": \"\\\\u0251 \\\\u20ac \\\\U00010AF1 \\\\u0251\\\\u20ac\\\\U00010AF1\"},\n        5 │\u001b[0m   \"ml-basic-2\": {\n        6 │\u001b[0m     \"type\":  \"string\",\n        7 │\u001b[0m     \"value\": \"\\\\U00000251 \\\\U000020ac \\\\U00010AF1 \\\\U00000251\\\\U000020ac\\\\U00010AF1\"\n        8 │\u001b[0m   }\n        9 │\u001b[0m }\n\n     want:\n        1 │\u001b[0m {\n        2 │\u001b[0m     \"basic-1\":    {\"type\": \"string\", \"value\": \"ɑ € 𐫱 ɑ€𐫱\"},\n        3 │\u001b[0m     \"ml-basic-1\": {\"type\": \"string\", \"value\": \"ɑ € 𐫱 ɑ€𐫱\"},\n        4 │\u001b[0m     \"basic-2\":    {\"type\": \"string\", \"value\": \"ɑ € 𐫱 ɑ€𐫱\"},\n        5 │\u001b[0m     \"ml-basic-2\": {\"type\": \"string\", \"value\": \"ɑ € 𐫱 ɑ€𐫱\"}\n        6 │\u001b[0m }\n\nFAIL valid/string/multiline\n     Values for key \"equivalent_three\" don't match:\n       Expected:     The quick brown fox jumps over the lazy dog.\n       Your encoder:        The quick brown        fox jumps over        the lazy dog.\n\n     input sent to parser-cmd (PID 754912):\n        1 │\u001b[0m # NOTE: this file includes some literal tab characters.\n        2 │\u001b[0m\n        3 │\u001b[0m equivalent_one = \"The quick brown fox jumps over the lazy dog.\"\n        4 │\u001b[0m equivalent_two = \"\"\"\n        5 │\u001b[0m The quick brown \\\n        6 │\u001b[0m\n        7 │\u001b[0m\n        8 │\u001b[0m   fox jumps over \\\n        9 │\u001b[0m     the lazy dog.\"\"\"\n       10 │\u001b[0m\n       11 │\u001b[0m equivalent_three = \"\"\"\\\n       12 │\u001b[0m        The quick brown \\\n       13 │\u001b[0m        fox jumps over \\\n       14 │\u001b[0m        the lazy dog.\\\n       15 │\u001b[0m        \"\"\"\n       16 │\u001b[0m\n       17 │\u001b[0m whitespace-after-bs = \"\"\"\\\n       18 │\u001b[0m        The quick brown \\\n       19 │\u001b[0m        fox jumps over \\\n       20 │\u001b[0m        the lazy dog.\\\n       21 │\u001b[0m        \"\"\"\n       22 │\u001b[0m\n       23 │\u001b[0m no-space = \"\"\"a\\\n       24 │\u001b[0m     b\"\"\"\n       25 │\u001b[0m\n       26 │\u001b[0m # Has tab character.\n       27 │\u001b[0m keep-ws-before = \"\"\"a   \t\\\n       28 │\u001b[0m    b\"\"\"\n       29 │\u001b[0m\n       30 │\u001b[0m escape-bs-1 = \"\"\"a \\\\\n       31 │\u001b[0m b\"\"\"\n       32 │\u001b[0m\n       33 │\u001b[0m escape-bs-2 = \"\"\"a \\\\\\\n       34 │\u001b[0m b\"\"\"\n       35 │\u001b[0m\n       36 │\u001b[0m escape-bs-3 = \"\"\"a \\\\\\\\\n       37 │\u001b[0m   b\"\"\"\n\n     output from parser-cmd (PID 754912) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"equivalent_one\": {\"type\": \"string\", \"value\": \"The quick brown fox jumps over the lazy dog.\"},\n        3 │\u001b[0m   \"equivalent_two\": {\"type\": \"string\", \"value\": \"The quick brown \\n\\n  fox jumps over     the lazy dog.\"},\n        4 │\u001b[0m   \"escape-bs-1\":    {\"type\": \"string\", \"value\": \"a \\\\b\"},\n        5 │\u001b[0m   \"escape-bs-2\":    {\"type\": \"string\", \"value\": \"a \\\\\\\\b\"},\n        6 │\u001b[0m   \"escape-bs-3\":    {\"type\": \"string\", \"value\": \"a \\\\\\\\\\\\  b\"},\n        7 │\u001b[0m   \"keep-ws-before\": {\"type\": \"string\", \"value\": \"a   \\t   b\"},\n        8 │\u001b[0m   \"no-space\":       {\"type\": \"string\", \"value\": \"a    b\"},\n        9 │\u001b[0m   \"equivalent_three\": {\n       10 │\u001b[0m     \"type\":  \"string\",\n       11 │\u001b[0m     \"value\": \"       The quick brown        fox jumps over        the lazy dog.       \"\n       12 │\u001b[0m   },\n       13 │\u001b[0m   \"whitespace-after-bs\": {\n       14 │\u001b[0m     \"type\":  \"string\",\n       15 │\u001b[0m     \"value\": \"       The quick brown        fox jumps over \\\\   \\n       the lazy dog.\\\\\\t\\n       \"\n       16 │\u001b[0m   }\n       17 │\u001b[0m }\n\n     want:\n        1 │\u001b[0m {\n        2 │\u001b[0m     \"equivalent_one\":      {\"type\": \"string\", \"value\": \"The quick brown fox jumps over the lazy dog.\"},\n        3 │\u001b[0m     \"equivalent_three\":    {\"type\": \"string\", \"value\": \"The quick brown fox jumps over the lazy dog.\"},\n        4 │\u001b[0m     \"equivalent_two\":      {\"type\": \"string\", \"value\": \"The quick brown fox jumps over the lazy dog.\"},\n        5 │\u001b[0m     \"escape-bs-1\":         {\"type\": \"string\", \"value\": \"a \\\\\\nb\"},\n        6 │\u001b[0m     \"escape-bs-2\":         {\"type\": \"string\", \"value\": \"a \\\\b\"},\n        7 │\u001b[0m     \"escape-bs-3\":         {\"type\": \"string\", \"value\": \"a \\\\\\\\\\n  b\"},\n        8 │\u001b[0m     \"keep-ws-before\":      {\"type\": \"string\", \"value\": \"a   \\tb\"},\n        9 │\u001b[0m     \"no-space\":            {\"type\": \"string\", \"value\": \"ab\"},\n       10 │\u001b[0m     \"whitespace-after-bs\": {\"type\": \"string\", \"value\": \"The quick brown fox jumps over the lazy dog.\"}\n       11 │\u001b[0m }\n\nFAIL valid/string/multiline-empty\n     Values for key \"empty-3\" don't match:\n       Expected:\n       Your encoder:\n\n     input sent to parser-cmd (PID 754985):\n        1 │\u001b[0m empty-1 = \"\"\"\"\"\"\n        2 │\u001b[0m\n        3 │\u001b[0m # A newline immediately following the opening delimiter will be trimmed.\n        4 │\u001b[0m empty-2 = \"\"\"\n        5 │\u001b[0m \"\"\"\n        6 │\u001b[0m\n        7 │\u001b[0m # \\ at the end of line trims newlines as well; note that last \\ is followed by\n        8 │\u001b[0m # two spaces, which are ignored.\n        9 │\u001b[0m empty-3 = \"\"\"\\\n       10 │\u001b[0m     \"\"\"\n       11 │\u001b[0m empty-4 = \"\"\"\\\n       12 │\u001b[0m    \\\n       13 │\u001b[0m    \\\n       14 │\u001b[0m    \"\"\"\n\n     output from parser-cmd (PID 754985) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"empty-1\": {\"type\": \"string\", \"value\": \"\"},\n        3 │\u001b[0m   \"empty-2\": {\"type\": \"string\", \"value\": \"\"},\n        4 │\u001b[0m   \"empty-3\": {\"type\": \"string\", \"value\": \"    \"},\n        5 │\u001b[0m   \"empty-4\": {\"type\": \"string\", \"value\": \"      \\\\  \\n   \"}\n        6 │\u001b[0m }\n\n     want:\n        1 │\u001b[0m {\n        2 │\u001b[0m     \"empty-1\": {\"type\": \"string\", \"value\": \"\"},\n        3 │\u001b[0m     \"empty-2\": {\"type\": \"string\", \"value\": \"\"},\n        4 │\u001b[0m     \"empty-3\": {\"type\": \"string\", \"value\": \"\"},\n        5 │\u001b[0m     \"empty-4\": {\"type\": \"string\", \"value\": \"\"}\n        6 │\u001b[0m }\n\nFAIL valid/string/multiline-escaped-crlf\n     Values for key \"0\" don't match:\n       Expected:\n       Your encoder: \\\r\n\n     input sent to parser-cmd (PID 754990):\n        1 │\u001b[0m # The following line should be an unescaped backslash followed by a Windows\r\n        2 │\u001b[0m # newline sequence (\"\\r\\n\")\r\n        3 │\u001b[0m 0=\"\"\"\\\r\n        4 │\u001b[0m \"\"\"\r\n\n     output from parser-cmd (PID 754990) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"0\": {\"type\": \"string\", \"value\": \"\\\\\\r\\n\"}\n        3 │\u001b[0m }\n\n     want:\n        1 │\u001b[0m {\n        2 │\u001b[0m     \"0\": {\"type\": \"string\", \"value\": \"\"}\n        3 │\u001b[0m }\n\nFAIL valid/string/multiline-quotes\n     unterminated value\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754873):\n        1 │\u001b[0m # Make sure that quotes inside multiline strings are allowed, including right\n        2 │\u001b[0m # after the opening '''/\"\"\" and before the closing '''/\"\"\"\n        3 │\u001b[0m\n        4 │\u001b[0m lit_one = ''''one quote''''\n        5 │\u001b[0m lit_two = '''''two quotes'''''\n        6 │\u001b[0m lit_one_space = ''' 'one quote' '''\n        7 │\u001b[0m lit_two_space = ''' ''two quotes'' '''\n        8 │\u001b[0m\n        9 │\u001b[0m one = \"\"\"\"one quote\"\"\"\"\n       10 │\u001b[0m two = \"\"\"\"\"two quotes\"\"\"\"\"\n       11 │\u001b[0m one_space = \"\"\" \"one quote\" \"\"\"\n       12 │\u001b[0m two_space = \"\"\" \"\"two quotes\"\" \"\"\"\n       13 │\u001b[0m\n       14 │\u001b[0m mismatch1 = \"\"\"aaa'''bbb\"\"\"\n       15 │\u001b[0m mismatch2 = '''aaa\"\"\"bbb'''\n       16 │\u001b[0m\n       17 │\u001b[0m # Three opening \"\"\", then one escaped \", then two \"\" (allowed), and then three\n       18 │\u001b[0m # closing \"\"\"\n       19 │\u001b[0m escaped = \"\"\"lol\\\"\"\"\"\"\"\n       20 │\u001b[0m\n       21 │\u001b[0m five-quotes = \"\"\"\n       22 │\u001b[0m Closing with five quotes\n       23 │\u001b[0m \"\"\"\"\"\n       24 │\u001b[0m four-quotes = \"\"\"\n       25 │\u001b[0m Closing with four quotes\n       26 │\u001b[0m \"\"\"\"\n\n     output from parser-cmd (PID 754873) (stderr):\n        1 │\u001b[0m unterminated value\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/string/nl\n     Values for key \"nl_end\" don't match:\n       Expected:     value\n \n       Your encoder: value\\n\n\n     input sent to parser-cmd (PID 754866):\n        1 │\u001b[0m nl_mid = \"val\\nue\"\n        2 │\u001b[0m nl_end = \"\"\"value\\n\"\"\"\n        3 │\u001b[0m\n        4 │\u001b[0m lit_nl_end = '''value\\n'''\n        5 │\u001b[0m lit_nl_mid = 'val\\nue'\n        6 │\u001b[0m lit_nl_uni = 'val\\ue'\n\n     output from parser-cmd (PID 754866) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"lit_nl_end\": {\"type\": \"string\", \"value\": \"value\\\\n\"},\n        3 │\u001b[0m   \"lit_nl_mid\": {\"type\": \"string\", \"value\": \"val\\\\nue\"},\n        4 │\u001b[0m   \"lit_nl_uni\": {\"type\": \"string\", \"value\": \"val\\\\ue\"},\n        5 │\u001b[0m   \"nl_end\":     {\"type\": \"string\", \"value\": \"value\\\\n\"},\n        6 │\u001b[0m   \"nl_mid\":     {\"type\": \"string\", \"value\": \"val\\nue\"}\n        7 │\u001b[0m }\n\n     want:\n        1 │\u001b[0m {\n        2 │\u001b[0m     \"lit_nl_end\": {\"type\": \"string\", \"value\": \"value\\\\n\"},\n        3 │\u001b[0m     \"lit_nl_mid\": {\"type\": \"string\", \"value\": \"val\\\\nue\"},\n        4 │\u001b[0m     \"lit_nl_uni\": {\"type\": \"string\", \"value\": \"val\\\\ue\"},\n        5 │\u001b[0m     \"nl_end\":     {\"type\": \"string\", \"value\": \"value\\n\"},\n        6 │\u001b[0m     \"nl_mid\":     {\"type\": \"string\", \"value\": \"val\\nue\"}\n        7 │\u001b[0m }\n\nFAIL valid/string/raw-multiline\n     unterminated value\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754810):\n        1 │\u001b[0m # Single ' should be allowed.\n        2 │\u001b[0m oneline = '''This string has a ' quote character.'''\n        3 │\u001b[0m\n        4 │\u001b[0m # A newline immediately following the opening delimiter will be trimmed.\n        5 │\u001b[0m firstnl = '''\n        6 │\u001b[0m This string has a ' quote character.'''\n        7 │\u001b[0m\n        8 │\u001b[0m # All other whitespace and newline characters remain intact.\n        9 │\u001b[0m multiline = '''\n       10 │\u001b[0m This string\n       11 │\u001b[0m has ' a quote character\n       12 │\u001b[0m and more than\n       13 │\u001b[0m one newline\n       14 │\u001b[0m in it.'''\n       15 │\u001b[0m\n       16 │\u001b[0m # Tab character in literal string does not need to be escaped\n       17 │\u001b[0m multiline_with_tab = '''First line\n       18 │\u001b[0m \t Followed by a tab'''\n       19 │\u001b[0m\n       20 │\u001b[0m this-str-has-apostrophes='''' there's one already\n       21 │\u001b[0m '' two more\n       22 │\u001b[0m '''''\n\n     output from parser-cmd (PID 754810) (stderr):\n        1 │\u001b[0m unterminated value\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/string/start-mb\n     Values for key \"s6\" don't match:\n       Expected:     §\n       Your encoder:\n     §\n\n     input sent to parser-cmd (PID 754941):\n        1 │\u001b[0m # Start first line with a multibyte character.\n        2 │\u001b[0m #\n        3 │\u001b[0m # https://github.com/marzer/tomlplusplus/issues/190\n        4 │\u001b[0m s1 = \"§\"\n        5 │\u001b[0m s2 = '§'\n        6 │\u001b[0m s3 = \"\"\"\\\n        7 │\u001b[0m §\"\"\"\n        8 │\u001b[0m s4 = \"\"\"\n        9 │\u001b[0m §\"\"\"\n       10 │\u001b[0m s5 = \"\"\"§\"\"\"\n       11 │\u001b[0m s6 = '''\n       12 │\u001b[0m §'''\n       13 │\u001b[0m s7 = '''§'''\n\n     output from parser-cmd (PID 754941) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"s1\": {\"type\": \"string\", \"value\": \"§\"},\n        3 │\u001b[0m   \"s2\": {\"type\": \"string\", \"value\": \"§\"},\n        4 │\u001b[0m   \"s3\": {\"type\": \"string\", \"value\": \"§\"},\n        5 │\u001b[0m   \"s4\": {\"type\": \"string\", \"value\": \"§\"},\n        6 │\u001b[0m   \"s5\": {\"type\": \"string\", \"value\": \"§\"},\n        7 │\u001b[0m   \"s6\": {\"type\": \"string\", \"value\": \"\\n§\"},\n        8 │\u001b[0m   \"s7\": {\"type\": \"string\", \"value\": \"§\"}\n        9 │\u001b[0m }\n\n     want:\n        1 │\u001b[0m {\n        2 │\u001b[0m     \"s1\": {\"type\": \"string\", \"value\": \"§\"},\n        3 │\u001b[0m     \"s2\": {\"type\": \"string\", \"value\": \"§\"},\n        4 │\u001b[0m     \"s3\": {\"type\": \"string\", \"value\": \"§\"},\n        5 │\u001b[0m     \"s4\": {\"type\": \"string\", \"value\": \"§\"},\n        6 │\u001b[0m     \"s5\": {\"type\": \"string\", \"value\": \"§\"},\n        7 │\u001b[0m     \"s6\": {\"type\": \"string\", \"value\": \"§\"},\n        8 │\u001b[0m     \"s7\": {\"type\": \"string\", \"value\": \"§\"}\n        9 │\u001b[0m }\n\nFAIL valid/string/unicode-escape\n     Values for key \"ml-a\" don't match:\n       Expected:     a\n       Your encoder: \\u0061\n\n     input sent to parser-cmd (PID 754986):\n        1 │\u001b[0m delta-1 = \"\\u03B4\"\n        2 │\u001b[0m delta-2 = \"\\U000003B4\"\n        3 │\u001b[0m a       = \"\\u0061\"\n        4 │\u001b[0m b       = \"\\u0062\"\n        5 │\u001b[0m c       = \"\\U00000063\"\n        6 │\u001b[0m null-1  = \"\\u0000\"\n        7 │\u001b[0m null-2  = \"\\U00000000\"\n        8 │\u001b[0m\n        9 │\u001b[0m ml-delta-1 = \"\"\"\\u03B4\"\"\"\n       10 │\u001b[0m ml-delta-2 = \"\"\"\\U000003B4\"\"\"\n       11 │\u001b[0m ml-a       = \"\"\"\\u0061\"\"\"\n       12 │\u001b[0m ml-b       = \"\"\"\\u0062\"\"\"\n       13 │\u001b[0m ml-c       = \"\"\"\\U00000063\"\"\"\n       14 │\u001b[0m ml-null-1  = \"\"\"\\u0000\"\"\"\n       15 │\u001b[0m ml-null-2  = \"\"\"\\U00000000\"\"\"\n\n     output from parser-cmd (PID 754986) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"a\":          {\"type\": \"string\", \"value\": \"a\"},\n        3 │\u001b[0m   \"b\":          {\"type\": \"string\", \"value\": \"b\"},\n        4 │\u001b[0m   \"c\":          {\"type\": \"string\", \"value\": \"c\"},\n        5 │\u001b[0m   \"delta-1\":    {\"type\": \"string\", \"value\": \"δ\"},\n        6 │\u001b[0m   \"delta-2\":    {\"type\": \"string\", \"value\": \"δ\"},\n        7 │\u001b[0m   \"ml-a\":       {\"type\": \"string\", \"value\": \"\\\\u0061\"},\n        8 │\u001b[0m   \"ml-b\":       {\"type\": \"string\", \"value\": \"\\\\u0062\"},\n        9 │\u001b[0m   \"ml-c\":       {\"type\": \"string\", \"value\": \"\\\\U00000063\"},\n       10 │\u001b[0m   \"ml-delta-1\": {\"type\": \"string\", \"value\": \"\\\\u03B4\"},\n       11 │\u001b[0m   \"ml-delta-2\": {\"type\": \"string\", \"value\": \"\\\\U000003B4\"},\n       12 │\u001b[0m   \"ml-null-1\":  {\"type\": \"string\", \"value\": \"\\\\u0000\"},\n       13 │\u001b[0m   \"ml-null-2\":  {\"type\": \"string\", \"value\": \"\\\\U00000000\"},\n       14 │\u001b[0m   \"null-1\":     {\"type\": \"string\", \"value\": \"\\u0000\"},\n       15 │\u001b[0m   \"null-2\":     {\"type\": \"string\", \"value\": \"\\u0000\"}\n       16 │\u001b[0m }\n\n     want:\n        1 │\u001b[0m {\n        2 │\u001b[0m     \"a\":          {\"type\": \"string\", \"value\": \"a\"},\n        3 │\u001b[0m     \"b\":          {\"type\": \"string\", \"value\": \"b\"},\n        4 │\u001b[0m     \"c\":          {\"type\": \"string\", \"value\": \"c\"},\n        5 │\u001b[0m     \"delta-1\":    {\"type\": \"string\", \"value\": \"δ\"},\n        6 │\u001b[0m     \"delta-2\":    {\"type\": \"string\", \"value\": \"δ\"},\n        7 │\u001b[0m     \"ml-a\":       {\"type\": \"string\", \"value\": \"a\"},\n        8 │\u001b[0m     \"ml-b\":       {\"type\": \"string\", \"value\": \"b\"},\n        9 │\u001b[0m     \"ml-c\":       {\"type\": \"string\", \"value\": \"c\"},\n       10 │\u001b[0m     \"ml-delta-1\": {\"type\": \"string\", \"value\": \"δ\"},\n       11 │\u001b[0m     \"ml-delta-2\": {\"type\": \"string\", \"value\": \"δ\"},\n       12 │\u001b[0m     \"ml-null-1\":  {\"type\": \"string\", \"value\": \"\\u0000\"},\n       13 │\u001b[0m     \"ml-null-2\":  {\"type\": \"string\", \"value\": \"\\u0000\"},\n       14 │\u001b[0m     \"null-1\":     {\"type\": \"string\", \"value\": \"\\u0000\"},\n       15 │\u001b[0m     \"null-2\":     {\"type\": \"string\", \"value\": \"\\u0000\"}\n       16 │\u001b[0m }\n\nFAIL valid/table/array-nest\n     line 4: table conflict\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754812):\n        1 │\u001b[0m [[albums]]\n        2 │\u001b[0m name = \"Born to Run\"\n        3 │\u001b[0m\n        4 │\u001b[0m   [[albums.songs]]\n        5 │\u001b[0m   name = \"Jungleland\"\n        6 │\u001b[0m\n        7 │\u001b[0m   [[albums.songs]]\n        8 │\u001b[0m   name = \"Meeting Across the River\"\n        9 │\u001b[0m\n       10 │\u001b[0m [[albums]]\n       11 │\u001b[0m name = \"Born in the USA\"\n       12 │\u001b[0m\n       13 │\u001b[0m   [[albums.songs]]\n       14 │\u001b[0m   name = \"Glory Days\"\n       15 │\u001b[0m\n       16 │\u001b[0m   [[albums.songs]]\n       17 │\u001b[0m   name = \"Dancing in the Dark\"\n\n     output from parser-cmd (PID 754812) (stderr):\n        1 │\u001b[0m line 4: table conflict\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/table/array-table-array\n     line 2: table conflict\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754834):\n        1 │\u001b[0m [[a]]\n        2 │\u001b[0m     [[a.b]]\n        3 │\u001b[0m         [a.b.c]\n        4 │\u001b[0m             d = \"val0\"\n        5 │\u001b[0m     [[a.b]]\n        6 │\u001b[0m         [a.b.c]\n        7 │\u001b[0m             d = \"val1\"\n\n     output from parser-cmd (PID 754834) (stderr):\n        1 │\u001b[0m line 2: table conflict\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/table/empty-name\n     line 4: invalid string: invalid syntax\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754838):\n        1 │\u001b[0m ['']\n        2 │\u001b[0m x = 1\n        3 │\u001b[0m\n        4 │\u001b[0m [\"\".a]\n        5 │\u001b[0m x = 2\n        6 │\u001b[0m\n        7 │\u001b[0m [a.'']\n        8 │\u001b[0m x = 3\n\n     output from parser-cmd (PID 754838) (stderr):\n        1 │\u001b[0m line 4: invalid string: invalid syntax\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/table/names\n     line 2: invalid string: invalid syntax\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754869):\n        1 │\u001b[0m [a.b.c]\n        2 │\u001b[0m [a.\"b.c\"]\n        3 │\u001b[0m [a.'d.e']\n        4 │\u001b[0m [a.' x ']\n        5 │\u001b[0m [ d.e.f ]\n        6 │\u001b[0m [ g . h . i ]\n        7 │\u001b[0m [ j . \"ʞ\" . 'l' ]\n        8 │\u001b[0m\n        9 │\u001b[0m [x.1.2]\n\n     output from parser-cmd (PID 754869) (stderr):\n        1 │\u001b[0m line 2: invalid string: invalid syntax\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/table/names-with-values\n     line 4: invalid string: invalid syntax\n \n     Exit 1\n\n     input sent to parser-cmd (PID 755049):\n        1 │\u001b[0m [a.b.c]\n        2 │\u001b[0m key = 1\n        3 │\u001b[0m\n        4 │\u001b[0m [a.\"b.c\"]\n        5 │\u001b[0m key = 2\n        6 │\u001b[0m\n        7 │\u001b[0m [a.'d.e']\n        8 │\u001b[0m key = 3\n        9 │\u001b[0m\n       10 │\u001b[0m [a.' x ']\n       11 │\u001b[0m key = 4\n       12 │\u001b[0m\n       13 │\u001b[0m [ d.e.f ]\n       14 │\u001b[0m key = 5\n       15 │\u001b[0m\n       16 │\u001b[0m [ g . h . i ]\n       17 │\u001b[0m key = 6\n       18 │\u001b[0m\n       19 │\u001b[0m [ j . \"ʞ\" . 'l' ]\n       20 │\u001b[0m key = 7\n       21 │\u001b[0m\n       22 │\u001b[0m [x.1.2]\n       23 │\u001b[0m key = 8\n\n     output from parser-cmd (PID 755049) (stderr):\n        1 │\u001b[0m line 4: invalid string: invalid syntax\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/table/whitespace\n     line 1: invalid string: invalid syntax\n \n     Exit 1\n\n     input sent to parser-cmd (PID 755076):\n        1 │\u001b[0m [\"valid key\"]\n\n     output from parser-cmd (PID 755076) (stderr):\n        1 │\u001b[0m line 1: invalid string: invalid syntax\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/table/with-pound\n     line 1: invalid string: invalid syntax\n \n     Exit 1\n\n     input sent to parser-cmd (PID 754911):\n        1 │\u001b[0m [\"key#group\"]\n        2 │\u001b[0m answer = 42\n\n     output from parser-cmd (PID 754911) (stderr):\n        1 │\u001b[0m line 1: invalid string: invalid syntax\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL invalid/array/extending-table\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 754949):\n        1 │\u001b[0m a = [{ b = 1 }]\n        2 │\u001b[0m\n        3 │\u001b[0m # Cannot extend tables within static arrays\n        4 │\u001b[0m # https://github.com/toml-lang/toml/issues/908\n        5 │\u001b[0m [a.c]\n        6 │\u001b[0m foo = 1\n\n     output from parser-cmd (PID 754949) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"a\": [{\n        3 │\u001b[0m     \"b\": {\"type\": \"integer\", \"value\": \"1\"},\n        4 │\u001b[0m     \"c\": {\n        5 │\u001b[0m       \"foo\": {\"type\": \"integer\", \"value\": \"1\"}\n        6 │\u001b[0m     }\n        7 │\u001b[0m   }]\n        8 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/array/tables-01\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755081):\n        1 │\u001b[0m # INVALID TOML DOC\n        2 │\u001b[0m fruit = []\n        3 │\u001b[0m\n        4 │\u001b[0m [[fruit]] # Not allowed\n\n     output from parser-cmd (PID 755081) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"fruit\": [{}]\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/control/bare-cr\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755175):\n        1 │\u001b[0m # The following line contains a single carriage return control character\r\n        2 │\u001b[0m \r\n\n     output from parser-cmd (PID 755175) (stdout):\n        1 │\u001b[0m {}\n\n     want:\n       Exit code 1\n\nFAIL invalid/control/comment-cr\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755236):\n        1 │\u001b[0m comment-cr   = \"Carriage return in comment\" # \ra=1\n\n     output from parser-cmd (PID 755236) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"comment-cr\": {\"type\": \"string\", \"value\": \"Carriage return in comment\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/control/comment-del\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755182):\n        1 │\u001b[0m comment-del  = \"0x7f\"   # \n\n     output from parser-cmd (PID 755182) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"comment-del\": {\"type\": \"string\", \"value\": \"0x7f\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/control/comment-ff\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755183):\n        1 │\u001b[0m comment-ff   = \"0x7f\"   # \f\n\n     output from parser-cmd (PID 755183) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"comment-ff\": {\"type\": \"string\", \"value\": \"0x7f\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/control/comment-lf\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755185):\n        1 │\u001b[0m comment-lf   = \"ctrl-P\" # \u0010\n\n     output from parser-cmd (PID 755185) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"comment-lf\": {\"type\": \"string\", \"value\": \"ctrl-P\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/control/comment-null\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755184):\n        1 │\u001b[0m comment-null = \"null\"   # \u0000\n\n     output from parser-cmd (PID 755184) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"comment-null\": {\"type\": \"string\", \"value\": \"null\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/control/comment-us\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755277):\n        1 │\u001b[0m comment-us   = \"ctrl-_\" # \u001f\n\n     output from parser-cmd (PID 755277) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"comment-us\": {\"type\": \"string\", \"value\": \"ctrl-_\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/control/multi-del\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755232):\n        1 │\u001b[0m multi-del  = \"\"\"null\"\"\"\n\n     output from parser-cmd (PID 755232) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"multi-del\": {\"type\": \"string\", \"value\": \"null\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/control/multi-lf\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755234):\n        1 │\u001b[0m multi-lf   = \"\"\"null\u0010\"\"\"\n\n     output from parser-cmd (PID 755234) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"multi-lf\": {\"type\": \"string\", \"value\": \"null\\u0010\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/control/multi-null\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755235):\n        1 │\u001b[0m multi-null = \"\"\"null\u0000\"\"\"\n\n     output from parser-cmd (PID 755235) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"multi-null\": {\"type\": \"string\", \"value\": \"null\\u0000\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/control/multi-us\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755237):\n        1 │\u001b[0m multi-us   = \"\"\"null\u001f\"\"\"\n\n     output from parser-cmd (PID 755237) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"multi-us\": {\"type\": \"string\", \"value\": \"null\\u001f\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/control/only-ff\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755239):\n        1 │\u001b[0m \f\n\n     output from parser-cmd (PID 755239) (stdout):\n        1 │\u001b[0m {}\n\n     want:\n       Exit code 1\n\nFAIL invalid/control/only-vt\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755318):\n        1 │\u001b[0m \u000b\n\n     output from parser-cmd (PID 755318) (stdout):\n        1 │\u001b[0m {}\n\n     want:\n       Exit code 1\n\nFAIL invalid/control/rawmulti-del\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755322):\n        1 │\u001b[0m rawmulti-del  = '''null'''\n\n     output from parser-cmd (PID 755322) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"rawmulti-del\": {\"type\": \"string\", \"value\": \"null\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/control/rawmulti-lf\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755288):\n        1 │\u001b[0m rawmulti-lf   = '''null\u0010'''\n\n     output from parser-cmd (PID 755288) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"rawmulti-lf\": {\"type\": \"string\", \"value\": \"null\\u0010\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/control/rawmulti-null\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755291):\n        1 │\u001b[0m rawmulti-null = '''null\u0000'''\n\n     output from parser-cmd (PID 755291) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"rawmulti-null\": {\"type\": \"string\", \"value\": \"null\\u0000\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/control/rawmulti-us\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755294):\n        1 │\u001b[0m rawmulti-us   = '''null\u001f'''\n\n     output from parser-cmd (PID 755294) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"rawmulti-us\": {\"type\": \"string\", \"value\": \"null\\u001f\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/control/rawstring-del\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755286):\n        1 │\u001b[0m rawstring-del  = 'null'\n\n     output from parser-cmd (PID 755286) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"rawstring-del\": {\"type\": \"string\", \"value\": \"null\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/control/rawstring-lf\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755287):\n        1 │\u001b[0m rawstring-lf   = 'null\u0010'\n\n     output from parser-cmd (PID 755287) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"rawstring-lf\": {\"type\": \"string\", \"value\": \"null\\u0010\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/control/rawstring-null\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755289):\n        1 │\u001b[0m rawstring-null = 'null\u0000'\n\n     output from parser-cmd (PID 755289) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"rawstring-null\": {\"type\": \"string\", \"value\": \"null\\u0000\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/control/rawstring-us\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755462):\n        1 │\u001b[0m rawstring-us   = 'null\u001f'\n\n     output from parser-cmd (PID 755462) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"rawstring-us\": {\"type\": \"string\", \"value\": \"null\\u001f\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/control/string-bs\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755325):\n        1 │\u001b[0m string-bs   = \"backspace\b\"\n\n     output from parser-cmd (PID 755325) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"string-bs\": {\"type\": \"string\", \"value\": \"backspace\\b\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/control/string-cr\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755324):\n        1 │\u001b[0m string-cr   = \"null\r\"\n\n     output from parser-cmd (PID 755324) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"string-cr\": {\"type\": \"string\", \"value\": \"null\\r\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/control/string-del\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755346):\n        1 │\u001b[0m string-del  = \"null\"\n\n     output from parser-cmd (PID 755346) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"string-del\": {\"type\": \"string\", \"value\": \"null\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/control/string-lf\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755347):\n        1 │\u001b[0m string-lf   = \"null\u0010\"\n\n     output from parser-cmd (PID 755347) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"string-lf\": {\"type\": \"string\", \"value\": \"null\\u0010\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/control/string-null\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755348):\n        1 │\u001b[0m string-null = \"null\u0000\"\n\n     output from parser-cmd (PID 755348) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"string-null\": {\"type\": \"string\", \"value\": \"null\\u0000\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/control/string-us\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755349):\n        1 │\u001b[0m string-us   = \"null\u001f\"\n\n     output from parser-cmd (PID 755349) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"string-us\": {\"type\": \"string\", \"value\": \"null\\u001f\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/datetime/offset-overflow-minute\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755647):\n        1 │\u001b[0m d = 1985-06-18 17:04:07+12:60\n\n     output from parser-cmd (PID 755647) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"d\": {\"type\": \"datetime\", \"value\": \"1985-06-18 17:04:07+12:60\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/datetime/time-no-leads\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755470):\n        1 │\u001b[0m # Leading 0 is always required.\n        2 │\u001b[0m d = 2023-10-01T1:32:00Z\n\n     output from parser-cmd (PID 755470) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"d\": {\"type\": \"datetime\", \"value\": \"2023-10-01T1:32:00Z\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/encoding/ideographic-space\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755600):\n        1 │\u001b[0m # First on next line is U+3000 IDEOGRAPHIC SPACE\n        2 │\u001b[0m 　foo = \"bar\"\n\n     output from parser-cmd (PID 755600) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"foo\": {\"type\": \"string\", \"value\": \"bar\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/float/exp-dot-02\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755594):\n        1 │\u001b[0m exp-dot-02 = 1.e2\n\n     output from parser-cmd (PID 755594) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"exp-dot-02\": {\"type\": \"float\", \"value\": \"1.e2\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/float/exp-dot-03\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755705):\n        1 │\u001b[0m exp-dot-03 = 3.e+20\n\n     output from parser-cmd (PID 755705) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"exp-dot-03\": {\"type\": \"float\", \"value\": \"3.e+20\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/float/exp-double-us\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755593):\n        1 │\u001b[0m exp-double-us = 1e__23\n\n     output from parser-cmd (PID 755593) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"exp-double-us\": {\"type\": \"float\", \"value\": \"1e__23\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/float/exp-leading-us\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755735):\n        1 │\u001b[0m exp-leading-us = 1e_23\n\n     output from parser-cmd (PID 755735) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"exp-leading-us\": {\"type\": \"float\", \"value\": \"1e_23\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/float/exp-trailing-us\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755734):\n        1 │\u001b[0m exp-trailing-us = 1e23_\n\n     output from parser-cmd (PID 755734) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"exp-trailing-us\": {\"type\": \"float\", \"value\": \"1e23_\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/float/exp-trailing-us-01\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755685):\n        1 │\u001b[0m exp-trailing-us-01 = 1_e2\n\n     output from parser-cmd (PID 755685) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"exp-trailing-us-01\": {\"type\": \"float\", \"value\": \"1_e2\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/float/exp-trailing-us-02\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755571):\n        1 │\u001b[0m exp-trailing-us-02 = 1.2_e2\n\n     output from parser-cmd (PID 755571) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"exp-trailing-us-02\": {\"type\": \"float\", \"value\": \"1.2_e2\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/float/leading-dot\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755648):\n        1 │\u001b[0m leading-dot = .12345\n\n     output from parser-cmd (PID 755648) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"leading-dot\": {\"type\": \"float\", \"value\": \".12345\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/float/leading-dot-neg\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755605):\n        1 │\u001b[0m leading-dot-neg = -.12345\n\n     output from parser-cmd (PID 755605) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"leading-dot-neg\": {\"type\": \"float\", \"value\": \"-.12345\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/float/leading-dot-plus\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755646):\n        1 │\u001b[0m leading-dot-plus = +.12345\n\n     output from parser-cmd (PID 755646) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"leading-dot-plus\": {\"type\": \"float\", \"value\": \"+.12345\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/float/leading-us\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755651):\n        1 │\u001b[0m leading-us = _1.2\n\n     output from parser-cmd (PID 755651) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"leading-us\": {\"type\": \"float\", \"value\": \"_1.2\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/float/leading-zero\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755819):\n        1 │\u001b[0m leading-zero = 03.14\n\n     output from parser-cmd (PID 755819) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"leading-zero\": {\"type\": \"float\", \"value\": \"03.14\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/float/leading-zero-neg\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755653):\n        1 │\u001b[0m leading-zero-neg = -03.14\n\n     output from parser-cmd (PID 755653) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"leading-zero-neg\": {\"type\": \"float\", \"value\": \"-03.14\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/float/leading-zero-plus\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755654):\n        1 │\u001b[0m leading-zero-plus = +03.14\n\n     output from parser-cmd (PID 755654) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"leading-zero-plus\": {\"type\": \"float\", \"value\": \"+03.14\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/float/trailing-dot\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755693):\n        1 │\u001b[0m trailing-dot = 1.\n\n     output from parser-cmd (PID 755693) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"trailing-dot\": {\"type\": \"float\", \"value\": \"1.\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/float/trailing-dot-01\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755687):\n        1 │\u001b[0m trailing-point = 1.\n\n     output from parser-cmd (PID 755687) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"trailing-point\": {\"type\": \"float\", \"value\": \"1.\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/float/trailing-dot-02\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755688):\n        1 │\u001b[0m a = 1.\n        2 │\u001b[0m b = 2\n\n     output from parser-cmd (PID 755688) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"a\": {\"type\": \"float\", \"value\": \"1.\"},\n        3 │\u001b[0m   \"b\": {\"type\": \"integer\", \"value\": \"2\"}\n        4 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/float/trailing-dot-min\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755690):\n        1 │\u001b[0m trailing-dot-min = -1.\n\n     output from parser-cmd (PID 755690) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"trailing-dot-min\": {\"type\": \"float\", \"value\": \"-1.\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/float/trailing-dot-plus\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755691):\n        1 │\u001b[0m trailing-dot-plus = +1.\n\n     output from parser-cmd (PID 755691) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"trailing-dot-plus\": {\"type\": \"float\", \"value\": \"+1.\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/float/trailing-us\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755785):\n        1 │\u001b[0m trailing-us = 1.2_\n\n     output from parser-cmd (PID 755785) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"trailing-us\": {\"type\": \"float\", \"value\": \"1.2_\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/float/trailing-us-exp-01\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755762):\n        1 │\u001b[0m trailing-us-exp-1 = 1_e2\n\n     output from parser-cmd (PID 755762) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"trailing-us-exp-1\": {\"type\": \"float\", \"value\": \"1_e2\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/float/trailing-us-exp-02\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755782):\n        1 │\u001b[0m trailing-us-exp-2 = 1.2_e2\n\n     output from parser-cmd (PID 755782) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"trailing-us-exp-2\": {\"type\": \"float\", \"value\": \"1.2_e2\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/float/us-after-dot\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755787):\n        1 │\u001b[0m us-after-dot = 1._2\n\n     output from parser-cmd (PID 755787) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"us-after-dot\": {\"type\": \"float\", \"value\": \"1._2\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/float/us-before-dot\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755784):\n        1 │\u001b[0m us-before-dot = 1_.2\n\n     output from parser-cmd (PID 755784) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"us-before-dot\": {\"type\": \"float\", \"value\": \"1_.2\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/inline-table/duplicate-key-03\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755880):\n        1 │\u001b[0m tbl = { fruit = { apple.color = \"red\" }, fruit.apple.texture = { smooth = true } }\n\n     output from parser-cmd (PID 755880) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"tbl\": {\n        3 │\u001b[0m     \"fruit\": {\n        4 │\u001b[0m       \"apple\": {\n        5 │\u001b[0m         \"color\": {\"type\": \"string\", \"value\": \"red\"},\n        6 │\u001b[0m         \"texture\": {\n        7 │\u001b[0m           \"smooth\": {\"type\": \"bool\", \"value\": \"true\"}\n        8 │\u001b[0m         }\n        9 │\u001b[0m       }\n       10 │\u001b[0m     }\n       11 │\u001b[0m   }\n       12 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/inline-table/linebreak-01\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755914):\n        1 │\u001b[0m # No newlines are allowed between the curly braces unless they are valid within\n        2 │\u001b[0m # a value.\n        3 │\u001b[0m simple = { a = 1\n        4 │\u001b[0m }\n\n     output from parser-cmd (PID 755914) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"simple\": {\n        3 │\u001b[0m     \"a\": {\"type\": \"integer\", \"value\": \"1\"}\n        4 │\u001b[0m   }\n        5 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/inline-table/linebreak-02\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755837):\n        1 │\u001b[0m t = {a=1,\n        2 │\u001b[0m b=2}\n\n     output from parser-cmd (PID 755837) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"t\": {\n        3 │\u001b[0m     \"a\": {\"type\": \"integer\", \"value\": \"1\"},\n        4 │\u001b[0m     \"b\": {\"type\": \"integer\", \"value\": \"2\"}\n        5 │\u001b[0m   }\n        6 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/inline-table/linebreak-03\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755843):\n        1 │\u001b[0m t = {a=1\n        2 │\u001b[0m ,b=2}\n\n     output from parser-cmd (PID 755843) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"t\": {\n        3 │\u001b[0m     \"a\": {\"type\": \"integer\", \"value\": \"1\"},\n        4 │\u001b[0m     \"b\": {\"type\": \"integer\", \"value\": \"2\"}\n        5 │\u001b[0m   }\n        6 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/inline-table/linebreak-04\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755848):\n        1 │\u001b[0m json_like = {\n        2 │\u001b[0m           first = \"Tom\",\n        3 │\u001b[0m           last = \"Preston-Werner\"\n        4 │\u001b[0m }\n\n     output from parser-cmd (PID 755848) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"json_like\": {\n        3 │\u001b[0m     \"first\": {\"type\": \"string\", \"value\": \"Tom\"},\n        4 │\u001b[0m     \"last\":  {\"type\": \"string\", \"value\": \"Preston-Werner\"}\n        5 │\u001b[0m   }\n        6 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/inline-table/overwrite-02\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755870):\n        1 │\u001b[0m a={}\n        2 │\u001b[0m # Inline tables are immutable and can't be extended\n        3 │\u001b[0m [a.b]\n\n     output from parser-cmd (PID 755870) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"a\": {\n        3 │\u001b[0m     \"b\": {}\n        4 │\u001b[0m   }\n        5 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/inline-table/overwrite-04\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755962):\n        1 │\u001b[0m inline-t = { nest = {} }\n        2 │\u001b[0m\n        3 │\u001b[0m [[inline-t.nest]]\n\n     output from parser-cmd (PID 755962) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"inline-t\": {\"nest\": [{}]}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/inline-table/overwrite-05\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755920):\n        1 │\u001b[0m inline-t = { nest = {} }\n        2 │\u001b[0m\n        3 │\u001b[0m [inline-t.nest]\n\n     output from parser-cmd (PID 755920) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"inline-t\": {\n        3 │\u001b[0m     \"nest\": {}\n        4 │\u001b[0m   }\n        5 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/inline-table/overwrite-08\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755966):\n        1 │\u001b[0m tab = { inner = { dog = \"best\" }, inner.cat = \"worst\" }\n\n     output from parser-cmd (PID 755966) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"tab\": {\n        3 │\u001b[0m     \"inner\": {\n        4 │\u001b[0m       \"cat\": {\"type\": \"string\", \"value\": \"worst\"},\n        5 │\u001b[0m       \"dog\": {\"type\": \"string\", \"value\": \"best\"}\n        6 │\u001b[0m     }\n        7 │\u001b[0m   }\n        8 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/inline-table/trailing-comma\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755927):\n        1 │\u001b[0m # A terminating comma (also called trailing comma) is not permitted after the\n        2 │\u001b[0m # last key/value pair in an inline table\n        3 │\u001b[0m abc = { abc = 123, }\n\n     output from parser-cmd (PID 755927) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"abc\": {\n        3 │\u001b[0m     \"abc\": {\"type\": \"integer\", \"value\": \"123\"}\n        4 │\u001b[0m   }\n        5 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/integer/capital-bin\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755947):\n        1 │\u001b[0m capital-bin = 0B0\n\n     output from parser-cmd (PID 755947) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"capital-bin\": {\"type\": \"integer\", \"value\": \"0\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/integer/capital-hex\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756045):\n        1 │\u001b[0m capital-hex = 0X1\n\n     output from parser-cmd (PID 756045) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"capital-hex\": {\"type\": \"integer\", \"value\": \"0\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/integer/capital-oct\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755944):\n        1 │\u001b[0m capital-oct = 0O0\n\n     output from parser-cmd (PID 755944) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"capital-oct\": {\"type\": \"integer\", \"value\": \"0\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/integer/double-us\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755963):\n        1 │\u001b[0m double-us = 1__23\n\n     output from parser-cmd (PID 755963) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"double-us\": {\"type\": \"integer\", \"value\": \"123\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/integer/leading-us\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755972):\n        1 │\u001b[0m leading-us = _123\n\n     output from parser-cmd (PID 755972) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"leading-us\": {\"type\": \"integer\", \"value\": \"123\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/integer/leading-us-bin\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755967):\n        1 │\u001b[0m leading-us-bin = _0b1\n\n     output from parser-cmd (PID 755967) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"leading-us-bin\": {\"type\": \"integer\", \"value\": \"1\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/integer/leading-us-hex\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755968):\n        1 │\u001b[0m leading-us-hex = _0x1\n\n     output from parser-cmd (PID 755968) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"leading-us-hex\": {\"type\": \"integer\", \"value\": \"1\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/integer/leading-us-oct\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755969):\n        1 │\u001b[0m leading-us-oct = _0o1\n\n     output from parser-cmd (PID 755969) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"leading-us-oct\": {\"type\": \"integer\", \"value\": \"1\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/integer/leading-zero-01\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755976):\n        1 │\u001b[0m leading-zero-01 = 01\n\n     output from parser-cmd (PID 755976) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"leading-zero-01\": {\"type\": \"integer\", \"value\": \"1\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/integer/leading-zero-02\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755975):\n        1 │\u001b[0m leading-zero-02 = 00\n\n     output from parser-cmd (PID 755975) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"leading-zero-02\": {\"type\": \"integer\", \"value\": \"0\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/integer/leading-zero-03\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755982):\n        1 │\u001b[0m leading-zero-03 = 0_0\n\n     output from parser-cmd (PID 755982) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"leading-zero-03\": {\"type\": \"integer\", \"value\": \"0\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/integer/leading-zero-sign-01\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755984):\n        1 │\u001b[0m leading-zero-sign-01 = -01\n\n     output from parser-cmd (PID 755984) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"leading-zero-sign-01\": {\"type\": \"integer\", \"value\": \"-1\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/integer/leading-zero-sign-02\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755983):\n        1 │\u001b[0m leading-zero-sign-02 = +01\n\n     output from parser-cmd (PID 755983) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"leading-zero-sign-02\": {\"type\": \"integer\", \"value\": \"1\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/integer/leading-zero-sign-03\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 755985):\n        1 │\u001b[0m leading-zero-sign-03 = +0_1\n\n     output from parser-cmd (PID 755985) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"leading-zero-sign-03\": {\"type\": \"integer\", \"value\": \"1\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/integer/negative-bin\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756052):\n        1 │\u001b[0m negative-bin = -0b11010110\n\n     output from parser-cmd (PID 756052) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"negative-bin\": {\"type\": \"integer\", \"value\": \"-214\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/integer/negative-hex\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756062):\n        1 │\u001b[0m negative-hex = -0xff\n\n     output from parser-cmd (PID 756062) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"negative-hex\": {\"type\": \"integer\", \"value\": \"-255\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/integer/negative-oct\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756066):\n        1 │\u001b[0m negative-oct = -0o755\n\n     output from parser-cmd (PID 756066) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"negative-oct\": {\"type\": \"integer\", \"value\": \"-493\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/integer/positive-bin\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756233):\n        1 │\u001b[0m positive-bin = +0b11010110\n\n     output from parser-cmd (PID 756233) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"positive-bin\": {\"type\": \"integer\", \"value\": \"214\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/integer/positive-hex\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756071):\n        1 │\u001b[0m positive-hex = +0xff\n\n     output from parser-cmd (PID 756071) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"positive-hex\": {\"type\": \"integer\", \"value\": \"255\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/integer/positive-oct\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756238):\n        1 │\u001b[0m positive-oct = +0o755\n\n     output from parser-cmd (PID 756238) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"positive-oct\": {\"type\": \"integer\", \"value\": \"493\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/integer/trailing-us\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756106):\n        1 │\u001b[0m trailing-us = 123_\n\n     output from parser-cmd (PID 756106) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"trailing-us\": {\"type\": \"integer\", \"value\": \"123\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/integer/trailing-us-bin\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756069):\n        1 │\u001b[0m trailing-us-bin = 0b1_\n\n     output from parser-cmd (PID 756069) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"trailing-us-bin\": {\"type\": \"integer\", \"value\": \"1\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/integer/trailing-us-hex\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756070):\n        1 │\u001b[0m trailing-us-hex = 0x1_\n\n     output from parser-cmd (PID 756070) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"trailing-us-hex\": {\"type\": \"integer\", \"value\": \"1\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/integer/trailing-us-oct\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756104):\n        1 │\u001b[0m trailing-us-oct = 0o1_\n\n     output from parser-cmd (PID 756104) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"trailing-us-oct\": {\"type\": \"integer\", \"value\": \"1\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/integer/us-after-bin\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756109):\n        1 │\u001b[0m us-after-bin = 0b_1\n\n     output from parser-cmd (PID 756109) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"us-after-bin\": {\"type\": \"integer\", \"value\": \"1\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/integer/us-after-hex\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756111):\n        1 │\u001b[0m us-after-hex = 0x_1\n\n     output from parser-cmd (PID 756111) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"us-after-hex\": {\"type\": \"integer\", \"value\": \"1\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/integer/us-after-oct\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756131):\n        1 │\u001b[0m us-after-oct = 0o_1\n\n     output from parser-cmd (PID 756131) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"us-after-oct\": {\"type\": \"integer\", \"value\": \"1\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/local-datetime/time-no-leads\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756555):\n        1 │\u001b[0m # Leading 0 is always required.\n        2 │\u001b[0m d = 2023-10-01T1:32:00Z\n\n     output from parser-cmd (PID 756555) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"d\": {\"type\": \"datetime\", \"value\": \"2023-10-01T1:32:00Z\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/local-time/time-no-leads-01\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756558):\n        1 │\u001b[0m # Leading 0 is always required.\n        2 │\u001b[0m d = 1:32:00\n\n     output from parser-cmd (PID 756558) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"d\": {\"type\": \"time-local\", \"value\": \"1:32:00\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/spec-1.0.0/inline-table-2-0\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756709):\n        1 │\u001b[0m [product]\n        2 │\u001b[0m type = { name = \"Nail\" }\n        3 │\u001b[0m type.edible = false  # INVALID\n\n     output from parser-cmd (PID 756709) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"product\": {\n        3 │\u001b[0m     \"type\": {\n        4 │\u001b[0m       \"edible\": {\"type\": \"bool\", \"value\": \"false\"},\n        5 │\u001b[0m       \"name\":   {\"type\": \"string\", \"value\": \"Nail\"}\n        6 │\u001b[0m     }\n        7 │\u001b[0m   }\n        8 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/spec-1.0.0/string-4-0\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756641):\n        1 │\u001b[0m str4 = \"\"\"Here are two quotation marks: \"\". Simple enough.\"\"\"\n        2 │\u001b[0m str5 = \"\"\"Here are three quotation marks: \"\"\".\"\"\"  # INVALID\n        3 │\u001b[0m str5 = \"\"\"Here are three quotation marks: \"\"\\\".\"\"\"\n        4 │\u001b[0m str6 = \"\"\"Here are fifteen quotation marks: \"\"\\\"\"\"\\\"\"\"\\\"\"\"\\\"\"\"\\\".\"\"\"\n        5 │\u001b[0m\n        6 │\u001b[0m # \"This,\" she said, \"is just a pointless statement.\"\n        7 │\u001b[0m str7 = \"\"\"\"This,\" she said, \"is just a pointless statement.\"\"\"\"\n\n     output from parser-cmd (PID 756641) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"str4\": {\"type\": \"string\", \"value\": \"Here are two quotation marks: \\\"\\\". Simple enough.\"},\n        3 │\u001b[0m   \"str7\": {\"type\": \"string\", \"value\": \"\\\"This,\\\" she said, \\\"is just a pointless statement.\\\"\"},\n        4 │\u001b[0m   \"str5\": {\n        5 │\u001b[0m     \"type\":  \"string\",\n        6 │\u001b[0m     \"value\": \"Here are three quotation marks: \\\"\\\"\\\".\\\"\\\"\\\"  # INVALID\\nstr5 = \\\"\\\"\\\"Here are three quotation marks: \\\"\\\"\\\\\\\".\"\n        7 │\u001b[0m   },\n        8 │\u001b[0m   \"str6\": {\n        9 │\u001b[0m     \"type\":  \"string\",\n       10 │\u001b[0m     \"value\": \"Here are fifteen quotation marks: \\\"\\\"\\\\\\\"\\\"\\\"\\\\\\\"\\\"\\\"\\\\\\\"\\\"\\\"\\\\\\\"\\\"\\\"\\\\\\\".\"\n       11 │\u001b[0m   }\n       12 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/spec-1.0.0/table-9-0\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756632):\n        1 │\u001b[0m [fruit]\n        2 │\u001b[0m apple.color = \"red\"\n        3 │\u001b[0m apple.taste.sweet = true\n        4 │\u001b[0m\n        5 │\u001b[0m [fruit.apple]  # INVALID\n        6 │\u001b[0m # [fruit.apple.taste]  # INVALID\n        7 │\u001b[0m\n        8 │\u001b[0m [fruit.apple.texture]  # you can add sub-tables\n        9 │\u001b[0m smooth = true\n\n     output from parser-cmd (PID 756632) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"fruit\": {\n        3 │\u001b[0m     \"apple\": {\n        4 │\u001b[0m       \"color\": {\"type\": \"string\", \"value\": \"red\"},\n        5 │\u001b[0m       \"taste\": {\n        6 │\u001b[0m         \"sweet\": {\"type\": \"bool\", \"value\": \"true\"}\n        7 │\u001b[0m       },\n        8 │\u001b[0m       \"texture\": {\n        9 │\u001b[0m         \"smooth\": {\"type\": \"bool\", \"value\": \"true\"}\n       10 │\u001b[0m       }\n       11 │\u001b[0m     }\n       12 │\u001b[0m   }\n       13 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/spec-1.0.0/table-9-1\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756633):\n        1 │\u001b[0m [fruit]\n        2 │\u001b[0m apple.color = \"red\"\n        3 │\u001b[0m apple.taste.sweet = true\n        4 │\u001b[0m\n        5 │\u001b[0m # [fruit.apple]  # INVALID\n        6 │\u001b[0m [fruit.apple.taste]  # INVALID\n        7 │\u001b[0m\n        8 │\u001b[0m [fruit.apple.texture]  # you can add sub-tables\n        9 │\u001b[0m smooth = true\n\n     output from parser-cmd (PID 756633) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"fruit\": {\n        3 │\u001b[0m     \"apple\": {\n        4 │\u001b[0m       \"color\": {\"type\": \"string\", \"value\": \"red\"},\n        5 │\u001b[0m       \"taste\": {\n        6 │\u001b[0m         \"sweet\": {\"type\": \"bool\", \"value\": \"true\"}\n        7 │\u001b[0m       },\n        8 │\u001b[0m       \"texture\": {\n        9 │\u001b[0m         \"smooth\": {\"type\": \"bool\", \"value\": \"true\"}\n       10 │\u001b[0m       }\n       11 │\u001b[0m     }\n       12 │\u001b[0m   }\n       13 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/string/bad-escape-01\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756665):\n        1 │\u001b[0m invalid-escape = \"This string has a bad \\a escape character.\"\n\n     output from parser-cmd (PID 756665) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"invalid-escape\": {\"type\": \"string\", \"value\": \"This string has a bad \\u0007 escape character.\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/string/bad-uni-esc-ml-01\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756766):\n        1 │\u001b[0m bad-uni-esc-ml-01 = \"\"\"val\\ue\"\"\"\n\n     output from parser-cmd (PID 756766) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"bad-uni-esc-ml-01\": {\"type\": \"string\", \"value\": \"val\\\\ue\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/string/bad-uni-esc-ml-02\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756770):\n        1 │\u001b[0m bad-uni-esc-ml-02 = \"\"\"val\\Ux\"\"\"\n\n     output from parser-cmd (PID 756770) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"bad-uni-esc-ml-02\": {\"type\": \"string\", \"value\": \"val\\\\Ux\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/string/bad-uni-esc-ml-03\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756827):\n        1 │\u001b[0m bad-uni-esc-ml-03 = \"\"\"val\\U0000000\"\"\"\n\n     output from parser-cmd (PID 756827) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"bad-uni-esc-ml-03\": {\"type\": \"string\", \"value\": \"val\\\\U0000000\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/string/bad-uni-esc-ml-04\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756820):\n        1 │\u001b[0m bad-uni-esc-ml-04 = \"\"\"val\\U0000\"\"\"\n\n     output from parser-cmd (PID 756820) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"bad-uni-esc-ml-04\": {\"type\": \"string\", \"value\": \"val\\\\U0000\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/string/bad-uni-esc-ml-05\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756810):\n        1 │\u001b[0m bad-uni-esc-ml-05 = \"\"\"val\\Ugggggggg\"\"\"\n\n     output from parser-cmd (PID 756810) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"bad-uni-esc-ml-05\": {\"type\": \"string\", \"value\": \"val\\\\Ugggggggg\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/string/bad-uni-esc-ml-06\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756773):\n        1 │\u001b[0m bad-uni-esc-ml-06 = \"\"\"This string contains a non scalar unicode codepoint \\uD801\"\"\"\n\n     output from parser-cmd (PID 756773) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"bad-uni-esc-ml-06\": {\"type\": \"string\", \"value\": \"This string contains a non scalar unicode codepoint \\\\uD801\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/string/bad-uni-esc-ml-07\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756772):\n        1 │\u001b[0m bad-uni-esc-ml-07 = \"\"\"\\uabag\"\"\"\n\n     output from parser-cmd (PID 756772) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"bad-uni-esc-ml-07\": {\"type\": \"string\", \"value\": \"\\\\uabag\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/string/basic-byte-escapes\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756774):\n        1 │\u001b[0m answer = \"\\x33\"\n\n     output from parser-cmd (PID 756774) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"answer\": {\"type\": \"string\", \"value\": \"3\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/string/basic-multiline-out-of-range-unicode-escape-01\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756776):\n        1 │\u001b[0m a = \"\"\"\\UFFFFFFFF\"\"\"\n\n     output from parser-cmd (PID 756776) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"a\": {\"type\": \"string\", \"value\": \"\\\\UFFFFFFFF\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/string/basic-multiline-out-of-range-unicode-escape-02\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756821):\n        1 │\u001b[0m a = \"\"\"\\U00D80000\"\"\"\n\n     output from parser-cmd (PID 756821) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"a\": {\"type\": \"string\", \"value\": \"\\\\U00D80000\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/string/basic-multiline-unknown-escape\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756811):\n        1 │\u001b[0m a = \"\"\"\\@\"\"\"\n\n     output from parser-cmd (PID 756811) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"a\": {\"type\": \"string\", \"value\": \"\\\\@\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/string/multiline-bad-escape-01\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756866):\n        1 │\u001b[0m k = \"\"\"t\\a\"\"\"\n\n     output from parser-cmd (PID 756866) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"k\": {\"type\": \"string\", \"value\": \"t\\\\a\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/string/multiline-bad-escape-02\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756864):\n        1 │\u001b[0m # \\<Space> is not a valid escape.\n        2 │\u001b[0m k = \"\"\"t\\ t\"\"\"\n\n     output from parser-cmd (PID 756864) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"k\": {\"type\": \"string\", \"value\": \"t\\\\ t\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/string/multiline-bad-escape-03\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756831):\n        1 │\u001b[0m # \\<Space> is not a valid escape.\n        2 │\u001b[0m k = \"\"\"t\\ \"\"\"\n\n     output from parser-cmd (PID 756831) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"k\": {\"type\": \"string\", \"value\": \"t\\\\ \"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/string/multiline-escape-space-01\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 756854):\n        1 │\u001b[0m a = \"\"\"\n        2 │\u001b[0m   foo \\ \\n\n        3 │\u001b[0m   bar\"\"\"\n\n     output from parser-cmd (PID 756854) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"a\": {\"type\": \"string\", \"value\": \"  foo \\\\ \\\\n\\n  bar\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/string/multiline-escape-space-02\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 757013):\n        1 │\u001b[0m bee = \"\"\"\n        2 │\u001b[0m hee \\\n        3 │\u001b[0m\n        4 │\u001b[0m gee \\   \"\"\"\n\n     output from parser-cmd (PID 757013) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"bee\": {\"type\": \"string\", \"value\": \"hee \\ngee \\\\   \"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/table/append-with-dotted-keys-01\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 757016):\n        1 │\u001b[0m # First a.b.c defines a table: a.b.c = {z=9}\n        2 │\u001b[0m #\n        3 │\u001b[0m # Then we define a.b.c.t = \"str\" to add a str to the above table, making it:\n        4 │\u001b[0m #\n        5 │\u001b[0m #   a.b.c = {z=9, t=\"...\"}\n        6 │\u001b[0m #\n        7 │\u001b[0m # While this makes sense, logically, it was decided this is not valid TOML as\n        8 │\u001b[0m # it's too confusing/convoluted.\n        9 │\u001b[0m #\n       10 │\u001b[0m # See: https://github.com/toml-lang/toml/issues/846\n       11 │\u001b[0m #      https://github.com/toml-lang/toml/pull/859\n       12 │\u001b[0m\n       13 │\u001b[0m [a.b.c]\n       14 │\u001b[0m   z = 9\n       15 │\u001b[0m\n       16 │\u001b[0m [a]\n       17 │\u001b[0m   b.c.t = \"Using dotted keys to add to [a.b.c] after explicitly defining it above is not allowed\"\n\n     output from parser-cmd (PID 757016) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"a\": {\n        3 │\u001b[0m     \"b\": {\n        4 │\u001b[0m       \"c\": {\n        5 │\u001b[0m         \"z\": {\"type\": \"integer\", \"value\": \"9\"},\n        6 │\u001b[0m         \"t\": {\n        7 │\u001b[0m           \"type\":  \"string\",\n        8 │\u001b[0m           \"value\": \"Using dotted keys to add to [a.b.c] after explicitly defining it above is not allowed\"\n        9 │\u001b[0m         }\n       10 │\u001b[0m       }\n       11 │\u001b[0m     }\n       12 │\u001b[0m   }\n       13 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/table/append-with-dotted-keys-02\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 757115):\n        1 │\u001b[0m # This is the same issue as in injection-1.toml, except that nests one level\n        2 │\u001b[0m # deeper. See that file for a more complete description.\n        3 │\u001b[0m\n        4 │\u001b[0m [a.b.c.d]\n        5 │\u001b[0m   z = 9\n        6 │\u001b[0m\n        7 │\u001b[0m [a]\n        8 │\u001b[0m   b.c.d.k.t = \"Using dotted keys to add to [a.b.c.d] after explicitly defining it above is not allowed\"\n\n     output from parser-cmd (PID 757115) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"a\": {\n        3 │\u001b[0m     \"b\": {\n        4 │\u001b[0m       \"c\": {\n        5 │\u001b[0m         \"d\": {\n        6 │\u001b[0m           \"z\": {\"type\": \"integer\", \"value\": \"9\"},\n        7 │\u001b[0m           \"k\": {\n        8 │\u001b[0m             \"t\": {\n        9 │\u001b[0m               \"type\":  \"string\",\n       10 │\u001b[0m               \"value\": \"Using dotted keys to add to [a.b.c.d] after explicitly defining it above is not allowed\"\n       11 │\u001b[0m             }\n       12 │\u001b[0m           }\n       13 │\u001b[0m         }\n       14 │\u001b[0m       }\n       15 │\u001b[0m     }\n       16 │\u001b[0m   }\n       17 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/table/append-with-dotted-keys-08\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 757067):\n        1 │\u001b[0m [a.b.c]\n        2 │\u001b[0m z = 9\n        3 │\u001b[0m\n        4 │\u001b[0m [[totally_unrelated]]\n        5 │\u001b[0m x = 123\n        6 │\u001b[0m\n        7 │\u001b[0m [a]\n        8 │\u001b[0m b.c.t = \"this should NOT be allowed\"\n\n     output from parser-cmd (PID 757067) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"totally_unrelated\": [{\n        3 │\u001b[0m     \"x\": {\"type\": \"integer\", \"value\": \"123\"}\n        4 │\u001b[0m   }],\n        5 │\u001b[0m   \"a\": {\n        6 │\u001b[0m     \"b\": {\n        7 │\u001b[0m       \"c\": {\n        8 │\u001b[0m         \"t\": {\"type\": \"string\", \"value\": \"this should NOT be allowed\"},\n        9 │\u001b[0m         \"z\": {\"type\": \"integer\", \"value\": \"9\"}\n       10 │\u001b[0m       }\n       11 │\u001b[0m     }\n       12 │\u001b[0m   }\n       13 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/table/array-implicit\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 757068):\n        1 │\u001b[0m # This test is a bit tricky. It should fail because the first use of\n        2 │\u001b[0m # `[[albums.songs]]` without first declaring `albums` implies that `albums`\n        3 │\u001b[0m # must be a table. The alternative would be quite weird. Namely, it wouldn't\n        4 │\u001b[0m # comply with the TOML spec: \"Each double-bracketed sub-table will belong to\n        5 │\u001b[0m # the most *recently* defined table element *above* it.\"\n        6 │\u001b[0m #\n        7 │\u001b[0m # This is in contrast to the *valid* test, table-array-implicit where\n        8 │\u001b[0m # `[[albums.songs]]` works by itself, so long as `[[albums]]` isn't declared\n        9 │\u001b[0m # later. (Although, `[albums]` could be.)\n       10 │\u001b[0m [[albums.songs]]\n       11 │\u001b[0m name = \"Glory Days\"\n       12 │\u001b[0m\n       13 │\u001b[0m [[albums]]\n       14 │\u001b[0m name = \"Born in the USA\"\n\n     output from parser-cmd (PID 757068) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"albums\": [{\n        3 │\u001b[0m     \"name\": {\"type\": \"string\", \"value\": \"Born in the USA\"}\n        4 │\u001b[0m   }]\n        5 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/table/duplicate-key-03\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 757143):\n        1 │\u001b[0m [fruit]\n        2 │\u001b[0m apple.color = \"red\"\n        3 │\u001b[0m\n        4 │\u001b[0m [[fruit.apple]]\n\n     output from parser-cmd (PID 757143) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"fruit\": {\"apple\": [{}]}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/table/duplicate-key-04\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 757213):\n        1 │\u001b[0m [fruit]\n        2 │\u001b[0m apple.color = \"red\"\n        3 │\u001b[0m\n        4 │\u001b[0m [fruit.apple] # INVALID\n\n     output from parser-cmd (PID 757213) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"fruit\": {\n        3 │\u001b[0m     \"apple\": {\n        4 │\u001b[0m       \"color\": {\"type\": \"string\", \"value\": \"red\"}\n        5 │\u001b[0m     }\n        6 │\u001b[0m   }\n        7 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/table/duplicate-key-05\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 757219):\n        1 │\u001b[0m [fruit]\n        2 │\u001b[0m apple.taste.sweet = true\n        3 │\u001b[0m\n        4 │\u001b[0m [fruit.apple.taste] # INVALID\n\n     output from parser-cmd (PID 757219) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"fruit\": {\n        3 │\u001b[0m     \"apple\": {\n        4 │\u001b[0m       \"taste\": {\n        5 │\u001b[0m         \"sweet\": {\"type\": \"bool\", \"value\": \"true\"}\n        6 │\u001b[0m       }\n        7 │\u001b[0m     }\n        8 │\u001b[0m   }\n        9 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/table/duplicate-key-06\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 757130):\n        1 │\u001b[0m [tbl]\n        2 │\u001b[0m [[tbl]]\n\n     output from parser-cmd (PID 757130) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"tbl\": [{}]\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/table/newline-01\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 757140):\n        1 │\u001b[0m [tbl\n        2 │\u001b[0m ]\n        3 │\u001b[0m k = 1\n\n     output from parser-cmd (PID 757140) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"tbl\": {\n        3 │\u001b[0m     \"k\": {\"type\": \"integer\", \"value\": \"1\"}\n        4 │\u001b[0m   }\n        5 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/table/newline-05\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 757218):\n        1 │\u001b[0m [tbl\n        2 │\u001b[0m .sub]\n        3 │\u001b[0m k = 1\n\n     output from parser-cmd (PID 757218) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"tbl\": {\n        3 │\u001b[0m     \"sub\": {\n        4 │\u001b[0m       \"k\": {\"type\": \"integer\", \"value\": \"1\"}\n        5 │\u001b[0m     }\n        6 │\u001b[0m   }\n        7 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/table/overwrite-bool-with-array\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 757250):\n        1 │\u001b[0m a=true\n        2 │\u001b[0m [[a]]\n\n     output from parser-cmd (PID 757250) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"a\": [{}]\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/table/redefine-02\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 757254):\n        1 │\u001b[0m [t1]\n        2 │\u001b[0m t2.t3.v = 0\n        3 │\u001b[0m [t1.t2]\n\n     output from parser-cmd (PID 757254) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"t1\": {\n        3 │\u001b[0m     \"t2\": {\n        4 │\u001b[0m       \"t3\": {\n        5 │\u001b[0m         \"v\": {\"type\": \"integer\", \"value\": \"0\"}\n        6 │\u001b[0m       }\n        7 │\u001b[0m     }\n        8 │\u001b[0m   }\n        9 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/table/redefine-03\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 757269):\n        1 │\u001b[0m [t1]\n        2 │\u001b[0m t2.t3.v = 0\n        3 │\u001b[0m [t1.t2.t3]\n\n     output from parser-cmd (PID 757269) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"t1\": {\n        3 │\u001b[0m     \"t2\": {\n        4 │\u001b[0m       \"t3\": {\n        5 │\u001b[0m         \"v\": {\"type\": \"integer\", \"value\": \"0\"}\n        6 │\u001b[0m       }\n        7 │\u001b[0m     }\n        8 │\u001b[0m   }\n        9 │\u001b[0m }\n\n     want:\n       Exit code 1\n\ntoml-test v2.2.0 [/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/toml-decoder] [no encoder]\n  valid tests: 158 passed, 47 failed\nencoder tests: no encoder command given\ninvalid tests: 345 passed, 129 failed\n","exit_code":1,"status":"failed"}}
{"type":"item.started","item":{"id":"item_9","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/internal/toml/value_test.go","kind":"update"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_9","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/internal/toml/value_test.go","kind":"update"}],"status":"completed"}}
{"type":"item.completed","item":{"id":"item_10","type":"agent_message","text":"The declared scalar and container representations are already correctly implemented by `Tagged`; I added deterministic tests covering all eight scalar type names, string payloads, empty tables/arrays, and nested arrays/tables. The full upstream suite is available and exposes many pre-existing parser failures outside this encoding block, so I’m completing the focused verification and will report that boundary explicitly."}}
{"type":"item.started","item":{"id":"item_11","type":"command_execution","command":"/bin/bash -lc 'gofmt -w internal/toml/value_test.go && go test ./... && go vet ./... && test -z \"$(gofmt -l .)\" && go build ./... && python3 - <<'\"'PY'\nimport json, subprocess\ncases = {\n    'tagged-scalars': 'text = \\\"hello\\\"\\\\ncount = 42\\\\nactive = true\\\\n',\n    'tagged-structures': 'items = [1, 2]\\\\n[meta]\\\\nname = \\\"x\\\"\\\\n',\n    'tagged-empty-containers': 'empty_array = []\\\\n[empty_table]\\\\n',\n    'tagged-datetime-types': 'offset = 1979-05-27T07:32:00Z\\\\nlocal = 1979-05-27T07:32:00\\\\ndate = 1979-05-27\\\\ntime = 07:32:00\\\\n',\n}\nfor name, source in cases.items():\n    result = subprocess.run(['./toml-decoder'], input=source, capture_output=True, text=True)\n    assert result.returncode == 0, (name, result.stderr)\n    decoded = json.loads(result.stdout)\n    if name == 'tagged-scalars':\n        assert decoded['text'] == {'type':'string','value':'hello'}\n        assert decoded['count'] == {'type':'integer','value':'42'}\n        assert decoded['active'] == {'type':'bool','value':'true'}\n    elif name == 'tagged-structures':\n        assert isinstance(decoded['items'], list) and isinstance(decoded['meta'], dict)\n        assert decoded['items'][0]['type'] == 'integer' and decoded['meta']['name']['type'] == 'string'\n    elif name == 'tagged-empty-containers':\n        assert decoded['empty_array'] == [] and decoded['empty_table'] == {}\n    else:\n        assert decoded['offset']['type'] == 'datetime'\n        assert decoded['local']['type'] == 'datetime-local'\n        assert decoded['date']['type'] == 'date-local'\n        assert decoded['time']['type'] == 'time-local'\n    print(name, 'passed')\nPY\nprintf '\\\\nDIFF:\\\\n'; git diff -- internal/toml/value_test.go\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_11","type":"command_execution","command":"/bin/bash -lc 'gofmt -w internal/toml/value_test.go && go test ./... && go vet ./... && test -z \"$(gofmt -l .)\" && go build ./... && python3 - <<'\"'PY'\nimport json, subprocess\ncases = {\n    'tagged-scalars': 'text = \\\"hello\\\"\\\\ncount = 42\\\\nactive = true\\\\n',\n    'tagged-structures': 'items = [1, 2]\\\\n[meta]\\\\nname = \\\"x\\\"\\\\n',\n    'tagged-empty-containers': 'empty_array = []\\\\n[empty_table]\\\\n',\n    'tagged-datetime-types': 'offset = 1979-05-27T07:32:00Z\\\\nlocal = 1979-05-27T07:32:00\\\\ndate = 1979-05-27\\\\ntime = 07:32:00\\\\n',\n}\nfor name, source in cases.items():\n    result = subprocess.run(['./toml-decoder'], input=source, capture_output=True, text=True)\n    assert result.returncode == 0, (name, result.stderr)\n    decoded = json.loads(result.stdout)\n    if name == 'tagged-scalars':\n        assert decoded['text'] == {'type':'string','value':'hello'}\n        assert decoded['count'] == {'type':'integer','value':'42'}\n        assert decoded['active'] == {'type':'bool','value':'true'}\n    elif name == 'tagged-structures':\n        assert isinstance(decoded['items'], list) and isinstance(decoded['meta'], dict)\n        assert decoded['items'][0]['type'] == 'integer' and decoded['meta']['name']['type'] == 'string'\n    elif name == 'tagged-empty-containers':\n        assert decoded['empty_array'] == [] and decoded['empty_table'] == {}\n    else:\n        assert decoded['offset']['type'] == 'datetime'\n        assert decoded['local']['type'] == 'datetime-local'\n        assert decoded['date']['type'] == 'date-local'\n        assert decoded['time']['type'] == 'time-local'\n    print(name, 'passed')\nPY\nprintf '\\\\nDIFF:\\\\n'; git diff -- internal/toml/value_test.go\"","aggregated_output":"# github.com/owner/toml-decoder/internal/toml [github.com/owner/toml-decoder/internal/toml.test]\ninternal/toml/value_test.go:65:37: want.Kind undefined (type any has no field or method Kind)\ninternal/toml/value_test.go:66:67: want.Kind undefined (type any has no field or method Kind)\ninternal/toml/value_test.go:68:31: want.Lexeme undefined (type any has no field or method Lexeme)\ninternal/toml/value_test.go:69:69: want.Lexeme undefined (type any has no field or method Lexeme)\nok  \tgithub.com/owner/toml-decoder/cmd/toml-decoder\t(cached)\nFAIL\tgithub.com/owner/toml-decoder/internal/toml [build failed]\nFAIL\n\nDIFF:\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_12","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/internal/toml/value_test.go","kind":"update"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_12","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/internal/toml/value_test.go","kind":"update"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_13","type":"command_execution","command":"/bin/bash -lc 'gofmt -w internal/toml/value_test.go && go test ./... && go vet ./... && test -z \"$(gofmt -l .)\" && go build ./... && python3 - <<'\"'PY'\nimport json, subprocess\ncases = {\n    'tagged-scalars': 'text = \\\"hello\\\"\\\\ncount = 42\\\\nactive = true\\\\n',\n    'tagged-structures': 'items = [1, 2]\\\\n[meta]\\\\nname = \\\"x\\\"\\\\n',\n    'tagged-empty-containers': 'empty_array = []\\\\n[empty_table]\\\\n',\n    'tagged-datetime-types': 'offset = 1979-05-27T07:32:00Z\\\\nlocal = 1979-05-27T07:32:00\\\\ndate = 1979-05-27\\\\ntime = 07:32:00\\\\n',\n}\nfor name, source in cases.items():\n    result = subprocess.run(['./toml-decoder'], input=source, capture_output=True, text=True)\n    assert result.returncode == 0, (name, result.stderr)\n    decoded = json.loads(result.stdout)\n    if name == 'tagged-scalars':\n        assert decoded['text'] == {'type':'string','value':'hello'}\n        assert decoded['count'] == {'type':'integer','value':'42'}\n        assert decoded['active'] == {'type':'bool','value':'true'}\n    elif name == 'tagged-structures':\n        assert isinstance(decoded['items'], list) and isinstance(decoded['meta'], dict)\n        assert decoded['items'][0]['type'] == 'integer' and decoded['meta']['name']['type'] == 'string'\n    elif name == 'tagged-empty-containers':\n        assert decoded['empty_array'] == [] and decoded['empty_table'] == {}\n    else:\n        assert decoded['offset']['type'] == 'datetime'\n        assert decoded['local']['type'] == 'datetime-local'\n        assert decoded['date']['type'] == 'date-local'\n        assert decoded['time']['type'] == 'time-local'\n    print(name, 'passed')\nPY\ngit status --short --untracked-files=all && git diff --stat && git diff -- internal/toml/value_test.go\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_13","type":"command_execution","command":"/bin/bash -lc 'gofmt -w internal/toml/value_test.go && go test ./... && go vet ./... && test -z \"$(gofmt -l .)\" && go build ./... && python3 - <<'\"'PY'\nimport json, subprocess\ncases = {\n    'tagged-scalars': 'text = \\\"hello\\\"\\\\ncount = 42\\\\nactive = true\\\\n',\n    'tagged-structures': 'items = [1, 2]\\\\n[meta]\\\\nname = \\\"x\\\"\\\\n',\n    'tagged-empty-containers': 'empty_array = []\\\\n[empty_table]\\\\n',\n    'tagged-datetime-types': 'offset = 1979-05-27T07:32:00Z\\\\nlocal = 1979-05-27T07:32:00\\\\ndate = 1979-05-27\\\\ntime = 07:32:00\\\\n',\n}\nfor name, source in cases.items():\n    result = subprocess.run(['./toml-decoder'], input=source, capture_output=True, text=True)\n    assert result.returncode == 0, (name, result.stderr)\n    decoded = json.loads(result.stdout)\n    if name == 'tagged-scalars':\n        assert decoded['text'] == {'type':'string','value':'hello'}\n        assert decoded['count'] == {'type':'integer','value':'42'}\n        assert decoded['active'] == {'type':'bool','value':'true'}\n    elif name == 'tagged-structures':\n        assert isinstance(decoded['items'], list) and isinstance(decoded['meta'], dict)\n        assert decoded['items'][0]['type'] == 'integer' and decoded['meta']['name']['type'] == 'string'\n    elif name == 'tagged-empty-containers':\n        assert decoded['empty_array'] == [] and decoded['empty_table'] == {}\n    else:\n        assert decoded['offset']['type'] == 'datetime'\n        assert decoded['local']['type'] == 'datetime-local'\n        assert decoded['date']['type'] == 'date-local'\n        assert decoded['time']['type'] == 'time-local'\n    print(name, 'passed')\nPY\ngit status --short --untracked-files=all && git diff --stat && git diff -- internal/toml/value_test.go\"","aggregated_output":"ok  \tgithub.com/owner/toml-decoder/cmd/toml-decoder\t(cached)\nok  \tgithub.com/owner/toml-decoder/internal/toml\t0.003s\ntagged-scalars passed\ntagged-structures passed\ntagged-empty-containers passed\ntagged-datetime-types passed\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_14","type":"command_execution","command":"/bin/bash -lc 'tail -n 130 internal/toml/value_test.go; git status --porcelain=v2; git ls-files -v internal/toml/value_test.go; git diff --no-ext-diff --numstat; stat internal/toml/value_test.go'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_14","type":"command_execution","command":"/bin/bash -lc 'tail -n 130 internal/toml/value_test.go; git status --porcelain=v2; git ls-files -v internal/toml/value_test.go; git diff --no-ext-diff --numstat; stat internal/toml/value_test.go'","aggregated_output":"  File: internal/toml/value_test.go\n  Size: 3674      \tBlocks: 8          IO Block: 512    regular file\nDevice: 43h/67d\tInode: 9007199255648998  Links: 1\nAccess: (0777/-rwxrwxrwx)  Uid: ( 1000/   barlo)   Gid: ( 1000/   barlo)\nAccess: 2026-08-14 01:19:24.332662700 -0400\nModify: 2026-08-14 01:19:24.332662700 -0400\nChange: 2026-08-14 01:19:24.332662700 -0400\n Birth: -\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_15","type":"command_execution","command":"/bin/bash -lc 'git rev-parse --show-toplevel; git status --ignored --short internal/toml/value_test.go; git check-ignore -v internal/toml/value_test.go || true; git ls-files | head -30; ls -la'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_15","type":"command_execution","command":"/bin/bash -lc 'git rev-parse --show-toplevel; git status --ignored --short internal/toml/value_test.go; git check-ignore -v internal/toml/value_test.go || true; git ls-files | head -30; ls -la'","aggregated_output":"!! ../../../\n.gitignore:46:uat/*/runs/\tinternal/toml/value_test.go\ntotal 2780\ndrwxrwxrwx 1 barlo barlo     512 Aug 14 01:15 .\ndrwxrwxrwx 1 barlo barlo     512 Aug 14 01:08 ..\ndrwxrwxrwx 1 barlo barlo     512 Aug 14 01:09 cmd\n-rwxrwxrwx 1 barlo barlo      46 Aug 14 01:09 go.mod\ndrwxrwxrwx 1 barlo barlo     512 Aug 14 01:09 internal\ndrwxrwxrwx 1 barlo barlo     512 Aug 14 01:08 sources\n-rwxrwxrwx 1 barlo barlo 2846132 Aug 14 01:18 toml-decoder\n","exit_code":0,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_16","type":"agent_message","text":"RESULT: FAILED\n\nFILES CHANGED:\n- internal/toml/value_test.go\n\nSUMMARY:\nAdded coverage for all tagged scalar types, string payloads, nested structures, and empty containers. Focused tests, acceptance checks, `go test`, `go vet`, formatting, and build pass.\n\nBLOCKERS:\n- Full `toml-test v2.2.0` conformance fails due to pre-existing parser behavior: 47 valid and 129 invalid cases failed.\n\nFAILURE_SUMMARY: Full conformance suite remains failing outside tagged-JSON coverage.\nFAILURE_DETAIL: The tagged-JSON acceptance checks pass, but the required full suite reports parser failures in strings, keys, datetimes, floats, tables, and invalid-input handling. Those behaviors require work in another build block before rerunning."}}
{"type":"turn.completed","usage":{"input_tokens":524068,"cached_input_tokens":471040,"cache_write_input_tokens":0,"output_tokens":5507,"reasoning_output_tokens":1454}}
