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.