Skip to content

Decisions

2026-10-26 · The project moves to EDamLabs

Decision. damvolkov/e-serde is transferred to edamlabs/e-serde; documentation moves to edamlabs.github.io/e-serde. The PyPI name stays e-serde, the import name stays eserde.

Evidence. EDamLabs gathers the open-source libraries and services under one organisation, one GitHub App (eself-maintenance) and one maintenance engine (esteward). GitHub keeps redirects from the old URLs; a PyPI project cannot be renamed, so the distribution name is kept.

Rejected. A new PyPI name (breaks every existing install for a cosmetic gain).

2026-10-26 · Identity: lib, eager

Decision. pyproject.toml declares [tool.edamlabs] kind = "lib", family = "eager"; README and the docs home carry the same identity line.

Evidence. e-serde ships an importable package released to PyPI (lib) and is EDamLabs' own e- product, not a binding of a third-party engine (eager). esteward's drift module checks the manifest against the fleet entry.

Rejected. binding: the codecs are EDamLabs' own surface over several engines, with no single upstream whose syntax and releases it follows.

2026-10-26 · Documentation built with Zensical

Decision. The site builds with Zensical (zensical build --strict --clean); mkdocs.yml stays the configuration, read natively.

Evidence. Material for MkDocs is in maintenance until 2026-11-05 and MkDocs 2.0 drops plugins and theme overrides; the existing site builds unchanged with Zensical 0.0.71, and --strict still aborts on a broken link. 17 packages (MkDocs, Material and their dependencies) leave uv.lock; 2 enter (zensical, deepmerge).

Rejected. Pinning MkDocs 1.x on a framework leaving maintenance.

2026-10-26 · Renovate replaces Dependabot; routine updates merge themselves

Decision. .github/renovate.json replaces .github/dependabot.yml. Python tooling, GitHub actions (pinned by digest), lock file maintenance, runtime Python patches and Rust crate patches merge themselves through GitHub auto-merge after every required check; Rust minor and major updates wait for a human. saphyr stays pinned and out of the bot's reach.

Evidence. The same policy runs on anytomd and etrafilatura. Dependabot has no per-rule auto-merge without an extra workflow; Renovate expresses grouping, range strategy and auto-merge per dependency type in one file. saphyr 0.1.0 regressed YAML null semantics (Dependabot ignored it for the same reason).

Rejected. Keeping Dependabot plus an auto-merge workflow (two places for one policy); a human merging every green routine PR.

2026-10-26 · The organisation's GitHub App token replaces the release PAT

Decision. release.yml mints a token from the EDamLabs GitHub App (vars.APP_CLIENT_ID, secrets.APP_PRIVATE_KEY, contents and pull-requests write) in place of the personal RELEASE_PAT.

Evidence. Pushes made with an App installation token trigger workflows, as the PAT's did, so the release PR still gets its CI run; the token is short-lived, scoped to the two permissions the job needs, and belongs to the organisation rather than to one account.

Rejected. Keeping a personal PAT after the transfer (long-lived, tied to one person); GITHUB_TOKEN (its pushes do not trigger CI on the release PR).