docs: say what the archived status changes

The README, the setup pages and adding-a-platform tied archived to a
scraping schedule and a CI matrix that do not exist. Archived keeps a
platform out of the runs that cover every platform unless
--include-archived is passed.
This commit is contained in:
Abdessamad Derraz committed 2026-11-06 03:20:01 +01:00
1 parent ab1866fd66
commit 7b4c03afc2
7 files changed
+49 -17

No files matched your search

+2 -2
View File
@@ -72,7 +72,7 @@ The Files column counts what a pack holds once extracted, the figure a file mana
ZIPs are made for the setups most people download. The others read "Use the command": the installer above installs every file for them and checks each one, and `--dry-run` shows what it would install ([why no ZIP](https://abdess.github.io/retrobios/wiki/faq/#why-is-there-no-zip-for-my-setup)).
\* Archived: the configuration is kept and the installer serves it, but upstream is no longer scraped on a schedule.
\* Archived: the installer serves it, and checks that cover every setup include it only on request.
## What's included
@@ -206,4 +206,4 @@ The scripts and tooling are released under the [MIT License](LICENSE).
The BIOS and firmware files are not covered by that license: they are third-party system software, preserved and provided for personal backup, archival, and interoperability with emulation software. [NOTICE](NOTICE) sets out their status and how to ask for a file to be removed.
The reasoning, and where it is weakest, is in [the project's legal position](https://abdess.github.io/retrobios/wiki/legal/).
*Auto-generated on 2026-11-05T22:45:23Z*
*Auto-generated on 2026-11-06T02:18:34Z*
+3 -3
View File
@@ -3639,9 +3639,9 @@ def _main(held: contextlib.ExitStack) -> None:
# Platform mode
if args.all and args.manifest:
# Install manifests cover every registered platform: the installer
# serves each one, with or without a release pack. "Archived" means
# upstream is no longer scraped on a schedule, not that the platform
# lost its users.
# serves each one, with or without a release pack. "Archived" keeps a
# platform out of the runs that cover every platform, not out of the
# installer: it has not lost its users.
platforms = list_registered_platforms(args.platforms_dir, include_archived=True)
elif args.all:
# A release publishes the packs the registry marks release_pack and
+2 -2
View File
@@ -638,8 +638,8 @@ def generate_readme(db: dict, platforms_dir: str, db_path: str = "database.json"
lines.extend(
[
"",
"\\* Archived: the configuration is kept and the installer serves it,"
" but upstream is no longer scraped on a schedule.",
"\\* Archived: the installer serves it, and checks that cover every"
" setup include it only on request.",
]
)
+2 -2
View File
@@ -3346,8 +3346,8 @@ def setup_table(coverages: dict, registry: dict | None = None) -> list[str]:
lines += ["No ZIP: the setup is served by the command alone. "
f"[Why?](../{NO_ZIP_FAQ})", ""]
if archived:
lines += ["An archived setup keeps its page and the command. Its list is no longer "
"read again on a schedule.", ""]
lines += ["An archived setup keeps its page and the command. Checks that cover "
"every setup include it only on request.", ""]
return lines
+4 -4
View File
@@ -1,12 +1,12 @@
#!/usr/bin/env python3
"""List available platforms for CI matrix strategy.
"""List the registered platforms.
Respects the `status` field in _registry.yml:
- active: included in CI releases and automated scraping
- archived: excluded from CI, user can generate manually
- active: listed by default
- archived: listed with --include-archived only
Usage:
python scripts/list_platforms.py # Active platforms (for CI)
python scripts/list_platforms.py # active platforms
python scripts/list_platforms.py --include-archived # archived ones too
python scripts/list_platforms.py >> "$GITHUB_OUTPUT"
"""
+29
View File
@@ -1900,5 +1900,34 @@ class SkipFlagsNameTheSteps(unittest.TestCase):
self.assertEqual(set(re.findall(self.STEP, text)), steps)
class ArchivedIsWhatTheToolsDo(unittest.TestCase):
"""The README and the setup pages said an archived platform is no longer
scraped on a schedule, and adding-a-platform said `active` feeds a CI
matrix and the scrapers. No workflow calls list_platforms.py and no tool
reads `schedule:`: what `archived` changes is which full runs include it."""
def test_no_text_ties_the_status_to_automation(self):
import generate_pack # noqa: PLC0415
import generate_readme # noqa: PLC0415
import generate_site # noqa: PLC0415
import list_platforms # noqa: PLC0415
texts = {
"adding-a-platform.md": (WIKI / "adding-a-platform.md").read_text(encoding="utf-8"),
"generate_readme": inspect.getsource(generate_readme),
"generate_site": inspect.getsource(generate_site),
"generate_pack": inspect.getsource(generate_pack),
"list_platforms": inspect.getsource(list_platforms),
}
for name, text in texts.items():
with self.subTest(name):
for claim in ("scraped on a schedule", "read again on a schedule",
"CI matrix", "without the automation"):
self.assertNotIn(claim, text)
self.assertIn("`--include-archived`", texts["adding-a-platform.md"])
for workflow in (ROOT / ".github" / "workflows").glob("*.yml"):
self.assertNotIn("list_platforms", workflow.read_text(encoding="utf-8"))
if __name__ == "__main__":
unittest.main()
+7 -4
View File
@@ -732,10 +732,13 @@ This executes in sequence, numbered as the run prints them (`STEP_LABELS` in
`--offline` skips steps 2 to 2b2.
A new platform is archived-by-default nowhere: `status: active` puts it in
`list_platforms.py`, the CI matrix, and the scrapers. Set
`status: archived` to keep the configuration without the automation. Archived
platforms are excluded unless `--all` or `--include-archived` is passed.
A new platform is `status: active`. `status: archived` keeps the platform
out of the runs that cover every platform (`verify.py --all`,
`generate_pack.py --all`, `slots.py`, `pipeline.py`, `list_platforms.py`)
unless `--include-archived` is passed. The installer manifests, the site, the
native export and `check_freshness.py` cover archived platforms as well. No
tool scrapes a platform on its own, archived or not: the `schedule:` field is
the cadence a maintainer keeps by hand.
A new platform has no release ZIP: `release_pack: true` is set for the setups
most people download, and the installer serves every other one from its