Goal
Publish the six reference implementations as independently installable packages while preserving the distinction between:
- Artifact version:
1.0.0-rc.2 for the first registry release.
- TOML Schema language version:
1.0.0 (still unreleased and not to be bumped by this work).
This is the coordination issue. Each implementation has a child issue that separates maintainer-only registry setup from repository implementation and release execution.
Proposed package identities
| Implementation |
Registry |
Proposed identity |
Current registry status (2026-08-19) |
| Java |
Maven Central |
org.tomlschema:tomlschema |
Coordinates not found; org.tomlschema must be verified through tomlschema.org DNS |
| Go |
Go module proxy / pkg.go.dev |
tomlschema.org/go |
Not indexed; tomlschema.org was not reachable during planning |
| .NET |
NuGet.org |
TomlSchema |
Package ID not found |
| Python |
PyPI |
distribution tomlschema; import remains toml_schema |
toml-schema is already owned by an unrelated project; tomlschema was not found |
| Rust |
crates.io |
crate tomlschema; library remains toml_schema; binary is tosd |
toml-schema resolves to the existing unrelated toml_schema crate; tomlschema was not found |
| Node.js / TypeScript |
npm |
@tomlschema/tomlschema |
Scoped package not found; maintainer must control the tomlschema npm organization/scope |
Registry names are immutable or expensive to change. The Python and Rust fallback names require explicit maintainer approval before code changes or reservation attempts.
Release and security policy
- Use one dedicated GitHub Actions workflow and one protected GitHub environment per registry (
maven-central, nuget, pypi, crates-io, npm). Go has no credentialed publish step but still needs an explicit release workflow or documented tag procedure.
- Restrict environments to the corresponding language-prefixed tags and require a maintainer approval where GitHub plan support allows it.
- Prefer OIDC trusted publishing for PyPI, npm, and crates.io when available. Use least-privilege, package-scoped, expiring secrets where a registry still requires credentials.
- Publish only from an existing, immutable tag after the implementation's normal tests and package-specific dry-run checks pass.
- Use distinct monorepo tags so existing spec and CLI releases are not triggered accidentally:
java-v1.0.0-rc.2
reference-implementations/go/v1.0.0-rc.2 (Go submodule tag format)
dotnet-v1.0.0-rc.2
python-v1.0.0-rc.2
rust-v1.0.0-rc.2
typescript-v1.0.0-rc.2
- Never rebuild a published version from another commit. Registry versions and tags are immutable.
- Keep package metadata, READMEs, installation snippets, repository URLs, license data, and artifact versions aligned.
Coordinated plan
Phase 1: maintainer prerequisites
Complete every Maintainer setup section in the child issues: approve the two fallback names, establish registry accounts/organizations, verify namespaces and domains, configure protected GitHub environments, and add trusted-publisher bindings or scoped credentials.
No publication workflow should be enabled until its exact repository/workflow/environment identity is registered with the corresponding package manager.
Phase 2: repository implementation
For each implementation:
- Complete required and recommended package metadata.
- Add deterministic package build and content inspection commands.
- Add a dedicated tag-gated release workflow with minimal permissions.
- Add a non-publishing dry-run path suitable for pull requests or manual dispatch.
- Update implementation documentation with registry installation and versioning guidance.
- Keep existing conformance tests as a release gate.
Phase 3: release candidate execution
- Merge all package metadata and workflows.
- Run all six reference-implementation test suites.
- Build and inspect every publication artifact without publishing.
- Create the six tags from the same reviewed commit.
- Approve each protected publication job after checking its artifact summary.
- Publish
1.0.0-rc.2; do not publish 1.0.0 until the language release occurs.
The tracks may execute independently once their own maintainer prerequisites are complete, but this coordination issue remains open until all six are published and verified.
Phase 4: registry verification and documentation
For every package, verify from a clean environment that:
- the registry shows the intended owner, source repository, license, README/docs, and exact version;
- installation resolves from the public registry, not a local checkout or cache;
- the smallest documented validation example executes successfully;
- the published artifact contains only intended files;
- provenance/attestations appear where supported.
Then update README.md, REFERENCE_IMPLEMENTATIONS.md, and implementation READMEs with registry links, install commands, tag conventions, and release ownership.
Completion criteria
References
Child issues
Goal
Publish the six reference implementations as independently installable packages while preserving the distinction between:
1.0.0-rc.2for the first registry release.1.0.0(still unreleased and not to be bumped by this work).This is the coordination issue. Each implementation has a child issue that separates maintainer-only registry setup from repository implementation and release execution.
Proposed package identities
org.tomlschema:tomlschemaorg.tomlschemamust be verified throughtomlschema.orgDNStomlschema.org/gotomlschema.orgwas not reachable during planningTomlSchematomlschema; import remainstoml_schematoml-schemais already owned by an unrelated project;tomlschemawas not foundtomlschema; library remainstoml_schema; binary istosdtoml-schemaresolves to the existing unrelatedtoml_schemacrate;tomlschemawas not found@tomlschema/tomlschematomlschemanpm organization/scopeRegistry names are immutable or expensive to change. The Python and Rust fallback names require explicit maintainer approval before code changes or reservation attempts.
Release and security policy
maven-central,nuget,pypi,crates-io,npm). Go has no credentialed publish step but still needs an explicit release workflow or documented tag procedure.java-v1.0.0-rc.2reference-implementations/go/v1.0.0-rc.2(Go submodule tag format)dotnet-v1.0.0-rc.2python-v1.0.0-rc.2rust-v1.0.0-rc.2typescript-v1.0.0-rc.2Coordinated plan
Phase 1: maintainer prerequisites
Complete every Maintainer setup section in the child issues: approve the two fallback names, establish registry accounts/organizations, verify namespaces and domains, configure protected GitHub environments, and add trusted-publisher bindings or scoped credentials.
No publication workflow should be enabled until its exact repository/workflow/environment identity is registered with the corresponding package manager.
Phase 2: repository implementation
For each implementation:
Phase 3: release candidate execution
1.0.0-rc.2; do not publish1.0.0until the language release occurs.The tracks may execute independently once their own maintainer prerequisites are complete, but this coordination issue remains open until all six are published and verified.
Phase 4: registry verification and documentation
For every package, verify from a clean environment that:
Then update
README.md,REFERENCE_IMPLEMENTATIONS.md, and implementation READMEs with registry links, install commands, tag conventions, and release ownership.Completion criteria
proxy.golang.organd documented on pkg.go.dev.toml_schemain a clean virtual environment.toml_schema, and installs binarytosd.References
Child issues
tosdCLI / Cargo install and GitHub Release assets