Run artifact

workspace/logs/20260814.052011.978Z_toml_build_codex.raw.jsonl

{"type":"thread.started","thread_id":"019ffeb6-ac29-7e62-9078-7c128a04ab0a"}
{"type":"turn.started"}
{"type":"item.completed","item":{"id":"item_0","type":"agent_message","text":"I’ll inspect the existing Go implementation and verify the toolchain first, then extend only the parser/tests needed for the lexical-strings block. The staged harness files will remain untouched."}}
{"type":"item.started","item":{"id":"item_1","type":"command_execution","command":"/bin/bash -lc \"go version && printf '%s\\\\n' '--- files ---' && rg --files -g '\"'!sources/*'\"' -g '\"'!*.sum'\"' | sort && printf '%s\\\\n' '--- status ---' && git status --short\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_1","type":"command_execution","command":"/bin/bash -lc \"go version && printf '%s\\\\n' '--- files ---' && rg --files -g '\"'!sources/*'\"' -g '\"'!*.sum'\"' | sort && printf '%s\\\\n' '--- status ---' && git status --short\"","aggregated_output":"","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_2","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,260p' internal/toml/decode.go && sed -n '1,220p' internal/toml/value.go && sed -n '1,260p' internal/toml/value_test.go && sed -n '1,180p' cmd/toml-decoder/main.go && sed -n '1,220p' cmd/toml-decoder/main_test.go && cat go.mod\"","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,260p' internal/toml/decode.go && sed -n '1,220p' internal/toml/value.go && sed -n '1,260p' internal/toml/value_test.go && sed -n '1,180p' cmd/toml-decoder/main.go && sed -n '1,220p' cmd/toml-decoder/main_test.go && cat go.mod\"","aggregated_output":"package 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\")\npackage 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\"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 TestTaggedEncodesEveryScalarKindWithStringPayload(t *testing.T) {\n\tinput := Object{\n\t\t\"string\":         Value{Kind: String, Lexeme: \"hello\"},\n\t\t\"integer\":        Value{Kind: Integer, Lexeme: \"42\"},\n\t\t\"float\":          Value{Kind: Float, Lexeme: \"3.5\"},\n\t\t\"bool\":           Value{Kind: Bool, Lexeme: \"true\"},\n\t\t\"datetime\":       Value{Kind: Datetime, Lexeme: \"1979-05-27T07:32:00Z\"},\n\t\t\"datetime-local\": Value{Kind: DatetimeLocal, Lexeme: \"1979-05-27T07:32:00\"},\n\t\t\"date-local\":     Value{Kind: DateLocal, Lexeme: \"1979-05-27\"},\n\t\t\"time-local\":     Value{Kind: TimeLocal, Lexeme: \"07:32:00\"},\n\t}\n\n\tgot, err := Tagged(input)\n\tif err != nil {\n\t\tt.Fatalf(\"Tagged returned error: %v\", err)\n\t}\n\tdata, err := json.Marshal(got)\n\tif err != nil {\n\t\tt.Fatalf(\"Marshal returned error: %v\", err)\n\t}\n\n\tvar decoded map[string]map[string]any\n\tif err := json.Unmarshal(data, &decoded); err != nil {\n\t\tt.Fatalf(\"Unmarshal returned error: %v\", err)\n\t}\n\tfor name, want := range input {\n\t\tscalar, ok := want.(Value)\n\t\tif !ok {\n\t\t\tt.Fatalf(\"input %s is %T, want Value\", name, want)\n\t\t}\n\t\tencoded := decoded[name]\n\t\tif encoded[\"type\"] != string(scalar.Kind) {\n\t\t\tt.Errorf(\"%s type = %#v, want %q\", name, encoded[\"type\"], scalar.Kind)\n\t\t}\n\t\tif encoded[\"value\"] != scalar.Lexeme {\n\t\t\tt.Errorf(\"%s value = %#v, want %q\", name, encoded[\"value\"], scalar.Lexeme)\n\t\t}\n\t}\n}\n\nfunc TestTaggedPreservesNestedAndEmptyContainers(t *testing.T) {\n\tinput := Object{\n\t\t\"empty-table\": Object{},\n\t\t\"empty-array\": []any{},\n\t\t\"nested\": Object{\n\t\t\t\"values\": []any{\n\t\t\t\tValue{Kind: Integer, Lexeme: \"1\"},\n\t\t\t\tObject{\"name\": Value{Kind: String, Lexeme: \"x\"}},\n\t\t\t},\n\t\t},\n\t}\n\n\tgot, err := Tagged(input)\n\tif err != nil {\n\t\tt.Fatalf(\"Tagged returned error: %v\", err)\n\t}\n\tdata, err := json.Marshal(got)\n\tif err != nil {\n\t\tt.Fatalf(\"Marshal returned error: %v\", err)\n\t}\n\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 len(decoded[\"empty-table\"].(map[string]any)) != 0 {\n\t\tt.Errorf(\"empty table = %#v, want empty object\", decoded[\"empty-table\"])\n\t}\n\tif len(decoded[\"empty-array\"].([]any)) != 0 {\n\t\tt.Errorf(\"empty array = %#v, want empty array\", decoded[\"empty-array\"])\n\t}\n\tnested := decoded[\"nested\"].(map[string]any)\n\tvalues := nested[\"values\"].([]any)\n\tif values[0].(map[string]any)[\"value\"] != \"1\" {\n\t\tt.Errorf(\"nested integer = %#v, want tagged value 1\", values[0])\n\t}\n\tif values[1].(map[string]any)[\"name\"].(map[string]any)[\"value\"] != \"x\" {\n\t\tt.Errorf(\"nested string = %#v, want tagged value x\", values[1])\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_3","type":"command_execution","command":"/bin/bash -lc \"sed -n '220,620p' internal/toml/decode.go && sh sources/setup_harness.sh\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_3","type":"command_execution","command":"/bin/bash -lc \"sed -n '220,620p' internal/toml/decode.go && sh sources/setup_harness.sh\"","aggregated_output":"\ntoml-test v2.2.0; go1.24.6 linux/amd64; race=false; cgo=true\n","exit_code":0,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_4","type":"agent_message","text":"The existing parser has a string-specific structural limitation: statement scanning treats multiline delimiters as ordinary quotes, and `strconv.Unquote` does not implement TOML’s broader escape rules or multiline continuation semantics. I’m running the scoped authoritative cases now to establish the failure surface before patching."}}
{"type":"item.started","item":{"id":"item_5","type":"command_execution","command":"/bin/bash -lc \"sh sources/stage_test.sh 'valid/string/*'; valid=\"'$?; sh sources/stage_test.sh '\"'invalid/string/*'; invalid=\"'$?; printf '\"'valid_status=%s invalid_status=%s\\\\n' \\\"\"'$valid\" \"$invalid\"'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_5","type":"command_execution","command":"/bin/bash -lc \"sh sources/stage_test.sh 'valid/string/*'; valid=\"'$?; sh sources/stage_test.sh '\"'invalid/string/*'; invalid=\"'$?; printf '\"'valid_status=%s invalid_status=%s\\\\n' \\\"\"'$valid\" \"$invalid\"'","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/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 759941):\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 759941) (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 760008):\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 760008) (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 759944):\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 759944) (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 759972):\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 759972) (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 760007):\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 760007) (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 760011):\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 760011) (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 759916):\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 759916) (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 759970):\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 759970) (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 759940):\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 759940) (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 759973):\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 759973) (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 759996):\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 759996) (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\ntoml-test v2.2.0 [/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/toml-decoder] [no encoder]\nskipped tests: 861\n  valid tests:  12 passed, 11 failed\nencoder tests: no encoder command given\ninvalid tests:   0 passed,  0 failed\nharness: /home/barlo/.local/bin/toml-test toml-test v2.2.0; go1.24.6 linux/amd64; race=false; cgo=true\nFAIL invalid/string/bad-escape-01\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 760252):\n        1 │\u001b[0m invalid-escape = \"This string has a bad \\a escape character.\"\n\n     output from parser-cmd (PID 760252) (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 760359):\n        1 │\u001b[0m bad-uni-esc-ml-01 = \"\"\"val\\ue\"\"\"\n\n     output from parser-cmd (PID 760359) (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 760357):\n        1 │\u001b[0m bad-uni-esc-ml-02 = \"\"\"val\\Ux\"\"\"\n\n     output from parser-cmd (PID 760357) (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 760218):\n        1 │\u001b[0m bad-uni-esc-ml-03 = \"\"\"val\\U0000000\"\"\"\n\n     output from parser-cmd (PID 760218) (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 760351):\n        1 │\u001b[0m bad-uni-esc-ml-04 = \"\"\"val\\U0000\"\"\"\n\n     output from parser-cmd (PID 760351) (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 760249):\n        1 │\u001b[0m bad-uni-esc-ml-05 = \"\"\"val\\Ugggggggg\"\"\"\n\n     output from parser-cmd (PID 760249) (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 760256):\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 760256) (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 760250):\n        1 │\u001b[0m bad-uni-esc-ml-07 = \"\"\"\\uabag\"\"\"\n\n     output from parser-cmd (PID 760250) (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 760309):\n        1 │\u001b[0m answer = \"\\x33\"\n\n     output from parser-cmd (PID 760309) (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 760308):\n        1 │\u001b[0m a = \"\"\"\\UFFFFFFFF\"\"\"\n\n     output from parser-cmd (PID 760308) (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 760355):\n        1 │\u001b[0m a = \"\"\"\\U00D80000\"\"\"\n\n     output from parser-cmd (PID 760355) (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 760420):\n        1 │\u001b[0m a = \"\"\"\\@\"\"\"\n\n     output from parser-cmd (PID 760420) (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 760396):\n        1 │\u001b[0m k = \"\"\"t\\a\"\"\"\n\n     output from parser-cmd (PID 760396) (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 760469):\n        1 │\u001b[0m # \\<Space> is not a valid escape.\n        2 │\u001b[0m k = \"\"\"t\\ t\"\"\"\n\n     output from parser-cmd (PID 760469) (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 760517):\n        1 │\u001b[0m # \\<Space> is not a valid escape.\n        2 │\u001b[0m k = \"\"\"t\\ \"\"\"\n\n     output from parser-cmd (PID 760517) (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 760394):\n        1 │\u001b[0m a = \"\"\"\n        2 │\u001b[0m   foo \\ \\n\n        3 │\u001b[0m   bar\"\"\"\n\n     output from parser-cmd (PID 760394) (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 760392):\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 760392) (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\ntoml-test v2.2.0 [/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/toml-decoder] [no encoder]\nskipped tests: 807\n  valid tests:   0 passed,  0 failed\nencoder tests: no encoder command given\ninvalid tests:  60 passed, 17 failed\nvalid_status=1 invalid_status=1\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_6","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/internal/toml/decode.go","kind":"update"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_6","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/internal/toml/decode.go","kind":"update"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_7","type":"command_execution","command":"/bin/bash -lc 'gofmt -w internal/toml/decode.go && go test ./...'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_7","type":"command_execution","command":"/bin/bash -lc 'gofmt -w internal/toml/decode.go && go test ./...'","aggregated_output":"# github.com/owner/toml-decoder/internal/toml\ninternal/toml/decode.go:516:56: undefined: unicode.IsSurrogate\nFAIL\tgithub.com/owner/toml-decoder/cmd/toml-decoder [build failed]\nFAIL\tgithub.com/owner/toml-decoder/internal/toml [build failed]\nFAIL\n","exit_code":1,"status":"failed"}}
{"type":"item.started","item":{"id":"item_8","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/internal/toml/decode.go","kind":"update"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_8","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/internal/toml/decode.go","kind":"update"}],"status":"completed"}}
{"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/decode.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/decode.go","kind":"update"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_10","type":"command_execution","command":"/bin/bash -lc \"gofmt -w internal/toml/decode.go && go test ./... && sh sources/stage_test.sh 'valid/string/*'; valid=\"'$?; sh sources/stage_test.sh '\"'invalid/string/*'; invalid=\"'$?; printf '\"'valid_status=%s invalid_status=%s\\\\n' \\\"\"'$valid\" \"$invalid\"'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_10","type":"command_execution","command":"/bin/bash -lc \"gofmt -w internal/toml/decode.go && go test ./... && sh sources/stage_test.sh 'valid/string/*'; valid=\"'$?; sh sources/stage_test.sh '\"'invalid/string/*'; invalid=\"'$?; printf '\"'valid_status=%s invalid_status=%s\\\\n' \\\"\"'$valid\" \"$invalid\"'","aggregated_output":"ok  \tgithub.com/owner/toml-decoder/cmd/toml-decoder\t0.799s\nok  \tgithub.com/owner/toml-decoder/internal/toml\t0.009s\nharness: /home/barlo/.local/bin/toml-test toml-test v2.2.0; go1.24.6 linux/amd64; race=false; cgo=true\nFAIL valid/string/escape-tricky\n     unterminated value\n \n     Exit 1\n\n     input sent to parser-cmd (PID 762075):\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 762075) (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/multiline-quotes\n     unterminated value\n \n     Exit 1\n\n     input sent to parser-cmd (PID 762085):\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 762085) (stderr):\n        1 │\u001b[0m unterminated value\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\ntoml-test v2.2.0 [/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/toml-decoder] [no encoder]\nskipped tests: 861\n  valid tests:  21 passed,  2 failed\nencoder tests: no encoder command given\ninvalid tests:   0 passed,  0 failed\nharness: /home/barlo/.local/bin/toml-test toml-test v2.2.0; go1.24.6 linux/amd64; race=false; cgo=true\nFAIL invalid/string/bad-concat\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 762386):\n        1 │\u001b[0m no_concat = \"first\" \"second\"\n\n     output from parser-cmd (PID 762386) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"no_concat\": {\"type\": \"string\", \"value\": \"first\\\" \\\"second\"}\n        3 │\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]\nskipped tests: 807\n  valid tests:   0 passed,  0 failed\nencoder tests: no encoder command given\ninvalid tests:  76 passed,  1 failed\nvalid_status=1 invalid_status=1\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_11","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/internal/toml/decode.go","kind":"update"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_11","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/internal/toml/decode.go","kind":"update"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_12","type":"command_execution","command":"/bin/bash -lc \"gofmt -w internal/toml/decode.go && go test ./... && sh sources/stage_test.sh 'valid/string/*'; valid=\"'$?; sh sources/stage_test.sh '\"'invalid/string/*'; invalid=\"'$?; printf '\"'valid_status=%s invalid_status=%s\\\\n' \\\"\"'$valid\" \"$invalid\"'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_12","type":"command_execution","command":"/bin/bash -lc \"gofmt -w internal/toml/decode.go && go test ./... && sh sources/stage_test.sh 'valid/string/*'; valid=\"'$?; sh sources/stage_test.sh '\"'invalid/string/*'; invalid=\"'$?; printf '\"'valid_status=%s invalid_status=%s\\\\n' \\\"\"'$valid\" \"$invalid\"'","aggregated_output":"ok  \tgithub.com/owner/toml-decoder/cmd/toml-decoder\t(cached)\nok  \tgithub.com/owner/toml-decoder/internal/toml\t0.008s\nharness: /home/barlo/.local/bin/toml-test toml-test v2.2.0; go1.24.6 linux/amd64; race=false; cgo=true\nFAIL valid/string/escape-tricky\n     unterminated value\n \n     Exit 1\n\n     input sent to parser-cmd (PID 763305):\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 763305) (stderr):\n        1 │\u001b[0m unterminated value\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\ntoml-test v2.2.0 [/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/toml-decoder] [no encoder]\nskipped tests: 861\n  valid tests:  22 passed,  1 failed\nencoder tests: no encoder command given\ninvalid tests:   0 passed,  0 failed\nharness: /home/barlo/.local/bin/toml-test toml-test v2.2.0; go1.24.6 linux/amd64; race=false; cgo=true\nFAIL invalid/string/literal-multiline-quotes-01\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 763758):\n        1 │\u001b[0m a = '''6 apostrophes: ''''''\n\n     output from parser-cmd (PID 763758) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"a\": {\"type\": \"string\", \"value\": \"6 apostrophes: '''\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/string/literal-multiline-quotes-02\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 763770):\n        1 │\u001b[0m a = '''15 apostrophes: ''''''''''''''''''\n\n     output from parser-cmd (PID 763770) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"a\": {\"type\": \"string\", \"value\": \"15 apostrophes: '''''''''''''''\"}\n        3 │\u001b[0m }\n\n     want:\n       Exit code 1\n\nFAIL invalid/string/multiline-quotes-01\n     Expected an error, but no error was reported.\n\n     input sent to parser-cmd (PID 763769):\n        1 │\u001b[0m a = \"\"\"6 quotes: \"\"\"\"\"\"\n\n     output from parser-cmd (PID 763769) (stdout):\n        1 │\u001b[0m {\n        2 │\u001b[0m   \"a\": {\"type\": \"string\", \"value\": \"6 quotes: \\\"\\\"\\\"\"}\n        3 │\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]\nskipped tests: 807\n  valid tests:   0 passed,  0 failed\nencoder tests: no encoder command given\ninvalid tests:  74 passed,  3 failed\nvalid_status=1 invalid_status=1\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_13","type":"command_execution","command":"/bin/bash -lc \"printf '%s\\\\n' 'multiline_end_esc = \\\"\\\"\\\"When will it end? \\\\\\\\\\\\\\\"\\\"\\\"...\\\"\\\"\\\\\\\\\\\\\\\" should be here\\\\\\\\\\\"\\\"\\\"' | ./toml-decoder; printf 'status=%s\\\\n' \\\"\"'$?\"'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_13","type":"command_execution","command":"/bin/bash -lc \"printf '%s\\\\n' 'multiline_end_esc = \\\"\\\"\\\"When will it end? \\\\\\\\\\\\\\\"\\\"\\\"...\\\"\\\"\\\\\\\\\\\\\\\" should be here\\\\\\\\\\\"\\\"\\\"' | ./toml-decoder; printf 'status=%s\\\\n' \\\"\"'$?\"'","aggregated_output":"{\"multiline_end_esc\":{\"type\":\"string\",\"value\":\"When will it end? \\\\\\\"\\\"\\\"...\\\"\\\"\\\\\\\" should be here\\\\\"}}\nstatus=0\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_14","type":"command_execution","command":"/bin/bash -lc \"printf '%s\\\\n' 'multiline_unicode = \\\"\\\"\\\"' ' \\\\\\\\u00a0\\\"\\\"\\\"' 'multiline_not_unicode = \\\"\\\"\\\"' ' \\\\\\\\\\\\\\\\u0041\\\"\\\"\\\"' 'multiline_end_esc = \\\"\\\"\\\"When will it end? \\\\\\\\\\\\\\\"\\\"\\\"...\\\"\\\"\\\\\\\\\\\\\\\" should be here\\\\\\\\\\\"\\\"\\\"' \\\"lit_multiline_not_unicode = '''\\\" ' \\\\\\\\u007f'''' \\\"lit_multiline_end = '''There is no escape\\\\\\\\'''\\\" | ./toml-decoder; printf 'status=%s\\\\n' \\\"\"'$?\"'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_14","type":"command_execution","command":"/bin/bash -lc \"printf '%s\\\\n' 'multiline_unicode = \\\"\\\"\\\"' ' \\\\\\\\u00a0\\\"\\\"\\\"' 'multiline_not_unicode = \\\"\\\"\\\"' ' \\\\\\\\\\\\\\\\u0041\\\"\\\"\\\"' 'multiline_end_esc = \\\"\\\"\\\"When will it end? \\\\\\\\\\\\\\\"\\\"\\\"...\\\"\\\"\\\\\\\\\\\\\\\" should be here\\\\\\\\\\\"\\\"\\\"' \\\"lit_multiline_not_unicode = '''\\\" ' \\\\\\\\u007f'''' \\\"lit_multiline_end = '''There is no escape\\\\\\\\'''\\\" | ./toml-decoder; printf 'status=%s\\\\n' \\\"\"'$?\"'","aggregated_output":"/bin/bash: -c: line 1: unexpected EOF while looking for matching `''\n/bin/bash: -c: line 2: syntax error: unexpected end of file\n","exit_code":2,"status":"failed"}}
{"type":"item.started","item":{"id":"item_15","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/internal/toml/decode.go","kind":"update"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_15","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/internal/toml/decode.go","kind":"update"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_16","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/internal/toml/debug_test.go","kind":"add"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_16","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/internal/toml/debug_test.go","kind":"add"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_17","type":"command_execution","command":"/bin/bash -lc 'gofmt -w internal/toml/decode.go internal/toml/debug_test.go && go test ./internal/toml -run TestDebug -v'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_17","type":"command_execution","command":"/bin/bash -lc 'gofmt -w internal/toml/decode.go internal/toml/debug_test.go && go test ./internal/toml -run TestDebug -v'","aggregated_output":"=== RUN   TestDebugEscapeTricky\n    debug_test.go:15: unterminated value\n--- FAIL: TestDebugEscapeTricky (0.00s)\nFAIL\nFAIL\tgithub.com/owner/toml-decoder/internal/toml\t0.003s\nFAIL\n","exit_code":1,"status":"failed"}}
{"type":"item.started","item":{"id":"item_18","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/internal/toml/debug_test.go","kind":"update"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_18","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/internal/toml/debug_test.go","kind":"update"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_19","type":"command_execution","command":"/bin/bash -lc 'gofmt -w internal/toml/debug_test.go && go test ./internal/toml -run TestDebug -v'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_19","type":"command_execution","command":"/bin/bash -lc 'gofmt -w internal/toml/debug_test.go && go test ./internal/toml -run TestDebug -v'","aggregated_output":"=== RUN   TestDebugEscapeTricky\n    debug_test.go:16: unterminated value\n--- FAIL: TestDebugEscapeTricky (0.00s)\nFAIL\nFAIL\tgithub.com/owner/toml-decoder/internal/toml\t0.004s\nFAIL\n","exit_code":1,"status":"failed"}}
{"type":"item.started","item":{"id":"item_20","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/internal/toml/decode.go","kind":"update"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_20","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/internal/toml/decode.go","kind":"update"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_21","type":"command_execution","command":"/bin/bash -lc 'gofmt -w internal/toml/decode.go && go test ./internal/toml -run TestDebug -v'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_21","type":"command_execution","command":"/bin/bash -lc 'gofmt -w internal/toml/decode.go && go test ./internal/toml -run TestDebug -v'","aggregated_output":"=== RUN   TestDebugEscapeTricky\n    debug_test.go:16: unterminated value\n--- FAIL: TestDebugEscapeTricky (0.00s)\nFAIL\nFAIL\tgithub.com/owner/toml-decoder/internal/toml\t0.004s\nFAIL\n","exit_code":1,"status":"failed"}}
{"type":"item.started","item":{"id":"item_22","type":"command_execution","command":"/bin/bash -lc 'rg -n \"multiline_end_esc|6 apostrophes\" /home/barlo /tmp 2>/dev/null | head -20'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_22","type":"command_execution","command":"/bin/bash -lc 'rg -n \"multiline_end_esc|6 apostrophes\" /home/barlo /tmp 2>/dev/null | head -20'","aggregated_output":"/tmp/toml-suite3.out:187:       10 │\u001b[0m multiline_end_esc = \"\"\"When will it end? \\\"\"\"...\"\"\\\" should be here\\\"\"\"\"\n/tmp/toml-final.out:184:       10 │\u001b[0m multiline_end_esc = \"\"\"When will it end? \\\"\"\"...\"\"\\\" should be here\\\"\"\"\"\n/tmp/toml-suite2.out:220:       10 │\u001b[0m multiline_end_esc = \"\"\"When will it end? \\\"\"\"...\"\"\\\" should be here\\\"\"\"\"\n/home/barlo/go/pkg/mod/github.com/!burnt!sushi/toml-test@v1.0.0/tests/invalid/string/literal-multiline-quotes-1.toml:1:a = '''6 apostrophes: ''''''\n/home/barlo/go/pkg/mod/github.com/!burnt!sushi/toml-test@v1.4.0/tests/invalid/string/literal-multiline-quotes-1.toml:1:a = '''6 apostrophes: ''''''\n/home/barlo/go/pkg/mod/github.com/!burnt!sushi/toml@v1.0.0/internal/toml-test/tests/invalid/string/literal-multiline-quotes-1.toml:1:a = '''6 apostrophes: ''''''\n/home/barlo/go/pkg/mod/github.com/!burnt!sushi/toml-test@v1.3.0/tests/invalid/string/literal-multiline-quotes-1.toml:1:a = '''6 apostrophes: ''''''\n/home/barlo/go/pkg/mod/github.com/!burnt!sushi/toml-test@v1.4.0/tests/valid/string/escape-tricky.toml:10:multiline_end_esc = \"\"\"When will it end? \\\"\"\"...\"\"\\\" should be here\\\"\"\"\"\n/home/barlo/go/pkg/mod/github.com/!burnt!sushi/toml-test@v1.4.0/tests/valid/string/escape-tricky.json:18:  \"multiline_end_esc\": {\n/home/barlo/go/pkg/mod/github.com/!burnt!sushi/toml-test@v1.6.0/tests/invalid/string/literal-multiline-quotes-1.toml:1:a = '''6 apostrophes: ''''''\n/home/barlo/go/pkg/mod/github.com/!burnt!sushi/toml-test@v1.0.0/tests/valid/string/escape-tricky.toml:10:multiline_end_esc = \"\"\"When will it end? \\\"\"\"...\"\"\\\" should be here\\\"\"\"\"\n/home/barlo/go/pkg/mod/github.com/!burnt!sushi/toml-test@v1.0.0/tests/valid/string/escape-tricky.json:18:  \"multiline_end_esc\": {\n/home/barlo/go/pkg/mod/github.com/!burnt!sushi/toml@v1.0.0/internal/toml-test/tests/valid/string/escape-tricky.toml:10:multiline_end_esc = \"\"\"When will it end? \\\"\"\"...\"\"\\\" should be here\\\"\"\"\"\n/home/barlo/go/pkg/mod/github.com/!burnt!sushi/toml@v1.0.0/internal/toml-test/tests/valid/string/escape-tricky.json:18:  \"multiline_end_esc\": {\n/home/barlo/go/pkg/mod/github.com/!burnt!sushi/toml-test@v1.3.0/tests/valid/string/escape-tricky.toml:10:multiline_end_esc = \"\"\"When will it end? \\\"\"\"...\"\"\\\" should be here\\\"\"\"\"\n/home/barlo/go/pkg/mod/github.com/!burnt!sushi/toml-test@v1.3.0/tests/valid/string/escape-tricky.json:18:  \"multiline_end_esc\": {\n/home/barlo/go/pkg/mod/github.com/!burnt!sushi/toml@v1.4.0/internal/toml-test/tests/invalid/string/literal-multiline-quotes-1.toml:1:a = '''6 apostrophes: ''''''\n/home/barlo/go/pkg/mod/github.com/!burnt!sushi/toml@v1.2.2-0.20230112133702-08a2344b20c3/internal/toml-test/tests/invalid/string/literal-multiline-quotes-1.toml:1:a = '''6 apostrophes: ''''''\n/home/barlo/go/pkg/mod/github.com/!burnt!sushi/toml-test@v1.2.0/tests/invalid/string/literal-multiline-quotes-1.toml:1:a = '''6 apostrophes: ''''''\n/home/barlo/go/pkg/mod/github.com/!burnt!sushi/toml-test@v1.6.0/tests/valid/string/escape-tricky.toml:10:multiline_end_esc = \"\"\"When will it end? \\\"\"\"...\"\"\\\" should be here\\\"\"\"\"\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_23","type":"command_execution","command":"/bin/bash -lc \"cat /home/barlo/go/pkg/mod/github.com/\\\\\"'!burnt'\"\\\\\"'!sushi/toml-test@v1.4.0/tests/valid/string/escape-tricky.toml | ./toml-decoder >/tmp/out.json; printf '\"'status=%s\\\\n' \\\"\"'$?\"; tail -3 /tmp/out.json 2>/dev/null'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_23","type":"command_execution","command":"/bin/bash -lc \"cat /home/barlo/go/pkg/mod/github.com/\\\\\"'!burnt'\"\\\\\"'!sushi/toml-test@v1.4.0/tests/valid/string/escape-tricky.toml | ./toml-decoder >/tmp/out.json; printf '\"'status=%s\\\\n' \\\"\"'$?\"; tail -3 /tmp/out.json 2>/dev/null'","aggregated_output":"unterminated value\nstatus=1\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_24","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/internal/toml/decode.go","kind":"update"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_24","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/internal/toml/decode.go","kind":"update"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_25","type":"command_execution","command":"/bin/bash -lc 'gofmt -w internal/toml/decode.go && go test ./internal/toml -run TestDebug -v'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_25","type":"command_execution","command":"/bin/bash -lc 'gofmt -w internal/toml/decode.go && go test ./internal/toml -run TestDebug -v'","aggregated_output":"=== RUN   TestDebugEscapeTricky\n    debug_test.go:16: unterminated value at 233 quote '\"' triple false\n--- FAIL: TestDebugEscapeTricky (0.00s)\nFAIL\nFAIL\tgithub.com/owner/toml-decoder/internal/toml\t0.005s\nFAIL\n","exit_code":1,"status":"failed"}}
{"type":"item.started","item":{"id":"item_26","type":"command_execution","command":"/bin/bash -lc \"sed -n '10p' /home/barlo/go/pkg/mod/github.com/\\\\\"'!burnt'\"\\\\\"'!sushi/toml-test@v1.4.0/tests/valid/string/escape-tricky.toml | od -An -tc'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_26","type":"command_execution","command":"/bin/bash -lc \"sed -n '10p' /home/barlo/go/pkg/mod/github.com/\\\\\"'!burnt'\"\\\\\"'!sushi/toml-test@v1.4.0/tests/valid/string/escape-tricky.toml | od -An -tc'","aggregated_output":"   m   u   l   t   i   l   i   n   e   _   e   n   d   _   e   s\n   c       =       \"   \"   \"   W   h   e   n       w   i   l   l\n       i   t       e   n   d   ?       \\   \"   \"   \"   .   .   .\n   \"   \"   \\   \"       s   h   o   u   l   d       b   e       h\n   e   r   e   \\   \"   \"   \"   \"  \\n\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_27","type":"command_execution","command":"/bin/bash -lc \"rg -n \\\"unterminated value\\\" internal/toml/decode.go && sed -n '90,160p' internal/toml/decode.go\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_27","type":"command_execution","command":"/bin/bash -lc \"rg -n \\\"unterminated value\\\" internal/toml/decode.go && sed -n '90,160p' internal/toml/decode.go\"","aggregated_output":"154:\t\treturn nil, fmt.Errorf(\"unterminated value at %d quote %q triple %t\", len(s), quote, triple)\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\ttriple := 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 triple {\n\t\t\t\tif c == quote && i+2 < len(s) && s[i+1] == quote && s[i+2] == quote && !escapedAt(s, i) {\n\t\t\t\t\trun := 3\n\t\t\t\t\tfor i+run < len(s) && s[i+run] == quote {\n\t\t\t\t\t\trun++\n\t\t\t\t\t}\n\t\t\t\t\ti += run - 1\n\t\t\t\t\tquote, triple = 0, false\n\t\t\t\t}\n\t\t\t} else if c == quote && !escapedAt(s, i) {\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\tif i+2 < len(s) && s[i+1] == c && s[i+2] == c {\n\t\t\t\ttriple = true\n\t\t\t\ti += 2\n\t\t\t}\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 at %d quote %q triple %t\", len(s), quote, triple)\n\t}\n\tout = append(out, stripComment(s[start:]))\n\treturn out, nil\n}\n\nfunc escapedAt(s string, i int) bool {\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_28","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/internal/toml/decode.go","kind":"update"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_28","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/internal/toml/decode.go","kind":"update"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_29","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/internal/toml/debug_test.go","kind":"delete"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_29","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/internal/toml/debug_test.go","kind":"delete"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_30","type":"command_execution","command":"/bin/bash -lc \"gofmt -w internal/toml/decode.go && go test ./... && sh sources/stage_test.sh 'valid/string/*'; valid=\"'$?; sh sources/stage_test.sh '\"'invalid/string/*'; invalid=\"'$?; printf '\"'valid_status=%s invalid_status=%s\\\\n' \\\"\"'$valid\" \"$invalid\"'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_30","type":"command_execution","command":"/bin/bash -lc \"gofmt -w internal/toml/decode.go && go test ./... && sh sources/stage_test.sh 'valid/string/*'; valid=\"'$?; sh sources/stage_test.sh '\"'invalid/string/*'; invalid=\"'$?; printf '\"'valid_status=%s invalid_status=%s\\\\n' \\\"\"'$valid\" \"$invalid\"'","aggregated_output":"ok  \tgithub.com/owner/toml-decoder/cmd/toml-decoder\t(cached)\nok  \tgithub.com/owner/toml-decoder/internal/toml\t0.008s\nharness: /home/barlo/.local/bin/toml-test toml-test v2.2.0; go1.24.6 linux/amd64; race=false; cgo=true\nFAIL valid/string/escape-tricky\n     unterminated value\n \n     Exit 1\n\n     input sent to parser-cmd (PID 765680):\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 765680) (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/multiline-empty\n     line 1: invalid quote sequence in multiline string\n \n     Exit 1\n\n     input sent to parser-cmd (PID 765727):\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 765727) (stderr):\n        1 │\u001b[0m line 1: invalid quote sequence in multiline string\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\nFAIL valid/string/multiline-quotes\n     line 19: invalid quote sequence in multiline string\n \n     Exit 1\n\n     input sent to parser-cmd (PID 765728):\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 765728) (stderr):\n        1 │\u001b[0m line 19: invalid quote sequence in multiline string\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\ntoml-test v2.2.0 [/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/toml-decoder] [no encoder]\nskipped tests: 861\n  valid tests:  20 passed,  3 failed\nencoder tests: no encoder command given\ninvalid tests:   0 passed,  0 failed\nharness: /home/barlo/.local/bin/toml-test toml-test v2.2.0; go1.24.6 linux/amd64; race=false; cgo=true\ntoml-test v2.2.0 [/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/toml-decoder] [no encoder]\nskipped tests: 807\n  valid tests:   0 passed,  0 failed\nencoder tests: no encoder command given\ninvalid tests:  77 passed,  0 failed\nvalid_status=1 invalid_status=0\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_31","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/internal/toml/decode.go","kind":"update"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_31","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/internal/toml/decode.go","kind":"update"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_32","type":"command_execution","command":"/bin/bash -lc \"gofmt -w internal/toml/decode.go && sh sources/stage_test.sh 'valid/string/escape-tricky'; a=\"'$?; sh sources/stage_test.sh '\"'valid/string/multiline-quotes'; b=\"'$?; sh sources/stage_test.sh '\"'valid/string/multiline-empty'; c=\"'$?; printf '\"'%s %s %s\\\\n' \\\"\"'$a\" \"$b\" \"$c\"'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_32","type":"command_execution","command":"/bin/bash -lc \"gofmt -w internal/toml/decode.go && sh sources/stage_test.sh 'valid/string/escape-tricky'; a=\"'$?; sh sources/stage_test.sh '\"'valid/string/multiline-quotes'; b=\"'$?; sh sources/stage_test.sh '\"'valid/string/multiline-empty'; c=\"'$?; printf '\"'%s %s %s\\\\n' \\\"\"'$a\" \"$b\" \"$c\"'","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/string/escape-tricky\n     unterminated value\n \n     Exit 1\n\n     input sent to parser-cmd (PID 766525):\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 766525) (stderr):\n        1 │\u001b[0m unterminated value\n        2 │\u001b[0m\n        3 │\u001b[0m Exit 1\n\n     want:\n          <empty>\n\ntoml-test v2.2.0 [/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/toml-decoder] [no encoder]\nskipped tests: 883\n  valid tests:   0 passed,  1 failed\nencoder tests: no encoder command given\ninvalid tests:   0 passed,  0 failed\nharness: /home/barlo/.local/bin/toml-test toml-test v2.2.0; go1.24.6 linux/amd64; race=false; cgo=true\ntoml-test v2.2.0 [/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/toml-decoder] [no encoder]\nskipped tests: 883\n  valid tests:   1 passed,  0 failed\nencoder tests: no encoder command given\ninvalid tests:   0 passed,  0 failed\nharness: /home/barlo/.local/bin/toml-test toml-test v2.2.0; go1.24.6 linux/amd64; race=false; cgo=true\ntoml-test v2.2.0 [/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/toml-decoder] [no encoder]\nskipped tests: 883\n  valid tests:   1 passed,  0 failed\nencoder tests: no encoder command given\ninvalid tests:   0 passed,  0 failed\n1 0 0\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_33","type":"command_execution","command":"/bin/bash -lc \"p=/home/barlo/go/pkg/mod/github.com/\\\\\"'!burnt'\"\\\\\"'!sushi/toml-test@v1.4.0/tests/valid/string/escape-tricky.toml; for n in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do head -n \"$n\" \"$p\" | ./toml-decoder >/dev/null 2>/tmp/e; s=$?; if [ \"$s\" -ne 0 ]; then printf '\"'first failure at %s: ' \\\"\"'$n\"; tr '\"'\\\\n' ' ' </tmp/e; printf '\\\\n'; break; fi; done\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_33","type":"command_execution","command":"/bin/bash -lc \"p=/home/barlo/go/pkg/mod/github.com/\\\\\"'!burnt'\"\\\\\"'!sushi/toml-test@v1.4.0/tests/valid/string/escape-tricky.toml; for n in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do head -n \"$n\" \"$p\" | ./toml-decoder >/dev/null 2>/tmp/e; s=$?; if [ \"$s\" -ne 0 ]; then printf '\"'first failure at %s: ' \\\"\"'$n\"; tr '\"'\\\\n' ' ' </tmp/e; printf '\\\\n'; break; fi; done\"","aggregated_output":"first failure at 2: unterminated value \n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_34","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/internal/toml/decode.go","kind":"update"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_34","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/internal/toml/decode.go","kind":"update"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_35","type":"command_execution","command":"/bin/bash -lc \"gofmt -w internal/toml/decode.go && go test ./... && sh sources/stage_test.sh 'valid/string/*'; valid=\"'$?; sh sources/stage_test.sh '\"'invalid/string/*'; invalid=\"'$?; printf '\"'valid_status=%s invalid_status=%s\\\\n' \\\"\"'$valid\" \"$invalid\"'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_35","type":"command_execution","command":"/bin/bash -lc \"gofmt -w internal/toml/decode.go && go test ./... && sh sources/stage_test.sh 'valid/string/*'; valid=\"'$?; sh sources/stage_test.sh '\"'invalid/string/*'; invalid=\"'$?; printf '\"'valid_status=%s invalid_status=%s\\\\n' \\\"\"'$valid\" \"$invalid\"'","aggregated_output":"ok  \tgithub.com/owner/toml-decoder/cmd/toml-decoder\t(cached)\nok  \tgithub.com/owner/toml-decoder/internal/toml\t0.008s\nharness: /home/barlo/.local/bin/toml-test toml-test v2.2.0; go1.24.6 linux/amd64; race=false; cgo=true\ntoml-test v2.2.0 [/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/toml-decoder] [no encoder]\nskipped tests: 861\n  valid tests:  23 passed,  0 failed\nencoder tests: no encoder command given\ninvalid tests:   0 passed,  0 failed\nharness: /home/barlo/.local/bin/toml-test toml-test v2.2.0; go1.24.6 linux/amd64; race=false; cgo=true\ntoml-test v2.2.0 [/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/toml-decoder] [no encoder]\nskipped tests: 807\n  valid tests:   0 passed,  0 failed\nencoder tests: no encoder command given\ninvalid tests:  77 passed,  0 failed\nvalid_status=0 invalid_status=0\n","exit_code":0,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_36","type":"agent_message","text":"The lexical string slice now passes all 23 valid string cases and all 77 invalid string cases in toml-test v2.2.0. I’m adding focused in-language tests for the public parser boundary and then running the declared acceptance checks again, plus formatting/vet/build verification."}}
{"type":"item.started","item":{"id":"item_37","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_37","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_38","type":"command_execution","command":"/bin/bash -lc 'gofmt -w internal/toml/value_test.go && go test ./... && go vet ./... && go build ./... && gofmt -l .'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_38","type":"command_execution","command":"/bin/bash -lc 'gofmt -w internal/toml/value_test.go && go test ./... && go vet ./... && go build ./... && gofmt -l .'","aggregated_output":"ok  \tgithub.com/owner/toml-decoder/cmd/toml-decoder\t(cached)\n--- FAIL: TestDecodeStringForms (0.00s)\n    value_test.go:146: multiline = toml.Value{Kind:\"string\", Lexeme:\"first +second\"}, want string \"first second\"\nFAIL\nFAIL\tgithub.com/owner/toml-decoder/internal/toml\t0.008s\nFAIL\n","exit_code":1,"status":"failed"}}
{"type":"item.started","item":{"id":"item_39","type":"command_execution","command":"/bin/bash -lc \"sed -n '120,170p' internal/toml/value_test.go\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_39","type":"command_execution","command":"/bin/bash -lc \"sed -n '120,170p' internal/toml/value_test.go\"","aggregated_output":"\tif _, err := Decode(\"a = 1\\na = 2\"); err == nil {\n\t\tt.Fatal(\"Decode accepted duplicate key\")\n\t}\n}\n\nfunc TestDecodeStringForms(t *testing.T) {\n\tinput := \"basic = \\\"line\\\\nvalue\\\"\\n\" +\n\t\t\"literal = 'C:\\\\\\\\Users\\\\\\\\nodejs'\\n\" +\n\t\t\"multiline = \\\"\\\"\\\"\\nfirst \\\\\\n+second\\\"\\\"\\\"\\n\" +\n\t\t\"multiline-literal = '''\\nraw\\\\nvalue'''\\n\"\n\tgot, err := Decode(input)\n\tif err != nil {\n\t\tt.Fatalf(\"Decode returned error: %v\", err)\n\t}\n\twant := map[string]string{\n\t\t\"basic\":             \"line\\nvalue\",\n\t\t\"literal\":           `C:\\\\Users\\\\nodejs`,\n\t\t\"multiline\":         \"first second\",\n\t\t\"multiline-literal\": \"raw\\\\nvalue\",\n\t}\n\tfor key, expected := range want {\n\t\tvalue, ok := got[key].(Value)\n\t\tif !ok {\n\t\t\tt.Fatalf(\"%s has type %T, want Value\", key, got[key])\n\t\t}\n\t\tif value.Kind != String || value.Lexeme != expected {\n\t\t\tt.Errorf(\"%s = %#v, want string %q\", key, value, expected)\n\t\t}\n\t}\n}\n\nfunc TestDecodeRejectsInvalidStringEscapesAndControls(t *testing.T) {\n\ttests := []string{\n\t\t`value = \"bad\\q\"`,\n\t\t`value = \"bad\\uD800\"`,\n\t\t\"value = \\\"bad\\x00\\\"\",\n\t\t\"value = \\\"bad\\nline\\\"\",\n\t\t`value = \"unterminated`,\n\t}\n\tfor _, input := range tests {\n\t\tif _, err := Decode(input); err == nil {\n\t\t\tt.Errorf(\"Decode accepted invalid string %q\", input)\n\t\t}\n\t}\n}\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_40","type":"command_execution","command":"/bin/bash -lc \"nl -ba internal/toml/value_test.go | sed -n '125,135p' | od -An -tc\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_40","type":"command_execution","command":"/bin/bash -lc \"nl -ba internal/toml/value_test.go | sed -n '125,135p' | od -An -tc\"","aggregated_output":"               1   2   5  \\t   f   u   n   c       T   e   s   t\n   D   e   c   o   d   e   S   t   r   i   n   g   F   o   r   m\n   s   (   t       *   t   e   s   t   i   n   g   .   T   )    \n   {  \\n               1   2   6  \\t  \\t   i   n   p   u   t    \n   :   =       \"   b   a   s   i   c       =       \\   \"   l   i\n   n   e   \\   \\   n   v   a   l   u   e   \\   \"   \\   n   \"    \n   +  \\n               1   2   7  \\t  \\t  \\t   \"   l   i   t   e\n   r   a   l       =       '   C   :   \\   \\   \\   \\   U   s   e\n   r   s   \\   \\   \\   \\   n   o   d   e   j   s   '   \\   n   \"\n       +  \\n               1   2   8  \\t  \\t  \\t   \"   m   u   l\n   t   i   l   i   n   e       =       \\   \"   \\   \"   \\   \"   \\\n   n   f   i   r   s   t       \\   \\   \\   n   +   s   e   c   o\n   n   d   \\   \"   \\   \"   \\   \"   \\   n   \"       +  \\n        \n       1   2   9  \\t  \\t  \\t   \"   m   u   l   t   i   l   i   n\n   e   -   l   i   t   e   r   a   l       =       '   '   '   \\\n   n   r   a   w   \\   \\   n   v   a   l   u   e   '   '   '   \\\n   n   \"  \\n               1   3   0  \\t  \\t   g   o   t   ,    \n   e   r   r       :   =       D   e   c   o   d   e   (   i   n\n   p   u   t   )  \\n               1   3   1  \\t  \\t   i   f    \n   e   r   r       !   =       n   i   l       {  \\n            \n   1   3   2  \\t  \\t  \\t   t   .   F   a   t   a   l   f   (   \"\n   D   e   c   o   d   e       r   e   t   u   r   n   e   d    \n   e   r   r   o   r   :       %   v   \"   ,       e   r   r   )\n  \\n               1   3   3  \\t  \\t   }  \\n               1   3\n   4  \\t  \\t   w   a   n   t       :   =       m   a   p   [   s\n   t   r   i   n   g   ]   s   t   r   i   n   g   {  \\n        \n       1   3   5  \\t  \\t  \\t   \"   b   a   s   i   c   \"   :    \n                                                   \"   l   i   n\n   e   \\   n   v   a   l   u   e   \"   ,  \\n\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_41","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_41","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_42","type":"command_execution","command":"/bin/bash -lc \"gofmt -w internal/toml/value_test.go && go test ./... && go vet ./... && go build ./... && sh sources/stage_test.sh 'valid/string/*' && sh sources/stage_test.sh 'invalid/string/*' && git diff --check && git status --short\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_42","type":"command_execution","command":"/bin/bash -lc \"gofmt -w internal/toml/value_test.go && go test ./... && go vet ./... && go build ./... && sh sources/stage_test.sh 'valid/string/*' && sh sources/stage_test.sh 'invalid/string/*' && git diff --check && git status --short\"","aggregated_output":"ok  \tgithub.com/owner/toml-decoder/cmd/toml-decoder\t(cached)\n--- FAIL: TestDecodeStringForms (0.00s)\n    value_test.go:146: multiline = toml.Value{Kind:\"string\", Lexeme:\"first +second\"}, want string \"first second\"\nFAIL\nFAIL\tgithub.com/owner/toml-decoder/internal/toml\t0.013s\nFAIL\n","exit_code":1,"status":"failed"}}
{"type":"item.started","item":{"id":"item_43","type":"command_execution","command":"/bin/bash -lc \"sed -n '126,130p' internal/toml/value_test.go\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_43","type":"command_execution","command":"/bin/bash -lc \"sed -n '126,130p' internal/toml/value_test.go\"","aggregated_output":"\tinput := \"basic = \\\"line\\\\nvalue\\\"\\n\" +\n\t\t\"literal = 'C:\\\\\\\\Users\\\\\\\\nodejs'\\n\" +\n\t\t\"multiline = \\\"\\\"\\\"\\nfirst \\\\\\n+second\\\"\\\"\\\"\\n\" +\n\t\t\"multiline-literal = '''\\nraw\\\\nvalue'''\\n\"\n\tgot, err := Decode(input)\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_44","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_44","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_45","type":"command_execution","command":"/bin/bash -lc \"sed -n '128p' internal/toml/value_test.go | od -An -tc\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_45","type":"command_execution","command":"/bin/bash -lc \"sed -n '128p' internal/toml/value_test.go | od -An -tc\"","aggregated_output":"  \\t  \\t   \"   m   u   l   t   i   l   i   n   e       =       \\\n   \"   \\   \"   \\   \"   \\   n   f   i   r   s   t       \\   \\   \\\n   n   +   s   e   c   o   n   d   \\   \"   \\   \"   \\   \"   \\   n\n   \"       +  \\n\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_46","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_46","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_47","type":"command_execution","command":"/bin/bash -lc \"sed -n '126,132p' internal/toml/value_test.go && gofmt -w internal/toml/value_test.go && go test ./...\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_47","type":"command_execution","command":"/bin/bash -lc \"sed -n '126,132p' internal/toml/value_test.go && gofmt -w internal/toml/value_test.go && go test ./...\"","aggregated_output":"ok  \tgithub.com/owner/toml-decoder/cmd/toml-decoder\t(cached)\n--- FAIL: TestDecodeStringForms (0.00s)\n    value_test.go:146: multiline = toml.Value{Kind:\"string\", Lexeme:\"first +second\"}, want string \"first second\"\nFAIL\nFAIL\tgithub.com/owner/toml-decoder/internal/toml\t0.008s\nFAIL\n","exit_code":1,"status":"failed"}}
{"type":"item.started","item":{"id":"item_48","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_48","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_49","type":"command_execution","command":"/bin/bash -lc \"gofmt -w internal/toml/value_test.go && go test ./... && go vet ./... && go build ./... && sh sources/stage_test.sh 'valid/string/*' && sh sources/stage_test.sh 'invalid/string/*' && git diff --check && git status --short\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_49","type":"command_execution","command":"/bin/bash -lc \"gofmt -w internal/toml/value_test.go && go test ./... && go vet ./... && go build ./... && sh sources/stage_test.sh 'valid/string/*' && sh sources/stage_test.sh 'invalid/string/*' && git diff --check && git status --short\"","aggregated_output":"ok  \tgithub.com/owner/toml-decoder/cmd/toml-decoder\t(cached)\nok  \tgithub.com/owner/toml-decoder/internal/toml\t0.010s\nharness: /home/barlo/.local/bin/toml-test toml-test v2.2.0; go1.24.6 linux/amd64; race=false; cgo=true\ntoml-test v2.2.0 [/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/toml-decoder] [no encoder]\nskipped tests: 861\n  valid tests:  23 passed,  0 failed\nencoder tests: no encoder command given\ninvalid tests:   0 passed,  0 failed\nharness: /home/barlo/.local/bin/toml-test toml-test v2.2.0; go1.24.6 linux/amd64; race=false; cgo=true\ntoml-test v2.2.0 [/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/build/toml/toml-decoder] [no encoder]\nskipped tests: 807\n  valid tests:   0 passed,  0 failed\nencoder tests: no encoder command given\ninvalid tests:  77 passed,  0 failed\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_50","type":"command_execution","command":"/bin/bash -lc \"git diff --stat && git diff -- internal/toml/value_test.go | sed -n '1,220p' && git status --short\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_50","type":"command_execution","command":"/bin/bash -lc \"git diff --stat && git diff -- internal/toml/value_test.go | sed -n '1,220p' && git status --short\"","aggregated_output":"","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_51","type":"command_execution","command":"/bin/bash -lc 'git status --short --untracked-files=all; git ls-files -v internal/toml/decode.go internal/toml/value_test.go; rg -n \"decodeBasic|TestDecodeStringForms\" internal/toml'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_51","type":"command_execution","command":"/bin/bash -lc 'git status --short --untracked-files=all; git ls-files -v internal/toml/decode.go internal/toml/value_test.go; rg -n \"decodeBasic|TestDecodeStringForms\" internal/toml'","aggregated_output":"internal/toml/value_test.go:125:func TestDecodeStringForms(t *testing.T) {\ninternal/toml/decode.go:449:\t\t\tdecoded, err := decodeBasic(body, true)\ninternal/toml/decode.go:476:\traw, err := decodeBasic(s[1:end], false)\ninternal/toml/decode.go:487:func decodeBasic(s string, multiline bool) (string, error) {\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_52","type":"command_execution","command":"/bin/bash -lc 'git rev-parse --is-inside-work-tree; git status --porcelain=v1; git ls-files | head'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_52","type":"command_execution","command":"/bin/bash -lc 'git rev-parse --is-inside-work-tree; git status --porcelain=v1; git ls-files | head'","aggregated_output":"","exit_code":0,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_53","type":"agent_message","text":"All declared gates are green: Go tests, vet, build, and both authoritative string slices. The parser now handles TOML-specific escapes, Unicode scalar validation, multiline trimming/continuation, literal preservation, control-character rejection, and quote-delimiter edge cases; staged harness inputs remain unchanged."}}
{"type":"item.started","item":{"id":"item_54","type":"command_execution","command":"/bin/bash -lc \"set -eu\nprintf 'text = \\\"line\\\\\\\\nvalue\\\"\\\\n' | ./toml-decoder > /tmp/strings-process.json\nprintf \\\"text = 'C:\\\\\\\\Users\\\\\\\\nodejs'\\\\n\\\" | ./toml-decoder > /tmp/strings-literal.json\ngo test -race ./... >/tmp/strings-race.out\nprintf 'process_and_race=ok\\\\n'\ncat /tmp/strings-process.json\ncat /tmp/strings-literal.json\ngofmt -l .\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_54","type":"command_execution","command":"/bin/bash -lc \"set -eu\nprintf 'text = \\\"line\\\\\\\\nvalue\\\"\\\\n' | ./toml-decoder > /tmp/strings-process.json\nprintf \\\"text = 'C:\\\\\\\\Users\\\\\\\\nodejs'\\\\n\\\" | ./toml-decoder > /tmp/strings-literal.json\ngo test -race ./... >/tmp/strings-race.out\nprintf 'process_and_race=ok\\\\n'\ncat /tmp/strings-process.json\ncat /tmp/strings-literal.json\ngofmt -l .\"","aggregated_output":"/bin/bash: line 3: printf: missing unicode digit for \\U\nline 1: prohibited control character in string\n","exit_code":1,"status":"failed"}}
{"type":"item.started","item":{"id":"item_55","type":"command_execution","command":"/bin/bash -lc \"set -eu\nprintf '%s\\\\n' 'text = \\\"line\\\\\\\\nvalue\\\"' | ./toml-decoder > /tmp/strings-process.json\nprintf '%s\\\\n' \\\"text = 'C:\\\\\\\\Users\\\\\\\\nodejs'\\\" | ./toml-decoder > /tmp/strings-literal.json\ngo test -race ./... >/tmp/strings-race.out\nprintf 'process_and_race=ok\\\\n'\ncat /tmp/strings-process.json\ncat /tmp/strings-literal.json\ngofmt -l .\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_55","type":"command_execution","command":"/bin/bash -lc \"set -eu\nprintf '%s\\\\n' 'text = \\\"line\\\\\\\\nvalue\\\"' | ./toml-decoder > /tmp/strings-process.json\nprintf '%s\\\\n' \\\"text = 'C:\\\\\\\\Users\\\\\\\\nodejs'\\\" | ./toml-decoder > /tmp/strings-literal.json\ngo test -race ./... >/tmp/strings-race.out\nprintf 'process_and_race=ok\\\\n'\ncat /tmp/strings-process.json\ncat /tmp/strings-literal.json\ngofmt -l .\"","aggregated_output":"process_and_race=ok\n{\"text\":{\"type\":\"string\",\"value\":\"line\\\\nvalue\"}}\n{\"text\":{\"type\":\"string\",\"value\":\"C:\\\\Users\\\\nodejs\"}}\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_56","type":"command_execution","command":"/bin/bash -lc \"printf '%s\\\\n' 'text = \\\"line\\\\nvalue\\\"' | ./toml-decoder\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_56","type":"command_execution","command":"/bin/bash -lc \"printf '%s\\\\n' 'text = \\\"line\\\\nvalue\\\"' | ./toml-decoder\"","aggregated_output":"{\"text\":{\"type\":\"string\",\"value\":\"line\\nvalue\"}}\n","exit_code":0,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_57","type":"agent_message","text":"<reusable-compact filename=\"stage_test.sh\">\nRuns `go build -o toml-decoder ./cmd/toml-decoder`, then executes `sources/run_conformance.sh -run \"$1\"` against TOML_TEST_VERSION v2.2.0. Requires exactly one test-pattern argument and uses the command exit status as the verdict.\n</reusable-compact>\n\nRESULT: SUCCESS\n\nFILES CHANGED:\n- internal/toml/decode.go\n- internal/toml/value_test.go\n\nSUMMARY:\nImplemented TOML basic, multiline basic, literal, and multiline literal strings. Valid slice: 23/23; invalid slice: 77/77. Go tests, race tests, vet, build, and formatting pass.\n\nBLOCKERS:\n- None"}}
{"type":"turn.completed","usage":{"input_tokens":3329023,"cached_input_tokens":3194880,"cache_write_input_tokens":0,"output_tokens":17881,"reasoning_output_tokens":6194}}