Skip to content

Family feed

A family feed is a JSON document that names each module family and its core. go-core-currency reads it to learn which modules are cores. It never reads membership from it: that comes from go.mod.

Version 1 needs three things per family, and nothing else:

{
  "schema_version": 1,
  "families": [
    {
      "name": "chat",
      "ecosystem": "go",
      "core": { "module": "gitlab.com/phpboyscout/go/chat" }
    }
  ]
}

A machine-readable JSON Schema carries the same contract.

Fields

Field Type Required Meaning
schema_version integer yes 1. Any other value and the job reports "cannot check" and blocks nothing.
families array yes One object per family. Order does not matter.
families[].name string yes The family's name, printed beside a stale core.
families[].ecosystem string yes go for a family the job checks. Any other value (rust, image, …) is skipped.
families[].core.module string or null yes The core's root Go module path, as written after module in its go.mod. null for a core with no Go module; it is skipped.

Every other key is ignored, at the top level and inside each family, so a feed can carry whatever else its other readers need (members, summaries, links) without affecting the job. The phpboyscout estate's feed at https://phpboyscout.uk/projects.json carries a whole project catalogue alongside its families.

Compatibility

Adding a key never changes the version. Renaming or removing one of the fields above does, and a job that does not know the new version reports "cannot check" and blocks nothing, rather than misreading it.

Where a feed can live

  • A URL the job can fetch with a plain GET and no credential. If your site sits behind a bot filter, the job identifies itself as go-core-currency (phpboyscout/cicd); a filter that blocks stock HTTP clients will block other readers of the same feed, too.
  • A path in the repository, for a project that is its own only reader.
  • A file:// URL, mostly for tests.

Publish a family feed walks through the first two.