Skip to content

Reference: org site topology

The modeled-information-format org publishes several sites across independent repos. This page is the single map of which repo serves which URL, how it deploys, and the collision/composition gotchas that have already caused real problems — kept current as new sites are added or existing ones change deploy shape. Update this table in the same PR that changes a repo’s Pages config, base path, or deploy mechanism.

RepoServesBase pathDeploy mechanismApp usedAstro / Starlight
MIFhttps://mif-spec.dev/ (custom domain, CNAME)/Direct self Pages deploy (deploy.yml)ci (fetches + attestation-verifies ontologies’ signed release tarball before build, ADR-019)7.0.3 / 0.41.1
doc-sitehttps://modeled-information-format.github.io/docs//docsNo self deploy — has no Pages of its own; built fresh and composed by modeled-information-format.github.io’s own deploy.yml on every runnone directly (the composing repo’s job uses pages)6.4.6 / 0.40.0
.githubroot content only (index.html, favicon)/Not deployed from here — has_pages: true is a stale, orphaned toggle (no deploy-pages workflow in this repo at all); its content is checked out and composed by modeled-information-format.github.iononen/a
modeled-information-format.github.iohttps://modeled-information-format.github.io/ (root + /docs + /research-harness-template)/ (assembly)Composes three sources into one Pages deploy: .github (root), doc-site (/docs), research-harness-template (/research-harness-template) — checks all three out fresh, assembles, deployspages (cross-repo checkout token scoped to all three sources)n/a (assembly only)
ontologieshttps://modeled-information-format.github.io/ontologies//ontologiesDirect, independent self Pages deploy — not composed by .github.ionone in the deploy job; separately its release.yml uses pages to dispatch ontology-corpus-released to MIF (unrelated to its own Pages)7.0.3 / 0.41.1
ontologies-site(unreleased)/ontologies (config carried over from ontologies)A linked git worktree of ontologies on feat/starlight-site — has a deploy.yml gated to push: main, but that branch has zero workflow runs. Not deployed anywhere yet.n/a6.4.8 / 0.40.0 (drifted behind ontologies main since branching)
claude-code-pluginshttps://modeled-information-format.github.io/claude-code-plugins//claude-code-pluginsDirect self Pages deploynone in the deploy job (catalog/release apps are used elsewhere in this repo, not for Pages)7.0.4 / 0.41.1
structured-madrhttps://smadr.dev/ (custom domain, CNAME)/Direct self Pages deploynone7.0.3 / 0.41.1
research-harness-templatehttps://modeled-information-format.github.io/research-harness-template//research-harness-template (from harness.config.json → site.base)No Pages of its own (404 if queried directly) — build-then-notify: docs.yml’s notify-deploy job fires repository_dispatch: source-updated to modeled-information-format.github.io on push to main, which then rebuilds and redeployspages (dispatch token scoped to .github.io)7.0.3 / 0.41.1
mif-docs-pluginhttps://modeled-information-format.github.io/mif-docs-plugin//mif-docs-pluginDirect self Pages deploy; site lives in site/ (isolated package.json, separate from the plugin’s own tooling deps)none6.4.8 / 0.40.0
mif-rshttps://modeled-information-format.github.io/mif-rs/ (+ /mif-rs/rustdoc)/mif-rsDirect self Pages deploy: builds cargo doc, builds the Astro site, copies rustdoc into the site’s dist/rustdoc, deploysnone7.0.6 / 0.41.3
gdlc(none)No Pages deployment of any kind — a Claude Code plugin marketplace, not a docs site
mnemonic, mnemonic-vscode, mif-repo-template, design-system(none)No Pages/Astro config in any of these yet

A repo composed into modeled-information-format.github.io must never also enable its own project Pages at the same path. This already bit once: a same-named org repo with Pages enabled shadows the composed subdir the assembly repo serves. research-harness-template is the live example of the latent version of this risk today — it’s composed at /research-harness-template by .github.io’s deploy.yml, and has no Pages of its own (confirmed 404). If Pages were ever toggled on directly for that repo, the way it already is for ontologies/claude-code-plugins/mif-docs-plugin/mif-rs, its own project-Pages site would claim the identical URL its composed content already occupies. Before enabling Pages on any repo, check this table for whether something else already serves that path.

doc-site has no notify-deploy hook. Unlike research-harness-template (whose docs.yml fires repository_dispatch: source-updated on push to main), a push to doc-site’s main does not itself trigger modeled-information-format.github.io to rebuild — /docs only picks up doc-site’s latest content when something else (a manual workflow_dispatch, or research-harness-template’s own dispatch) causes the org site to rebuild. If /docs looks stale after a doc-site merge, this is why — either add the same notify-deploy job research-harness-template uses, or manually dispatch modeled-information-format.github.io’s deploy.yml.

.github’s Pages toggle is dead, not dangerous — but don’t build on it. Its repo settings report has_pages: true, but no workflow in the repo builds or deploys anything from it. Its actual role is supplying root content (index.html, favicon) that modeled-information-format.github.io checks out and composes. Don’t add a deploy-pages step to .github expecting it to serve independently — it never has.

  1. Decide direct-deploy vs. compose-into-org-site. Direct (own deploy.yml, own project Pages) is what every site-serving repo above does except .github, doc-site, and research-harness-template, which hand off content to modeled-information-format.github.io instead (.github supplies the root landing content; the other two are checked out and built fresh on each org-site deploy). Compose-in only makes sense for content meant to live under the org root path structure (/, /docs, /research-harness-template) rather than its own subdomain-like path.
  2. Check this table for a path collision before choosing a base/CNAME — see the gotcha above.
  3. Pick the deploy identity. Cross-repo checkouts/dispatches use the pages App; same-repo-only deploys typically need no App token at all (plain GITHUB_TOKEN + OIDC is enough for actions/deploy-pages).
  4. If compose-into-org-site: add a notify-deploy job firing repository_dispatch: source-updated to modeled-information-format.github.io on push to main (see research-harness-template/.github/workflows/docs.yml for the pattern) — without it, merges won’t publish until something else happens to trigger the org site’s rebuild.
  5. Update this table in the same PR.