MIxS Editing Workflows and Good Practices
Please try to follow this document. First read the policies document.
Terms
Requesting and creating a new term
Requesting and implementing a term update
Requesting and implementing a term deprecation
Checklists, extensions, and combinations
Define what they are
Requesting and creating a new checklist or extension
Updating an existing checklist or extension
Releases
The GSC creates releases using semantic versioning (major.minor.patch).
Version strings
MIxS carries two version numbers, managed differently. Both use bare X.Y.Z values (no v); the v is a git tag label only.
- Python package version (
pyproject.toml): derived from the git tag bypoetry-dynamic-versioning. It is not edited by hand;pyproject.tomlholds a0.0.0placeholder onmain, and the real value is stamped from the tag at build time. - Schema version (
src/mixs/schema/mixs.yamlversion:): this is content. It flows into the generated OWL (pav:version), which EBI OLS reads, and into the JSON Schema and datamodel. It is bumped by hand as part of a release (see below), following the same pattern asbiolink-model.
Cutting a release
- Bump the schema version by editing the
version:field near the top ofsrc/mixs/schema/mixs.yamlto the new release number (bareX.Y.Z). Commit it tomainvia the normal PR process. Pushing this tomaintriggers the "Regenerate and verify generated artifacts" workflow, which regenerates the OWL and otherproject/artifacts so they carry the new version. - Run the "Create Release PR" GitHub Action (manual dispatch) with the same version. It bumps
CITATION.cff,.zenodo.json, andrelease/README.md, generates the schema diff, and opens arelease/vX.Y.ZPR. It does not touchpyproject.toml(dynamic) ormixs.yaml(already bumped in step 1). - Add the schema-diff summaries to the release branch (see below).
- Review and merge the release PR.
- Create a GitHub Release with tag
vX.Y.Zand generate release notes.
The structured diff in step 2 is produced by the reusable diff-releases tool; see SCHEMA_DIFFING.md.
Adding the schema-diff summaries and publishing them
The structured diff is complete but large. Before the release PR is reviewed, add readable summaries to the release branch and put them on the docs site:
- Check out the
release/vX.Y.Zbranch. - The release action already wrote the diff into a per-release folder,
assets/diff_results/<old>_to_<new>/(for examplev6.2.0_to_v6.3.0/). Work in that folder. (The docs build publishes summaries only from these per-release folders.) - Run the
mixs-diff-summaryskill on the structured diff, for example/mixs-diff-summary assets/diff_results/<old>_to_<new>/schema_comparison_results.yaml. It writesagent_summary.mdnext to the structured diff. - Commit both
agent_summary.md(the readable summary) andtool_summary.md(the counts) in that folder. - Add the two pages to the site nav. In
mkdocs.yml, under theVersion changesgroup, add two lines for this release: ```yamlto : version-changes/ to .md to (counts): version-changes/ to -counts.md `` Thegendocbuild step copies the two summaries out ofassets/diff_results/to / intodocs/version-changes/` automatically, so no other change is needed.
This runs on the branch, done by a maintainer or an agent, not in CI. It needs no API keys, and everything is reviewed like any other change before merge.
Reviewing and publishing
- A TWG member other than the PR author reviews the version bumps and the schema diff summary. The pre-merge checklist is in the PR body.
- After merge, create the GitHub Release with tag
vX.Y.Zand publish.
Keeping generated artifacts current
The committed artifacts under project/, src/mixs/datamodel/, and contrib/ are generated from the schema. The "Regenerate and verify generated artifacts" workflow keeps them in sync. On a push to main that changes the schema or its build inputs, it regenerates everything and commits the refreshed artifacts. On a pull request it regenerates and fails if the committed artifacts are stale.
The check uses project/jsonschema/mixs.schema.json as its signal, because that file regenerates deterministically. The OWL (project/owl/mixs.owl.ttl) is not byte-reproducible: RDF/Turtle serialization reorders triples and blank nodes on every run, so it is regenerated and committed but not compared by diff. Do not hand-edit generated artifacts.
LinkML Updates
Documentation
Autogenerated documentation is created with every PR Sujay's fork allows you to preview what will be regenerated. Important for when the documentation technology changes.
Content copied over:
- All change requests to the GSC should be captured in an issue.
- Issues should be descriptive and provide clear requests and changes. Issue templates are available and should be used when possible.
-
One change should be proposed per issue. If multiple issues are related, you can leverage a GitHub super issue to connect related items.
-
All branches should be tied to issues and the branch name should relate to the issue it's tied to.
-
This can be accomplished easily using the GitHub "create a branch" tool when viewing the issue on the webpage.
-
All pushes, pull requests, and changes should be related to a single issue, and issues should be a single change per issue.
-
Issues and their associated pull requests should be small and targeted. One change per issue and pull request.
-
All branches and pull requests should be tied to an issue.
-
When making a pull request, contributions can continue to be made and built, but within scope of the related issue.
-
Making a draft pull request can be done to confirm changes are being done correctly
-
Provide a reviewer for pull requests.
- Pull requests must be reviewed by a member of the GSC Technical Working Group
- A Pull request requires someone other than the person that created the pull request
-
Include issue author as a pull request reviewer
-
Once a pull request is started, all further discussion, review, and changes, happen in the pull request (rather than the issue).
-
?? Using conversations within PRs (TODO: add links to GH documentation)
-
When a pull request is merged, the associated branch should be deleted and issue closed.
-
The GSC will create releases (ADD Details, # of PRs? on a schedule?)
- The GSC will use semantic versioning for releases: 3 digits (major, minor, patch)
- Create a project for the release or other large change set
-
A change log for a release will be generated from all the pull requests that are part of the repository since the last release.
-
All issues that pertain to a release should be part of a project for that release.
-
Contributions should NOT be made in a fork.
- If external parties make a fork, it should be tied to an issue. Forks will only be merged back in following the above criteria for branches and small changes.
- It is expected that external parties will discuss with the Technical Working Group before making changes on a scale that require a fork (e.g. a new checklist or extension).
- The preference is to avoid forks and will be reviewed on a case by case basis.
-
Whenever a fork is created, a Technical Working Group member will reach out to the creator
-
Add require a description to the suggested new thing to the requirements
-
New extensions or checklists should be tracked using GitHub Projects
-
Add require a description to the suggested new thing to the requirements
- New extensions or checklists should be tracked using GitHub Projects