{
  "version": 1,
  "import": {
    "root": "/mnt/c/Users/barlo/projects/drydock/uat/Toml/runs/20260814.050011/sources",
    "format": "markdown"
  },
  "sources": {
    "INSTRUCTIONS.md": {
      "state": "current",
      "versions": [
        {
          "commit": null,
          "date": "2026-08-14",
          "hash": "35b5b0925e6b554446bab223fe23f35b3f6e392a929e91feddf2265b526a310a",
          "release": "",
          "state": "consumed",
          "via": "plan",
          "ticket": null,
          "requirements": [
            {
              "name": "go-parser-architecture",
              "text": "The implementation language is Go, fixed by this Target's `TECHNOLOGY_STACK.md` and governed by `stack/go.md`.",
              "stories": [
                "architecture"
              ]
            },
            {
              "name": "stdin-tagged-json-contract",
              "text": "The program is a filter: read TOML from **stdin**, write tagged JSON to **stdout**, exit `0`.",
              "stories": [
                "decoder-contract"
              ]
            },
            {
              "name": "reject-invalid-toml",
              "text": "On invalid TOML, write a diagnostic to **stderr** and exit non-zero.",
              "stories": [
                "decoder-invalid-input"
              ]
            },
            {
              "name": "tagged-json-encoding",
              "text": "Every TOML **value** becomes `{\"type\": \"<TOML_TYPE>\", \"value\": \"<TOML_VALUE>\"}`.",
              "stories": [
                "decoder-tagged-json"
              ]
            },
            {
              "name": "parse-strings",
              "text": "basic and literal strings, then multi-line strings with their line-ending backslash and trimming rules.",
              "stories": [
                "lexical-strings"
              ]
            },
            {
              "name": "parse-scalars",
              "text": "**Scalars** \u2014 booleans, integers (including `0x`, `0o`, `0b`, underscores), floats (including `inf`, `nan`, exponents), basic and literal strings, then",
              "stories": [
                "lexical-numbers"
              ]
            },
            {
              "name": "parse-datetimes",
              "text": "**Datetimes** \u2014 offset, local datetime, local date, local time.",
              "stories": [
                "lexical-datetime"
              ]
            },
            {
              "name": "process-lexical-input",
              "text": "**Scaffolding** \u2014 line handling, comments, whitespace, the stdin/stdout/exit\n   contract, tagged JSON emission.",
              "stories": [
                "lexical-whitespace-comments"
              ]
            },
            {
              "name": "parse-key-forms",
              "text": "**Keys** \u2014 bare, quoted, and dotted keys; the redefinition rules.",
              "stories": [
                "keys-forms"
              ]
            },
            {
              "name": "parse-arrays",
              "text": "**Inline tables and arrays** \u2014 including nesting and the TOML 1.0 restriction\n   that inline tables are closed to later extension.",
              "stories": [
                "structures-arrays"
              ]
            },
            {
              "name": "enforce-key-semantics",
              "text": "**Invalid-input hardening** \u2014 control characters, bad UTF-8, duplicate keys,\n   redefinition after an inline table, unterminated constructs.",
              "stories": [
                "keys-semantics"
              ]
            },
            {
              "name": "parse-inline-tables",
              "text": "**Inline tables and arrays** \u2014 including nesting and the TOML 1.0 restriction\n   that inline tables are closed to later extension.",
              "stories": [
                "structures-inline-tables"
              ]
            },
            {
              "name": "close-inline-tables",
              "text": "the TOML 1.0 restriction that inline tables are closed to later extension.",
              "stories": [
                "structures-inline-table-closure"
              ]
            },
            {
              "name": "parse-standard-tables",
              "text": "**Tables** \u2014 `[table]`, `[a.b.c]` implicit creation, `[[array of tables]]`,",
              "stories": [
                "tables-standard"
              ]
            },
            {
              "name": "reject-table-redefinitions",
              "text": "and the rules governing which of these may follow which.",
              "stories": [
                "tables-redefinition"
              ]
            },
            {
              "name": "parse-arrays-of-tables",
              "text": "`[[array of tables]]`",
              "stories": [
                "tables-arrays"
              ]
            },
            {
              "name": "enforce-array-table-ordering",
              "text": "the rules governing which of these may follow which.",
              "stories": [
                "tables-arrays-ordering"
              ]
            },
            {
              "name": "pass-conformance-suite",
              "text": "Every supplied valid and invalid case passes: the failed, errored, and skipped\ncounts are all zero.",
              "stories": [
                "conformance"
              ]
            }
          ]
        }
      ]
    },
    "full_test.sh": {
      "state": "current",
      "versions": [
        {
          "commit": null,
          "date": "2026-08-14",
          "hash": "54fcd3c5b0b92e31d7c4c90c3a04ff65617600dcd858947455cda8fbcb2800a6",
          "release": "",
          "state": "consumed",
          "via": "plan",
          "ticket": null,
          "requirements": [
            {
              "name": "pin-test-version",
              "text": "The version setup_harness.sh installs. run_conformance.sh refuses a different one, so a passing verdict names a specific exam rather than whichever harness was on PATH.",
              "stories": [
                "conformance"
              ]
            },
            {
              "name": "build-decoder",
              "text": "go build -o toml-decoder ./cmd/toml-decoder",
              "stories": [
                "decoder-contract"
              ]
            },
            {
              "name": "run-conformance-suite",
              "text": "DECODER=\"$PWD/toml-decoder\" exec sh sources/run_conformance.sh",
              "stories": [
                "conformance"
              ]
            }
          ]
        }
      ]
    },
    "run_conformance.sh": {
      "state": "current",
      "versions": [
        {
          "commit": null,
          "date": "2026-08-14",
          "hash": "08bc510bd052f639f3ea85afb174ad1774e6ba7541a262f146590a4ea92d0f86",
          "release": "",
          "state": "consumed",
          "via": "plan",
          "ticket": null,
          "requirements": [
            {
              "name": "run-toml-conformance",
              "text": "Run the upstream toml-test conformance suite against the built decoder.",
              "stories": [
                "conformance"
              ]
            },
            {
              "name": "select-conformance-tests",
              "text": "DECODER=./toml-decoder sh sources/run_conformance.sh -run 'valid/string/*'  # one group\nDECODER=./toml-decoder sh sources/run_conformance.sh -json                  # machine-readable",
              "stories": [
                "conformance"
              ]
            },
            {
              "name": "require-decoder-command",
              "text": "DECODER    decoder command. Required \u2014 this harness is language-neutral and\n              deliberately has no default implementation language.",
              "stories": [
                "conformance"
              ]
            },
            {
              "name": "resolve-test-harness",
              "text": "TOML_TEST  absolute path to the toml-test binary (default: found on PATH)",
              "stories": [
                "conformance"
              ]
            },
            {
              "name": "pin-harness-version",
              "text": "The suite's identity is part of the verdict.",
              "stories": [
                "conformance"
              ]
            },
            {
              "name": "return-harness-verdict",
              "text": "Exit code is the harness exit code: 0 only when every test passes.",
              "stories": [
                "conformance"
              ]
            }
          ]
        }
      ]
    },
    "setup_harness.sh": {
      "state": "current",
      "versions": [
        {
          "commit": null,
          "date": "2026-08-14",
          "hash": "a94f9cee6ae45b4265e244f40b882f9692f59c67aff16953d2db837fb3885a56",
          "release": "",
          "state": "consumed",
          "via": "plan",
          "ticket": null,
          "requirements": [
            {
              "name": "install-conformance-harness",
              "text": "# One-time installation of the upstream toml-test conformance harness.\n...\nGOBIN=\"${GOBIN:-$HOME/.local/bin}\"\n...\nGOBIN=\"${GOBIN}\" go install \\\n    \"github.com/toml-lang/toml-test/v2/cmd/toml-test@${TOML_TEST_VERSION}\"",
              "stories": [
                "conformance"
              ]
            }
          ]
        }
      ]
    },
    "stage_test.sh": {
      "state": "current",
      "versions": [
        {
          "commit": null,
          "date": "2026-08-14",
          "hash": "93254a9d7ac72f19345b48fc36faffb1dc79dcc66f55cf18fee48c2cdce988cd",
          "release": "",
          "state": "consumed",
          "via": "plan",
          "ticket": null,
          "requirements": [
            {
              "name": "run-conformance-slice",
              "text": "Same contract as full_test.sh, scoped to the cases a single story owns: build the decoder, then run the installed toml-test suite over the pattern given as $1.",
              "stories": [
                "decoder-contract",
                "conformance"
              ]
            },
            {
              "name": "preserve-verdict",
              "text": "Exit status is the verdict and the whole verdict. Do not filter, skip, or reinterpret.",
              "stories": [
                "conformance"
              ]
            }
          ]
        }
      ]
    },
    "toml-v1.0.0.md": {
      "state": "current",
      "versions": [
        {
          "commit": null,
          "date": "2026-08-14",
          "hash": "4cc2468f55b36a27660425430f19c3e63c9da492e6936aded2cf5eed9fcdce45",
          "release": "",
          "state": "consumed",
          "via": "plan",
          "ticket": null,
          "requirements": [
            {
              "name": "document-lexing",
              "text": "A TOML file must be a valid UTF-8 encoded Unicode document.",
              "stories": [
                "lexical-whitespace-comments"
              ]
            },
            {
              "name": "comments",
              "text": "A hash symbol marks the rest of the line as a comment, except when inside a string.",
              "stories": [
                "lexical-whitespace-comments"
              ]
            },
            {
              "name": "key-forms",
              "text": "A key may be either bare, quoted, or dotted.",
              "stories": [
                "keys-forms"
              ]
            },
            {
              "name": "key-semantics",
              "text": "Defining a key multiple times is invalid.",
              "stories": [
                "keys-semantics"
              ]
            },
            {
              "name": "string-forms",
              "text": "There are four ways to express strings: basic, multi-line basic, literal, and multi-line literal.",
              "stories": [
                "lexical-strings"
              ]
            },
            {
              "name": "numeric-values",
              "text": "Integers are whole numbers.",
              "stories": [
                "lexical-numbers"
              ]
            },
            {
              "name": "floating-point-values",
              "text": "Floats should be implemented as IEEE 754 binary64 values.",
              "stories": [
                "lexical-numbers"
              ]
            },
            {
              "name": "boolean-values",
              "text": "Booleans are just the tokens you're used to. Always lowercase.",
              "stories": [
                "lexical-numbers"
              ]
            },
            {
              "name": "date-time-values",
              "text": "To unambiguously represent a specific instant in time, you may use an RFC 3339 formatted date-time with offset.",
              "stories": [
                "lexical-datetime"
              ]
            },
            {
              "name": "arrays",
              "text": "Arrays are square brackets with values inside.",
              "stories": [
                "structures-arrays"
              ]
            },
            {
              "name": "standard-tables",
              "text": "Tables (also known as hash tables or dictionaries) are collections of key/value pairs.",
              "stories": [
                "tables-standard"
              ]
            },
            {
              "name": "table-redefinition",
              "text": "Like keys, you cannot define a table more than once. Doing so is invalid.",
              "stories": [
                "tables-redefinition"
              ]
            },
            {
              "name": "inline-tables",
              "text": "Inline tables provide a more compact syntax for expressing tables.",
              "stories": [
                "structures-inline-tables"
              ]
            },
            {
              "name": "inline-table-closure",
              "text": "Inline tables are fully self-contained and define all keys and sub-tables within them. Keys and sub-tables cannot be added outside the braces.",
              "stories": [
                "structures-inline-table-closure"
              ]
            },
            {
              "name": "arrays-of-tables",
              "text": "The last syntax that has not yet been described allows writing arrays of tables.",
              "stories": [
                "tables-arrays"
              ]
            },
            {
              "name": "arrays-of-tables-ordering",
              "text": "If the parent of a table or array of tables is an array element, that element must already have been defined before the child can be defined.",
              "stories": [
                "tables-arrays-ordering"
              ]
            },
            {
              "name": "filename-extension",
              "text": "TOML files should use the extension `.toml`.",
              "stories": []
            },
            {
              "name": "mime-type",
              "text": "When transferring TOML files over the internet, the appropriate MIME type is `application/toml`.",
              "stories": []
            }
          ]
        }
      ]
    }
  }
}
