{
  "schema": "gooo/go-ports-upstream/v1",
  "go_version": "go1.27.2",
  "go_repository": "https://github.com/golang/go",
  "go_revision": "022c8636110ebac86a9b88724cda168ed713c21f",
  "compiler_repository": "https://github.com/kimjooyoon/meta-ontology-go",
  "compiler_revision": "83928fa4538245abe33b08549da47f8cbdc50ed2",
  "compiler_version": "0.6.32-dev",
  "source_sha256": {
    "src/image/color/color.go": "03511ed250d0b4dd20605d5dc3465164e559033a6ff7e5cd8ac89d2e19c3ab6c",
    "src/image/draw/draw.go": "24f42de1373014deefce87d4dd02856010ac8d385c4e61eb0c52a1a1273b0207",
    "src/image/geom.go": "7cc4be83e978cc172e0ebb9713a6afd77ccf3ceb82d9cbc6f79082e698884ec2",
    "src/unicode/digit.go": "dfb14dbbcb918a6c7ee9be15293327d022f9d64a4c1a90f9c8049b682e799761",
    "src/unicode/graphic.go": "46a43107a87c88cf17a05a557e00dbf6b0f4bb53ebcd7d3035e02f1e67c428be",
    "src/unicode/letter.go": "b35a6d259313cef88d07e9e4027b8bd72c60ae140418f5be2c41a2ecea6074fe",
    "src/unicode/tables.go": "ac0e5d5d1b58ed4b02d7cb4a0085bdefbdb4f7aae6fadddbc9477f8463da8bd8",
    "src/time/time.go": "7d992810b162f65e02cea4d60fd0d90af59b3cafa2c8926ca08083d5c73451dc",
    "src/image/color/ycbcr.go": "7afc91f21cb8eb68027f54180a862137bdef26cfd59389ecb609c0f87923de0c",
    "src/net/http/status.go": "7633ca0ca545767f3db3d8960a96ee4ecd68fb39439c88b7c03efcb3d1786297",
    "src/unicode/utf8/utf8.go": "3c145ee25fd7631ebbc670fd1236e8c163ca30ae8913c796489efbf3f267ad54",
    "src/unicode/utf16/utf16.go": "6b8b3037015f41351d4a323513b57b8ac90caa69f69be31eaf02ca2a4632d0cd",
    "src/math/bits/bits.go": "694e0114bda396589e8c993a3d7880a0b461da23ee64c272929a3a5b69c2acf2",
    "src/math/bits/bits_tables.go": "c4cb4a05dab6d395d9d51720893a42f0a9d1cdf8a0c2383d87268e49acb73f7f",
    "src/math/bits/make_tables.go": "dc21922114d16d59aa1fe303d5c6ba1e99229c06f3a56a3eff80e13616add2e4",
    "LICENSE": "911f8f5782931320f5b8d1160a76365b83aea6447ee6c04fa6d5591467db9dad",
    "src/strings/strings.go": "a81bdf73a308277c322e35d0c602e3813f57b6f769c091f8f8962c8884a45ea3",
    "src/strconv/quote.go": "6602960ec8777de9926c1d02fbf5cb0828d4aefa38083865f4af17b6892c09a2",
    "src/strconv/isprint.go": "e6f4b35fbf38f9c9c8b251e5d3cf94daa880789cb89825f11f9734ba4a42e9ff",
    "src/internal/stringslite/strings.go": "3ed7df2eeabb5427d44b95e6cfe66ef03e13f1c969ad08050a4a0e89d43b8af2"
  },
  "ports": [
    {
      "source": "src/image/color/color.go",
      "target": "ports/image/nrgba.gooo",
      "supporting_targets": [
        "ports/image/color.gooo"
      ],
      "symbols": [
        "NRGBA.RGBA"
      ],
      "target_activities": [
        "NRGBAToRGBA"
      ],
      "api_mapping": "The NRGBA receiver becomes one required-field record with red, green, blue and alpha Integers, preserving all four uint8 channels including hidden RGB when alpha is zero. Four uint32 results become an RGBA16 record with 0..65535 premultiplied channels and expanded alpha. Original multiplication and integer truncation are preserved by bounded arithmetic. An out-of-byte field returns all -1 as a separate extension before arithmetic or narrowing. No NRGBA64, file decoding, color-space conversion or image iteration is implemented."
    },
    {
      "source": "src/unicode/letter.go",
      "supporting_sources": [
        "src/unicode/tables.go"
      ],
      "target": "ports/unicode/case_mapping.gooo",
      "symbols": [
        "To",
        "ToUpper",
        "ToLower",
        "ToTitle"
      ],
      "unicode_version": "17.0.0",
      "generator": "cmd/gen-case-mapping",
      "api_mapping": "Complete pinned CaseRanges and UpperLower parity are lowered once in Gooo To and shared by ToUpper/ToLower/ToTitle. To receives the original signed int64 case (Go int on the pinned 64-bit targets) followed by the original signed int32 rune represented exactly by Integer. Invalid cases outside 0..2 return U+FFFD before inspecting the rune. A valid case or unary mapping preserves invalid Unicode inputs as Go does; outside-int32 Integer values are a separate identity extension without narrowing. No locale-specific, full-string or multi-rune conversion. Scalar declarations are shared with space.gooo."
    },
    {
      "source": "src/unicode/letter.go",
      "supporting_sources": [
        "src/unicode/tables.go"
      ],
      "target": "ports/unicode/simple_fold.gooo",
      "symbols": [
        "SimpleFold"
      ],
      "unicode_version": "17.0.0",
      "generator": "cmd/gen-simple-fold",
      "api_mapping": "Complete pinned ASCII folding, special case orbits and case-range delta rules are lowered to Gooo branches. Signed int32 rune inputs preserve SimpleFold's successor and identity behavior, including invalid Unicode values. Outside-int32 Integer values return the original input as a separate identity extension, without narrowing. Scalar declarations are shared with space.gooo."
    },
    {
      "source": "src/image/geom.go",
      "target": "ports/image/geometry.gooo",
      "symbols": [
        "Rectangle.Empty",
        "Rectangle.Overlaps",
        "Rectangle.Intersect",
        "Rectangle.Union",
        "Rectangle.In"
      ],
      "target_activities": [
        "RectangleEmpty",
        "RectangleOverlaps",
        "RectangleIntersect",
        "RectangleUnion",
        "RectangleIn"
      ],
      "api_mapping": "Rectangle receiver is the first record argument. Go Min.X, Min.Y, Max.X, Max.Y map to required Integer fields min_x, min_y, max_x, max_y without normalization. Each coordinate preserves the full signed int64 Go int domain on amd64/arm64. Empty and reversed rectangles remain valid inputs; no coordinate arithmetic, narrowing, or domain extension. RectangleIn returns true for every empty or reversed receiver, regardless of the second rectangle, and allows equal maximum edges for nonempty containment. FitsCrop is a separate importing consumer that rejects empty requests before calling RectangleIn; it does not alter the port semantics."
    },
    {
      "source": "src/image/geom.go",
      "target": "ports/image/canon.gooo",
      "supporting_targets": [
        "ports/image/geometry.gooo"
      ],
      "symbols": [
        "Rectangle.Canon"
      ],
      "target_activities": [
        "RectangleCanon"
      ],
      "api_mapping": "A Rectangle record preserves four original signed int64 coordinates on 64-bit Go. Canon swaps each inverted coordinate pair by comparison and selection, without arithmetic or narrowing; degenerate rectangles retain their location. Existing geometry activities and CropPlan do not gain implicit normalization."
    },
    {
      "source": "src/unicode/graphic.go",
      "supporting_sources": [
        "src/unicode/digit.go",
        "src/unicode/letter.go",
        "src/unicode/tables.go"
      ],
      "target": "ports/unicode/classification.gooo",
      "symbols": [
        "IsLetter",
        "IsDigit"
      ],
      "unicode_version": "17.0.0",
      "generator": "cmd/gen-unicode",
      "api_mapping": "Complete Letter (L) and Digit (Nd) RangeTables are lowered to balanced Gooo branches with original strides. Signed int32 rune is represented exactly by Integer; outside-int32 values return false as a separate extension. Integer and Boolean entities are shared with space.gooo in the go/unicode package."
    },
    {
      "source": "src/unicode/graphic.go",
      "supporting_sources": [
        "src/unicode/letter.go",
        "src/unicode/tables.go"
      ],
      "target": "ports/unicode/space.gooo",
      "symbols": [
        "IsSpace"
      ],
      "unicode_version": "17.0.0",
      "api_mapping": "Signed int32 rune is represented exactly by Integer; outside-int32 Integer inputs return false as an explicit extension without narrowing."
    },
    {
      "source": "src/time/time.go",
      "target": "ports/time/duration.gooo",
      "symbols": [
        "Duration.Round",
        "Duration.Truncate"
      ],
      "target_activities": [
        "DurationRound",
        "DurationTruncate"
      ],
      "api_mapping": "Duration receiver is the first Integer argument; quantum is the second. Both are exact signed int64 nanoseconds."
    },
    {
      "source": "src/image/color/ycbcr.go",
      "target": "ports/image/color.gooo",
      "symbols": [
        "RGBToCMYK",
        "CMYKToRGB"
      ]
    },
    {
      "source": "src/image/color/ycbcr.go",
      "target": "ports/image/ycbcr.gooo",
      "supporting_targets": [
        "ports/image/color.gooo"
      ],
      "symbols": [
        "RGBToYCbCr",
        "YCbCrToRGB"
      ],
      "api_mapping": "Three uint8 arguments map to three Integer arguments with the full 0..255 domain preserved. Multiple results become YCbCr (y, cb, cr) or RGB (red, green, blue) records. Pinned fixed-point coefficients, rounding, and saturation are preserved using bounded arithmetic. An out-of-byte input returns all -1 fields as a separate extension, without narrowing. Integer and RGB declarations are shared with color.gooo."
    },
    {
      "source": "src/net/http/status.go",
      "target": "ports/net/http.gooo",
      "symbols": [
        "StatusText"
      ]
    },
    {
      "source": "src/unicode/utf8/utf8.go",
      "target": "ports/unicode/utf8.gooo",
      "symbols": [
        "ValidRune",
        "RuneLen",
        "RuneStart"
      ]
    },
    {
      "source": "src/unicode/utf16/utf16.go",
      "target": "ports/unicode/utf16.gooo",
      "symbols": [
        "IsSurrogate",
        "DecodeRune",
        "EncodeRune",
        "RuneLen"
      ]
    },
    {
      "source": "src/math/bits/bits.go",
      "supporting_sources": [
        "src/math/bits/bits_tables.go",
        "src/math/bits/make_tables.go"
      ],
      "target": "ports/math/bits.gooo",
      "symbols": [
        "Len8",
        "LeadingZeros8",
        "TrailingZeros8",
        "OnesCount8",
        "Reverse8",
        "RotateLeft8"
      ]
    },
    {
      "source": "src/strings/strings.go",
      "target": "ports/strings/search.gooo",
      "symbols": [
        "IndexByte"
      ],
      "target_activities": [
        "IndexByte"
      ],
      "api_mapping": "Go string maps to valid UTF-8 Text of at most 1024 bytes on the native input route; Go byte needle maps to an exact original Integer in 0..255. A guarded literal-bound loop returns the first original byte offset or -1. Out-of-byte Integers return -1 as a separately counted extension without narrowing. Arbitrary invalid-UTF8 Go strings and longer inputs are not supported; no rune/grapheme/normalization or whole-package compatibility claim.",
      "supporting_implementation": {
        "repository": "https://github.com/kimjooyoon/meta-ontology-go",
        "revision": "c56007f5881296cb3181ff056c50a4ae917a9850",
        "path": "examples/bounded-text-search/search.gooo.fixture",
        "license": "MIT notice retained in target source"
      }
    },
    {
      "source": "src/strings/strings.go",
      "supporting_sources": [
        "src/internal/stringslite/strings.go",
        "src/unicode/utf8/utf8.go"
      ],
      "target": "ports/strings/literal.gooo",
      "supporting_targets": [
        "ports/strings/search.gooo"
      ],
      "symbols": [
        "Index",
        "Count"
      ],
      "target_activities": [
        "Index",
        "Count"
      ],
      "api_mapping": "Each Go string maps to decoded valid UTF-8 Text <=1024 bytes. Index preserves first literal byte offset or -1, including empty needle returning 0. Count preserves non-overlapping matches and empty needle returning Unicode code-point count plus 1. A guarded literal-bound scan uses Text slices/equality; a separate next-match threshold prevents overlap without reassigning the loop counter. No arbitrary-byte Go strings, normalization, regex, whole strings package or performance claim. Index and Count share the bounded literal-text corpus and feed the importing Report consumer. Source-derived coverage specifies the required finite checks; completed execution evidence must identify its exact source and compiler pins."
    }
  ],
  "external_sources": [
    {
      "module": "golang.org/x/image",
      "repository": "https://github.com/golang/image",
      "revision": "b06f1de3f4900ff828b8f114c37eb9ea10dfed90",
      "source": "math/fixed/fixed.go",
      "source_sha256": "b74f2166fce03cecfebb00d3e9641b559dab8ffb00d72139c1dc69ed1ac05725",
      "oracle_copy": "third_party/x-image/math/fixed/fixed.go",
      "license": "third_party/x-image/LICENSE",
      "license_sha256": "911f8f5782931320f5b8d1160a76365b83aea6447ee6c04fa6d5591467db9dad",
      "target": "ports/image/fixed.gooo",
      "symbols": [
        "Int26_6.Floor",
        "Int26_6.Ceil"
      ],
      "api_mapping": "Original signed int32 raw Q26.6 input maps to Integer; Go int result becomes {in_fixed_domain,value}. Signed int32 addition overflow and arithmetic shift behavior are preserved within the complete original domain. Outside-domain Integer inputs return false/0 without conversion. Round and all other package methods are not ported."
    },
    {
      "module": "github.com/google/uuid",
      "repository": "https://github.com/google/uuid",
      "version": "v1.6.0",
      "revision": "0f11ee6918f41a04c201eceeadf612a377bc7fbc",
      "module_h1": "h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=",
      "source": "uuid.go",
      "source_sha256": "0edec8e34c6b6fe0db31b71a29069a09ed832e3fd04ee0175916b58f2b60e5c1",
      "supporting_sources": [
        "util.go"
      ],
      "supporting_source_sha256": {
        "util.go": "755f50afafb13dd89ae6177da7eb6dc31ae650ece2f9ba52821021e9f8de044e"
      },
      "oracle_copy": "third_party/google-uuid/uuid.go",
      "license": "third_party/google-uuid/LICENSE",
      "license_sha256": "0a8d61ed3cbfd5312326e8126c31ce9c627a283adc99131b56896d29ada04b2d",
      "target": "ports/google/uuid/validate.gooo",
      "supporting_targets": [
        "ports/google/uuid/quote.gooo"
      ],
      "symbols": [
        "Validate"
      ],
      "target_activities": [
        "Validate"
      ],
      "api_mapping": "Go nil/error maps to the required valid/error/invalid_length record. Four upstream formats, exact Error() messages and IsInvalidLengthError classification are preserved for original valid UTF-8 decoded Text <=1024 bytes. Prefix formatting, including the first nine bytes cutting a rune, is computed in Gooo with pinned Go quote/IsPrint semantics. Raw invalid JSON bytes/surrogates may be replaced by the compiler JSON decoder; arbitrary-byte Go strings and longer decoded Text are unsupported. No Parse, UUID generation, version/variant restriction, identity/uniqueness validation or whole-module compatibility. The module h1 binds the original31 archive files; the clearly identified added embed/hash wrapper is not part of that upstream archive."
    },
    {
      "module": "github.com/google/uuid",
      "repository": "https://github.com/google/uuid",
      "version": "v1.6.0",
      "revision": "0f11ee6918f41a04c201eceeadf612a377bc7fbc",
      "module_h1": "h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=",
      "source": "uuid.go",
      "source_sha256": "0edec8e34c6b6fe0db31b71a29069a09ed832e3fd04ee0175916b58f2b60e5c1",
      "supporting_sources": [
        "util.go"
      ],
      "supporting_source_sha256": {
        "util.go": "755f50afafb13dd89ae6177da7eb6dc31ae650ece2f9ba52821021e9f8de044e"
      },
      "oracle_copy": "third_party/google-uuid/uuid.go",
      "license": "third_party/google-uuid/LICENSE",
      "license_sha256": "0a8d61ed3cbfd5312326e8126c31ce9c627a283adc99131b56896d29ada04b2d",
      "target": "ports/google/uuid/text/parse_canonical.gooo",
      "supporting_targets": [
        "ports/google/uuid/validate.gooo",
        "ports/google/uuid/quote.gooo"
      ],
      "symbols": [
        "Parse",
        "UUID.String"
      ],
      "target_activities": [
        "ParseCanonical"
      ],
      "api_mapping": "Separate Text ParseCanonical composition adapts the original Parse return value plus UUID.String into parsed/canonical_uuid/error/invalid_length. It preserves the returned lowercase UUID text on both success and error, including partial UUID bytes and the raw32 failed-byte commit difference. The 38-byte form follows Parse middle-byte behavior rather than Validate brace validation. Original valid UTF-8 decoded Text <=1024 bytes is the stated domain; arbitrary-byte Go strings, binary UUID values, ParseBytes and full Parse or whole-module compatibility are not provided. Existing DecimalLength/URNPrefix and internal quote helpers are shared without changing Validate. Original uuid.go/util.go/LICENSE hashes, compiled source embeds and the exact original31-file module h1 remain the same; added wrappers/provenance remain outside that upstream archive."
    }
  ]
}
