Skip to content

Publish the Go reference implementation through pkg.go.dev #135

Open

Description

@brunoborges

Parent: #129

Publish reference-implementations/go as module tomlschema.org/go version v1.0.0-rc.2, distributed by the public Go module proxy and documented on pkg.go.dev. Go publication is tag- and domain-driven; there is no registry upload credential.

Maintainer setup — required before release

  • Restore reliable public DNS, HTTPS, and hosting for tomlschema.org; the domain was not reachable during planning on 2026-08-19.
  • Confirm who owns DNS and web deployment and record a backup maintainer.
  • Use the agreed vanity module path tomlschema.org/go and keep the implementation in the monorepo subdirectory reference-implementations/go.
  • Serve ?go-get=1 metadata for tomlschema.org/go that maps to https://github.com/brunoborges/toml-schema and identifies reference-implementations/go as the module subdirectory using the Go version supported by this project. Add go-source metadata if needed for pkg.go.dev source links.
  • If the hosting platform cannot express the monorepo subdirectory mapping, choose one explicit alternative before implementation: change the public module path to a directly discoverable GitHub subdirectory path, move/split the module, or use a supported module-proxy mapping. Do not tag until go list -m succeeds through the vanity URL.

Repository and site implementation — after the path decision

  • Add the vanity metadata endpoint and an automated check that fetches https://tomlschema.org/go?go-get=1 and validates the module prefix, VCS/repository, and subdirectory fields.
  • Keep module tomlschema.org/go in go.mod if the approved vanity configuration resolves correctly.
  • Verify the package comment in doc.go is suitable as the pkg.go.dev synopsis; add canonical documentation/repository links if pkg.go.dev cannot infer them.
  • Add a release check/workflow for the exact monorepo tag form reference-implementations/go/v1.0.0-rc.2. The workflow must reject tags whose version or prefix is malformed, run tests, and execute a pre-publication module-resolution check without credentials.
  • Document that Go module versions are immutable, cannot be overwritten, and must be retracted through a later go.mod version if defective.
  • Update the Go README and REFERENCE_IMPLEMENTATIONS.md with go get tomlschema.org/go@v1.0.0-rc.2, pkg.go.dev link, tag format, and artifact-vs-language version explanation.

Execution plan

  1. Verify the live vanity endpoint from outside the project and run GOPROXY=direct go list -m -json tomlschema.org/go@<reviewed-commit> or an equivalent non-tagged discovery probe.
  2. Run go -C reference-implementations/go test ./... and go vet ./... if the repository adopts that check.
  3. Create the annotated tag reference-implementations/go/v1.0.0-rc.2 on the reviewed commit; do not use repository-wide v1.0.0-rc.2.
  4. Request the version through https://proxy.golang.org/tomlschema.org/go/@v/v1.0.0-rc.2.info or GOPROXY=https://proxy.golang.org go mod download tomlschema.org/go@v1.0.0-rc.2 to seed indexing.
  5. Verify the version appears on pkg.go.dev, with source/documentation links and the redistributable MIT license recognized.
  6. In a clean temporary module with an empty module cache, run go get tomlschema.org/go@v1.0.0-rc.2, compile a minimal validation example, and inspect go list -m -json to confirm the expected version and origin.

Acceptance criteria

  • tomlschema.org/go?go-get=1 is reachable over valid HTTPS and correctly maps the monorepo module.
  • The exact reference-implementations/go/v1.0.0-rc.2 tag resolves through proxy.golang.org.
  • pkg.go.dev renders package docs, source links, and license status.
  • A clean consumer imports tomlschema.org/go without replace, direct filesystem access, or a private proxy.

References: Go module paths, module directories in repositories, adding a package to pkg.go.dev.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions