{"type":"thread.started","thread_id":"01a00a8b-8117-7b12-9e80-b36583494864"}
{"type":"turn.started"}
{"type":"item.completed","item":{"id":"item_0","type":"agent_message","text":"I’m inspecting the existing build and toolchain first, then I’ll implement the string/key parser slice and run the staged conformance checks plus the full suite if the harness is available."}}
{"type":"item.started","item":{"id":"item_1","type":"command_execution","command":"/bin/bash -lc \"pwd && go version && rg --files -g '\"'!sources/*'\"' -g '\"'!*.md'\"' . || true && rg --files sources\"","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 '\"'!*.md'\"' . || true && rg --files sources\"","aggregated_output":"go version go1.24.6 linux/amd64\n./toml-decoder\n./go.mod\n./cmd/toml-decoder/main.go\n./cmd/toml-decoder/main_test.go\n./internal/toml/toml.go\n./internal/toml/toml_test.go\nsources/setup_harness.sh\nsources/run_conformance.sh\nsources/full_test.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 && sed -n '1,220p' internal/toml/toml_test.go && sed -n '1,160p' cmd/toml-decoder/main.go && cat go.mod && sed -n '1,160p' sources/run_conformance.sh\"","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 && sed -n '1,220p' internal/toml/toml_test.go && sed -n '1,160p' cmd/toml-decoder/main.go && cat go.mod && sed -n '1,160p' sources/run_conformance.sh\"","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)\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\tresult := map[string]any{}\n\tfor lineNumber, line := range strings.Split(input, \"\\n\") {\n\t\tline = strings.TrimSpace(strings.SplitN(line, \"#\", 2)[0])\n\t\tif line == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tif strings.HasPrefix(line, \"[\") {\n\t\t\treturn nil, fmt.Errorf(\"line %d: tables are not supported yet\", lineNumber+1)\n\t\t}\n\t\tparts := strings.SplitN(line, \"=\", 2)\n\t\tif len(parts) != 2 {\n\t\t\treturn nil, fmt.Errorf(\"line %d: expected key-value pair\", lineNumber+1)\n\t\t}\n\t\tkey := strings.TrimSpace(parts[0])\n\t\tif key == \"\" {\n\t\t\treturn nil, fmt.Errorf(\"line %d: empty key\", lineNumber+1)\n\t\t}\n\t\tif _, exists := result[key]; exists {\n\t\t\treturn nil, fmt.Errorf(\"line %d: duplicate key %q\", lineNumber+1, key)\n\t\t}\n\t\tvalue, err := parseScalar(strings.TrimSpace(parts[1]))\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"line %d: %w\", lineNumber+1, err)\n\t\t}\n\t\tresult[key] = value\n\t}\n\treturn result, nil\n}\n\nfunc parseScalar(value string) (scalar, error) {\n\tif value == \"true\" || value == \"false\" {\n\t\treturn scalar{Type: \"bool\", Value: value}, nil\n\t}\n\tif _, err := strconv.ParseInt(value, 10, 64); err == nil {\n\t\treturn scalar{Type: \"integer\", Value: value}, nil\n\t}\n\tif len(value) >= 2 && ((value[0] == '\"' && value[len(value)-1] == '\"') || (value[0] == '\\'' && value[len(value)-1] == '\\'')) {\n\t\tif value[0] == '\\'' {\n\t\t\treturn scalar{Type: \"string\", Value: value[1 : len(value)-1]}, nil\n\t\t}\n\t\tdecoded, err := strconv.Unquote(value)\n\t\tif err != nil {\n\t\t\treturn scalar{}, fmt.Errorf(\"invalid string: %w\", err)\n\t\t}\n\t\treturn scalar{Type: \"string\", Value: decoded}, nil\n\t}\n\treturn scalar{}, fmt.Errorf(\"invalid value %q\", value)\n}\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}\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}\nmodule github.com/owner/toml-decoder\n\ngo 1.24\n#!/bin/sh\n# Run the upstream toml-test conformance suite against the built decoder.\n#\n# Imported sources land in sources/ inside the application directory, so this is\n# normally invoked as `sh sources/run_conformance.sh` from that directory.\n#\n# Usage:\n# DECODER=./toml-decoder sh sources/run_conformance.sh # full suite\n# DECODER=./toml-decoder sh sources/run_conformance.sh -run 'valid/string/*' # one group\n# DECODER=./toml-decoder sh sources/run_conformance.sh -json # machine-readable\n#\n# Environment:\n# DECODER decoder command. Required — this harness is language-neutral and\n# deliberately has no default implementation language.\n# TOML_TEST absolute path to the toml-test binary (default: found on PATH)\n#\n# Exit code follows the harness exit-status standard in prompts/UAT_SETUP_INSTRUCTIONS.md:\n# 0 only when every test passes, 2 when this harness could not run at all, and any other nonzero\n# when it ran and the decoder failed. A precondition of the harness is never charged to the build.\n\nset -u\n\nif [ -z \"${DECODER:-}\" ]; then\n echo \"error: DECODER is not set; give the command that runs your decoder.\" >&2\n exit 2\nfi\n\nif [ -n \"${TOML_TEST:-}\" ] && [ -x \"${TOML_TEST}\" ]; then\n HARNESS=\"${TOML_TEST}\"\nelif command -v toml-test >/dev/null 2>&1; then\n HARNESS=\"$(command -v toml-test)\"\nelse\n cat >&2 <<'EOF'\nerror: toml-test not found.\n\nInstall the harness once:\n\n sh sources/setup_harness.sh\n\nor set TOML_TEST to an existing binary:\n\n TOML_TEST=/path/to/toml-test sh sources/run_conformance.sh\nEOF\n # 2, not the shell's own 127: an uninstalled harness says nothing about the decoder, and 127\n # would be read as an ordinary nonzero exit and charged against the build as a product FAIL.\n exit 2\nfi\n\n# The suite's identity is part of the verdict. Without this, \"the authoritative suite passed\"\n# names no particular suite: whichever toml-test happened to be on PATH decided the run, and a\n# different version on a different machine is a different exam. Recorded always, and enforced\n# when the caller states which version it expects.\nHARNESS_VERSION=\"$(\"${HARNESS}\" version 2>/dev/null | head -n 1 || true)\"\necho \"harness: ${HARNESS} ${HARNESS_VERSION:-(version unknown)}\" >&2\nif [ -n \"${TOML_TEST_VERSION:-}\" ] && [ -n \"${HARNESS_VERSION}\" ]; then\n case \"${HARNESS_VERSION}\" in\n *\"${TOML_TEST_VERSION}\"*) ;;\n *)\n echo \"error: harness is ${HARNESS_VERSION}, expected ${TOML_TEST_VERSION}.\" >&2\n echo \"Run: sh sources/setup_harness.sh\" >&2\n exit 2\n ;;\n esac\nfi\n\nNO_COLOR=1 exec \"${HARNESS}\" test -toml 1.0 -decoder \"${DECODER}\" \"$@\"\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_3","type":"command_execution","command":"/bin/bash -lc \"sed -n '1,180p' sources/setup_harness.sh && sed -n '1,120p' sources/stage_contract.sh && sed -n '1,180p' 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 '1,180p' sources/setup_harness.sh && sed -n '1,120p' sources/stage_contract.sh && sed -n '1,180p' cmd/toml-decoder/main_test.go\"","aggregated_output":"#!/bin/sh\n# One-time installation of the upstream toml-test conformance harness.\n#\n# Requires network access and a Go toolchain of at least 1.22 — the same floor\n# stack/go.md sets for the deliverable. The Go shipped by apt on Debian and\n# Ubuntu is frequently older and will fail; install the official tarball instead:\n#\n# curl -sL https://go.dev/dl/go1.24.6.linux-amd64.tar.gz -o go.tgz\n# sudo tar -C /usr/local -xzf go.tgz\n# export PATH=/usr/local/go/bin:$PATH\n#\n# Usage:\n# sh sources/setup_harness.sh # install to $HOME/.local/bin\n# GOBIN=/usr/local/bin sh sources/setup_harness.sh\n\nset -eu\n\nTOML_TEST_VERSION=v2.2.0\nGOBIN=\"${GOBIN:-$HOME/.local/bin}\"\n\nif ! command -v go >/dev/null 2>&1; then\n echo \"error: no go toolchain on PATH; see the header of this script\" >&2\n exit 1\nfi\n\necho \"go: $(go version)\"\necho \"target: ${GOBIN}/toml-test\"\necho \"version: ${TOML_TEST_VERSION}\"\n\nmkdir -p \"${GOBIN}\"\nGOBIN=\"${GOBIN}\" go install \\\n \"github.com/toml-lang/toml-test/v2/cmd/toml-test@${TOML_TEST_VERSION}\"\n\necho\n\"${GOBIN}/toml-test\" version\n\ncase \":${PATH}:\" in\n *\":${GOBIN}:\"*) ;;\n *) echo\n echo \"warning: ${GOBIN} is not on PATH. Add it, or export\"\n echo \" TOML_TEST=${GOBIN}/toml-test before running the suite.\" ;;\nesac\n#!/bin/sh\n# stage_contract.sh — governed gates for boundaries not represented by one toml-test slice.\nset -eu\n\nif [ $# -ne 1 ]; then\n echo \"usage: stage_contract.sh <architecture|decoder>\" >&2\n exit 2\nfi\n\ncase \"$1\" in\n architecture)\n test -f go.mod\n if grep -Eq '^[[:space:]]*require[[:space:](]' go.mod; then\n echo \"go.mod declares a forbidden third-party dependency\" >&2\n exit 1\n fi\n go build ./cmd/toml-decoder\n ;;\n decoder)\n go build -o toml-decoder ./cmd/toml-decoder\n stage_dir=\"$(mktemp -d)\"\n trap 'rm -rf \"$stage_dir\"' EXIT HUP INT TERM\n\n printf 'answer = 42\\n' | ./toml-decoder >\"$stage_dir/valid.json\" 2>\"$stage_dir/valid.err\"\n test ! -s \"$stage_dir/valid.err\"\n python - \"$stage_dir/valid.json\" <<'PY'\nimport json\nimport sys\n\nwith open(sys.argv[1], encoding=\"utf-8\") as stream:\n decoded = json.load(stream)\nassert decoded == {\"answer\": {\"type\": \"integer\", \"value\": \"42\"}}\nPY\n\n if printf 'answer = [\\n' | ./toml-decoder >\"$stage_dir/invalid.out\" 2>\"$stage_dir/invalid.err\"; then\n echo \"malformed TOML exited successfully\" >&2\n exit 1\n fi\n test ! -s \"$stage_dir/invalid.out\"\n test -s \"$stage_dir/invalid.err\"\n ;;\n *)\n echo \"unknown stage contract: $1\" >&2\n exit 2\n ;;\nesac\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 repository has only a starter scalar parser, so I’m replacing that core with a small standard-library parser focused on this block: quote-aware statement scanning, TOML string decoding (including multiline rules), and normalized dotted-key insertion with duplicate/redefinition checks."}}
{"type":"item.started","item":{"id":"item_5","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260816.121804/build/toml/internal/toml/toml.go","kind":"add"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_5","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260816.121804/build/toml/internal/toml/toml.go","kind":"add"}],"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":"command_execution","command":"/bin/bash -lc \"gofmt -w internal/toml/toml.go && go test ./... && go vet ./... && go build ./cmd/toml-decoder && printf 'a = \\\"hello\\\\\\\\nworld\\\"\\\\nb.c = \\\\'literal # text\\\\'\\\\nd = \\\"\\\"\\\"\\\\nfirst\\\\nsecond\\\\n\\\"\\\"\\\"\\\\ne = 1\\\\n' | ./toml-decoder\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_8","type":"command_execution","command":"/bin/bash -lc \"gofmt -w internal/toml/toml.go && go test ./... && go vet ./... && go build ./cmd/toml-decoder && printf 'a = \\\"hello\\\\\\\\nworld\\\"\\\\nb.c = \\\\'literal # text\\\\'\\\\nd = \\\"\\\"\\\"\\\\nfirst\\\\nsecond\\\\n\\\"\\\"\\\"\\\\ne = 1\\\\n' | ./toml-decoder\"","aggregated_output":"ok \tgithub.com/owner/toml-decoder/cmd/toml-decoder\t1.154s\nok \tgithub.com/owner/toml-decoder/internal/toml\t0.003s\na = \"hello\\nworld\"\nb.c = \\literal","exit_code":0,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_9","type":"agent_message","text":"The local Go tests, vet, and build are green. I’m now exercising representative basic/literal/multiline values and installing the pinned `toml-test` harness so the authoritative string and key slices can expose grammar edge cases."}}
{"type":"item.started","item":{"id":"item_10","type":"command_execution","command":"/bin/bash -lc \"go build -o toml-decoder ./cmd/toml-decoder\n./toml-decoder <<'EOF'\na = \\\"hello\\\\nworld\\\"\nb.c = 'literal # text'\nd = \\\"\\\"\\\"\nfirst\nsecond\n\\\"\\\"\\\"\ne = 1\nEOF\nsh sources/setup_harness.sh\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_10","type":"command_execution","command":"/bin/bash -lc \"go build -o toml-decoder ./cmd/toml-decoder\n./toml-decoder <<'EOF'\na = \\\"hello\\\\nworld\\\"\nb.c = 'literal # text'\nd = \\\"\\\"\\\"\nfirst\nsecond\n\\\"\\\"\\\"\ne = 1\nEOF\nsh sources/setup_harness.sh\"","aggregated_output":"{\"a\":{\"type\":\"string\",\"value\":\"hello\\nworld\"},\"b\":{\"c\":{\"type\":\"string\",\"value\":\"literal # text\"}},\"d\":{\"type\":\"string\",\"value\":\"first\\nsecond\\n\"},\"e\":{\"type\":\"integer\",\"value\":\"1\"}}\ngo: go version go1.24.6 linux/amd64\ntarget: /home/barlo/.local/bin/toml-test\nversion: v2.2.0\n\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_11","type":"command_execution","command":"/bin/bash -lc \"TOML_TEST=/home/barlo/.local/bin/toml-test sh sources/stage_test.sh 'valid/string/**'; TOML_TEST=/home/barlo/.local/bin/toml-test sh sources/stage_test.sh 'invalid/string/**'; TOML_TEST=/home/barlo/.local/bin/toml-test sh sources/stage_test.sh 'valid/key/**'; TOML_TEST=/home/barlo/.local/bin/toml-test sh sources/stage_test.sh 'invalid/key/**'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_11","type":"command_execution","command":"/bin/bash -lc \"TOML_TEST=/home/barlo/.local/bin/toml-test sh sources/stage_test.sh 'valid/string/**'; TOML_TEST=/home/barlo/.local/bin/toml-test sh sources/stage_test.sh 'invalid/string/**'; TOML_TEST=/home/barlo/.local/bin/toml-test sh sources/stage_test.sh 'valid/key/**'; TOML_TEST=/home/barlo/.local/bin/toml-test sh sources/stage_test.sh 'invalid/key/**'\"","aggregated_output":"harness: /home/barlo/.local/bin/toml-test toml-test v2.2.0; go1.24.6 linux/amd64; race=false; cgo=true\nFAIL valid/string/ends-in-whitespace-escape\n line 1: invalid escape\n \n Exit 1\n\n input sent to parser-cmd (PID 1670742):\n 1 │\u001b[0m beee = \"\"\"\n 2 │\u001b[0m heeee\n 3 │\u001b[0m geeee\\\n 4 │\u001b[0m\n 5 │\u001b[0m\n 6 │\u001b[0m \"\"\"\n\n output from parser-cmd (PID 1670742) (stderr):\n 1 │\u001b[0m line 1: invalid escape\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/string/multiline\n line 17: invalid escape\n \n Exit 1\n\n input sent to parser-cmd (PID 1670737):\n 1 │\u001b[0m # NOTE: this file includes some literal tab characters.\n 2 │\u001b[0m\n 3 │\u001b[0m equivalent_one = \"The quick brown fox jumps over the lazy dog.\"\n 4 │\u001b[0m equivalent_two = \"\"\"\n 5 │\u001b[0m The quick brown \\\n 6 │\u001b[0m\n 7 │\u001b[0m\n 8 │\u001b[0m fox jumps over \\\n 9 │\u001b[0m the lazy dog.\"\"\"\n 10 │\u001b[0m\n 11 │\u001b[0m equivalent_three = \"\"\"\\\n 12 │\u001b[0m The quick brown \\\n 13 │\u001b[0m fox jumps over \\\n 14 │\u001b[0m the lazy dog.\\\n 15 │\u001b[0m \"\"\"\n 16 │\u001b[0m\n 17 │\u001b[0m whitespace-after-bs = \"\"\"\\\n 18 │\u001b[0m The quick brown \\\n 19 │\u001b[0m fox jumps over \\\n 20 │\u001b[0m the lazy dog.\\\n 21 │\u001b[0m \"\"\"\n 22 │\u001b[0m\n 23 │\u001b[0m no-space = \"\"\"a\\\n 24 │\u001b[0m b\"\"\"\n 25 │\u001b[0m\n 26 │\u001b[0m # Has tab character.\n 27 │\u001b[0m keep-ws-before = \"\"\"a \t\\\n 28 │\u001b[0m b\"\"\"\n 29 │\u001b[0m\n 30 │\u001b[0m escape-bs-1 = \"\"\"a \\\\\n 31 │\u001b[0m b\"\"\"\n 32 │\u001b[0m\n 33 │\u001b[0m escape-bs-2 = \"\"\"a \\\\\\\n 34 │\u001b[0m b\"\"\"\n 35 │\u001b[0m\n 36 │\u001b[0m escape-bs-3 = \"\"\"a \\\\\\\\\n 37 │\u001b[0m b\"\"\"\n\n output from parser-cmd (PID 1670737) (stderr):\n 1 │\u001b[0m line 17: invalid escape\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/string/multiline-empty\n line 11: invalid escape\n \n Exit 1\n\n input sent to parser-cmd (PID 1670673):\n 1 │\u001b[0m empty-1 = \"\"\"\"\"\"\n 2 │\u001b[0m\n 3 │\u001b[0m # A newline immediately following the opening delimiter will be trimmed.\n 4 │\u001b[0m empty-2 = \"\"\"\n 5 │\u001b[0m \"\"\"\n 6 │\u001b[0m\n 7 │\u001b[0m # \\ at the end of line trims newlines as well; note that last \\ is followed by\n 8 │\u001b[0m # two spaces, which are ignored.\n 9 │\u001b[0m empty-3 = \"\"\"\\\n 10 │\u001b[0m \"\"\"\n 11 │\u001b[0m empty-4 = \"\"\"\\\n 12 │\u001b[0m \\\n 13 │\u001b[0m \\\n 14 │\u001b[0m \"\"\"\n\n output from parser-cmd (PID 1670673) (stderr):\n 1 │\u001b[0m line 11: invalid escape\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/string/multiline-quotes\n line 4: trailing characters after value\n \n Exit 1\n\n input sent to parser-cmd (PID 1670740):\n 1 │\u001b[0m # Make sure that quotes inside multiline strings are allowed, including right\n 2 │\u001b[0m # after the opening '''/\"\"\" and before the closing '''/\"\"\"\n 3 │\u001b[0m\n 4 │\u001b[0m lit_one = ''''one quote''''\n 5 │\u001b[0m lit_two = '''''two quotes'''''\n 6 │\u001b[0m lit_one_space = ''' 'one quote' '''\n 7 │\u001b[0m lit_two_space = ''' ''two quotes'' '''\n 8 │\u001b[0m\n 9 │\u001b[0m one = \"\"\"\"one quote\"\"\"\"\n 10 │\u001b[0m two = \"\"\"\"\"two quotes\"\"\"\"\"\n 11 │\u001b[0m one_space = \"\"\" \"one quote\" \"\"\"\n 12 │\u001b[0m two_space = \"\"\" \"\"two quotes\"\" \"\"\"\n 13 │\u001b[0m\n 14 │\u001b[0m mismatch1 = \"\"\"aaa'''bbb\"\"\"\n 15 │\u001b[0m mismatch2 = '''aaa\"\"\"bbb'''\n 16 │\u001b[0m\n 17 │\u001b[0m # Three opening \"\"\", then one escaped \", then two \"\" (allowed), and then three\n 18 │\u001b[0m # closing \"\"\"\n 19 │\u001b[0m escaped = \"\"\"lol\\\"\"\"\"\"\"\n 20 │\u001b[0m\n 21 │\u001b[0m five-quotes = \"\"\"\n 22 │\u001b[0m Closing with five quotes\n 23 │\u001b[0m \"\"\"\"\"\n 24 │\u001b[0m four-quotes = \"\"\"\n 25 │\u001b[0m Closing with four quotes\n 26 │\u001b[0m \"\"\"\"\n\n output from parser-cmd (PID 1670740) (stderr):\n 1 │\u001b[0m line 4: trailing characters after value\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/string/raw-multiline\n line 22: expected key-value pair\n \n Exit 1\n\n input sent to parser-cmd (PID 1670656):\n 1 │\u001b[0m # Single ' should be allowed.\n 2 │\u001b[0m oneline = '''This string has a ' quote character.'''\n 3 │\u001b[0m\n 4 │\u001b[0m # A newline immediately following the opening delimiter will be trimmed.\n 5 │\u001b[0m firstnl = '''\n 6 │\u001b[0m This string has a ' quote character.'''\n 7 │\u001b[0m\n 8 │\u001b[0m # All other whitespace and newline characters remain intact.\n 9 │\u001b[0m multiline = '''\n 10 │\u001b[0m This string\n 11 │\u001b[0m has ' a quote character\n 12 │\u001b[0m and more than\n 13 │\u001b[0m one newline\n 14 │\u001b[0m in it.'''\n 15 │\u001b[0m\n 16 │\u001b[0m # Tab character in literal string does not need to be escaped\n 17 │\u001b[0m multiline_with_tab = '''First line\n 18 │\u001b[0m \t Followed by a tab'''\n 19 │\u001b[0m\n 20 │\u001b[0m this-str-has-apostrophes='''' there's one already\n 21 │\u001b[0m '' two more\n 22 │\u001b[0m '''''\n\n output from parser-cmd (PID 1670656) (stderr):\n 1 │\u001b[0m line 22: expected key-value pair\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\ntoml-test v2.2.0 [/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260816.121804/build/toml/toml-decoder] [no encoder]\nskipped tests: 861\n valid tests: 18 passed, 5 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: 807\n valid tests: 0 passed, 0 failed\nencoder tests: no encoder command given\ninvalid tests: 77 passed, 0 failed\nharness: /home/barlo/.local/bin/toml-test toml-test v2.2.0; go1.24.6 linux/amd64; race=false; cgo=true\nFAIL valid/key/alphanum\n line 10: expected key-value pair\n \n Exit 1\n\n input sent to parser-cmd (PID 1671554):\n 1 │\u001b[0m alpha = \"a\"\n 2 │\u001b[0m 123 = \"num\"\n 3 │\u001b[0m 000111 = \"leading\"\n 4 │\u001b[0m 10e3 = \"false float\"\n 5 │\u001b[0m one1two2 = \"mixed\"\n 6 │\u001b[0m with-dash = \"dashed\"\n 7 │\u001b[0m under_score = \"___\"\n 8 │\u001b[0m 34-11 = 23\n 9 │\u001b[0m\n 10 │\u001b[0m [2018_10]\n 11 │\u001b[0m 001 = 1\n 12 │\u001b[0m\n 13 │\u001b[0m [a-a-a]\n 14 │\u001b[0m _ = false\n\n output from parser-cmd (PID 1671554) (stderr):\n 1 │\u001b[0m line 10: expected key-value pair\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/key/case-sensitive\n line 3: expected key-value pair\n \n Exit 1\n\n input sent to parser-cmd (PID 1671535):\n 1 │\u001b[0m sectioN = \"NN\"\n 2 │\u001b[0m\n 3 │\u001b[0m [section]\n 4 │\u001b[0m name = \"lower\"\n 5 │\u001b[0m NAME = \"upper\"\n 6 │\u001b[0m Name = \"capitalized\"\n 7 │\u001b[0m\n 8 │\u001b[0m [Section]\n 9 │\u001b[0m name = \"different section!!\"\n 10 │\u001b[0m \"μ\" = \"greek small letter mu\"\n 11 │\u001b[0m \"Μ\" = \"greek capital letter MU\"\n 12 │\u001b[0m M = \"latin letter M\"\n\n output from parser-cmd (PID 1671535) (stderr):\n 1 │\u001b[0m line 3: expected key-value pair\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/key/dotted-03\n line 3: expected key-value pair\n \n Exit 1\n\n input sent to parser-cmd (PID 1671607):\n 1 │\u001b[0m top.key = 1\n 2 │\u001b[0m\n 3 │\u001b[0m [tbl]\n 4 │\u001b[0m a.b.c = 42.666\n 5 │\u001b[0m\n 6 │\u001b[0m [a.few.dots]\n 7 │\u001b[0m polka.dot = \"again?\"\n 8 │\u001b[0m polka.dance-with = \"Dot\"\n\n output from parser-cmd (PID 1671607) (stderr):\n 1 │\u001b[0m line 3: expected key-value pair\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/key/dotted-04\n line 3: expected key-value pair\n \n Exit 1\n\n input sent to parser-cmd (PID 1671633):\n 1 │\u001b[0m top.key = 1\n 2 │\u001b[0m\n 3 │\u001b[0m [[arr]]\n 4 │\u001b[0m a.b.c=1\n 5 │\u001b[0m a.b.d=2\n 6 │\u001b[0m\n 7 │\u001b[0m [[arr]]\n 8 │\u001b[0m a.b.c=3\n 9 │\u001b[0m a.b.d=4\n\n output from parser-cmd (PID 1671633) (stderr):\n 1 │\u001b[0m line 3: expected key-value pair\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/key/dotted-empty\n line 1: invalid or empty key\n \n Exit 1\n\n input sent to parser-cmd (PID 1671608):\n 1 │\u001b[0m ''.x = \"empty.x\"\n 2 │\u001b[0m x.\"\" = \"x.empty\"\n 3 │\u001b[0m [a]\n 4 │\u001b[0m \"\".'' = \"empty.empty\"\n\n output from parser-cmd (PID 1671608) (stderr):\n 1 │\u001b[0m line 1: invalid or empty key\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/key/empty-01\n line 1: invalid or empty key\n \n Exit 1\n\n input sent to parser-cmd (PID 1671635):\n 1 │\u001b[0m \"\" = \"blank\"\n\n output from parser-cmd (PID 1671635) (stderr):\n 1 │\u001b[0m line 1: invalid or empty key\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/key/empty-02\n line 1: invalid or empty key\n \n Exit 1\n\n input sent to parser-cmd (PID 1671637):\n 1 │\u001b[0m '' = \"blank\"\n\n output from parser-cmd (PID 1671637) (stderr):\n 1 │\u001b[0m line 1: invalid or empty key\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/key/empty-03\n line 1: invalid or empty key\n \n Exit 1\n\n input sent to parser-cmd (PID 1671536):\n 1 │\u001b[0m ''=0\n\n output from parser-cmd (PID 1671536) (stderr):\n 1 │\u001b[0m line 1: invalid or empty key\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/key/escapes\n line 6: expected key-value pair\n \n Exit 1\n\n input sent to parser-cmd (PID 1671501):\n 1 │\u001b[0m \"\\n\" = \"newline\"\n 2 │\u001b[0m \"\\b\" = \"bell\"\n 3 │\u001b[0m \"\\u00c0\" = \"latin capital letter A with grave\"\n 4 │\u001b[0m \"\\\"\" = \"just a quote\"\n 5 │\u001b[0m\n 6 │\u001b[0m [\"backsp\\b\\b\"]\n 7 │\u001b[0m\n 8 │\u001b[0m [\"\\\"quoted\\\"\"]\n 9 │\u001b[0m quote = true\n 10 │\u001b[0m\n 11 │\u001b[0m [\"a.b\".\"\\u00c0\"]\n\n output from parser-cmd (PID 1671501) (stderr):\n 1 │\u001b[0m line 6: expected key-value pair\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/key/like-date\n line 2: invalid value \"1\\n\\\"2001-02-04\\\" = 2\\n'2001-02-05' = 3\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1671503):\n 1 │\u001b[0m # '-' is a valid character in keys: make a key that looks like a date.\n 2 │\u001b[0m 2001-02-03 = 1\n 3 │\u001b[0m \"2001-02-04\" = 2\n 4 │\u001b[0m '2001-02-05' = 3\n 5 │\u001b[0m\n 6 │\u001b[0m # Also include datetime and time for good measure; these need to be quoted as\n 7 │\u001b[0m # ':' isn't a valid bare key.\n 8 │\u001b[0m \"2001-02-06T15:16:17+01:00\" = 4\n 9 │\u001b[0m \"2001-02-07T15:16:17\" = 5\n 10 │\u001b[0m \"15:16:17\" = 6\n 11 │\u001b[0m\n 12 │\u001b[0m # Dotted keys\n 13 │\u001b[0m a.2001-02-08 = 7\n 14 │\u001b[0m a.2001-02-09.2001-02-10 = 8\n 15 │\u001b[0m 2001-02-11.a.2001-02-12 = 9\n 16 │\u001b[0m\n 17 │\u001b[0m # Table names\n 18 │\u001b[0m [2002-01-02]\n 19 │\u001b[0m k = 10\n 20 │\u001b[0m\n 21 │\u001b[0m [2002-01-02.2024-01-03]\n 22 │\u001b[0m k = 11\n 23 │\u001b[0m\n 24 │\u001b[0m [[2002-01-04]]\n 25 │\u001b[0m k = 12\n\n output from parser-cmd (PID 1671503) (stderr):\n 1 │\u001b[0m line 2: invalid value \"1\\n\\\"2001-02-04\\\" = 2\\n'2001-02-05' = 3\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/key/quoted-dots\n line 4: expected key-value pair\n \n Exit 1\n\n input sent to parser-cmd (PID 1671552):\n 1 │\u001b[0m plain = 1\n 2 │\u001b[0m \"with.dot\" = 2\n 3 │\u001b[0m\n 4 │\u001b[0m [plain_table]\n 5 │\u001b[0m plain = 3\n 6 │\u001b[0m \"with.dot\" = 4\n 7 │\u001b[0m\n 8 │\u001b[0m [table.withdot]\n 9 │\u001b[0m plain = 5\n 10 │\u001b[0m \"key.with.dots\" = 6\n 11 │\u001b[0m \"escaped\\u002edot\" = 7\n\n output from parser-cmd (PID 1671552) (stderr):\n 1 │\u001b[0m line 4: expected key-value pair\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/key/space\n line 6: expected key-value pair\n \n Exit 1\n\n input sent to parser-cmd (PID 1671606):\n 1 │\u001b[0m # Keep whitespace inside quotes keys at all positions.\n 2 │\u001b[0m \"a b\" = 1\n 3 │\u001b[0m \" c d \" = 2\n 4 │\u001b[0m \" much \t\t whitespace \t\\n \\r\\n \" = 3\n 5 │\u001b[0m\n 6 │\u001b[0m [ \" tbl \" ]\n 7 │\u001b[0m \"\\ttab\\ttab\\t\" = \"tab\"\n\n output from parser-cmd (PID 1671606) (stderr):\n 1 │\u001b[0m line 6: expected key-value pair\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/key/start\n line 4: expected key-value pair\n \n Exit 1\n\n input sent to parser-cmd (PID 1671604):\n 1 │\u001b[0m # Table and keys can start with any character; there is no requirement for it to\n 2 │\u001b[0m # start with a letter.\n 3 │\u001b[0m\n 4 │\u001b[0m [-key]\n 5 │\u001b[0m -key = 1\n 6 │\u001b[0m\n 7 │\u001b[0m [_key]\n 8 │\u001b[0m _key = 2\n 9 │\u001b[0m\n 10 │\u001b[0m [1key]\n 11 │\u001b[0m 1key = 3\n 12 │\u001b[0m\n 13 │\u001b[0m [-]\n 14 │\u001b[0m - = 4\n 15 │\u001b[0m\n 16 │\u001b[0m [_]\n 17 │\u001b[0m _ = 5\n 18 │\u001b[0m\n 19 │\u001b[0m [1]\n 20 │\u001b[0m 1 = 6\n 21 │\u001b[0m\n 22 │\u001b[0m [---]\n 23 │\u001b[0m --- = 7\n 24 │\u001b[0m\n 25 │\u001b[0m [___]\n 26 │\u001b[0m ___ = 8\n 27 │\u001b[0m\n 28 │\u001b[0m [111]\n 29 │\u001b[0m 111 = 9\n 30 │\u001b[0m\n 31 │\u001b[0m [inline]\n 32 │\u001b[0m --- = {--- = 10, ___ = 11, 111 = 12}\n\n output from parser-cmd (PID 1671604) (stderr):\n 1 │\u001b[0m line 4: expected key-value pair\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\ntoml-test v2.2.0 [/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260816.121804/build/toml/toml-decoder] [no encoder]\nskipped tests: 856\n valid tests: 15 passed, 13 failed\nencoder tests: no encoder command given\ninvalid tests: 0 passed, 0 failed\nharness: /home/barlo/.local/bin/toml-test toml-test v2.2.0; go1.24.6 linux/amd64; race=false; cgo=true\nFAIL invalid/key/newline-06\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1671842):\n 1 │\u001b[0m key =\n 2 │\u001b[0m 1\n\n output from parser-cmd (PID 1671842) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"key\": {\"type\": \"integer\", \"value\": \"1\"}\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: 823\n valid tests: 0 passed, 0 failed\nencoder tests: no encoder command given\ninvalid tests: 60 passed, 1 failed\n","exit_code":1,"status":"failed"}}
{"type":"item.started","item":{"id":"item_12","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_12","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_13","type":"command_execution","command":"/bin/bash -lc \"gofmt -w internal/toml/toml.go && go build -o toml-decoder ./cmd/toml-decoder && TOML_TEST=/home/barlo/.local/bin/toml-test sh sources/stage_test.sh 'valid/string/**'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_13","type":"command_execution","command":"/bin/bash -lc \"gofmt -w internal/toml/toml.go && go build -o toml-decoder ./cmd/toml-decoder && TOML_TEST=/home/barlo/.local/bin/toml-test sh sources/stage_test.sh 'valid/string/**'\"","aggregated_output":"harness: /home/barlo/.local/bin/toml-test toml-test v2.2.0; go1.24.6 linux/amd64; race=false; cgo=true\nFAIL valid/string/ends-in-whitespace-escape\n line 1: invalid escape\n \n Exit 1\n\n input sent to parser-cmd (PID 1672626):\n 1 │\u001b[0m beee = \"\"\"\n 2 │\u001b[0m heeee\n 3 │\u001b[0m geeee\\\n 4 │\u001b[0m\n 5 │\u001b[0m\n 6 │\u001b[0m \"\"\"\n\n output from parser-cmd (PID 1672626) (stderr):\n 1 │\u001b[0m line 1: invalid escape\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/string/multiline\n line 17: invalid escape\n \n Exit 1\n\n input sent to parser-cmd (PID 1672623):\n 1 │\u001b[0m # NOTE: this file includes some literal tab characters.\n 2 │\u001b[0m\n 3 │\u001b[0m equivalent_one = \"The quick brown fox jumps over the lazy dog.\"\n 4 │\u001b[0m equivalent_two = \"\"\"\n 5 │\u001b[0m The quick brown \\\n 6 │\u001b[0m\n 7 │\u001b[0m\n 8 │\u001b[0m fox jumps over \\\n 9 │\u001b[0m the lazy dog.\"\"\"\n 10 │\u001b[0m\n 11 │\u001b[0m equivalent_three = \"\"\"\\\n 12 │\u001b[0m The quick brown \\\n 13 │\u001b[0m fox jumps over \\\n 14 │\u001b[0m the lazy dog.\\\n 15 │\u001b[0m \"\"\"\n 16 │\u001b[0m\n 17 │\u001b[0m whitespace-after-bs = \"\"\"\\\n 18 │\u001b[0m The quick brown \\\n 19 │\u001b[0m fox jumps over \\\n 20 │\u001b[0m the lazy dog.\\\n 21 │\u001b[0m \"\"\"\n 22 │\u001b[0m\n 23 │\u001b[0m no-space = \"\"\"a\\\n 24 │\u001b[0m b\"\"\"\n 25 │\u001b[0m\n 26 │\u001b[0m # Has tab character.\n 27 │\u001b[0m keep-ws-before = \"\"\"a \t\\\n 28 │\u001b[0m b\"\"\"\n 29 │\u001b[0m\n 30 │\u001b[0m escape-bs-1 = \"\"\"a \\\\\n 31 │\u001b[0m b\"\"\"\n 32 │\u001b[0m\n 33 │\u001b[0m escape-bs-2 = \"\"\"a \\\\\\\n 34 │\u001b[0m b\"\"\"\n 35 │\u001b[0m\n 36 │\u001b[0m escape-bs-3 = \"\"\"a \\\\\\\\\n 37 │\u001b[0m b\"\"\"\n\n output from parser-cmd (PID 1672623) (stderr):\n 1 │\u001b[0m line 17: invalid escape\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/string/multiline-empty\n line 11: invalid escape\n \n Exit 1\n\n input sent to parser-cmd (PID 1672557):\n 1 │\u001b[0m empty-1 = \"\"\"\"\"\"\n 2 │\u001b[0m\n 3 │\u001b[0m # A newline immediately following the opening delimiter will be trimmed.\n 4 │\u001b[0m empty-2 = \"\"\"\n 5 │\u001b[0m \"\"\"\n 6 │\u001b[0m\n 7 │\u001b[0m # \\ at the end of line trims newlines as well; note that last \\ is followed by\n 8 │\u001b[0m # two spaces, which are ignored.\n 9 │\u001b[0m empty-3 = \"\"\"\\\n 10 │\u001b[0m \"\"\"\n 11 │\u001b[0m empty-4 = \"\"\"\\\n 12 │\u001b[0m \\\n 13 │\u001b[0m \\\n 14 │\u001b[0m \"\"\"\n\n output from parser-cmd (PID 1672557) (stderr):\n 1 │\u001b[0m line 11: invalid escape\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\ntoml-test v2.2.0 [/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260816.121804/build/toml/toml-decoder] [no encoder]\nskipped tests: 861\n valid tests: 20 passed, 3 failed\nencoder tests: no encoder command given\ninvalid tests: 0 passed, 0 failed\n","exit_code":1,"status":"failed"}}
{"type":"item.started","item":{"id":"item_14","type":"command_execution","command":"/bin/bash -lc \"./toml-decoder <<'EOF'\na = \\\"\\\"\\\"\\\\\n x\\\\\n \\\"\\\"\\\"\nEOF\nprintf 'a = \\\"\\\"\\\"\\\\\\\\\\\\n x\\\\\\\\\\\\n \\\"\\\"\\\"\\\\n' | od -An -tx1\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_14","type":"command_execution","command":"/bin/bash -lc \"./toml-decoder <<'EOF'\na = \\\"\\\"\\\"\\\\\n x\\\\\n \\\"\\\"\\\"\nEOF\nprintf 'a = \\\"\\\"\\\"\\\\\\\\\\\\n x\\\\\\\\\\\\n \\\"\\\"\\\"\\\\n' | od -An -tx1\"","aggregated_output":"{\"a\":{\"type\":\"string\",\"value\":\"x\"}}\n 61 20 3d 20 22 22 22 5c 0a 20 20 78 5c 0a 20 20\n 22 22 22 0a\n","exit_code":0,"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.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.go","kind":"update"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_16","type":"command_execution","command":"/bin/bash -lc \"gofmt -w internal/toml/toml.go && go test ./... && TOML_TEST=/home/barlo/.local/bin/toml-test sh sources/stage_test.sh 'valid/key/**'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_16","type":"command_execution","command":"/bin/bash -lc \"gofmt -w internal/toml/toml.go && go test ./... && TOML_TEST=/home/barlo/.local/bin/toml-test sh sources/stage_test.sh 'valid/key/**'\"","aggregated_output":"ok \tgithub.com/owner/toml-decoder/cmd/toml-decoder\t(cached)\nok \tgithub.com/owner/toml-decoder/internal/toml\t0.007s\nharness: /home/barlo/.local/bin/toml-test toml-test v2.2.0; go1.24.6 linux/amd64; race=false; cgo=true\nFAIL valid/key/dotted-03\n line 4: invalid value \"42.666\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1673324):\n 1 │\u001b[0m top.key = 1\n 2 │\u001b[0m\n 3 │\u001b[0m [tbl]\n 4 │\u001b[0m a.b.c = 42.666\n 5 │\u001b[0m\n 6 │\u001b[0m [a.few.dots]\n 7 │\u001b[0m polka.dot = \"again?\"\n 8 │\u001b[0m polka.dance-with = \"Dot\"\n\n output from parser-cmd (PID 1673324) (stderr):\n 1 │\u001b[0m line 4: invalid value \"42.666\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/key/like-date\n line 2: invalid value \"1\\n\\\"2001-02-04\\\" = 2\\n'2001-02-05' = 3\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1673239):\n 1 │\u001b[0m # '-' is a valid character in keys: make a key that looks like a date.\n 2 │\u001b[0m 2001-02-03 = 1\n 3 │\u001b[0m \"2001-02-04\" = 2\n 4 │\u001b[0m '2001-02-05' = 3\n 5 │\u001b[0m\n 6 │\u001b[0m # Also include datetime and time for good measure; these need to be quoted as\n 7 │\u001b[0m # ':' isn't a valid bare key.\n 8 │\u001b[0m \"2001-02-06T15:16:17+01:00\" = 4\n 9 │\u001b[0m \"2001-02-07T15:16:17\" = 5\n 10 │\u001b[0m \"15:16:17\" = 6\n 11 │\u001b[0m\n 12 │\u001b[0m # Dotted keys\n 13 │\u001b[0m a.2001-02-08 = 7\n 14 │\u001b[0m a.2001-02-09.2001-02-10 = 8\n 15 │\u001b[0m 2001-02-11.a.2001-02-12 = 9\n 16 │\u001b[0m\n 17 │\u001b[0m # Table names\n 18 │\u001b[0m [2002-01-02]\n 19 │\u001b[0m k = 10\n 20 │\u001b[0m\n 21 │\u001b[0m [2002-01-02.2024-01-03]\n 22 │\u001b[0m k = 11\n 23 │\u001b[0m\n 24 │\u001b[0m [[2002-01-04]]\n 25 │\u001b[0m k = 12\n\n output from parser-cmd (PID 1673239) (stderr):\n 1 │\u001b[0m line 2: invalid value \"1\\n\\\"2001-02-04\\\" = 2\\n'2001-02-05' = 3\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/key/start\n line 32: invalid value \"{--- = 10, ___ = 11, 111 = 12}\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1673332):\n 1 │\u001b[0m # Table and keys can start with any character; there is no requirement for it to\n 2 │\u001b[0m # start with a letter.\n 3 │\u001b[0m\n 4 │\u001b[0m [-key]\n 5 │\u001b[0m -key = 1\n 6 │\u001b[0m\n 7 │\u001b[0m [_key]\n 8 │\u001b[0m _key = 2\n 9 │\u001b[0m\n 10 │\u001b[0m [1key]\n 11 │\u001b[0m 1key = 3\n 12 │\u001b[0m\n 13 │\u001b[0m [-]\n 14 │\u001b[0m - = 4\n 15 │\u001b[0m\n 16 │\u001b[0m [_]\n 17 │\u001b[0m _ = 5\n 18 │\u001b[0m\n 19 │\u001b[0m [1]\n 20 │\u001b[0m 1 = 6\n 21 │\u001b[0m\n 22 │\u001b[0m [---]\n 23 │\u001b[0m --- = 7\n 24 │\u001b[0m\n 25 │\u001b[0m [___]\n 26 │\u001b[0m ___ = 8\n 27 │\u001b[0m\n 28 │\u001b[0m [111]\n 29 │\u001b[0m 111 = 9\n 30 │\u001b[0m\n 31 │\u001b[0m [inline]\n 32 │\u001b[0m --- = {--- = 10, ___ = 11, 111 = 12}\n\n output from parser-cmd (PID 1673332) (stderr):\n 1 │\u001b[0m line 32: invalid value \"{--- = 10, ___ = 11, 111 = 12}\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\ntoml-test v2.2.0 [/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260816.121804/build/toml/toml-decoder] [no encoder]\nskipped tests: 856\n valid tests: 25 passed, 3 failed\nencoder tests: no encoder command given\ninvalid tests: 0 passed, 0 failed\n","exit_code":1,"status":"failed"}}
{"type":"item.started","item":{"id":"item_17","type":"command_execution","command":"/bin/bash -lc \"sed -n '135,205p' internal/toml/toml.go\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_17","type":"command_execution","command":"/bin/bash -lc \"sed -n '135,205p' internal/toml/toml.go\"","aggregated_output":"\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\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] == '\\'' || trimmed[0] == '\"' {\n\t\tend, value, err := parseQuoted(trimmed, 0, trimmed[0] == '\"')\n\t\treturn scalar{Type: \"string\", Value: value}, offset + end, err\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_18","type":"command_execution","command":"/bin/bash -lc \"sed -n '205,245p' internal/toml/toml.go\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_18","type":"command_execution","command":"/bin/bash -lc \"sed -n '205,245p' internal/toml/toml.go\"","aggregated_output":"\t\treturn scalar{Type: \"string\", Value: value}, offset + end, err\n\t}\n\tend := len(trimmed)\n\tif newline := strings.IndexByte(trimmed, '\\n'); newline >= 0 {\n\t\tend = newline\n\t}\n\tfor i, r := range trimmed {\n\t\tif r == '#' {\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\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","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_19","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_19","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_20","type":"command_execution","command":"/bin/bash -lc \"gofmt -w internal/toml/toml.go && go test ./... && TOML_TEST=/home/barlo/.local/bin/toml-test sh sources/stage_test.sh 'valid/string/**'; TOML_TEST=/home/barlo/.local/bin/toml-test sh sources/stage_test.sh 'invalid/string/**'; TOML_TEST=/home/barlo/.local/bin/toml-test sh sources/stage_test.sh 'valid/key/**'; TOML_TEST=/home/barlo/.local/bin/toml-test sh sources/stage_test.sh 'invalid/key/**'\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_20","type":"command_execution","command":"/bin/bash -lc \"gofmt -w internal/toml/toml.go && go test ./... && TOML_TEST=/home/barlo/.local/bin/toml-test sh sources/stage_test.sh 'valid/string/**'; TOML_TEST=/home/barlo/.local/bin/toml-test sh sources/stage_test.sh 'invalid/string/**'; TOML_TEST=/home/barlo/.local/bin/toml-test sh sources/stage_test.sh 'valid/key/**'; TOML_TEST=/home/barlo/.local/bin/toml-test sh sources/stage_test.sh 'invalid/key/**'\"","aggregated_output":"ok \tgithub.com/owner/toml-decoder/cmd/toml-decoder\t(cached)\nok \tgithub.com/owner/toml-decoder/internal/toml\t0.007s\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: 861\n valid tests: 23 passed, 0 failed\nencoder tests: no encoder command given\ninvalid tests: 0 passed, 0 failed\nharness: /home/barlo/.local/bin/toml-test toml-test v2.2.0; go1.24.6 linux/amd64; race=false; cgo=true\nFAIL invalid/string/literal-multiline-quotes-01\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1674458):\n 1 │\u001b[0m a = '''6 apostrophes: ''''''\n\n output from parser-cmd (PID 1674458) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"a\": {\"type\": \"string\", \"value\": \"6 apostrophes: '''\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/string/literal-multiline-quotes-02\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1674474):\n 1 │\u001b[0m a = '''15 apostrophes: ''''''''''''''''''\n\n output from parser-cmd (PID 1674474) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"a\": {\"type\": \"string\", \"value\": \"15 apostrophes: '''''''''''''''\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/string/multiline-quotes-01\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1674533):\n 1 │\u001b[0m a = \"\"\"6 quotes: \"\"\"\"\"\"\n\n output from parser-cmd (PID 1674533) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"a\": {\"type\": \"string\", \"value\": \"6 quotes: \\\"\\\"\\\"\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\ntoml-test v2.2.0 [/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260816.121804/build/toml/toml-decoder] [no encoder]\nskipped tests: 807\n valid tests: 0 passed, 0 failed\nencoder tests: no encoder command given\ninvalid tests: 74 passed, 3 failed\nharness: /home/barlo/.local/bin/toml-test toml-test v2.2.0; go1.24.6 linux/amd64; race=false; cgo=true\nFAIL valid/key/like-date\n line 2: invalid value \"1\\n\\\"2001-02-04\\\" = 2\\n'2001-02-05' = 3\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1674921):\n 1 │\u001b[0m # '-' is a valid character in keys: make a key that looks like a date.\n 2 │\u001b[0m 2001-02-03 = 1\n 3 │\u001b[0m \"2001-02-04\" = 2\n 4 │\u001b[0m '2001-02-05' = 3\n 5 │\u001b[0m\n 6 │\u001b[0m # Also include datetime and time for good measure; these need to be quoted as\n 7 │\u001b[0m # ':' isn't a valid bare key.\n 8 │\u001b[0m \"2001-02-06T15:16:17+01:00\" = 4\n 9 │\u001b[0m \"2001-02-07T15:16:17\" = 5\n 10 │\u001b[0m \"15:16:17\" = 6\n 11 │\u001b[0m\n 12 │\u001b[0m # Dotted keys\n 13 │\u001b[0m a.2001-02-08 = 7\n 14 │\u001b[0m a.2001-02-09.2001-02-10 = 8\n 15 │\u001b[0m 2001-02-11.a.2001-02-12 = 9\n 16 │\u001b[0m\n 17 │\u001b[0m # Table names\n 18 │\u001b[0m [2002-01-02]\n 19 │\u001b[0m k = 10\n 20 │\u001b[0m\n 21 │\u001b[0m [2002-01-02.2024-01-03]\n 22 │\u001b[0m k = 11\n 23 │\u001b[0m\n 24 │\u001b[0m [[2002-01-04]]\n 25 │\u001b[0m k = 12\n\n output from parser-cmd (PID 1674921) (stderr):\n 1 │\u001b[0m line 2: invalid value \"1\\n\\\"2001-02-04\\\" = 2\\n'2001-02-05' = 3\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/key/start\n line 32: invalid value \"{--- = 10, ___ = 11, 111 = 12}\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1674890):\n 1 │\u001b[0m # Table and keys can start with any character; there is no requirement for it to\n 2 │\u001b[0m # start with a letter.\n 3 │\u001b[0m\n 4 │\u001b[0m [-key]\n 5 │\u001b[0m -key = 1\n 6 │\u001b[0m\n 7 │\u001b[0m [_key]\n 8 │\u001b[0m _key = 2\n 9 │\u001b[0m\n 10 │\u001b[0m [1key]\n 11 │\u001b[0m 1key = 3\n 12 │\u001b[0m\n 13 │\u001b[0m [-]\n 14 │\u001b[0m - = 4\n 15 │\u001b[0m\n 16 │\u001b[0m [_]\n 17 │\u001b[0m _ = 5\n 18 │\u001b[0m\n 19 │\u001b[0m [1]\n 20 │\u001b[0m 1 = 6\n 21 │\u001b[0m\n 22 │\u001b[0m [---]\n 23 │\u001b[0m --- = 7\n 24 │\u001b[0m\n 25 │\u001b[0m [___]\n 26 │\u001b[0m ___ = 8\n 27 │\u001b[0m\n 28 │\u001b[0m [111]\n 29 │\u001b[0m 111 = 9\n 30 │\u001b[0m\n 31 │\u001b[0m [inline]\n 32 │\u001b[0m --- = {--- = 10, ___ = 11, 111 = 12}\n\n output from parser-cmd (PID 1674890) (stderr):\n 1 │\u001b[0m line 32: invalid value \"{--- = 10, ___ = 11, 111 = 12}\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\ntoml-test v2.2.0 [/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260816.121804/build/toml/toml-decoder] [no encoder]\nskipped tests: 856\n valid tests: 26 passed, 2 failed\nencoder tests: no encoder command given\ninvalid tests: 0 passed, 0 failed\nharness: /home/barlo/.local/bin/toml-test toml-test v2.2.0; go1.24.6 linux/amd64; race=false; cgo=true\nFAIL invalid/key/newline-06\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1675181):\n 1 │\u001b[0m key =\n 2 │\u001b[0m 1\n\n output from parser-cmd (PID 1675181) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"key\": {\"type\": \"integer\", \"value\": \"1\"}\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: 823\n valid tests: 0 passed, 0 failed\nencoder tests: no encoder command given\ninvalid tests: 60 passed, 1 failed\n","exit_code":1,"status":"failed"}}
{"type":"item.started","item":{"id":"item_21","type":"command_execution","command":"/bin/bash -lc \"./toml-decoder <<'EOF'\n2001-02-03 = 1\n\\\"2001-02-04\\\" = 2\n'2001-02-05' = 3\nEOF\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_21","type":"command_execution","command":"/bin/bash -lc \"./toml-decoder <<'EOF'\n2001-02-03 = 1\n\\\"2001-02-04\\\" = 2\n'2001-02-05' = 3\nEOF\"","aggregated_output":"{\"2001-02-03\":{\"type\":\"integer\",\"value\":\"1\"},\"2001-02-04\":{\"type\":\"integer\",\"value\":\"2\"},\"2001-02-05\":{\"type\":\"integer\",\"value\":\"3\"}}\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_22","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_22","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_23","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_23","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_24","type":"agent_message","text":"The staged string slice is now fully passing on valid cases; invalid-string coverage is down to delimiter edge cases, and key coverage is largely passing with remaining failures caused by adjacent scalar/table features outside this block (inline-table/datetime handling). I’ve added focused in-package tests for decoding and rejection semantics, and I’m doing the final verification run now."}}
{"type":"item.started","item":{"id":"item_25","type":"command_execution","command":"/bin/bash -lc 'gofmt -w internal/toml/toml.go internal/toml/toml_test.go && go test ./... && go vet ./... && go build ./cmd/toml-decoder && TOML_TEST=/home/barlo/.local/bin/toml-test sh sources/full_test.sh'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_25","type":"command_execution","command":"/bin/bash -lc 'gofmt -w internal/toml/toml.go internal/toml/toml_test.go && go test ./... && go vet ./... && go build ./cmd/toml-decoder && TOML_TEST=/home/barlo/.local/bin/toml-test sh sources/full_test.sh'","aggregated_output":"ok \tgithub.com/owner/toml-decoder/cmd/toml-decoder\t(cached)\n--- FAIL: TestDecodeStringsAndDottedKeys (0.00s)\n toml_test.go:21: Decode returned error: line 6: expected key-value pair\nFAIL\nFAIL\tgithub.com/owner/toml-decoder/internal/toml\t0.007s\nFAIL\n","exit_code":1,"status":"failed"}}
{"type":"item.started","item":{"id":"item_26","type":"command_execution","command":"/bin/bash -lc \"sed -n '12,32p' internal/toml/toml_test.go\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_26","type":"command_execution","command":"/bin/bash -lc \"sed -n '12,32p' internal/toml/toml_test.go\"","aggregated_output":"\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","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_27","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_27","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_28","type":"command_execution","command":"/bin/bash -lc \"sed -n '18,22p' internal/toml/toml_test.go && gofmt -w internal/toml/toml_test.go && go test ./...\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_28","type":"command_execution","command":"/bin/bash -lc \"sed -n '18,22p' internal/toml/toml_test.go && gofmt -w internal/toml/toml_test.go && go test ./...\"","aggregated_output":"ok \tgithub.com/owner/toml-decoder/cmd/toml-decoder\t(cached)\nok \tgithub.com/owner/toml-decoder/internal/toml\t0.010s\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_29","type":"command_execution","command":"/bin/bash -lc 'go vet ./... && go build ./cmd/toml-decoder && TOML_TEST=/home/barlo/.local/bin/toml-test sh sources/full_test.sh'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_29","type":"command_execution","command":"/bin/bash -lc 'go vet ./... && go build ./cmd/toml-decoder && TOML_TEST=/home/barlo/.local/bin/toml-test 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, ]\\nfloats = [1.1, 2.1, 3.1]\\nstrings = [\\\"a\\\", \\\"b\\\", \\\"c\\\"]\\ndates = [\\n\\t1987-07-05T17:45:00Z,\\n\\t1979-05-27T07:32:00,\\n\\t2006-06-01,\\n\\t11:00:00,\\n]\\ncomments = [\\n 1,\\n 2,\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1676790):\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 1676790) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[1, 2, 3, ]\\nfloats = [1.1, 2.1, 3.1]\\nstrings = [\\\"a\\\", \\\"b\\\", \\\"c\\\"]\\ndates = [\\n\\t1987-07-05T17:45:00Z,\\n\\t1979-05-27T07:32:00,\\n\\t2006-06-01,\\n\\t11:00:00,\\n]\\ncomments = [\\n 1,\\n 2,\"\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 1676777):\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 1676777) (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 1676774):\n 1 │\u001b[0m a = [true, false]\n\n output from parser-cmd (PID 1676774) (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 1676762):\n 1 │\u001b[0m thevoid = [[[[[]]]]]\n\n output from parser-cmd (PID 1676762) (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 1676779):\n 1 │\u001b[0m mixed = [[1, 2], [\"a\", \"b\"], [1.1, 2.1]]\n\n output from parser-cmd (PID 1676779) (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 1676754):\n 1 │\u001b[0m arrays-and-ints = [1, [\"Arrays are not integers.\"]]\n\n output from parser-cmd (PID 1676754) (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 1676759):\n 1 │\u001b[0m ints-and-floats = [1, 1.1]\n\n output from parser-cmd (PID 1676759) (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 1676755):\n 1 │\u001b[0m strings-and-ints = [\"hi\", 42]\n\n output from parser-cmd (PID 1676755) (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 \\\"Foo Bar <foo@example.com>\\\",\\n { name = \\\"Baz Qux\\\", email = \\\"bazqux@example.com\\\", url = \\\"https://example.com/bazqux\\\" }\\n]\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1676761):\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 1676761) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[\\n \\\"Foo Bar <foo@example.com>\\\",\\n { name = \\\"Baz Qux\\\", email = \\\"bazqux@example.com\\\", url = \\\"https://example.com/bazqux\\\" }\\n]\"\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 1676781):\n 1 │\u001b[0m nest = [[\"a\"], [\"b\"]]\n\n output from parser-cmd (PID 1676781) (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 1676766):\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 1676766) (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 1676775):\n 1 │\u001b[0m a = [ { b = {} } ]\n\n output from parser-cmd (PID 1676775) (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 1676750):\n 1 │\u001b[0m ints = [1,2,3]\n\n output from parser-cmd (PID 1676750) (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 1676758):\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 1676758) (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 1676756):\n 1 │\u001b[0m title = [ \" \\\", \",]\n\n output from parser-cmd (PID 1676756) (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 1676768):\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 1676768) (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 1676753):\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 1676753) (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 1676747):\n 1 │\u001b[0m string_array = [ \"all\", 'strings', \"\"\"are the same\"\"\", '''type''']\n\n output from parser-cmd (PID 1676747) (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 1676765):\n 1 │\u001b[0m foo = [ { bar=\"\\\"{{baz}}\\\"\"} ]\n\n output from parser-cmd (PID 1676765) (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 1676748):\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 1676748) (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/after-literal-no-ws\n line 1: invalid value \"inf\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1676735):\n 1 │\u001b[0m inf=inf#infinity\n 2 │\u001b[0m nan=nan#not a number\n 3 │\u001b[0m true=true#true\n 4 │\u001b[0m false=false#false\n\n output from parser-cmd (PID 1676735) (stderr):\n 1 │\u001b[0m line 1: invalid value \"inf\"\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 1676760):\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 1676760) (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 1676763):\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 1676763) (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 1676764):\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 1676764) (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 1676788):\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 1676788) (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 1676783):\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 1676783) (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 1676929):\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 1676929) (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 1676785):\n 1 │\u001b[0m bestdayever = 1987-07-05\n\n output from parser-cmd (PID 1676785) (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 1676928):\n 1 │\u001b[0m besttimeever = 17:45:00\n 2 │\u001b[0m milliseconds = 10:32:00.555\n\n output from parser-cmd (PID 1676928) (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 1676930):\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 1676930) (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\\npdt = 1987-07-05T17:45:56-05:00\\nnzst = 1987-07-05T17:45:56+12:00\\nnzdt = 1987-07-05T17:45:56+13:00\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1676931):\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 1676931) (stderr):\n 1 │\u001b[0m line 1: invalid value \"1987-07-05T17:45:56Z\\npdt = 1987-07-05T17:45:56-05:00\\nnzst = 1987-07-05T17:45:56+12:00\\nnzdt = 1987-07-05T17:45:56+13:00\"\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 1676958):\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 1676958) (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/float/exponent\n line 1: invalid value \"3e2\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1676960):\n 1 │\u001b[0m lower = 3e2\n 2 │\u001b[0m upper = 3E2\n 3 │\u001b[0m neg = 3e-2\n 4 │\u001b[0m pos = 3E+2\n 5 │\u001b[0m zero = 3e0\n 6 │\u001b[0m pointlower = 3.1e2\n 7 │\u001b[0m pointupper = 3.1E2\n 8 │\u001b[0m minustenth = -1E-1\n\n output from parser-cmd (PID 1676960) (stderr):\n 1 │\u001b[0m line 1: invalid value \"3e2\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/float/inf-and-nan\n line 3: invalid value \"nan\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1676965):\n 1 │\u001b[0m # We don't encode +nan and -nan back with the signs; many languages don't\n 2 │\u001b[0m # support a sign on NaN (it doesn't really make much sense).\n 3 │\u001b[0m nan = nan\n 4 │\u001b[0m nan_neg = -nan\n 5 │\u001b[0m nan_plus = +nan\n 6 │\u001b[0m infinity = inf\n 7 │\u001b[0m infinity_neg = -inf\n 8 │\u001b[0m infinity_plus = +inf\n\n output from parser-cmd (PID 1676965) (stderr):\n 1 │\u001b[0m line 3: invalid value \"nan\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/float/underscore\n line 3: invalid value \"3e1_4\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1677218):\n 1 │\u001b[0m before = 3_141.5927\n 2 │\u001b[0m after = 3141.592_7\n 3 │\u001b[0m exponent = 3e1_4\n\n output from parser-cmd (PID 1677218) (stderr):\n 1 │\u001b[0m line 3: invalid value \"3e1_4\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/float/zero\n line 4: invalid value \"0e0\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1677183):\n 1 │\u001b[0m zero = 0.0\n 2 │\u001b[0m signed-pos = +0.0\n 3 │\u001b[0m signed-neg = -0.0\n 4 │\u001b[0m exponent = 0e0\n 5 │\u001b[0m exponent-two-0 = 0e00\n 6 │\u001b[0m exponent-signed-pos = +0e0\n 7 │\u001b[0m exponent-signed-neg = -0e0\n\n output from parser-cmd (PID 1677183) (stderr):\n 1 │\u001b[0m line 4: invalid value \"0e0\"\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 1677088):\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 1677088) (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 1676961):\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 1676961) (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 1676963):\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 1676963) (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 }, {} ]\\nempty_in_array2 = [{},{not_empty=1}]\\nmany_empty = [{},{},{}]\\nnested_empty = {\\\"empty\\\"={}}\\nwith_cmt ={ }\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1676968):\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 1676968) (stderr):\n 1 │\u001b[0m line 3: invalid value \"[ { not_empty = 1 }, {} ]\\nempty_in_array2 = [{},{not_empty=1}]\\nmany_empty = [{},{},{}]\\nnested_empty = {\\\"empty\\\"={}}\\nwith_cmt ={ }\"\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 1676970):\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 1676970) (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 1677035):\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 1677035) (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 1677036):\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 1677036) (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 1677037):\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 1677037) (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 1677039):\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 1677039) (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 1677041):\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 1677041) (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/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 1677040):\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 1677040) (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 1677042):\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 1677042) (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 line 1: invalid value \"0b11010110\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1677044):\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 1677044) (stderr):\n 1 │\u001b[0m line 1: invalid value \"0b11010110\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\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 1677082):\n 1 │\u001b[0m kilo = 1_000\n 2 │\u001b[0m x = 1_1_1_1\n\n output from parser-cmd (PID 1677082) (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 line 5: invalid value \"0x0\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1677084):\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 1677084) (stderr):\n 1 │\u001b[0m line 5: invalid value \"0x0\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/key/like-date\n line 2: invalid value \"1\\n\\\"2001-02-04\\\" = 2\\n'2001-02-05' = 3\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1677179):\n 1 │\u001b[0m # '-' is a valid character in keys: make a key that looks like a date.\n 2 │\u001b[0m 2001-02-03 = 1\n 3 │\u001b[0m \"2001-02-04\" = 2\n 4 │\u001b[0m '2001-02-05' = 3\n 5 │\u001b[0m\n 6 │\u001b[0m # Also include datetime and time for good measure; these need to be quoted as\n 7 │\u001b[0m # ':' isn't a valid bare key.\n 8 │\u001b[0m \"2001-02-06T15:16:17+01:00\" = 4\n 9 │\u001b[0m \"2001-02-07T15:16:17\" = 5\n 10 │\u001b[0m \"15:16:17\" = 6\n 11 │\u001b[0m\n 12 │\u001b[0m # Dotted keys\n 13 │\u001b[0m a.2001-02-08 = 7\n 14 │\u001b[0m a.2001-02-09.2001-02-10 = 8\n 15 │\u001b[0m 2001-02-11.a.2001-02-12 = 9\n 16 │\u001b[0m\n 17 │\u001b[0m # Table names\n 18 │\u001b[0m [2002-01-02]\n 19 │\u001b[0m k = 10\n 20 │\u001b[0m\n 21 │\u001b[0m [2002-01-02.2024-01-03]\n 22 │\u001b[0m k = 11\n 23 │\u001b[0m\n 24 │\u001b[0m [[2002-01-04]]\n 25 │\u001b[0m k = 12\n\n output from parser-cmd (PID 1677179) (stderr):\n 1 │\u001b[0m line 2: invalid value \"1\\n\\\"2001-02-04\\\" = 2\\n'2001-02-05' = 3\"\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 1677220):\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 1677220) (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 ]\\ncolors = [ \\\"red\\\", \\\"yellow\\\", \\\"green\\\" ]\\nnested_arrays_of_ints = [ [ 1, 2 ], [3, 4, 5] ]\\nnested_mixed_array = [ [ 1, 2 ], [\\\"a\\\", \\\"b\\\", \\\"c\\\"] ]\\nstring_array = [ \\\"all\\\", 'strings', \\\"\\\"\\\"are the same\\\"\\\"\\\", '''type''' ]\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1677431):\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 1677431) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[ 1, 2, 3 ]\\ncolors = [ \\\"red\\\", \\\"yellow\\\", \\\"green\\\" ]\\nnested_arrays_of_ints = [ [ 1, 2 ], [3, 4, 5] ]\\nnested_mixed_array = [ [ 1, 2 ], [\\\"a\\\", \\\"b\\\", \\\"c\\\"] ]\\nstring_array = [ \\\"all\\\", 'strings', \\\"\\\"\\\"are the same\\\"\\\"\\\", '''type''' ]\"\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 1, 2, 3\\n]\\n\\nintegers3 = [\\n 1,\\n 2,\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1677304):\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 1677304) (stderr):\n 1 │\u001b[0m line 1: invalid value \"[\\n 1, 2, 3\\n]\\n\\nintegers3 = [\\n 1,\\n 2,\"\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 3: invalid value \"738594937\\n\\n[[products]]\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1677314):\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 1677314) (stderr):\n 1 │\u001b[0m line 3: invalid value \"738594937\\n\\n[[products]]\"\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 1677274):\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 1677274) (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 1677271):\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 1677271) (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/float-0\n line 2: invalid value \"+1.0\\nflt2 = 3.1415\\nflt3 = -0.01\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1677259):\n 1 │\u001b[0m # fractional\n 2 │\u001b[0m flt1 = +1.0\n 3 │\u001b[0m flt2 = 3.1415\n 4 │\u001b[0m flt3 = -0.01\n 5 │\u001b[0m\n 6 │\u001b[0m # exponent\n 7 │\u001b[0m flt4 = 5e+22\n 8 │\u001b[0m flt5 = 1e06\n 9 │\u001b[0m flt6 = -2E-2\n 10 │\u001b[0m\n 11 │\u001b[0m # both\n 12 │\u001b[0m flt7 = 6.626e-34\n\n output from parser-cmd (PID 1677259) (stderr):\n 1 │\u001b[0m line 2: invalid value \"+1.0\\nflt2 = 3.1415\\nflt3 = -0.01\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/spec-1.0.0/float-2\n line 2: invalid value \"inf\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1677272):\n 1 │\u001b[0m # infinity\n 2 │\u001b[0m sf1 = inf # positive infinity\n 3 │\u001b[0m sf2 = +inf # positive infinity\n 4 │\u001b[0m sf3 = -inf # negative infinity\n 5 │\u001b[0m\n 6 │\u001b[0m # not a number\n 7 │\u001b[0m sf4 = nan # actual sNaN/qNaN encoding is implementation-specific\n 8 │\u001b[0m sf5 = +nan # same as `nan`\n 9 │\u001b[0m sf6 = -nan # valid, actual encoding is implementation-specific\n\n output from parser-cmd (PID 1677272) (stderr):\n 1 │\u001b[0m line 2: invalid value \"inf\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/spec-1.0.0/integer-0\n Values for key \"int1\" don't match:\n Expected: 99\n Your encoder: +99\n\n input sent to parser-cmd (PID 1677297):\n 1 │\u001b[0m int1 = +99\n 2 │\u001b[0m int2 = 42\n 3 │\u001b[0m int3 = 0\n 4 │\u001b[0m int4 = -17\n\n output from parser-cmd (PID 1677297) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"int1\": {\"type\": \"integer\", \"value\": \"+99\"},\n 3 │\u001b[0m \"int2\": {\"type\": \"integer\", \"value\": \"42\"},\n 4 │\u001b[0m \"int3\": {\"type\": \"integer\", \"value\": \"0\"},\n 5 │\u001b[0m \"int4\": {\"type\": \"integer\", \"value\": \"-17\"}\n 6 │\u001b[0m }\n\n want:\n 1 │\u001b[0m {\n 2 │\u001b[0m \"int1\": {\"type\": \"integer\", \"value\": \"99\"},\n 3 │\u001b[0m \"int2\": {\"type\": \"integer\", \"value\": \"42\"},\n 4 │\u001b[0m \"int3\": {\"type\": \"integer\", \"value\": \"0\"},\n 5 │\u001b[0m \"int4\": {\"type\": \"integer\", \"value\": \"-17\"}\n 6 │\u001b[0m }\n\nFAIL valid/spec-1.0.0/integer-1\n line 1: invalid value \"1_000\\nint6 = 5_349_221\\nint7 = 53_49_221\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1677307):\n 1 │\u001b[0m int5 = 1_000\n 2 │\u001b[0m int6 = 5_349_221\n 3 │\u001b[0m int7 = 53_49_221 # Indian number system grouping\n 4 │\u001b[0m int8 = 1_2_3_4_5 # VALID but discouraged\n\n output from parser-cmd (PID 1677307) (stderr):\n 1 │\u001b[0m line 1: invalid value \"1_000\\nint6 = 5_349_221\\nint7 = 53_49_221\"\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/spec-1.0.0/integer-2\n line 2: invalid value \"0xDEADBEEF\\nhex2 = 0xdeadbeef\\nhex3 = 0xdead_beef\"\n \n Exit 1\n\n input sent to parser-cmd (PID 1677650):\n 1 │\u001b[0m # hexadecimal with prefix `0x`\n 2 │\u001b[0m hex1 = 0xDEADBEEF\n 3 │\u001b[0m hex2 = 0xdeadbeef\n 4 │\u001b[0m hex3 = 0xdead_beef\n 5 │\u001b[0m\n 6 │\u001b[0m # octal with prefix `0o`\n 7 │\u001b[0m oct1 = 0o01234567\n 8 │\u001b[0m oct2 = 0o755 # useful for Unix file permissions\n 9 │\u001b[0m\n 10 │\u001b[0m # binary with prefix `0b`\n 11 │\u001b[0m bin1 = 0b11010110\n\n output from parser-cmd (PID 1677650) (stderr):\n 1 │\u001b[0m line 2: invalid value \"0xDEADBEEF\\nhex2 = 0xdeadbeef\\nhex3 = 0xdead_beef\"\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 1677360):\n 1 │\u001b[0m ld1 = 1979-05-27\n\n output from parser-cmd (PID 1677360) (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 1677389):\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 1677389) (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 1677386):\n 1 │\u001b[0m lt1 = 07:32:00\n 2 │\u001b[0m lt2 = 00:32:00.999\n\n output from parser-cmd (PID 1677386) (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 1677402):\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 1677402) (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 1677385):\n 1 │\u001b[0m odt4 = 1979-05-27 07:32:00Z\n\n output from parser-cmd (PID 1677385) (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 1677482):\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 1677482) (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 1677484):\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 1677484) (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 1677526):\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 1677526) (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 1677539):\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 1677539) (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 1677510):\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 1677510) (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 1677509):\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 1677509) (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/string/multiline-empty\n line 1: invalid multiline delimiter\n \n Exit 1\n\n input sent to parser-cmd (PID 1677670):\n 1 │\u001b[0m empty-1 = \"\"\"\"\"\"\n 2 │\u001b[0m\n 3 │\u001b[0m # A newline immediately following the opening delimiter will be trimmed.\n 4 │\u001b[0m empty-2 = \"\"\"\n 5 │\u001b[0m \"\"\"\n 6 │\u001b[0m\n 7 │\u001b[0m # \\ at the end of line trims newlines as well; note that last \\ is followed by\n 8 │\u001b[0m # two spaces, which are ignored.\n 9 │\u001b[0m empty-3 = \"\"\"\\\n 10 │\u001b[0m \"\"\"\n 11 │\u001b[0m empty-4 = \"\"\"\\\n 12 │\u001b[0m \\\n 13 │\u001b[0m \\\n 14 │\u001b[0m \"\"\"\n\n output from parser-cmd (PID 1677670) (stderr):\n 1 │\u001b[0m line 1: invalid multiline delimiter\n 2 │\u001b[0m\n 3 │\u001b[0m Exit 1\n\n want:\n <empty>\n\nFAIL valid/string/multiline-quotes\n line 19: invalid multiline delimiter\n \n Exit 1\n\n input sent to parser-cmd (PID 1677669):\n 1 │\u001b[0m # Make sure that quotes inside multiline strings are allowed, including right\n 2 │\u001b[0m # after the opening '''/\"\"\" and before the closing '''/\"\"\"\n 3 │\u001b[0m\n 4 │\u001b[0m lit_one = ''''one quote''''\n 5 │\u001b[0m lit_two = '''''two quotes'''''\n 6 │\u001b[0m lit_one_space = ''' 'one quote' '''\n 7 │\u001b[0m lit_two_space = ''' ''two quotes'' '''\n 8 │\u001b[0m\n 9 │\u001b[0m one = \"\"\"\"one quote\"\"\"\"\n 10 │\u001b[0m two = \"\"\"\"\"two quotes\"\"\"\"\"\n 11 │\u001b[0m one_space = \"\"\" \"one quote\" \"\"\"\n 12 │\u001b[0m two_space = \"\"\" \"\"two quotes\"\" \"\"\"\n 13 │\u001b[0m\n 14 │\u001b[0m mismatch1 = \"\"\"aaa'''bbb\"\"\"\n 15 │\u001b[0m mismatch2 = '''aaa\"\"\"bbb'''\n 16 │\u001b[0m\n 17 │\u001b[0m # Three opening \"\"\", then one escaped \", then two \"\" (allowed), and then three\n 18 │\u001b[0m # closing \"\"\"\n 19 │\u001b[0m escaped = \"\"\"lol\\\"\"\"\"\"\"\n 20 │\u001b[0m\n 21 │\u001b[0m five-quotes = \"\"\"\n 22 │\u001b[0m Closing with five quotes\n 23 │\u001b[0m \"\"\"\"\"\n 24 │\u001b[0m four-quotes = \"\"\"\n 25 │\u001b[0m Closing with four quotes\n 26 │\u001b[0m \"\"\"\"\n\n output from parser-cmd (PID 1677669) (stderr):\n 1 │\u001b[0m line 19: invalid multiline delimiter\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 1677632):\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 1677632) (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 1677649):\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 1677649) (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 1677848):\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 1677848) (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 1677999):\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 1677999) (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 1677944):\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 1677944) (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 1677947):\n 1 │\u001b[0m comment-cr = \"Carriage return in comment\" # \ra=1\n\n output from parser-cmd (PID 1677947) (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 1677948):\n 1 │\u001b[0m comment-del = \"0x7f\" # \n\n output from parser-cmd (PID 1677948) (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 1677961):\n 1 │\u001b[0m comment-ff = \"0x7f\" # \f\n\n output from parser-cmd (PID 1677961) (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 1677962):\n 1 │\u001b[0m comment-lf = \"ctrl-P\" # \u0010\n\n output from parser-cmd (PID 1677962) (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 1677964):\n 1 │\u001b[0m comment-null = \"null\" # \u0000\n\n output from parser-cmd (PID 1677964) (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 1677968):\n 1 │\u001b[0m comment-us = \"ctrl-_\" # \u001f\n\n output from parser-cmd (PID 1677968) (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 1677970):\n 1 │\u001b[0m multi-del = \"\"\"null\"\"\"\n\n output from parser-cmd (PID 1677970) (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 1677996):\n 1 │\u001b[0m \f\n\n output from parser-cmd (PID 1677996) (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 1678001):\n 1 │\u001b[0m \u000b\n\n output from parser-cmd (PID 1678001) (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 1678005):\n 1 │\u001b[0m rawmulti-del = '''null'''\n\n output from parser-cmd (PID 1678005) (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 1678034):\n 1 │\u001b[0m rawstring-del = 'null'\n\n output from parser-cmd (PID 1678034) (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 1678067):\n 1 │\u001b[0m string-del = \"null\"\n\n output from parser-cmd (PID 1678067) (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 1678341):\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 1678341) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"foo\": {\"type\": \"string\", \"value\": \"bar\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/float/exp-dot-02\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1678398):\n 1 │\u001b[0m exp-dot-02 = 1.e2\n\n output from parser-cmd (PID 1678398) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"exp-dot-02\": {\"type\": \"float\", \"value\": \"1.e2\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/float/exp-dot-03\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1678496):\n 1 │\u001b[0m exp-dot-03 = 3.e+20\n\n output from parser-cmd (PID 1678496) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"exp-dot-03\": {\"type\": \"float\", \"value\": \"3.e+20\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/float/exp-trailing-us-02\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1678400):\n 1 │\u001b[0m exp-trailing-us-02 = 1.2_e2\n\n output from parser-cmd (PID 1678400) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"exp-trailing-us-02\": {\"type\": \"float\", \"value\": \"1.2_e2\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/float/leading-dot\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1678396):\n 1 │\u001b[0m leading-dot = .12345\n\n output from parser-cmd (PID 1678396) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"leading-dot\": {\"type\": \"float\", \"value\": \".12345\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/float/leading-dot-neg\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1678393):\n 1 │\u001b[0m leading-dot-neg = -.12345\n\n output from parser-cmd (PID 1678393) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"leading-dot-neg\": {\"type\": \"float\", \"value\": \"-.12345\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/float/leading-dot-plus\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1678394):\n 1 │\u001b[0m leading-dot-plus = +.12345\n\n output from parser-cmd (PID 1678394) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"leading-dot-plus\": {\"type\": \"float\", \"value\": \"+.12345\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/float/leading-us\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1678446):\n 1 │\u001b[0m leading-us = _1.2\n\n output from parser-cmd (PID 1678446) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"leading-us\": {\"type\": \"float\", \"value\": \"_1.2\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/float/leading-zero\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1678451):\n 1 │\u001b[0m leading-zero = 03.14\n\n output from parser-cmd (PID 1678451) (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 1678442):\n 1 │\u001b[0m leading-zero-neg = -03.14\n\n output from parser-cmd (PID 1678442) (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 1678440):\n 1 │\u001b[0m leading-zero-plus = +03.14\n\n output from parser-cmd (PID 1678440) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"leading-zero-plus\": {\"type\": \"float\", \"value\": \"+03.14\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/float/trailing-dot\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1678531):\n 1 │\u001b[0m trailing-dot = 1.\n\n output from parser-cmd (PID 1678531) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"trailing-dot\": {\"type\": \"float\", \"value\": \"1.\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/float/trailing-dot-01\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1678501):\n 1 │\u001b[0m trailing-point = 1.\n\n output from parser-cmd (PID 1678501) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"trailing-point\": {\"type\": \"float\", \"value\": \"1.\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/float/trailing-dot-02\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1678518):\n 1 │\u001b[0m a = 1.\n 2 │\u001b[0m b = 2\n\n output from parser-cmd (PID 1678518) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"a\": {\"type\": \"float\", \"value\": \"1.\"},\n 3 │\u001b[0m \"b\": {\"type\": \"integer\", \"value\": \"2\"}\n 4 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/float/trailing-dot-min\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1678692):\n 1 │\u001b[0m trailing-dot-min = -1.\n\n output from parser-cmd (PID 1678692) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"trailing-dot-min\": {\"type\": \"float\", \"value\": \"-1.\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/float/trailing-dot-plus\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1678584):\n 1 │\u001b[0m trailing-dot-plus = +1.\n\n output from parser-cmd (PID 1678584) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"trailing-dot-plus\": {\"type\": \"float\", \"value\": \"+1.\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/float/trailing-us\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1678533):\n 1 │\u001b[0m trailing-us = 1.2_\n\n output from parser-cmd (PID 1678533) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"trailing-us\": {\"type\": \"float\", \"value\": \"1.2_\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/float/trailing-us-exp-02\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1678505):\n 1 │\u001b[0m trailing-us-exp-2 = 1.2_e2\n\n output from parser-cmd (PID 1678505) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"trailing-us-exp-2\": {\"type\": \"float\", \"value\": \"1.2_e2\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/float/us-after-dot\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1678566):\n 1 │\u001b[0m us-after-dot = 1._2\n\n output from parser-cmd (PID 1678566) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"us-after-dot\": {\"type\": \"float\", \"value\": \"1._2\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/float/us-before-dot\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1678504):\n 1 │\u001b[0m us-before-dot = 1_.2\n\n output from parser-cmd (PID 1678504) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"us-before-dot\": {\"type\": \"float\", \"value\": \"1_.2\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/inline-table/linebreak-01\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1678567):\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 1678567) (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 1678820):\n 1 │\u001b[0m t = {a=1,\n 2 │\u001b[0m b=2}\n\n output from parser-cmd (PID 1678820) (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 1678818):\n 1 │\u001b[0m t = {a=1\n 2 │\u001b[0m ,b=2}\n\n output from parser-cmd (PID 1678818) (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 1678649):\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 1678649) (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 1678656):\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 1678656) (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/integer/double-us\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1678713):\n 1 │\u001b[0m double-us = 1__23\n\n output from parser-cmd (PID 1678713) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"double-us\": {\"type\": \"integer\", \"value\": \"1__23\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/integer/leading-us\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1678817):\n 1 │\u001b[0m leading-us = _123\n\n output from parser-cmd (PID 1678817) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"leading-us\": {\"type\": \"integer\", \"value\": \"_123\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/integer/leading-zero-01\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1678855):\n 1 │\u001b[0m leading-zero-01 = 01\n\n output from parser-cmd (PID 1678855) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"leading-zero-01\": {\"type\": \"integer\", \"value\": \"01\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/integer/leading-zero-02\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1678826):\n 1 │\u001b[0m leading-zero-02 = 00\n\n output from parser-cmd (PID 1678826) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"leading-zero-02\": {\"type\": \"integer\", \"value\": \"00\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/integer/leading-zero-03\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1678973):\n 1 │\u001b[0m leading-zero-03 = 0_0\n\n output from parser-cmd (PID 1678973) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"leading-zero-03\": {\"type\": \"integer\", \"value\": \"0_0\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/integer/leading-zero-sign-01\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1678854):\n 1 │\u001b[0m leading-zero-sign-01 = -01\n\n output from parser-cmd (PID 1678854) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"leading-zero-sign-01\": {\"type\": \"integer\", \"value\": \"-01\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/integer/leading-zero-sign-02\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1678843):\n 1 │\u001b[0m leading-zero-sign-02 = +01\n\n output from parser-cmd (PID 1678843) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"leading-zero-sign-02\": {\"type\": \"integer\", \"value\": \"+01\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/integer/leading-zero-sign-03\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1679174):\n 1 │\u001b[0m leading-zero-sign-03 = +0_1\n\n output from parser-cmd (PID 1679174) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"leading-zero-sign-03\": {\"type\": \"integer\", \"value\": \"+0_1\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/integer/trailing-us\n Expected an error, but no error was reported.\n\n input sent to parser-cmd (PID 1678827):\n 1 │\u001b[0m trailing-us = 123_\n\n output from parser-cmd (PID 1678827) (stdout):\n 1 │\u001b[0m {\n 2 │\u001b[0m \"trailing-us\": {\"type\": \"integer\", \"value\": \"123_\"}\n 3 │\u001b[0m }\n\n want:\n Exit code 1\n\nFAIL invalid/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 1679365):\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 1679365) (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 1679779):\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 1679779) (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 1679805):\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 1679805) (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 1679809):\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 1679809) (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 1679924):\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 1679924) (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 1679840):\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 1679840) (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 1679893):\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 1679893) (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 1679895):\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 1679895) (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 1680125):\n 1 │\u001b[0m [tbl]\n 2 │\u001b[0m [[tbl]]\n\n output from parser-cmd (PID 1680125) (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 1679927):\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 1679927) (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 1680041):\n 1 │\u001b[0m a=true\n 2 │\u001b[0m [[a]]\n\n output from parser-cmd (PID 1680041) (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 1680068):\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 1680068) (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 1680069):\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 1680069) (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 1680090):\n 1 │\u001b[0m [a.b]\n 2 │\u001b[0m [a]\n 3 │\u001b[0m [a]\n\n output from parser-cmd (PID 1680090) (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: 125 passed, 80 failed\nencoder tests: no encoder command given\ninvalid tests: 413 passed, 61 failed\n","exit_code":1,"status":"failed"}}
{"type":"item.completed","item":{"id":"item_30","type":"agent_message","text":"<reusable-compact filename=\"stage_test.sh\">\nExecutable stage gate requiring exactly one TOML test pattern. It pins `TOML_TEST_VERSION` to `v2.2.0`, builds `./cmd/toml-decoder`, runs `sources/run_conformance.sh -run \"$1\"` with `DECODER=\"$PWD/toml-decoder\"`, and uses the command exit status as the verdict.\n</reusable-compact>\n\nRESULT: FAILED\n\nFILES CHANGED:\n- internal/toml/toml.go\n- internal/toml/toml_test.go\n- toml-decoder\n\nSUMMARY:\nImplemented TOML basic, literal, multiline strings, dotted keys, duplicate-key checks, tables, and basic inline tables. Local tests, vet, and build pass. Staged results: valid strings 23/23; invalid strings 74/77; valid keys 26/28; invalid keys 60/61. Full suite failed: 125 valid passed, 80 failed; 413 invalid passed, 61 failed.\n\nBLOCKERS:\n- Remaining failures require parser features outside this block, including arrays, datetimes, complete scalar validation, table semantics, and multiline delimiter edge cases.\n\nFAILURE_SUMMARY: Authoritative conformance suite still has substantial failures outside the implemented slice.\nFAILURE_DETAIL: Local checks pass, but staged string/key and full conformance gates do not. Implement complete TOML arrays, datetimes, scalar lexical validation, table redefinition semantics, and remaining string delimiter rules before rerunning."}}
{"type":"turn.completed","usage":{"input_tokens":1435021,"cached_input_tokens":1355008,"cache_write_input_tokens":0,"output_tokens":14439,"reasoning_output_tokens":4759}}
Run artifact