{"type":"thread.started","thread_id":"01a00a93-c692-7750-b2de-548c0f58b764"}
{"type":"turn.started"}
{"type":"item.completed","item":{"id":"item_0","type":"agent_message","text":"I’m implementing the lexical scalar block in the authorized build directory, first checking the existing scaffold and Go toolchain, then adding scalar parsing/tests and running the declared gates."}}
{"type":"item.started","item":{"id":"item_1","type":"command_execution","command":"/bin/bash -lc \"pwd && go version && rg --files -g '\"'!sources/**'\"' -g '\"'!*.sum'\"' | sort && printf '\\\\n--- staged files ---\\\\n' && rg --files sources | sort\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_1","type":"command_execution","command":"/bin/bash -lc \"pwd && go version && rg --files -g '\"'!sources/**'\"' -g '\"'!*.sum'\"' | sort && printf '\\\\n--- staged files ---\\\\n' && rg --files sources | sort\"","aggregated_output":"go version go1.24.6 linux/amd64\ncmd/toml-decoder/main.go\ncmd/toml-decoder/main_test.go\ngo.mod\ninternal/toml/toml.go\ninternal/toml/toml_test.go\ntoml-decoder\n\n--- staged files ---\nsources/full_test.sh\nsources/run_conformance.sh\nsources/setup_harness.sh\nsources/stage_contract.sh\nsources/stage_test.sh\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_2","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,240p' internal/toml/toml.go && printf '\\\\n--- tests ---\\\\n' && sed -n '1,260p' internal/toml/toml_test.go && printf '\\\\n--- main ---\\\\n' && sed -n '1,180p' cmd/toml-decoder/main.go && printf '\\\\n--- module ---\\\\n' && 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,240p' internal/toml/toml.go && printf '\\\\n--- tests ---\\\\n' && sed -n '1,260p' internal/toml/toml_test.go && printf '\\\\n--- main ---\\\\n' && sed -n '1,180p' cmd/toml-decoder/main.go && printf '\\\\n--- module ---\\\\n' && cat go.mod\"","aggregated_output":"// Package toml provides the TOML decoder used by the command-line filter.\npackage toml\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\t\"unicode/utf8\"\n)\n\ntype scalar struct {\n\tType string `json:\"type\"`\n\tValue string `json:\"value\"`\n}\n\n// Decode parses a TOML document and returns its tagged representation.\nfunc Decode(input string) (map[string]any, error) {\n\tif !utf8.ValidString(input) {\n\t\treturn nil, fmt.Errorf(\"invalid UTF-8\")\n\t}\n\tresult := map[string]any{}\n\tcurrent := result\n\tpos := 0\n\tline := 1\n\tfor pos < len(input) {\n\t\tstart := pos\n\t\tfor pos < len(input) && input[pos] != '\\n' {\n\t\t\tpos++\n\t\t}\n\t\tif pos < len(input) {\n\t\t\tpos++\n\t\t}\n\t\tphysical := input[start:pos]\n\t\tif strings.TrimSpace(physical) == \"\" || strings.HasPrefix(strings.TrimSpace(physical), \"#\") {\n\t\t\tline++\n\t\t\tcontinue\n\t\t}\n\t\ttrimmedLine := strings.TrimSpace(physical)\n\t\tif strings.HasPrefix(trimmedLine, \"[\") {\n\t\t\tif strings.HasPrefix(trimmedLine, \"[[\") {\n\t\t\t\tif !strings.HasSuffix(strings.TrimSpace(trimmedLine), \"]]\") {\n\t\t\t\t\treturn nil, fmt.Errorf(\"line %d: invalid array table\", line)\n\t\t\t\t}\n\t\t\t\tpath, err := parseKeyPath(strings.TrimSpace(trimmedLine[2 : len(strings.TrimSpace(trimmedLine))-2]))\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, fmt.Errorf(\"line %d: %w\", line, err)\n\t\t\t\t}\n\t\t\t\tcontainer := result\n\t\t\t\tfor _, key := range path[:len(path)-1] {\n\t\t\t\t\tif next, ok := container[key].(map[string]any); ok {\n\t\t\t\t\t\tcontainer = next\n\t\t\t\t\t} else if container[key] == nil {\n\t\t\t\t\t\tnext := map[string]any{}\n\t\t\t\t\t\tcontainer[key] = next\n\t\t\t\t\t\tcontainer = next\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn nil, fmt.Errorf(\"line %d: invalid table path\", line)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tname := path[len(path)-1]\n\t\t\t\tarray, ok := container[name].([]any)\n\t\t\t\tif !ok {\n\t\t\t\t\tarray = []any{}\n\t\t\t\t}\n\t\t\t\tchild := map[string]any{}\n\t\t\t\tarray = append(array, child)\n\t\t\t\tcontainer[name] = array\n\t\t\t\tcurrent = child\n\t\t\t\tline += strings.Count(physical, \"\\n\")\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif !strings.HasSuffix(trimmedLine, \"]\") {\n\t\t\t\treturn nil, fmt.Errorf(\"line %d: invalid table\", line)\n\t\t\t}\n\t\t\tpath, err := parseKeyPath(strings.TrimSpace(trimmedLine[1 : len(trimmedLine)-1]))\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"line %d: %w\", line, err)\n\t\t\t}\n\t\t\tcurrent = result\n\t\t\tfor _, key := range path {\n\t\t\t\tif next, ok := current[key].(map[string]any); ok {\n\t\t\t\t\tcurrent = next\n\t\t\t\t} else if current[key] == nil {\n\t\t\t\t\tnext := map[string]any{}\n\t\t\t\t\tcurrent[key] = next\n\t\t\t\t\tcurrent = next\n\t\t\t\t} else {\n\t\t\t\t\treturn nil, fmt.Errorf(\"line %d: table conflicts with value\", line)\n\t\t\t\t}\n\t\t\t}\n\t\t\tline += strings.Count(physical, \"\\n\")\n\t\t\tcontinue\n\t\t}\n\t\teq := assignmentEquals(physical)\n\t\tif eq < 0 {\n\t\t\treturn nil, fmt.Errorf(\"line %d: expected key-value pair\", line)\n\t\t}\n\t\tkeys, err := parseKeyPath(strings.TrimSpace(physical[:eq]))\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"line %d: %w\", line, err)\n\t\t}\n\t\tvalueText := input[start+eq+1:]\n\t\tvalue, consumed, err := parseValue(valueText, input, start+eq+1)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"line %d: %w\", line, err)\n\t\t}\n\t\tlineEnd := strings.IndexByte(valueText, '\\n')\n\t\tif lineEnd < 0 {\n\t\t\tlineEnd = len(valueText)\n\t\t}\n\t\tif consumed > lineEnd {\n\t\t\tlineEnd = consumed\n\t\t}\n\t\ttrailing := strings.TrimSpace(valueText[consumed:lineEnd])\n\t\tif trailing != \"\" && !isComment(trailing) {\n\t\t\treturn nil, fmt.Errorf(\"line %d: trailing characters after value\", line)\n\t\t}\n\t\tif err := setPath(current, keys, value); err != nil {\n\t\t\treturn nil, fmt.Errorf(\"line %d: %w\", line, err)\n\t\t}\n\t\tpos = start + eq + 1 + consumed\n\t\tline += strings.Count(input[start:pos], \"\\n\")\n\t}\n\treturn result, nil\n}\n\nfunc assignmentEquals(line string) int {\n\tquote := byte(0)\n\tfor i := 0; i < len(line); i++ {\n\t\tif quote != 0 {\n\t\t\tif quote == '\"' && line[i] == '\\\\' {\n\t\t\t\ti++\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif line[i] == quote {\n\t\t\t\tquote = 0\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif line[i] == '\\'' || line[i] == '\"' {\n\t\t\tquote = line[i]\n\t\t\tcontinue\n\t\t}\n\t\tif line[i] == '=' {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn -1\n}\n\nfunc parseKeyPath(text string) ([]string, error) {\n\tvar keys []string\n\tfor len(strings.TrimSpace(text)) > 0 {\n\t\ttext = strings.TrimSpace(text)\n\t\tvar key string\n\t\tvar rest string\n\t\tquoted := false\n\t\tswitch text[0] {\n\t\tcase '\\'', '\"':\n\t\t\tquoted = true\n\t\t\tend, value, err := parseQuoted(text, 0, text[0] == '\"')\n\t\t\tif err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"invalid key: %w\", err)\n\t\t\t}\n\t\t\tkey, rest = value, text[end:]\n\t\tdefault:\n\t\t\ti := 0\n\t\t\tfor i < len(text) && (text[i] >= 'a' && text[i] <= 'z' || text[i] >= 'A' && text[i] <= 'Z' || text[i] >= '0' && text[i] <= '9' || text[i] == '_' || text[i] == '-') {\n\t\t\t\ti++\n\t\t\t}\n\t\t\tif i == 0 {\n\t\t\t\treturn nil, fmt.Errorf(\"invalid or empty key\")\n\t\t\t}\n\t\t\tkey, rest = text[:i], text[i:]\n\t\t}\n\t\tif key == \"\" && !quoted {\n\t\t\treturn nil, fmt.Errorf(\"invalid or empty key\")\n\t\t}\n\t\tkeys = append(keys, key)\n\t\trest = strings.TrimSpace(rest)\n\t\tif rest == \"\" {\n\t\t\treturn keys, nil\n\t\t}\n\t\tif rest[0] != '.' {\n\t\t\treturn nil, fmt.Errorf(\"invalid key separator\")\n\t\t}\n\t\ttext = rest[1:]\n\t}\n\treturn nil, fmt.Errorf(\"empty key\")\n}\n\nfunc parseValue(text, full string, absolute int) (any, int, error) {\n\tif strings.HasPrefix(strings.TrimLeft(text, \" \\t\"), \"\\n\") || strings.HasPrefix(strings.TrimLeft(text, \" \\t\"), \"\\r\") {\n\t\treturn nil, 0, fmt.Errorf(\"missing value\")\n\t}\n\ttrimmed := strings.TrimLeft(text, \" \\t\\r\\n\")\n\toffset := len(text) - len(trimmed)\n\tif trimmed == \"\" {\n\t\treturn nil, 0, fmt.Errorf(\"missing value\")\n\t}\n\tif strings.HasPrefix(trimmed, \"\\\"\\\"\\\"\") || strings.HasPrefix(trimmed, \"'''\") {\n\t\tliteral := trimmed[0] == '\\''\n\t\tvalue, end, err := parseMultiline(trimmed, literal)\n\t\treturn value, offset + end, err\n\t}\n\tif trimmed[0] == '{' {\n\t\tend := strings.IndexByte(trimmed, '}')\n\t\tif end < 0 {\n\t\t\treturn nil, 0, fmt.Errorf(\"unterminated inline table\")\n\t\t}\n\t\tbody := strings.TrimSpace(trimmed[1:end])\n\t\ttable := map[string]any{}\n\t\tif body != \"\" {\n\t\t\tfor _, item := range strings.Split(body, \",\") {\n\t\t\t\teq := strings.IndexByte(item, '=')\n\t\t\t\tif eq < 0 {\n\t\t\t\t\treturn nil, 0, fmt.Errorf(\"invalid inline table\")\n\t\t\t\t}\n\t\t\t\tkeys, err := parseKeyPath(strings.TrimSpace(item[:eq]))\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, 0, err\n\t\t\t\t}\n\t\t\t\tvalue, _, err := parseValue(strings.TrimSpace(item[eq+1:]), \"\", 0)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, 0, err\n\t\t\t\t}\n\t\t\t\tif err := setPath(table, keys, value); err != nil {\n\t\t\t\t\treturn nil, 0, err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn table, offset + end + 1, nil\n\t}\n\tif trimmed[0] == '\\'' || trimmed[0] == '\"' {\n\t\tend, value, err := parseQuoted(trimmed, 0, trimmed[0] == '\"')\n\t\treturn scalar{Type: \"string\", Value: value}, offset + end, err\n\t}\n\tend := len(trimmed)\n\tif newline := strings.IndexAny(trimmed, \"\\r\\n\"); newline >= 0 {\n\t\tend = newline\n\n--- tests ---\npackage toml\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n)\n\nfunc TestDecodeEmptyDocument(t *testing.T) {\n\tgot, err := Decode(\"\")\n\tif err != nil {\n\t\tt.Fatalf(\"Decode(\\\"\\\") returned error: %v\", err)\n\t}\n\tif want := map[string]any{}; !reflect.DeepEqual(got, want) {\n\t\tt.Fatalf(\"Decode(\\\"\\\") = %#v, want %#v\", got, want)\n\t}\n}\n\nfunc TestDecodeStringsAndDottedKeys(t *testing.T) {\n\tgot, err := Decode(\"basic = \\\"line\\\\n\\\"\\nliteral = 'a # b'\\nmessage = \\\"\\\"\\\"\\\\\\n hello\\\\\\n world\\\"\\\"\\\"\\nroot.\\\"with.dot\\\" = true\\n\")\n\tif err != nil {\n\t\tt.Fatalf(\"Decode returned error: %v\", err)\n\t}\n\tif got[\"basic\"].(scalar).Value != \"line\\n\" || got[\"literal\"].(scalar).Value != \"a # b\" || got[\"message\"].(scalar).Value != \"helloworld\" {\n\t\tt.Fatalf(\"unexpected string values: %#v\", got)\n\t}\n\troot := got[\"root\"].(map[string]any)\n\tif root[\"with.dot\"].(scalar).Value != \"true\" {\n\t\tt.Fatalf(\"unexpected quoted dotted key: %#v\", got)\n\t}\n}\n\nfunc TestDecodeRejectsKeyRedefinitionAndInvalidStrings(t *testing.T) {\n\tfor _, input := range []string{\"a = 1\\na = 2\\n\", \"a = 1\\na.b = 2\\n\", \"a = \\\"\\\\q\\\"\\n\", \"a = '''unterminated\\n\"} {\n\t\tif _, err := Decode(input); err == nil {\n\t\t\tt.Fatalf(\"Decode(%q) accepted invalid TOML\", input)\n\t\t}\n\t}\n}\n\n--- main ---\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\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\n\ttagged, err := toml.Decode(string(input))\n\tif err != nil {\n\t\tfmt.Fprintln(os.Stderr, err)\n\t\tos.Exit(1)\n\t}\n\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}\n\n--- module ---\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 '240,620p' internal/toml/toml.go && sed -n '1,220p' cmd/toml-decoder/main_test.go\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_3","type":"command_execution","command":"/bin/bash -lc \"sed -n '240,620p' internal/toml/toml.go && sed -n '1,220p' cmd/toml-decoder/main_test.go\"","aggregated_output":"\t\tend = newline\n\t}\n\tfor i, r := range trimmed {\n\t\tif r == '#' && i < end {\n\t\t\tend = i\n\t\t\tbreak\n\t\t}\n\t}\n\tword := strings.TrimSpace(trimmed[:end])\n\tif word == \"true\" || word == \"false\" {\n\t\treturn scalar{Type: \"bool\", Value: word}, offset + end, nil\n\t}\n\tif _, err := strconv.ParseInt(strings.ReplaceAll(word, \"_\", \"\"), 10, 64); err == nil {\n\t\treturn scalar{Type: \"integer\", Value: word}, offset + end, nil\n\t}\n\tif strings.Count(word, \".\") == 1 {\n\t\tif _, err := strconv.ParseFloat(strings.ReplaceAll(word, \"_\", \"\"), 64); err == nil {\n\t\t\treturn scalar{Type: \"float\", Value: word}, offset + end, nil\n\t\t}\n\t}\n\treturn nil, 0, fmt.Errorf(\"invalid value %q\", word)\n}\n\nfunc parseQuoted(s string, start int, basic bool) (int, string, error) {\n\tquote := s[start]\n\tvar b strings.Builder\n\tfor i := start + 1; i < len(s); i++ {\n\t\tif s[i] == quote {\n\t\t\treturn i + 1, b.String(), nil\n\t\t}\n\t\tif s[i] == '\\n' || s[i] == '\\r' || (s[i] < 0x20 && s[i] != '\\t') {\n\t\t\treturn 0, \"\", fmt.Errorf(\"control character in string\")\n\t\t}\n\t\tif basic && s[i] == '\\\\' {\n\t\t\tvalue, end, err := decodeEscape(s, i)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, \"\", err\n\t\t\t}\n\t\t\tb.WriteString(value)\n\t\t\ti = end - 1\n\t\t\tcontinue\n\t\t}\n\t\tb.WriteByte(s[i])\n\t}\n\treturn 0, \"\", fmt.Errorf(\"unterminated string\")\n}\n\nfunc parseMultiline(s string, literal bool) (scalar, int, error) {\n\tdelim := s[:3]\n\tend := -1\n\tfor i := 3; i < len(s); {\n\t\tif !literal && s[i] == '\\\\' {\n\t\t\tif i+1 >= len(s) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif s[i+1] == '\\r' && i+2 < len(s) && s[i+2] == '\\n' {\n\t\t\t\ti += 3\n\t\t\t} else {\n\t\t\t\ti += 2\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif s[i] != delim[0] {\n\t\t\ti++\n\t\t\tcontinue\n\t\t}\n\t\trun := 0\n\t\tfor i+run < len(s) && s[i+run] == delim[0] {\n\t\t\trun++\n\t\t}\n\t\tif run >= 3 {\n\t\t\tif run > 5 {\n\t\t\t\treturn scalar{}, 0, fmt.Errorf(\"invalid multiline delimiter\")\n\t\t\t}\n\t\t\tend = i + run - 3\n\t\t\tbreak\n\t\t}\n\t\ti += run\n\t}\n\tif end < 0 {\n\t\treturn scalar{}, 0, fmt.Errorf(\"unterminated multiline string\")\n\t}\n\tbody := s[3:end]\n\tif strings.HasPrefix(body, \"\\r\\n\") {\n\t\tbody = body[2:]\n\t} else if strings.HasPrefix(body, \"\\n\") {\n\t\tbody = body[1:]\n\t}\n\tif literal {\n\t\tif strings.ContainsAny(body, \"\\x00\\x01\\x02\\x03\\x04\\x05\\x06\\x07\\x08\\x0b\\x0c\\x0e\\x0f\\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f\") {\n\t\t\treturn scalar{}, 0, fmt.Errorf(\"control character in string\")\n\t\t}\n\t\treturn scalar{Type: \"string\", Value: body}, end + 3, nil\n\t}\n\tdecoded, err := decodeBasic(body)\n\treturn scalar{Type: \"string\", Value: decoded}, end + 3, err\n}\n\nfunc decodeBasic(s string) (string, error) {\n\tvar b strings.Builder\n\tfor i := 0; i < len(s); i++ {\n\t\tif s[i] == '\\\\' {\n\t\t\tj := i + 1\n\t\t\tfor j < len(s) && (s[j] == ' ' || s[j] == '\\t') {\n\t\t\t\tj++\n\t\t\t}\n\t\t\tif j < len(s) && (s[j] == '\\n' || s[j] == '\\r') {\n\t\t\t\ti = j\n\t\t\t\tif s[i] == '\\r' && i+1 < len(s) && s[i+1] == '\\n' {\n\t\t\t\t\ti++\n\t\t\t\t}\n\t\t\t\tfor i+1 < len(s) && (s[i+1] == ' ' || s[i+1] == '\\t' || s[i+1] == '\\n' || s[i+1] == '\\r') {\n\t\t\t\t\ti++\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t\tif s[i] == '\\\\' {\n\t\t\tvalue, end, err := decodeEscape(s, i)\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", err\n\t\t\t}\n\t\t\tb.WriteString(value)\n\t\t\ti = end - 1\n\t\t\tcontinue\n\t\t}\n\t\tif s[i] < 0x20 && s[i] != '\\n' && s[i] != '\\t' && s[i] != '\\r' {\n\t\t\treturn \"\", fmt.Errorf(\"control character in string\")\n\t\t}\n\t\tb.WriteByte(s[i])\n\t}\n\treturn b.String(), nil\n}\n\nfunc decodeEscape(s string, i int) (string, int, error) {\n\tif i+1 >= len(s) {\n\t\treturn \"\", 0, fmt.Errorf(\"invalid escape\")\n\t}\n\tshort := map[byte]string{'b': \"\\b\", 't': \"\\t\", 'n': \"\\n\", 'f': \"\\f\", 'r': \"\\r\", '\"': \"\\\"\", '\\\\': \"\\\\\"}\n\tif value, ok := short[s[i+1]]; ok {\n\t\treturn value, i + 2, nil\n\t}\n\twidth := 0\n\tif s[i+1] == 'u' {\n\t\twidth = 4\n\t}\n\tif s[i+1] == 'U' {\n\t\twidth = 8\n\t}\n\tif width == 0 || i+2+width > len(s) {\n\t\treturn \"\", 0, fmt.Errorf(\"invalid escape\")\n\t}\n\tcode, err := strconv.ParseUint(s[i+2:i+2+width], 16, 32)\n\tif err != nil || code > 0x10ffff || code >= 0xd800 && code <= 0xdfff {\n\t\treturn \"\", 0, fmt.Errorf(\"invalid Unicode escape\")\n\t}\n\treturn string(rune(code)), i + 2 + width, nil\n}\n\nfunc escaped(s string, i int) bool {\n\tn := 0\n\tfor i > 0 && s[i-1] == '\\\\' {\n\t\tn++\n\t\ti--\n\t}\n\treturn n%2 == 1\n}\nfunc isComment(s string) bool { return strings.HasPrefix(s, \"#\") }\n\nfunc setPath(root map[string]any, keys []string, value any) error {\n\tcurrent := root\n\tfor _, key := range keys[:len(keys)-1] {\n\t\texisting, ok := current[key]\n\t\tif !ok {\n\t\t\tchild := map[string]any{}\n\t\t\tcurrent[key] = child\n\t\t\tcurrent = child\n\t\t\tcontinue\n\t\t}\n\t\tchild, ok := existing.(map[string]any)\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"cannot extend scalar key %q\", key)\n\t\t}\n\t\tcurrent = child\n\t}\n\tlast := keys[len(keys)-1]\n\tif _, exists := current[last]; exists {\n\t\treturn fmt.Errorf(\"duplicate key %q\", last)\n\t}\n\tcurrent[last] = value\n\treturn nil\n}\npackage main\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"os/exec\"\n\t\"reflect\"\n\t\"strings\"\n\t\"testing\"\n)\n\nfunc TestDecoderContract(t *testing.T) {\n\ttests := []struct {\n\t\tname string\n\t\tinput string\n\t\twantJSON map[string]any\n\t}{\n\t\t{name: \"valid\", input: \"answer = 42\\n\", wantJSON: map[string]any{\"answer\": map[string]any{\"type\": \"integer\", \"value\": \"42\"}}},\n\t\t{name: \"empty\", input: \"\", wantJSON: map[string]any{}},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tcmd := exec.Command(\"go\", \"run\", \".\")\n\t\t\tcmd.Stdin = strings.NewReader(tt.input)\n\t\t\tstdout, stderr, err := runCommand(cmd)\n\t\t\tif err != nil {\n\t\t\t\tt.Fatalf(\"decoder failed: %v; stderr=%q\", err, stderr)\n\t\t\t}\n\t\t\tvar got map[string]any\n\t\t\tif err := json.Unmarshal(stdout, &got); err != nil {\n\t\t\t\tt.Fatalf(\"stdout is not JSON: %v\", err)\n\t\t\t}\n\t\t\tif !reflect.DeepEqual(got, tt.wantJSON) {\n\t\t\t\tt.Fatalf(\"decoded JSON = %#v, want %#v\", got, tt.wantJSON)\n\t\t\t}\n\t\t\tif len(stderr) != 0 {\n\t\t\t\tt.Fatalf(\"unexpected stderr: %q\", stderr)\n\t\t\t}\n\t\t})\n\t}\n}\n\nfunc TestDecoderInvalidInput(t *testing.T) {\n\tcmd := exec.Command(\"go\", \"run\", \".\")\n\tcmd.Stdin = strings.NewReader(\"answer = [\\n\")\n\tstdout, stderr, err := runCommand(cmd)\n\tif err == nil {\n\t\tt.Fatal(\"invalid TOML exited successfully\")\n\t}\n\tif len(stdout) != 0 || len(stderr) == 0 {\n\t\tt.Fatalf(\"invalid TOML streams: stdout=%q stderr=%q\", stdout, stderr)\n\t}\n}\n\nfunc runCommand(cmd *exec.Cmd) ([]byte, []byte, error) {\n\tvar stdout, stderr bytes.Buffer\n\tcmd.Stdout = &stdout\n\tcmd.Stderr = &stderr\n\terr := cmd.Run()\n\treturn stdout.Bytes(), stderr.Bytes(), err\n}\n","exit_code":0,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_4","type":"agent_message","text":"The existing parser has a scalar branch, but it currently accepts malformed numbers, misses special floats/base prefixes, and can mistake arbitrary tokens for valid values. I’m tightening that lexer with explicit TOML grammar validation while preserving the source spelling in tagged values, then I’ll exercise both unit tests and the staged conformance slices."}}
{"type":"item.started","item":{"id":"item_5","type":"command_execution","command":"/bin/bash -lc 'sh sources/setup_harness.sh'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_5","type":"command_execution","command":"/bin/bash -lc '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.started","item":{"id":"item_6","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260816.121804/build/toml/internal/toml/toml.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/20260816.121804/build/toml/internal/toml/toml.go","kind":"update"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_7","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260816.121804/build/toml/internal/toml/toml.go","kind":"update"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_7","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260816.121804/build/toml/internal/toml/toml.go","kind":"update"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_8","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260816.121804/build/toml/internal/toml/toml_test.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/20260816.121804/build/toml/internal/toml/toml_test.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/20260816.121804/build/toml/internal/toml/toml_test.go","kind":"update"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_9","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260816.121804/build/toml/internal/toml/toml_test.go","kind":"update"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_10","type":"command_execution","command":"/bin/bash -lc 'gofmt -w internal/toml/toml.go internal/toml/toml_test.go && go test ./... && go vet ./... && go build ./...'","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/toml.go internal/toml/toml_test.go && go test ./... && go vet ./... && go build ./...'","aggregated_output":"ok \tgithub.com/owner/toml-decoder/cmd/toml-decoder\t0.657s\nok \tgithub.com/owner/toml-decoder/internal/toml\t0.009s\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_11","type":"command_execution","command":"/bin/bash -lc \"sh sources/stage_test.sh 'valid/bool/**|valid/integer/**|valid/float/**'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_11","type":"command_execution","command":"/bin/bash -lc \"sh sources/stage_test.sh 'valid/bool/**|valid/integer/**|valid/float/**'\"","aggregated_output":"harness: /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/20260816.121804/build/toml/toml-decoder] [no encoder]\nskipped tests: 884\n valid tests: 0 passed, 0 failed\nencoder tests: no encoder command given\ninvalid tests: 0 passed, 0 failed\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_12","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,220p' sources/run_conformance.sh && sh sources/stage_test.sh 'valid/bool/*'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_12","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,220p' sources/run_conformance.sh && sh sources/stage_test.sh 'valid/bool/*'\"","aggregated_output":"harness: /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/20260816.121804/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\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_13","type":"command_execution","command":"/bin/bash -lc \"for pattern in 'valid/bool/*' 'valid/integer/*' 'valid/float/*' 'invalid/bool/*' 'invalid/integer/*' 'invalid/float/*'; do echo \\\"--- \"'$pattern\"; sh sources/stage_test.sh \"$pattern\" || true; done'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_13","type":"command_execution","command":"/bin/bash -lc \"for pattern in 'valid/bool/*' 'valid/integer/*' 'valid/float/*' 'invalid/bool/*' 'invalid/integer/*' 'invalid/float/*'; do echo \\\"--- \"'$pattern\"; sh sources/stage_test.sh \"$pattern\" || true; done'","aggregated_output":"harness: /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/20260816.121804/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\n--- valid/integer/*\nharness: /home/barlo/.local/bin/toml-test toml-test v2.2.0; go1.24.6 linux/amd64; race=false; cgo=true\nFAIL valid/integer/float64-max\n Values for key \"max_int\" don't match:\n Expected: 9007199254740991\n Your encoder: 9_007_199_254_740_991\n\n input sent to parser-cmd (PID 1696547):\n 1 │\u001b[0m # Maximum and minimum safe float64 natural numbers. Mainly here for\n 2 │\u001b[0m # -int-as-float.\n 3 │\u001b[0m max_int = 9_007_199_254_740_991\n 4 │\u001b[0m min_int = -9_007_199_254_740_991\n\n output from parser-cmd (PID 1696547) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"max_int\": {\"type\": \"integer\", \"value\": \"9_007_199_254_740_991\"},\n 3 │\u001b[0m \"min_int\": {\"type\": \"integer\", \"value\": \"-9_007_199_254_740_991\"}\n 4 │\u001b[0m }\n\n want:\n 1 │\u001b[0m {\n 2 │\u001b[0m \"max_int\": {\"type\": \"integer\", \"value\": \"9007199254740991\"},\n 3 │\u001b[0m \"min_int\": {\"type\": \"integer\", \"value\": \"-9007199254740991\"}\n 4 │\u001b[0m }\n\nFAIL valid/integer/integer\n Values for key \"posanswer\" don't match:\n Expected: 42\n Your encoder: +42\n\n input sent to parser-cmd (PID 1696551):\n 1 │\u001b[0m answer = 42\n 2 │\u001b[0m posanswer = +42\n 3 │\u001b[0m neganswer = -42\n 4 │\u001b[0m zero = 0\n\n output from parser-cmd (PID 1696551) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"answer\": {\"type\": \"integer\", \"value\": \"42\"},\n 3 │\u001b[0m \"neganswer\": {\"type\": \"integer\", \"value\": \"-42\"},\n 4 │\u001b[0m \"posanswer\": {\"type\": \"integer\", \"value\": \"+42\"},\n 5 │\u001b[0m \"zero\": {\"type\": \"integer\", \"value\": \"0\"}\n 6 │\u001b[0m }\n\n want:\n 1 │\u001b[0m {\n 2 │\u001b[0m \"answer\": {\"type\": \"integer\", \"value\": \"42\"},\n 3 │\u001b[0m \"neganswer\": {\"type\": \"integer\", \"value\": \"-42\"},\n 4 │\u001b[0m \"posanswer\": {\"type\": \"integer\", \"value\": \"42\"},\n 5 │\u001b[0m \"zero\": {\"type\": \"integer\", \"value\": \"0\"}\n 6 │\u001b[0m }\n\nFAIL valid/integer/literals\n Values for key \"bin1\" don't match:\n Expected: 214\n Your encoder: 0b11010110\n\n input sent to parser-cmd (PID 1696548):\n 1 │\u001b[0m bin1 = 0b11010110\n 2 │\u001b[0m bin2 = 0b1_0_1\n 3 │\u001b[0m\n 4 │\u001b[0m oct1 = 0o01234567\n 5 │\u001b[0m oct2 = 0o755\n 6 │\u001b[0m oct3 = 0o7_6_5\n 7 │\u001b[0m\n 8 │\u001b[0m hex1 = 0xDEADBEEF\n 9 │\u001b[0m hex2 = 0xdeadbeef\n 10 │\u001b[0m hex3 = 0xdead_beef\n 11 │\u001b[0m hex4 = 0x00987\n\n output from parser-cmd (PID 1696548) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"bin1\": {\"type\": \"integer\", \"value\": \"0b11010110\"},\n 3 │\u001b[0m \"bin2\": {\"type\": \"integer\", \"value\": \"0b1_0_1\"},\n 4 │\u001b[0m \"hex1\": {\"type\": \"integer\", \"value\": \"0xDEADBEEF\"},\n 5 │\u001b[0m \"hex2\": {\"type\": \"integer\", \"value\": \"0xdeadbeef\"},\n 6 │\u001b[0m \"hex3\": {\"type\": \"integer\", \"value\": \"0xdead_beef\"},\n 7 │\u001b[0m \"hex4\": {\"type\": \"integer\", \"value\": \"0x00987\"},\n 8 │\u001b[0m \"oct1\": {\"type\": \"integer\", \"value\": \"0o01234567\"},\n 9 │\u001b[0m \"oct2\": {\"type\": \"integer\", \"value\": \"0o755\"},\n 10 │\u001b[0m \"oct3\": {\"type\": \"integer\", \"value\": \"0o7_6_5\"}\n 11 │\u001b[0m }\n\n want:\n 1 │\u001b[0m {\n 2 │\u001b[0m \"bin1\": {\"type\": \"integer\", \"value\": \"214\"},\n 3 │\u001b[0m \"bin2\": {\"type\": \"integer\", \"value\": \"5\"},\n 4 │\u001b[0m \"hex1\": {\"type\": \"integer\", \"value\": \"3735928559\"},\n 5 │\u001b[0m \"hex2\": {\"type\": \"integer\", \"value\": \"3735928559\"},\n 6 │\u001b[0m \"hex3\": {\"type\": \"integer\", \"value\": \"3735928559\"},\n 7 │\u001b[0m \"hex4\": {\"type\": \"integer\", \"value\": \"2439\"},\n 8 │\u001b[0m \"oct1\": {\"type\": \"integer\", \"value\": \"342391\"},\n 9 │\u001b[0m \"oct2\": {\"type\": \"integer\", \"value\": \"493\"},\n 10 │\u001b[0m \"oct3\": {\"type\": \"integer\", \"value\": \"501\"}\n 11 │\u001b[0m }\n\nFAIL valid/integer/underscore\n Values for key \"kilo\" don't match:\n Expected: 1000\n Your encoder: 1_000\n\n input sent to parser-cmd (PID 1696549):\n 1 │\u001b[0m kilo = 1_000\n 2 │\u001b[0m x = 1_1_1_1\n\n output from parser-cmd (PID 1696549) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"kilo\": {\"type\": \"integer\", \"value\": \"1_000\"},\n 3 │\u001b[0m \"x\": {\"type\": \"integer\", \"value\": \"1_1_1_1\"}\n 4 │\u001b[0m }\n\n want:\n 1 │\u001b[0m {\n 2 │\u001b[0m \"kilo\": {\"type\": \"integer\", \"value\": \"1000\"},\n 3 │\u001b[0m \"x\": {\"type\": \"integer\", \"value\": \"1111\"}\n 4 │\u001b[0m }\n\nFAIL valid/integer/zero\n Values for key \"a2\" don't match:\n Expected: 0\n Your encoder: 0o00\n\n input sent to parser-cmd (PID 1696546):\n 1 │\u001b[0m d1 = 0\n 2 │\u001b[0m d2 = +0\n 3 │\u001b[0m d3 = -0\n 4 │\u001b[0m\n 5 │\u001b[0m h1 = 0x0\n 6 │\u001b[0m h2 = 0x00\n 7 │\u001b[0m h3 = 0x00000\n 8 │\u001b[0m\n 9 │\u001b[0m o1 = 0o0\n 10 │\u001b[0m a2 = 0o00\n 11 │\u001b[0m a3 = 0o00000\n 12 │\u001b[0m\n 13 │\u001b[0m b1 = 0b0\n 14 │\u001b[0m b2 = 0b00\n 15 │\u001b[0m b3 = 0b00000\n\n output from parser-cmd (PID 1696546) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"a2\": {\"type\": \"integer\", \"value\": \"0o00\"},\n 3 │\u001b[0m \"a3\": {\"type\": \"integer\", \"value\": \"0o00000\"},\n 4 │\u001b[0m \"b1\": {\"type\": \"integer\", \"value\": \"0b0\"},\n 5 │\u001b[0m \"b2\": {\"type\": \"integer\", \"value\": \"0b00\"},\n 6 │\u001b[0m \"b3\": {\"type\": \"integer\", \"value\": \"0b00000\"},\n 7 │\u001b[0m \"d1\": {\"type\": \"integer\", \"value\": \"0\"},\n 8 │\u001b[0m \"d2\": {\"type\": \"integer\", \"value\": \"+0\"},\n 9 │\u001b[0m \"d3\": {\"type\": \"integer\", \"value\": \"-0\"},\n 10 │\u001b[0m \"h1\": {\"type\": \"integer\", \"value\": \"0x0\"},\n 11 │\u001b[0m \"h2\": {\"type\": \"integer\", \"value\": \"0x00\"},\n 12 │\u001b[0m \"h3\": {\"type\": \"integer\", \"value\": \"0x00000\"},\n 13 │\u001b[0m \"o1\": {\"type\": \"integer\", \"value\": \"0o0\"}\n 14 │\u001b[0m }\n\n want:\n 1 │\u001b[0m {\n 2 │\u001b[0m \"a2\": {\"type\": \"integer\", \"value\": \"0\"},\n 3 │\u001b[0m \"a3\": {\"type\": \"integer\", \"value\": \"0\"},\n 4 │\u001b[0m \"b1\": {\"type\": \"integer\", \"value\": \"0\"},\n 5 │\u001b[0m \"b2\": {\"type\": \"integer\", \"value\": \"0\"},\n 6 │\u001b[0m \"b3\": {\"type\": \"integer\", \"value\": \"0\"},\n 7 │\u001b[0m \"d1\": {\"type\": \"integer\", \"value\": \"0\"},\n 8 │\u001b[0m \"d2\": {\"type\": \"integer\", \"value\": \"0\"},\n 9 │\u001b[0m \"d3\": {\"type\": \"integer\", \"value\": \"0\"},\n 10 │\u001b[0m \"h1\": {\"type\": \"integer\", \"value\": \"0\"},\n 11 │\u001b[0m \"h2\": {\"type\": \"integer\", \"value\": \"0\"},\n 12 │\u001b[0m \"h3\": {\"type\": \"integer\", \"value\": \"0\"},\n 13 │\u001b[0m \"o1\": {\"type\": \"integer\", \"value\": \"0\"}\n 14 │\u001b[0m }\n\ntoml-test v2.2.0 [/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260816.121804/build/toml/toml-decoder] [no encoder]\nskipped tests: 878\n valid tests: 1 passed, 5 failed\nencoder tests: no encoder command given\ninvalid tests: 0 passed, 0 failed\n--- valid/float/*\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/20260816.121804/build/toml/toml-decoder] [no encoder]\nskipped tests: 877\n valid tests: 7 passed, 0 failed\nencoder tests: no encoder command given\ninvalid tests: 0 passed, 0 failed\n--- invalid/bool/*\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/20260816.121804/build/toml/toml-decoder] [no encoder]\nskipped tests: 869\n valid tests: 0 passed, 0 failed\nencoder tests: no encoder command given\ninvalid tests: 15 passed, 0 failed\n--- invalid/integer/*\nharness: /home/barlo/.local/bin/toml-test toml-test v2.2.0; go1.24.6 linux/amd64; race=false; cgo=true\nFAIL invalid/integer/negative-bin\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1697223):\n 1 │\u001b[0m negative-bin = -0b11010110\n\n output from parser-cmd (PID 1697223) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"negative-bin\": {\"type\": \"integer\", \"value\": \"-0b11010110\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/integer/negative-hex\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1697349):\n 1 │\u001b[0m negative-hex = -0xff\n\n output from parser-cmd (PID 1697349) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"negative-hex\": {\"type\": \"integer\", \"value\": \"-0xff\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/integer/negative-oct\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1697399):\n 1 │\u001b[0m negative-oct = -0o755\n\n output from parser-cmd (PID 1697399) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"negative-oct\": {\"type\": \"integer\", \"value\": \"-0o755\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/integer/positive-bin\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1697287):\n 1 │\u001b[0m positive-bin = +0b11010110\n\n output from parser-cmd (PID 1697287) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"positive-bin\": {\"type\": \"integer\", \"value\": \"+0b11010110\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/integer/positive-hex\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1697348):\n 1 │\u001b[0m positive-hex = +0xff\n\n output from parser-cmd (PID 1697348) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"positive-hex\": {\"type\": \"integer\", \"value\": \"+0xff\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/integer/positive-oct\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1697246):\n 1 │\u001b[0m positive-oct = +0o755\n\n output from parser-cmd (PID 1697246) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"positive-oct\": {\"type\": \"integer\", \"value\": \"+0o755\"}\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/20260816.121804/build/toml/toml-decoder] [no encoder]\nskipped tests: 846\n valid tests: 0 passed, 0 failed\nencoder tests: no encoder command given\ninvalid tests: 32 passed, 6 failed\n--- invalid/float/*\nharness: /home/barlo/.local/bin/toml-test toml-test v2.2.0; go1.24.6 linux/amd64; race=false; cgo=true\nFAIL invalid/float/leading-zero\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1697622):\n 1 │\u001b[0m leading-zero = 03.14\n\n output from parser-cmd (PID 1697622) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"leading-zero\": {\"type\": \"float\", \"value\": \"03.14\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/float/leading-zero-neg\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1697650):\n 1 │\u001b[0m leading-zero-neg = -03.14\n\n output from parser-cmd (PID 1697650) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"leading-zero-neg\": {\"type\": \"float\", \"value\": \"-03.14\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/float/leading-zero-plus\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1697653):\n 1 │\u001b[0m leading-zero-plus = +03.14\n\n output from parser-cmd (PID 1697653) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"leading-zero-plus\": {\"type\": \"float\", \"value\": \"+03.14\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\ntoml-test v2.2.0 [/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260816.121804/build/toml/toml-decoder] [no encoder]\nskipped tests: 841\n valid tests: 0 passed, 0 failed\nencoder tests: no encoder command given\ninvalid tests: 40 passed, 3 failed\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_14","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260816.121804/build/toml/internal/toml/toml.go","kind":"update"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_14","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260816.121804/build/toml/internal/toml/toml.go","kind":"update"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_15","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260816.121804/build/toml/internal/toml/toml_test.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/20260816.121804/build/toml/internal/toml/toml_test.go","kind":"update"}],"status":"completed"}}
{"type":"item.completed","item":{"id":"item_16","type":"agent_message","text":"The conformance run clarified an important output rule: integer values must be canonical decimal strings, so I’ve normalized underscores, explicit plus signs, and base-prefixed integers while enforcing signed-decimal-only signs and 64-bit bounds. The targeted invalid cases also exposed leading-zero floats and signed base integers, which are now rejected."}}
{"type":"item.started","item":{"id":"item_17","type":"command_execution","command":"/bin/bash -lc \"gofmt -w internal/toml/toml.go internal/toml/toml_test.go && go test ./... && go vet ./... && for pattern in 'valid/integer/*' 'valid/float/*' 'invalid/integer/*' 'invalid/float/*'; do echo \\\"--- \"'$pattern\"; sh sources/stage_test.sh \"$pattern\" || exit 1; done'","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/toml.go internal/toml/toml_test.go && go test ./... && go vet ./... && for pattern in 'valid/integer/*' 'valid/float/*' 'invalid/integer/*' 'invalid/float/*'; do echo \\\"--- \"'$pattern\"; sh sources/stage_test.sh \"$pattern\" || exit 1; done'","aggregated_output":"ok \tgithub.com/owner/toml-decoder/cmd/toml-decoder\t(cached)\nok \tgithub.com/owner/toml-decoder/internal/toml\t0.012s\n--- valid/integer/*\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/20260816.121804/build/toml/toml-decoder] [no encoder]\nskipped tests: 878\n valid tests: 6 passed, 0 failed\nencoder tests: no encoder command given\ninvalid tests: 0 passed, 0 failed\n--- valid/float/*\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/20260816.121804/build/toml/toml-decoder] [no encoder]\nskipped tests: 877\n valid tests: 7 passed, 0 failed\nencoder tests: no encoder command given\ninvalid tests: 0 passed, 0 failed\n--- invalid/integer/*\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/20260816.121804/build/toml/toml-decoder] [no encoder]\nskipped tests: 846\n valid tests: 0 passed, 0 failed\nencoder tests: no encoder command given\ninvalid tests: 38 passed, 0 failed\n--- invalid/float/*\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/20260816.121804/build/toml/toml-decoder] [no encoder]\nskipped tests: 841\n valid tests: 0 passed, 0 failed\nencoder tests: no encoder command given\ninvalid tests: 43 passed, 0 failed\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_18","type":"command_execution","command":"/bin/bash -lc \"sh sources/stage_test.sh 'valid/bool/**|valid/integer/**|valid/float/**' && sh sources/stage_test.sh 'invalid/bool/**|invalid/integer/**|invalid/float/**'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_18","type":"command_execution","command":"/bin/bash -lc \"sh sources/stage_test.sh 'valid/bool/**|valid/integer/**|valid/float/**' && sh sources/stage_test.sh 'invalid/bool/**|invalid/integer/**|invalid/float/**'\"","aggregated_output":"harness: /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/20260816.121804/build/toml/toml-decoder] [no encoder]\nskipped tests: 884\n valid tests: 0 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/20260816.121804/build/toml/toml-decoder] [no encoder]\nskipped tests: 884\n valid tests: 0 passed, 0 failed\nencoder tests: no encoder command given\ninvalid tests: 0 passed, 0 failed\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_19","type":"command_execution","command":"/bin/bash -lc 'sh sources/full_test.sh'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_19","type":"command_execution","command":"/bin/bash -lc 'sh sources/full_test.sh'","aggregated_output":"harness: /home/barlo/.local/bin/toml-test toml-test v2.2.0; go1.24.6 linux/amd64; race=false; cgo=true\nFAIL valid/array/array\n line 1: invalid value \"[1, 2, 3, ]\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700101):\n 1 │\u001b[0m ints = [1, 2, 3, ]\n 2 │\u001b[0m floats = [1.1, 2.1, 3.1]\n 3 │\u001b[0m strings = [\"a\", \"b\", \"c\"]\n 4 │\u001b[0m dates = [\n 5 │\u001b[0m \t1987-07-05T17:45:00Z,\n 6 │\u001b[0m \t1979-05-27T07:32:00,\n 7 │\u001b[0m \t2006-06-01,\n 8 │\u001b[0m \t11:00:00,\n 9 │\u001b[0m ]\n 10 │\u001b[0m comments = [\n 11 │\u001b[0m 1,\n 12 │\u001b[0m 2, #this is ok\n 13 │\u001b[0m ]\n\n output from parser-cmd (PID 1700101) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[1, 2, 3, ]\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/array/array-subtables\n line 2: table conflicts with value\n \n Exit 1\n\n input sent to parser-cmd (PID 1700070):\n 1 │\u001b[0m [[arr]]\n 2 │\u001b[0m [arr.subtab]\n 3 │\u001b[0m val=1\n 4 │\u001b[0m\n 5 │\u001b[0m [[arr]]\n 6 │\u001b[0m [arr.subtab]\n 7 │\u001b[0m val=2\n\n output from parser-cmd (PID 1700070) (stderr):\n 1 │\u001b[0m line 2: table conflicts with value\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/array/bool\n line 1: invalid value \"[true, false]\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700212):\n 1 │\u001b[0m a = [true, false]\n\n output from parser-cmd (PID 1700212) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[true, false]\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/array/empty\n line 1: invalid value \"[[[[[]]]]]\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700069):\n 1 │\u001b[0m thevoid = [[[[[]]]]]\n\n output from parser-cmd (PID 1700069) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[[[[[]]]]]\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/array/hetergeneous\n line 1: invalid value \"[[1, 2], [\\\"a\\\", \\\"b\\\"], [1.1, 2.1]]\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700211):\n 1 │\u001b[0m mixed = [[1, 2], [\"a\", \"b\"], [1.1, 2.1]]\n\n output from parser-cmd (PID 1700211) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[[1, 2], [\\\"a\\\", \\\"b\\\"], [1.1, 2.1]]\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/array/mixed-int-array\n line 1: invalid value \"[1, [\\\"Arrays are not integers.\\\"]]\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700140):\n 1 │\u001b[0m arrays-and-ints = [1, [\"Arrays are not integers.\"]]\n\n output from parser-cmd (PID 1700140) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[1, [\\\"Arrays are not integers.\\\"]]\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/array/mixed-int-float\n line 1: invalid value \"[1, 1.1]\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700144):\n 1 │\u001b[0m ints-and-floats = [1, 1.1]\n\n output from parser-cmd (PID 1700144) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[1, 1.1]\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/array/mixed-int-string\n line 1: invalid value \"[\\\"hi\\\", 42]\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700208):\n 1 │\u001b[0m strings-and-ints = [\"hi\", 42]\n\n output from parser-cmd (PID 1700208) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[\\\"hi\\\", 42]\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/array/mixed-string-table\n line 1: invalid value \"[\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700204):\n 1 │\u001b[0m contributors = [\n 2 │\u001b[0m \"Foo Bar <foo@example.com>\",\n 3 │\u001b[0m { name = \"Baz Qux\", email = \"bazqux@example.com\", url = \"https://example.com/bazqux\" }\n 4 │\u001b[0m ]\n 5 │\u001b[0m\n 6 │\u001b[0m # Start with a table as the first element. This tests a case that some libraries\n 7 │\u001b[0m # might have where they will check if the first entry is a table/map/hash/assoc\n 8 │\u001b[0m # array and then encode it as a table array. This was a reasonable thing to do\n 9 │\u001b[0m # before TOML 1.0 since arrays could only contain one type, but now it's no\n 10 │\u001b[0m # longer.\n 11 │\u001b[0m mixed = [{k=\"a\"}, \"b\", 1]\n\n output from parser-cmd (PID 1700204) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/array/nested\n line 1: invalid value \"[[\\\"a\\\"], [\\\"b\\\"]]\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700099):\n 1 │\u001b[0m nest = [[\"a\"], [\"b\"]]\n\n output from parser-cmd (PID 1700099) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[[\\\"a\\\"], [\\\"b\\\"]]\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/array/nested-double\n line 1: invalid value \"[\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700297):\n 1 │\u001b[0m nest = [\n 2 │\u001b[0m \t[\n 3 │\u001b[0m \t\t[\"a\"],\n 4 │\u001b[0m \t\t[1, 2, [3]]\n 5 │\u001b[0m \t]\n 6 │\u001b[0m ]\n\n output from parser-cmd (PID 1700297) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/array/nested-inline-table\n line 1: invalid value \"[ { b = {} } ]\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700209):\n 1 │\u001b[0m a = [ { b = {} } ]\n\n output from parser-cmd (PID 1700209) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[ { b = {} } ]\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/array/nospaces\n line 1: invalid value \"[1,2,3]\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700149):\n 1 │\u001b[0m ints = [1,2,3]\n\n output from parser-cmd (PID 1700149) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[1,2,3]\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/array/string-quote-comma-01\n line 1: invalid value \"[\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700100):\n 1 │\u001b[0m title = [\n 2 │\u001b[0m \"Client: \\\"XXXX\\\", Job: XXXX\",\n 3 │\u001b[0m \"Code: XXXX\"\n 4 │\u001b[0m ]\n\n output from parser-cmd (PID 1700100) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/array/string-quote-comma-02\n line 1: invalid value \"[ \\\" \\\\\\\", \\\",]\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700143):\n 1 │\u001b[0m title = [ \" \\\", \",]\n\n output from parser-cmd (PID 1700143) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[ \\\" \\\\\\\", \\\",]\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/array/string-with-comma-01\n line 1: invalid value \"[\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700151):\n 1 │\u001b[0m title = [\n 2 │\u001b[0m \"Client: XXXX, Job: XXXX\",\n 3 │\u001b[0m \"Code: XXXX\"\n 4 │\u001b[0m ]\n\n output from parser-cmd (PID 1700151) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/array/string-with-comma-02\n line 1: invalid value \"[\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700152):\n 1 │\u001b[0m title = [\n 2 │\u001b[0m \"\"\"Client: XXXX,\n 3 │\u001b[0m Job: XXXX\"\"\",\n 4 │\u001b[0m \"Code: XXXX\"\n 5 │\u001b[0m ]\n\n output from parser-cmd (PID 1700152) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/array/strings\n line 1: invalid value \"[ \\\"all\\\", 'strings', \\\"\\\"\\\"are the same\\\"\\\"\\\", '''type''']\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700102):\n 1 │\u001b[0m string_array = [ \"all\", 'strings', \"\"\"are the same\"\"\", '''type''']\n\n output from parser-cmd (PID 1700102) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[ \\\"all\\\", 'strings', \\\"\\\"\\\"are the same\\\"\\\"\\\", '''type''']\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/array/table-array-string-backslash\n line 1: invalid value \"[ { bar=\\\"\\\\\\\"{{baz}}\\\\\\\"\\\"} ]\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700104):\n 1 │\u001b[0m foo = [ { bar=\"\\\"{{baz}}\\\"\"} ]\n\n output from parser-cmd (PID 1700104) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[ { bar=\\\"\\\\\\\"{{baz}}\\\\\\\"\\\"} ]\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/array/trailing-comma\n line 1: invalid value \"[1,]\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700196):\n 1 │\u001b[0m arr-1 = [1,]\n 2 │\u001b[0m\n 3 │\u001b[0m arr-2 = [2,3,]\n 4 │\u001b[0m\n 5 │\u001b[0m arr-3 = [4,\n 6 │\u001b[0m ]\n 7 │\u001b[0m\n 8 │\u001b[0m arr-4 = [\n 9 │\u001b[0m \t5,\n 10 │\u001b[0m \t6,\n 11 │\u001b[0m ]\n\n output from parser-cmd (PID 1700196) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[1,]\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/comment/everywhere\n line 7: invalid table\n \n Exit 1\n\n input sent to parser-cmd (PID 1700106):\n 1 │\u001b[0m # Top comment.\n 2 │\u001b[0m # Top comment.\n 3 │\u001b[0m # Top comment.\n 4 │\u001b[0m\n 5 │\u001b[0m # [no-extraneous-groups-please]\n 6 │\u001b[0m\n 7 │\u001b[0m [group] # Comment\n 8 │\u001b[0m answer = 42 # Comment\n 9 │\u001b[0m # no-extraneous-keys-please = 999\n 10 │\u001b[0m # Inbetween comment.\n 11 │\u001b[0m more = [ # Comment\n 12 │\u001b[0m # What about multiple # comments?\n 13 │\u001b[0m # Can you handle it?\n 14 │\u001b[0m #\n 15 │\u001b[0m # Evil.\n 16 │\u001b[0m # Evil.\n 17 │\u001b[0m 42, 42, # Comments within arrays are fun.\n 18 │\u001b[0m # What about multiple # comments?\n 19 │\u001b[0m # Can you handle it?\n 20 │\u001b[0m #\n 21 │\u001b[0m # Evil.\n 22 │\u001b[0m # Evil.\n 23 │\u001b[0m # ] Did I fool you?\n 24 │\u001b[0m ] # Hopefully not.\n 25 │\u001b[0m\n 26 │\u001b[0m # Make sure the space between the datetime and \"#\" isn't lexed.\n 27 │\u001b[0m dt = 1979-05-27T07:32:12-07:00 # c\n 28 │\u001b[0m d = 1979-05-27 # Comment\n 29 │\u001b[0m\n 30 │\u001b[0m [[aot]] # Comment\n 31 │\u001b[0m k = 98 # Comment\n 32 │\u001b[0m [[aot]]# Comment\n 33 │\u001b[0m k = 99# Comment\n\n output from parser-cmd (PID 1700106) (stderr):\n 1 │\u001b[0m line 7: invalid table\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/comment/tricky\n line 1: invalid table\n \n Exit 1\n\n input sent to parser-cmd (PID 1700141):\n 1 │\u001b[0m [section]#attached comment\n 2 │\u001b[0m #[notsection]\n 3 │\u001b[0m one = \"11\"#cmt\n 4 │\u001b[0m two = \"22#\"\n 5 │\u001b[0m three = '#'\n 6 │\u001b[0m\n 7 │\u001b[0m four = \"\"\"# no comment\n 8 │\u001b[0m # nor this\n 9 │\u001b[0m #also not comment\"\"\"#is_comment\n 10 │\u001b[0m\n 11 │\u001b[0m five = 5.5#66\n 12 │\u001b[0m six = 6#7\n 13 │\u001b[0m 8 = \"eight\"\n 14 │\u001b[0m #nine = 99\n 15 │\u001b[0m ten = 10e2#1\n 16 │\u001b[0m eleven = 1.11e1#23\n 17 │\u001b[0m\n 18 │\u001b[0m [\"hash#tag\"]\n 19 │\u001b[0m \"#!\" = \"hash bang\"\n 20 │\u001b[0m arr3 = [ \"#\", '#', \"\"\"###\"\"\" ]\n 21 │\u001b[0m arr4 = [ 1,# 9, 9,\n 22 │\u001b[0m 2#,9\n 23 │\u001b[0m ,#9\n 24 │\u001b[0m 3#]\n 25 │\u001b[0m ,4]\n 26 │\u001b[0m arr5 = [[[[#[\"#\"],\n 27 │\u001b[0m [\"#\"]]]]#]\n 28 │\u001b[0m ]\n 29 │\u001b[0m tbl1 = { \"#\" = '}#'}#}}\n\n output from parser-cmd (PID 1700141) (stderr):\n 1 │\u001b[0m line 1: invalid table\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/datetime/datetime\n line 1: invalid value \"1987-07-05 17:45:00Z\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700103):\n 1 │\u001b[0m space = 1987-07-05 17:45:00Z\n 2 │\u001b[0m\n 3 │\u001b[0m # ABNF is case-insensitive, both \"Z\" and \"z\" must be supported.\n 4 │\u001b[0m lower = 1987-07-05t17:45:00z\n\n output from parser-cmd (PID 1700103) (stderr):\n 1 │\u001b[0m line 1: invalid value \"1987-07-05 17:45:00Z\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/datetime/edge\n line 1: invalid value \"0001-01-01 00:00:00Z\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700150):\n 1 │\u001b[0m first-offset = 0001-01-01 00:00:00Z\n 2 │\u001b[0m first-local = 0001-01-01 00:00:00\n 3 │\u001b[0m first-date = 0001-01-01\n 4 │\u001b[0m\n 5 │\u001b[0m last-offset = 9999-12-31 23:59:59Z\n 6 │\u001b[0m last-local = 9999-12-31 23:59:59\n 7 │\u001b[0m last-date = 9999-12-31\n\n output from parser-cmd (PID 1700150) (stderr):\n 1 │\u001b[0m line 1: invalid value \"0001-01-01 00:00:00Z\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/datetime/leap-year\n line 1: invalid value \"2000-02-29 15:15:15Z\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700205):\n 1 │\u001b[0m 2000-datetime = 2000-02-29 15:15:15Z\n 2 │\u001b[0m 2000-datetime-local = 2000-02-29 15:15:15\n 3 │\u001b[0m 2000-date = 2000-02-29\n 4 │\u001b[0m\n 5 │\u001b[0m 2024-datetime = 2024-02-29 15:15:15Z\n 6 │\u001b[0m 2024-datetime-local = 2024-02-29 15:15:15\n 7 │\u001b[0m 2024-date = 2024-02-29\n\n output from parser-cmd (PID 1700205) (stderr):\n 1 │\u001b[0m line 1: invalid value \"2000-02-29 15:15:15Z\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/datetime/local\n line 1: invalid value \"1987-07-05T17:45:00\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700247):\n 1 │\u001b[0m local = 1987-07-05T17:45:00\n 2 │\u001b[0m milli = 1977-12-21T10:32:00.555\n 3 │\u001b[0m space = 1987-07-05 17:45:00\n\n output from parser-cmd (PID 1700247) (stderr):\n 1 │\u001b[0m line 1: invalid value \"1987-07-05T17:45:00\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/datetime/local-date\n line 1: invalid value \"1987-07-05\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700210):\n 1 │\u001b[0m bestdayever = 1987-07-05\n\n output from parser-cmd (PID 1700210) (stderr):\n 1 │\u001b[0m line 1: invalid value \"1987-07-05\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/datetime/local-time\n line 1: invalid value \"17:45:00\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700214):\n 1 │\u001b[0m besttimeever = 17:45:00\n 2 │\u001b[0m milliseconds = 10:32:00.555\n\n output from parser-cmd (PID 1700214) (stderr):\n 1 │\u001b[0m line 1: invalid value \"17:45:00\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/datetime/milliseconds\n line 1: invalid value \"1987-07-05T17:45:56.123Z\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700252):\n 1 │\u001b[0m utc1 = 1987-07-05T17:45:56.123Z\n 2 │\u001b[0m utc2 = 1987-07-05T17:45:56.6Z\n 3 │\u001b[0m wita1 = 1987-07-05T17:45:56.123+08:00\n 4 │\u001b[0m wita2 = 1987-07-05T17:45:56.6+08:00\n\n output from parser-cmd (PID 1700252) (stderr):\n 1 │\u001b[0m line 1: invalid value \"1987-07-05T17:45:56.123Z\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/datetime/timezone\n line 1: invalid value \"1987-07-05T17:45:56Z\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700251):\n 1 │\u001b[0m utc = 1987-07-05T17:45:56Z\n 2 │\u001b[0m pdt = 1987-07-05T17:45:56-05:00\n 3 │\u001b[0m nzst = 1987-07-05T17:45:56+12:00\n 4 │\u001b[0m nzdt = 1987-07-05T17:45:56+13:00 # DST\n\n output from parser-cmd (PID 1700251) (stderr):\n 1 │\u001b[0m line 1: invalid value \"1987-07-05T17:45:56Z\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/example\n line 1: invalid value \"1987-07-05T17:45:00Z\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700272):\n 1 │\u001b[0m best-day-ever = 1987-07-05T17:45:00Z\n 2 │\u001b[0m\n 3 │\u001b[0m [numtheory]\n 4 │\u001b[0m boring = false\n 5 │\u001b[0m perfection = [6, 28, 496]\n\n output from parser-cmd (PID 1700272) (stderr):\n 1 │\u001b[0m line 1: invalid value \"1987-07-05T17:45:00Z\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/inline-table/array-01\n line 1: invalid value \"[ {'a'= 1}, {'a'= 2} ]\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700319):\n 1 │\u001b[0m arr = [ {'a'= 1}, {'a'= 2} ]\n 2 │\u001b[0m\n 3 │\u001b[0m people = [{first_name = \"Bruce\", last_name = \"Springsteen\"},\n 4 │\u001b[0m {first_name = \"Eric\", last_name = \"Clapton\"},\n 5 │\u001b[0m {first_name = \"Bob\", last_name = \"Seger\"}]\n\n output from parser-cmd (PID 1700319) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[ {'a'= 1}, {'a'= 2} ]\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/inline-table/array-02\n line 4: invalid value \"[\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700320):\n 1 │\u001b[0m # \"No newlines are allowed between the curly braces unless they are valid within\n 2 │\u001b[0m # a value\"\n 3 │\u001b[0m\n 4 │\u001b[0m a = { a = [\n 5 │\u001b[0m ]}\n\n output from parser-cmd (PID 1700320) (stderr):\n 1 │\u001b[0m line 4: invalid value \"[\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/inline-table/array-03\n line 1: invalid value \"[\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700343):\n 1 │\u001b[0m b = { a = [\n 2 │\u001b[0m \t\t1,\n 3 │\u001b[0m \t\t2,\n 4 │\u001b[0m \t], b = [\n 5 │\u001b[0m \t\t3,\n 6 │\u001b[0m \t\t4,\n 7 │\u001b[0m \t]}\n\n output from parser-cmd (PID 1700343) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/inline-table/empty\n line 3: invalid value \"[ { not_empty = 1 }, {} ]\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700348):\n 1 │\u001b[0m empty1 = {}\n 2 │\u001b[0m empty2 = { }\n 3 │\u001b[0m empty_in_array = [ { not_empty = 1 }, {} ]\n 4 │\u001b[0m empty_in_array2 = [{},{not_empty=1}]\n 5 │\u001b[0m many_empty = [{},{},{}]\n 6 │\u001b[0m nested_empty = {\"empty\"={}}\n 7 │\u001b[0m with_cmt ={ }#nothing here\n\n output from parser-cmd (PID 1700348) (stderr):\n 1 │\u001b[0m line 3: invalid value \"[ { not_empty = 1 }, {} ]\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/inline-table/inline-table\n line 5: invalid value \"[{ \\\"a\\\" = 1 }, { \\\"b\\\" = 2 }]\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700368):\n 1 │\u001b[0m name = { first = \"Tom\", last = \"Preston-Werner\" }\n 2 │\u001b[0m point = { x = 1, y = 2 }\n 3 │\u001b[0m simple = { a = 1 }\n 4 │\u001b[0m str-key = { \"a\" = 1 }\n 5 │\u001b[0m table-array = [{ \"a\" = 1 }, { \"b\" = 2 }]\n\n output from parser-cmd (PID 1700368) (stderr):\n 1 │\u001b[0m line 5: invalid value \"[{ \\\"a\\\" = 1 }, { \\\"b\\\" = 2 }]\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/inline-table/key-dotted-05\n line 1: invalid value \"[{a.b = 1}]\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700374):\n 1 │\u001b[0m arr-1 = [{a.b = 1}]\n 2 │\u001b[0m arr-2 = [\"str\", {a.b = 1}]\n 3 │\u001b[0m\n 4 │\u001b[0m arr-3 = [{a.b = 1}, {a.b = 2}]\n 5 │\u001b[0m arr-4 = [\"str\", {a.b = 1}, {a.b = 2}]\n\n output from parser-cmd (PID 1700374) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[{a.b = 1}]\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/inline-table/key-dotted-06\n line 1: invalid value \"[\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700375):\n 1 │\u001b[0m top.dot.dot = [\n 2 │\u001b[0m \t{dot.dot.dot = 1},\n 3 │\u001b[0m \t{dot.dot.dot = 2},\n 4 │\u001b[0m ]\n\n output from parser-cmd (PID 1700375) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/inline-table/key-dotted-07\n line 1: invalid value \"[\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700456):\n 1 │\u001b[0m arr = [\n 2 │\u001b[0m \t{a.b = [{c.d = 1}]}\n 3 │\u001b[0m ]\n\n output from parser-cmd (PID 1700456) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/inline-table/nest\n line 1: unterminated inline table\n \n Exit 1\n\n input sent to parser-cmd (PID 1700408):\n 1 │\u001b[0m tbl_tbl_empty = { tbl_0 = {} }\n 2 │\u001b[0m tbl_tbl_val = { tbl_1 = { one = 1 } }\n 3 │\u001b[0m tbl_arr_tbl = { arr_tbl = [ { one = 1 } ] }\n 4 │\u001b[0m arr_tbl_tbl = [ { tbl = { one = 1 } } ]\n 5 │\u001b[0m\n 6 │\u001b[0m # Array-of-array-of-table is interesting because it can only\n 7 │\u001b[0m # be represented in inline form.\n 8 │\u001b[0m arr_arr_tbl_empty = [ [ {} ] ]\n 9 │\u001b[0m arr_arr_tbl_val = [ [ { one = 1 } ] ]\n 10 │\u001b[0m arr_arr_tbls = [ [ { one = 1 }, { two = 2 } ] ]\n\n output from parser-cmd (PID 1700408) (stderr):\n 1 │\u001b[0m line 1: unterminated inline table\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/inline-table/spaces\n line 2: invalid value \"[\\\"derive\\\"\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700409):\n 1 │\u001b[0m # https://github.com/toml-lang/toml-test/issues/146\n 2 │\u001b[0m clap-1 = { version = \"4\" , features = [\"derive\", \"cargo\"] }\n 3 │\u001b[0m\n 4 │\u001b[0m # Contains some literal tabs!\n 5 │\u001b[0m clap-2 = { version = \"4\"\t \t,\t \tfeatures = [ \"derive\" \t , \t \"cargo\" ] , nest = { \t \"a\" = 'x' , \t 'b' = [ 1.5 , 9.0 ] } }\n\n output from parser-cmd (PID 1700409) (stderr):\n 1 │\u001b[0m line 2: invalid value \"[\\\"derive\\\"\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/multibyte\n line 9: invalid value \"[ \\\"] \\\", \\\"\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700664):\n 1 │\u001b[0m # Test multibyte throughout\n 2 │\u001b[0m\n 3 │\u001b[0m # Tèƨƭ ƒïℓè ƒôř TÓM£\n 4 │\u001b[0m # Óñℓ¥ ƭλïƨ ôñè ƭřïèƨ ƭô è₥úℓáƭè á TÓM£ ƒïℓè ωřïƭƭèñ β¥ á úƨèř ôƒ ƭλè ƙïñδ ôƒ ƥářƨèř ωřïƭèřƨ ƥřôβáβℓ¥ λáƭè\n 5 │\u001b[0m\n 6 │\u001b[0m ['𝐭𝐛𝐥']\n 7 │\u001b[0m string = \"𝓼𝓽𝓻𝓲𝓷𝓰 - #\" # \" 𝓼𝓽𝓻𝓲𝓷𝓰\n 8 │\u001b[0m \t['𝐭𝐛𝐥'.sub]\n 9 │\u001b[0m \t'𝕒𝕣𝕣𝕒𝕪' = [ \"] \", \" # \"] # ] 𝓪𝓻𝓻𝓪𝔂\n 10 │\u001b[0m \t'𝕒𝕣𝕣𝕒𝕪𝟚' = [ \"Tèƨƭ #11 ]ƥřôƲèδ ƭλáƭ\", \"Éжƥèřï₥èñƭ #9 ωáƨ á ƨúççèƨƨ\" ]\n 11 │\u001b[0m \t# Ýôú δïδñ'ƭ ƭλïñƙ ïƭ'δ áƨ èáƨ¥ áƨ çλúçƙïñϱ ôúƭ ƭλè ℓáƨƭ #, δïδ ¥ôú?\n 12 │\u001b[0m \tanother_test_string = \"§á₥è ƭλïñϱ, βúƭ ωïƭλ á ƨƭřïñϱ #\"\n 13 │\u001b[0m \tescapes = \" Âñδ ωλèñ \\\"'ƨ ářè ïñ ƭλè ƨƭřïñϱ, áℓôñϱ ωïƭλ # \\\"\" # \"áñδ çô₥₥èñƭƨ ářè ƭλèřè ƭôô\"\n 14 │\u001b[0m \t# Tλïñϱƨ ωïℓℓ ϱèƭ λářδèř\n 15 │\u001b[0m \t\t['𝐭𝐛𝐥'.sub.\"βïƭ#\"]\n 16 │\u001b[0m \t\t\"ωλáƭ?\" = \"Ýôú δôñ'ƭ ƭλïñƙ ƨô₥è úƨèř ωôñ'ƭ δô ƭλáƭ?\"\n 17 │\u001b[0m \t\tmulti_line_array = [\n 18 │\u001b[0m \t\t\t\"]\",\n 19 │\u001b[0m \t\t\t# ] Óλ ¥èƨ Ì δïδ\n 20 │\u001b[0m \t\t\t]\n\n output from parser-cmd (PID 1700664) (stderr):\n 1 │\u001b[0m line 9: invalid value \"[ \\\"] \\\", \\\"\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/spec-1.0.0/array-0\n line 1: invalid value \"[ 1, 2, 3 ]\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700575):\n 1 │\u001b[0m integers = [ 1, 2, 3 ]\n 2 │\u001b[0m colors = [ \"red\", \"yellow\", \"green\" ]\n 3 │\u001b[0m nested_arrays_of_ints = [ [ 1, 2 ], [3, 4, 5] ]\n 4 │\u001b[0m nested_mixed_array = [ [ 1, 2 ], [\"a\", \"b\", \"c\"] ]\n 5 │\u001b[0m string_array = [ \"all\", 'strings', \"\"\"are the same\"\"\", '''type''' ]\n 6 │\u001b[0m\n 7 │\u001b[0m # Mixed-type arrays are allowed\n 8 │\u001b[0m numbers = [ 0.1, 0.2, 0.5, 1, 2, 5 ]\n 9 │\u001b[0m contributors = [\n 10 │\u001b[0m \"Foo Bar <foo@example.com>\",\n 11 │\u001b[0m { name = \"Baz Qux\", email = \"bazqux@example.com\", url = \"https://example.com/bazqux\" }\n 12 │\u001b[0m ]\n\n output from parser-cmd (PID 1700575) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[ 1, 2, 3 ]\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/spec-1.0.0/array-1\n line 1: invalid value \"[\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700531):\n 1 │\u001b[0m integers2 = [\n 2 │\u001b[0m 1, 2, 3\n 3 │\u001b[0m ]\n 4 │\u001b[0m\n 5 │\u001b[0m integers3 = [\n 6 │\u001b[0m 1,\n 7 │\u001b[0m 2, # this is ok\n 8 │\u001b[0m ]\n\n output from parser-cmd (PID 1700531) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/spec-1.0.0/array-of-tables-0\n line 5: invalid array table\n \n Exit 1\n\n input sent to parser-cmd (PID 1700530):\n 1 │\u001b[0m [[products]]\n 2 │\u001b[0m name = \"Hammer\"\n 3 │\u001b[0m sku = 738594937\n 4 │\u001b[0m\n 5 │\u001b[0m [[products]] # empty table within the array\n 6 │\u001b[0m\n 7 │\u001b[0m [[products]]\n 8 │\u001b[0m name = \"Nail\"\n 9 │\u001b[0m sku = 284758393\n 10 │\u001b[0m\n 11 │\u001b[0m color = \"gray\"\n\n output from parser-cmd (PID 1700530) (stderr):\n 1 │\u001b[0m line 5: invalid array table\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/spec-1.0.0/array-of-tables-1\n line 4: invalid table\n \n Exit 1\n\n input sent to parser-cmd (PID 1700709):\n 1 │\u001b[0m [[fruits]]\n 2 │\u001b[0m name = \"apple\"\n 3 │\u001b[0m\n 4 │\u001b[0m [fruits.physical] # subtable\n 5 │\u001b[0m color = \"red\"\n 6 │\u001b[0m shape = \"round\"\n 7 │\u001b[0m\n 8 │\u001b[0m [[fruits.varieties]] # nested array of tables\n 9 │\u001b[0m name = \"red delicious\"\n 10 │\u001b[0m\n 11 │\u001b[0m [[fruits.varieties]]\n 12 │\u001b[0m name = \"granny smith\"\n 13 │\u001b[0m\n 14 │\u001b[0m\n 15 │\u001b[0m [[fruits]]\n 16 │\u001b[0m name = \"banana\"\n 17 │\u001b[0m\n 18 │\u001b[0m [[fruits.varieties]]\n 19 │\u001b[0m name = \"plantain\"\n\n output from parser-cmd (PID 1700709) (stderr):\n 1 │\u001b[0m line 4: invalid table\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/spec-1.0.0/array-of-tables-2\n line 1: invalid value \"[ { x = 1, y = 2, z = 3 },\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700638):\n 1 │\u001b[0m points = [ { x = 1, y = 2, z = 3 },\n 2 │\u001b[0m { x = 7, y = 8, z = 9 },\n 3 │\u001b[0m { x = 2, y = 4, z = 8 } ]\n\n output from parser-cmd (PID 1700638) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[ { x = 1, y = 2, z = 3 },\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/spec-1.0.0/local-date-0\n line 1: invalid value \"1979-05-27\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700704):\n 1 │\u001b[0m ld1 = 1979-05-27\n\n output from parser-cmd (PID 1700704) (stderr):\n 1 │\u001b[0m line 1: invalid value \"1979-05-27\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/spec-1.0.0/local-date-time-0\n line 1: invalid value \"1979-05-27T07:32:00\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700706):\n 1 │\u001b[0m ldt1 = 1979-05-27T07:32:00\n 2 │\u001b[0m ldt2 = 1979-05-27T00:32:00.999\n\n output from parser-cmd (PID 1700706) (stderr):\n 1 │\u001b[0m line 1: invalid value \"1979-05-27T07:32:00\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/spec-1.0.0/local-time-0\n line 1: invalid value \"07:32:00\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700707):\n 1 │\u001b[0m lt1 = 07:32:00\n 2 │\u001b[0m lt2 = 00:32:00.999\n\n output from parser-cmd (PID 1700707) (stderr):\n 1 │\u001b[0m line 1: invalid value \"07:32:00\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/spec-1.0.0/offset-date-time-0\n line 1: invalid value \"1979-05-27T07:32:00Z\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700708):\n 1 │\u001b[0m odt1 = 1979-05-27T07:32:00Z\n 2 │\u001b[0m odt2 = 1979-05-27T00:32:00-07:00\n 3 │\u001b[0m odt3 = 1979-05-27T00:32:00.999-07:00\n\n output from parser-cmd (PID 1700708) (stderr):\n 1 │\u001b[0m line 1: invalid value \"1979-05-27T07:32:00Z\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/spec-1.0.0/offset-date-time-1\n line 1: invalid value \"1979-05-27 07:32:00Z\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700739):\n 1 │\u001b[0m odt4 = 1979-05-27 07:32:00Z\n\n output from parser-cmd (PID 1700739) (stderr):\n 1 │\u001b[0m line 1: invalid value \"1979-05-27 07:32:00Z\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/spec-1.0.0/table-3\n line 1: invalid table\n \n Exit 1\n\n input sent to parser-cmd (PID 1700895):\n 1 │\u001b[0m [a.b.c] # this is best practice\n 2 │\u001b[0m [ d.e.f ] # same as [d.e.f]\n 3 │\u001b[0m [ g . h . i ] # same as [g.h.i]\n 4 │\u001b[0m [ j . \"ʞ\" . 'l' ] # same as [j.\"ʞ\".'l']\n\n output from parser-cmd (PID 1700895) (stderr):\n 1 │\u001b[0m line 1: invalid table\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/spec-1.0.0/table-4\n line 4: invalid table\n \n Exit 1\n\n input sent to parser-cmd (PID 1700900):\n 1 │\u001b[0m # [x] you\n 2 │\u001b[0m # [x.y] don't\n 3 │\u001b[0m # [x.y.z] need these\n 4 │\u001b[0m [x.y.z.w] # for this to work\n 5 │\u001b[0m\n 6 │\u001b[0m [x] # defining a super-table afterward is ok\n\n output from parser-cmd (PID 1700900) (stderr):\n 1 │\u001b[0m line 4: invalid table\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/spec-1.0.0/table-7\n line 8: invalid value \"1999-08-04\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700902):\n 1 │\u001b[0m # Top-level table begins.\n 2 │\u001b[0m name = \"Fido\"\n 3 │\u001b[0m breed = \"pug\"\n 4 │\u001b[0m\n 5 │\u001b[0m # Top-level table ends.\n 6 │\u001b[0m [owner]\n 7 │\u001b[0m name = \"Regina Dogman\"\n 8 │\u001b[0m member_since = 1999-08-04\n\n output from parser-cmd (PID 1700902) (stderr):\n 1 │\u001b[0m line 8: invalid value \"1999-08-04\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/spec-1.0.0/table-9\n line 8: invalid table\n \n Exit 1\n\n input sent to parser-cmd (PID 1700995):\n 1 │\u001b[0m [fruit]\n 2 │\u001b[0m apple.color = \"red\"\n 3 │\u001b[0m apple.taste.sweet = true\n 4 │\u001b[0m\n 5 │\u001b[0m # [fruit.apple] # INVALID\n 6 │\u001b[0m # [fruit.apple.taste] # INVALID\n 7 │\u001b[0m\n 8 │\u001b[0m [fruit.apple.texture] # you can add sub-tables\n 9 │\u001b[0m smooth = true\n\n output from parser-cmd (PID 1700995) (stderr):\n 1 │\u001b[0m line 8: invalid table\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/spec-example-1\n line 7: invalid value \"1979-05-27T07:32:00-08:00\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700998):\n 1 │\u001b[0m # This is a TOML document. Boom.\n 2 │\u001b[0m\n 3 │\u001b[0m title = \"TOML Example\"\n 4 │\u001b[0m\n 5 │\u001b[0m [owner]\n 6 │\u001b[0m name = \"Lance Uppercut\"\n 7 │\u001b[0m dob = 1979-05-27T07:32:00-08:00 # First class dates? Why not?\n 8 │\u001b[0m\n 9 │\u001b[0m [database]\n 10 │\u001b[0m server = \"192.168.1.1\"\n 11 │\u001b[0m ports = [ 8001, 8001, 8002 ]\n 12 │\u001b[0m connection_max = 5000\n 13 │\u001b[0m enabled = true\n 14 │\u001b[0m\n 15 │\u001b[0m [servers]\n 16 │\u001b[0m\n 17 │\u001b[0m # You can indent as you please. Tabs or spaces. TOML don't care.\n 18 │\u001b[0m [servers.alpha]\n 19 │\u001b[0m ip = \"10.0.0.1\"\n 20 │\u001b[0m dc = \"eqdc10\"\n 21 │\u001b[0m\n 22 │\u001b[0m [servers.beta]\n 23 │\u001b[0m ip = \"10.0.0.2\"\n 24 │\u001b[0m dc = \"eqdc10\"\n 25 │\u001b[0m\n 26 │\u001b[0m [clients]\n 27 │\u001b[0m data = [ [\"gamma\", \"delta\"], [1, 2] ]\n 28 │\u001b[0m\n 29 │\u001b[0m # Line breaks are OK when inside arrays\n 30 │\u001b[0m hosts = [\n 31 │\u001b[0m \"alpha\",\n 32 │\u001b[0m \"omega\"\n 33 │\u001b[0m ]\n\n output from parser-cmd (PID 1700998) (stderr):\n 1 │\u001b[0m line 7: invalid value \"1979-05-27T07:32:00-08:00\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/spec-example-1-compact\n line 5: invalid value \"1979-05-27T07:32:00-08:00\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1700815):\n 1 │\u001b[0m #Useless spaces eliminated.\n 2 │\u001b[0m title=\"TOML Example\"\n 3 │\u001b[0m [owner]\n 4 │\u001b[0m name=\"Lance Uppercut\"\n 5 │\u001b[0m dob=1979-05-27T07:32:00-08:00#First class dates\n 6 │\u001b[0m [database]\n 7 │\u001b[0m server=\"192.168.1.1\"\n 8 │\u001b[0m ports=[8001,8001,8002]\n 9 │\u001b[0m connection_max=5000\n 10 │\u001b[0m enabled=true\n 11 │\u001b[0m [servers]\n 12 │\u001b[0m [servers.alpha]\n 13 │\u001b[0m ip=\"10.0.0.1\"\n 14 │\u001b[0m dc=\"eqdc10\"\n 15 │\u001b[0m [servers.beta]\n 16 │\u001b[0m ip=\"10.0.0.2\"\n 17 │\u001b[0m dc=\"eqdc10\"\n 18 │\u001b[0m [clients]\n 19 │\u001b[0m data=[[\"gamma\",\"delta\"],[1,2]]\n 20 │\u001b[0m hosts=[\n 21 │\u001b[0m \"alpha\",\n 22 │\u001b[0m \"omega\"\n 23 │\u001b[0m ]\n\n output from parser-cmd (PID 1700815) (stderr):\n 1 │\u001b[0m line 5: invalid value \"1979-05-27T07:32:00-08:00\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/table/array-nest\n line 4: invalid table path\n \n Exit 1\n\n input sent to parser-cmd (PID 1700993):\n 1 │\u001b[0m [[albums]]\n 2 │\u001b[0m name = \"Born to Run\"\n 3 │\u001b[0m\n 4 │\u001b[0m [[albums.songs]]\n 5 │\u001b[0m name = \"Jungleland\"\n 6 │\u001b[0m\n 7 │\u001b[0m [[albums.songs]]\n 8 │\u001b[0m name = \"Meeting Across the River\"\n 9 │\u001b[0m\n 10 │\u001b[0m [[albums]]\n 11 │\u001b[0m name = \"Born in the USA\"\n 12 │\u001b[0m\n 13 │\u001b[0m [[albums.songs]]\n 14 │\u001b[0m name = \"Glory Days\"\n 15 │\u001b[0m\n 16 │\u001b[0m [[albums.songs]]\n 17 │\u001b[0m name = \"Dancing in the Dark\"\n\n output from parser-cmd (PID 1700993) (stderr):\n 1 │\u001b[0m line 4: invalid table path\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/table/array-table-array\n line 2: invalid table path\n \n Exit 1\n\n input sent to parser-cmd (PID 1701001):\n 1 │\u001b[0m [[a]]\n 2 │\u001b[0m [[a.b]]\n 3 │\u001b[0m [a.b.c]\n 4 │\u001b[0m d = \"val0\"\n 5 │\u001b[0m [[a.b]]\n 6 │\u001b[0m [a.b.c]\n 7 │\u001b[0m d = \"val1\"\n\n output from parser-cmd (PID 1701001) (stderr):\n 1 │\u001b[0m line 2: invalid table path\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/table/without-super\n line 4: invalid table\n \n Exit 1\n\n input sent to parser-cmd (PID 1701080):\n 1 │\u001b[0m # [x] you\n 2 │\u001b[0m # [x.y] don't\n 3 │\u001b[0m # [x.y.z] need these\n 4 │\u001b[0m [x.y.z.w] # for this to work\n 5 │\u001b[0m [x] # defining a super-table afterwards is ok\n\n output from parser-cmd (PID 1701080) (stderr):\n 1 │\u001b[0m line 4: invalid table\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/table/without-super-with-values\n line 4: invalid table\n \n Exit 1\n\n input sent to parser-cmd (PID 1701074):\n 1 │\u001b[0m # [x] you\n 2 │\u001b[0m # [x.y] don't\n 3 │\u001b[0m # [x.y.z] need these\n 4 │\u001b[0m [x.y.z.w] # for this to work\n 5 │\u001b[0m a = 1\n 6 │\u001b[0m b = 2\n 7 │\u001b[0m [x] # defining a super-table afterwards is ok\n 8 │\u001b[0m c = 3\n 9 │\u001b[0m d = 4\n\n output from parser-cmd (PID 1701074) (stderr):\n 1 │\u001b[0m line 4: invalid table\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL invalid/control/bare-cr\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1701299):\n 1 │\u001b[0m # The following line contains a single carriage return control character\r\n 2 │\u001b[0m \r\n\n output from parser-cmd (PID 1701299) (stdout):\n 1 │\u001b[0m {}\n\n want:\n Exit code 1\n\nFAIL invalid/control/comment-cr\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1701328):\n 1 │\u001b[0m comment-cr = \"Carriage return in comment\" # \ra=1\n\n output from parser-cmd (PID 1701328) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"comment-cr\": {\"type\": \"string\", \"value\": \"Carriage return in comment\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/control/comment-del\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1701338):\n 1 │\u001b[0m comment-del = \"0x7f\" # \n\n output from parser-cmd (PID 1701338) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"comment-del\": {\"type\": \"string\", \"value\": \"0x7f\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/control/comment-ff\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1701327):\n 1 │\u001b[0m comment-ff = \"0x7f\" # \f\n\n output from parser-cmd (PID 1701327) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"comment-ff\": {\"type\": \"string\", \"value\": \"0x7f\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/control/comment-lf\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1701333):\n 1 │\u001b[0m comment-lf = \"ctrl-P\" # \u0010\n\n output from parser-cmd (PID 1701333) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"comment-lf\": {\"type\": \"string\", \"value\": \"ctrl-P\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/control/comment-null\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1701395):\n 1 │\u001b[0m comment-null = \"null\" # \u0000\n\n output from parser-cmd (PID 1701395) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"comment-null\": {\"type\": \"string\", \"value\": \"null\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/control/comment-us\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1701359):\n 1 │\u001b[0m comment-us = \"ctrl-_\" # \u001f\n\n output from parser-cmd (PID 1701359) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"comment-us\": {\"type\": \"string\", \"value\": \"ctrl-_\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/control/multi-del\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1701487):\n 1 │\u001b[0m multi-del = \"\"\"null\"\"\"\n\n output from parser-cmd (PID 1701487) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"multi-del\": {\"type\": \"string\", \"value\": \"null\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/control/only-ff\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1701486):\n 1 │\u001b[0m \f\n\n output from parser-cmd (PID 1701486) (stdout):\n 1 │\u001b[0m {}\n\n want:\n Exit code 1\n\nFAIL invalid/control/only-vt\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1701360):\n 1 │\u001b[0m \u000b\n\n output from parser-cmd (PID 1701360) (stdout):\n 1 │\u001b[0m {}\n\n want:\n Exit code 1\n\nFAIL invalid/control/rawmulti-del\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1701362):\n 1 │\u001b[0m rawmulti-del = '''null'''\n\n output from parser-cmd (PID 1701362) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"rawmulti-del\": {\"type\": \"string\", \"value\": \"null\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/control/rawstring-del\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1701407):\n 1 │\u001b[0m rawstring-del = 'null'\n\n output from parser-cmd (PID 1701407) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"rawstring-del\": {\"type\": \"string\", \"value\": \"null\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/control/string-del\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1701429):\n 1 │\u001b[0m string-del = \"null\"\n\n output from parser-cmd (PID 1701429) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"string-del\": {\"type\": \"string\", \"value\": \"null\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/encoding/ideographic-space\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1701666):\n 1 │\u001b[0m # First on next line is U+3000 IDEOGRAPHIC SPACE\n 2 │\u001b[0m foo = \"bar\"\n\n output from parser-cmd (PID 1701666) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"foo\": {\"type\": \"string\", \"value\": \"bar\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/inline-table/linebreak-01\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1702049):\n 1 │\u001b[0m # No newlines are allowed between the curly braces unless they are valid within\n 2 │\u001b[0m # a value.\n 3 │\u001b[0m simple = { a = 1\n 4 │\u001b[0m }\n\n output from parser-cmd (PID 1702049) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"simple\": {\n 3 │\u001b[0m \"a\": {\"type\": \"integer\", \"value\": \"1\"}\n 4 │\u001b[0m }\n 5 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/inline-table/linebreak-02\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1701973):\n 1 │\u001b[0m t = {a=1,\n 2 │\u001b[0m b=2}\n\n output from parser-cmd (PID 1701973) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"t\": {\n 3 │\u001b[0m \"a\": {\"type\": \"integer\", \"value\": \"1\"},\n 4 │\u001b[0m \"b\": {\"type\": \"integer\", \"value\": \"2\"}\n 5 │\u001b[0m }\n 6 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/inline-table/linebreak-03\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1701963):\n 1 │\u001b[0m t = {a=1\n 2 │\u001b[0m ,b=2}\n\n output from parser-cmd (PID 1701963) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"t\": {\n 3 │\u001b[0m \"a\": {\"type\": \"integer\", \"value\": \"1\"},\n 4 │\u001b[0m \"b\": {\"type\": \"integer\", \"value\": \"2\"}\n 5 │\u001b[0m }\n 6 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/inline-table/linebreak-04\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1702067):\n 1 │\u001b[0m json_like = {\n 2 │\u001b[0m first = \"Tom\",\n 3 │\u001b[0m last = \"Preston-Werner\"\n 4 │\u001b[0m }\n\n output from parser-cmd (PID 1702067) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"json_like\": {\n 3 │\u001b[0m \"first\": {\"type\": \"string\", \"value\": \"Tom\"},\n 4 │\u001b[0m \"last\": {\"type\": \"string\", \"value\": \"Preston-Werner\"}\n 5 │\u001b[0m }\n 6 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/inline-table/overwrite-02\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1702071):\n 1 │\u001b[0m a={}\n 2 │\u001b[0m # Inline tables are immutable and can't be extended\n 3 │\u001b[0m [a.b]\n\n output from parser-cmd (PID 1702071) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"a\": {\n 3 │\u001b[0m \"b\": {}\n 4 │\u001b[0m }\n 5 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/spec-1.0.0/inline-table-2-0\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1702788):\n 1 │\u001b[0m [product]\n 2 │\u001b[0m type = { name = \"Nail\" }\n 3 │\u001b[0m type.edible = false # INVALID\n\n output from parser-cmd (PID 1702788) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"product\": {\n 3 │\u001b[0m \"type\": {\n 4 │\u001b[0m \"edible\": {\"type\": \"bool\", \"value\": \"false\"},\n 5 │\u001b[0m \"name\": {\"type\": \"string\", \"value\": \"Nail\"}\n 6 │\u001b[0m }\n 7 │\u001b[0m }\n 8 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/table/append-with-dotted-keys-01\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1703174):\n 1 │\u001b[0m # First a.b.c defines a table: a.b.c = {z=9}\n 2 │\u001b[0m #\n 3 │\u001b[0m # Then we define a.b.c.t = \"str\" to add a str to the above table, making it:\n 4 │\u001b[0m #\n 5 │\u001b[0m # a.b.c = {z=9, t=\"...\"}\n 6 │\u001b[0m #\n 7 │\u001b[0m # While this makes sense, logically, it was decided this is not valid TOML as\n 8 │\u001b[0m # it's too confusing/convoluted.\n 9 │\u001b[0m #\n 10 │\u001b[0m # See: https://github.com/toml-lang/toml/issues/846\n 11 │\u001b[0m # https://github.com/toml-lang/toml/pull/859\n 12 │\u001b[0m\n 13 │\u001b[0m [a.b.c]\n 14 │\u001b[0m z = 9\n 15 │\u001b[0m\n 16 │\u001b[0m [a]\n 17 │\u001b[0m b.c.t = \"Using dotted keys to add to [a.b.c] after explicitly defining it above is not allowed\"\n\n output from parser-cmd (PID 1703174) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"a\": {\n 3 │\u001b[0m \"b\": {\n 4 │\u001b[0m \"c\": {\n 5 │\u001b[0m \"z\": {\"type\": \"integer\", \"value\": \"9\"},\n 6 │\u001b[0m \"t\": {\n 7 │\u001b[0m \"type\": \"string\",\n 8 │\u001b[0m \"value\": \"Using dotted keys to add to [a.b.c] after explicitly defining it above is not allowed\"\n 9 │\u001b[0m }\n 10 │\u001b[0m }\n 11 │\u001b[0m }\n 12 │\u001b[0m }\n 13 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/table/append-with-dotted-keys-02\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1703175):\n 1 │\u001b[0m # This is the same issue as in injection-1.toml, except that nests one level\n 2 │\u001b[0m # deeper. See that file for a more complete description.\n 3 │\u001b[0m\n 4 │\u001b[0m [a.b.c.d]\n 5 │\u001b[0m z = 9\n 6 │\u001b[0m\n 7 │\u001b[0m [a]\n 8 │\u001b[0m b.c.d.k.t = \"Using dotted keys to add to [a.b.c.d] after explicitly defining it above is not allowed\"\n\n output from parser-cmd (PID 1703175) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"a\": {\n 3 │\u001b[0m \"b\": {\n 4 │\u001b[0m \"c\": {\n 5 │\u001b[0m \"d\": {\n 6 │\u001b[0m \"z\": {\"type\": \"integer\", \"value\": \"9\"},\n 7 │\u001b[0m \"k\": {\n 8 │\u001b[0m \"t\": {\n 9 │\u001b[0m \"type\": \"string\",\n 10 │\u001b[0m \"value\": \"Using dotted keys to add to [a.b.c.d] after explicitly defining it above is not allowed\"\n 11 │\u001b[0m }\n 12 │\u001b[0m }\n 13 │\u001b[0m }\n 14 │\u001b[0m }\n 15 │\u001b[0m }\n 16 │\u001b[0m }\n 17 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/table/append-with-dotted-keys-04\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1703209):\n 1 │\u001b[0m [dependencies.foo]\n 2 │\u001b[0m version = \"0.16\"\n 3 │\u001b[0m\n 4 │\u001b[0m [dependencies]\n 5 │\u001b[0m libc = \"0.2\"\n 6 │\u001b[0m\n 7 │\u001b[0m [dependencies]\n 8 │\u001b[0m rand = \"0.3.14\"\n\n output from parser-cmd (PID 1703209) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"dependencies\": {\n 3 │\u001b[0m \"libc\": {\"type\": \"string\", \"value\": \"0.2\"},\n 4 │\u001b[0m \"rand\": {\"type\": \"string\", \"value\": \"0.3.14\"},\n 5 │\u001b[0m \"foo\": {\n 6 │\u001b[0m \"version\": {\"type\": \"string\", \"value\": \"0.16\"}\n 7 │\u001b[0m }\n 8 │\u001b[0m }\n 9 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/table/append-with-dotted-keys-08\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1703213):\n 1 │\u001b[0m [a.b.c]\n 2 │\u001b[0m z = 9\n 3 │\u001b[0m\n 4 │\u001b[0m [[totally_unrelated]]\n 5 │\u001b[0m x = 123\n 6 │\u001b[0m\n 7 │\u001b[0m [a]\n 8 │\u001b[0m b.c.t = \"this should NOT be allowed\"\n\n output from parser-cmd (PID 1703213) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"totally_unrelated\": [{\n 3 │\u001b[0m \"x\": {\"type\": \"integer\", \"value\": \"123\"}\n 4 │\u001b[0m }],\n 5 │\u001b[0m \"a\": {\n 6 │\u001b[0m \"b\": {\n 7 │\u001b[0m \"c\": {\n 8 │\u001b[0m \"t\": {\"type\": \"string\", \"value\": \"this should NOT be allowed\"},\n 9 │\u001b[0m \"z\": {\"type\": \"integer\", \"value\": \"9\"}\n 10 │\u001b[0m }\n 11 │\u001b[0m }\n 12 │\u001b[0m }\n 13 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/table/array-implicit\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1703292):\n 1 │\u001b[0m # This test is a bit tricky. It should fail because the first use of\n 2 │\u001b[0m # `[[albums.songs]]` without first declaring `albums` implies that `albums`\n 3 │\u001b[0m # must be a table. The alternative would be quite weird. Namely, it wouldn't\n 4 │\u001b[0m # comply with the TOML spec: \"Each double-bracketed sub-table will belong to\n 5 │\u001b[0m # the most *recently* defined table element *above* it.\"\n 6 │\u001b[0m #\n 7 │\u001b[0m # This is in contrast to the *valid* test, table-array-implicit where\n 8 │\u001b[0m # `[[albums.songs]]` works by itself, so long as `[[albums]]` isn't declared\n 9 │\u001b[0m # later. (Although, `[albums]` could be.)\n 10 │\u001b[0m [[albums.songs]]\n 11 │\u001b[0m name = \"Glory Days\"\n 12 │\u001b[0m\n 13 │\u001b[0m [[albums]]\n 14 │\u001b[0m name = \"Born in the USA\"\n\n output from parser-cmd (PID 1703292) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"albums\": [{\n 3 │\u001b[0m \"name\": {\"type\": \"string\", \"value\": \"Born in the USA\"}\n 4 │\u001b[0m }]\n 5 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/table/duplicate-key-01\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1703246):\n 1 │\u001b[0m [a]\n 2 │\u001b[0m b = 1\n 3 │\u001b[0m\n 4 │\u001b[0m [a]\n 5 │\u001b[0m c = 2\n\n output from parser-cmd (PID 1703246) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"a\": {\n 3 │\u001b[0m \"b\": {\"type\": \"integer\", \"value\": \"1\"},\n 4 │\u001b[0m \"c\": {\"type\": \"integer\", \"value\": \"2\"}\n 5 │\u001b[0m }\n 6 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/table/duplicate-key-03\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1703285):\n 1 │\u001b[0m [fruit]\n 2 │\u001b[0m apple.color = \"red\"\n 3 │\u001b[0m\n 4 │\u001b[0m [[fruit.apple]]\n\n output from parser-cmd (PID 1703285) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"fruit\": {\"apple\": [{}]}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/table/duplicate-key-06\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1703287):\n 1 │\u001b[0m [tbl]\n 2 │\u001b[0m [[tbl]]\n\n output from parser-cmd (PID 1703287) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"tbl\": [{}]\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/table/duplicate-key-09\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1703291):\n 1 │\u001b[0m [a]\n 2 │\u001b[0m foo=\"bar\"\n 3 │\u001b[0m [a.b]\n 4 │\u001b[0m foo=\"bar\"\n 5 │\u001b[0m [a]\n\n output from parser-cmd (PID 1703291) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"a\": {\n 3 │\u001b[0m \"foo\": {\"type\": \"string\", \"value\": \"bar\"},\n 4 │\u001b[0m \"b\": {\n 5 │\u001b[0m \"foo\": {\"type\": \"string\", \"value\": \"bar\"}\n 6 │\u001b[0m }\n 7 │\u001b[0m }\n 8 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/table/overwrite-bool-with-array\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1703429):\n 1 │\u001b[0m a=true\n 2 │\u001b[0m [[a]]\n\n output from parser-cmd (PID 1703429) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"a\": [{}]\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/table/redefine-02\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1703445):\n 1 │\u001b[0m [t1]\n 2 │\u001b[0m t2.t3.v = 0\n 3 │\u001b[0m [t1.t2]\n\n output from parser-cmd (PID 1703445) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"t1\": {\n 3 │\u001b[0m \"t2\": {\n 4 │\u001b[0m \"t3\": {\n 5 │\u001b[0m \"v\": {\"type\": \"integer\", \"value\": \"0\"}\n 6 │\u001b[0m }\n 7 │\u001b[0m }\n 8 │\u001b[0m }\n 9 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/table/redefine-03\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1703446):\n 1 │\u001b[0m [t1]\n 2 │\u001b[0m t2.t3.v = 0\n 3 │\u001b[0m [t1.t2.t3]\n\n output from parser-cmd (PID 1703446) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"t1\": {\n 3 │\u001b[0m \"t2\": {\n 4 │\u001b[0m \"t3\": {\n 5 │\u001b[0m \"v\": {\"type\": \"integer\", \"value\": \"0\"}\n 6 │\u001b[0m }\n 7 │\u001b[0m }\n 8 │\u001b[0m }\n 9 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/table/super-twice\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1703448):\n 1 │\u001b[0m [a.b]\n 2 │\u001b[0m [a]\n 3 │\u001b[0m [a]\n\n output from parser-cmd (PID 1703448) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"a\": {\n 3 │\u001b[0m \"b\": {}\n 4 │\u001b[0m }\n 5 │\u001b[0m }\n\n want:\n Exit code 1\n\ntoml-test v2.2.0 [/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260816.121804/build/toml/toml-decoder] [no encoder]\n valid tests: 143 passed, 62 failed\nencoder tests: no encoder command given\ninvalid tests: 441 passed, 33 failed\n","exit_code":1,"status":"failed"}}
{"type":"item.started","item":{"id":"item_20","type":"command_execution","command":"/bin/bash -lc \"sed -n '300,470p' internal/toml/toml.go && git status --short\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_20","type":"command_execution","command":"/bin/bash -lc \"sed -n '300,470p' internal/toml/toml.go && git status --short\"","aggregated_output":" M ../../../../sources/INSTRUCTIONS.md\n?? ../../\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_21","type":"command_execution","command":"/bin/bash -lc \"go test ./internal/toml -run TestDecodeScalarValuesAndRejections -v && printf 'a = 1e2.0\\\\n' | ./toml-decoder; echo status:\"'$?'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_21","type":"command_execution","command":"/bin/bash -lc \"go test ./internal/toml -run TestDecodeScalarValuesAndRejections -v && printf 'a = 1e2.0\\\\n' | ./toml-decoder; echo status:\"'$?'","aggregated_output":"=== RUN TestDecodeScalarValuesAndRejections\n--- PASS: TestDecodeScalarValuesAndRejections (0.00s)\nPASS\nok \tgithub.com/owner/toml-decoder/internal/toml\t0.014s\nline 1: invalid value \"1e2.0\"\nstatus:1\n","exit_code":0,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_22","type":"agent_message","text":"The scalar-owned valid/invalid groups now pass individually (valid: bool 1, integer 6, float 7; invalid: bool 15, integer 38, float 43). The exact declared combined patterns also exit successfully, though this harness version matches their `**|**` expression as zero selected cases. The required full suite was run and remains blocked by pre-existing array, table, string/comment, and datetime gaps outside this scalar block. I’m doing the final race/build checks and reviewing the diff."}}
{"type":"item.started","item":{"id":"item_23","type":"command_execution","command":"/bin/bash -lc 'go test -race ./... && gofmt -l . && go vet ./... && go build ./... && git diff -- internal/toml/toml.go internal/toml/toml_test.go'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_23","type":"command_execution","command":"/bin/bash -lc 'go test -race ./... && gofmt -l . && go vet ./... && go build ./... && git diff -- internal/toml/toml.go internal/toml/toml_test.go'","aggregated_output":"ok \tgithub.com/owner/toml-decoder/cmd/toml-decoder\t1.477s\nok \tgithub.com/owner/toml-decoder/internal/toml\t1.013s\n","exit_code":0,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_24","type":"agent_message","text":"RESULT: FAILED\n\nFILES CHANGED:\n- internal/toml/toml.go\n- internal/toml/toml_test.go\n\nSUMMARY:\nImplemented TOML booleans, canonical integers, base-prefixed integers, floats, exponents, special values, validation, and tests. Scalar suites pass; full suite remains failing in out-of-scope arrays, tables, strings, comments, and datetimes.\n\nBLOCKERS:\n- Full conformance suite is not yet green due to prior unimplemented parser features.\n\nFAILURE_SUMMARY: Full conformance suite has 62 valid and 33 invalid failures outside this scalar block.\nFAILURE_DETAIL: Scalar-specific tests pass, but completing the full gate requires implementing arrays, tables, comments, strings, and datetime parsing in subsequent build blocks."}}
{"type":"turn.completed","usage":{"input_tokens":902098,"cached_input_tokens":837632,"cache_write_input_tokens":0,"output_tokens":9914,"reasoning_output_tokens":2368}}
Run artifact