Fontshow — Base-Zero Project Timeline¶
Current version: v0.28.7.post14
This timeline replaces all previous milestone plans. Dates and phases are defined from scratch (“base-zero planning”) and reflect the actual maturity and constraints of the project.
All phases end with an explicit decision checkpoint before proceeding.
Phase 0 — Re-baseline, tooling & environment setup¶
Weeks 1–2: Jan 13 – Jan 26¶
Objectives Phase 0¶
- Reconstruct the real project state from code, tests, and documentation.
- Establish a clean, reproducible development environment.
- Normalize tooling and workflows across Linux, WSL, and Windows.
Scope Phase 0¶
- Freeze existing planning artifacts as historical references.
- Audit current codebase, test suite, CLI behavior, and documentation.
- Finalize local tooling setup:
- Python environment
- pre-commit and git hooks
- Node / semantic-release preview tooling
- Validate cross-environment behavior.
- Define:
- new milestone taxonomy,
- issue sizing rules,
- definition-of-done template for issues.
Non-goals Phase 0¶
- No functional changes.
- No new features.
- No refactors beyond tooling hygiene.
Checkpoint Phase 0¶
- Planning framework approved and ready for execution.
Phase 1 — Stabilization sprint¶
Weeks 3–4: Jan 27 – Feb 9¶
Objectives Phase 1¶
- Reduce friction and instability in existing functionality.
- Make implicit contracts explicit.
Scope Phase 1¶
- Close high-impact refinements.
- Formalize behaviors already relied upon by code and tests.
- Identify and isolate technical debt that blocks later phases.
Non-goals Phase 1¶
- No new feature development.
- No architectural redesign.
Checkpoint Phase 1¶
- Stabilization scope validated.
- Optional stabilization release candidate identified.
Phase 2 — Testing strategy & coverage alignment¶
Weeks 5–11: Feb 10 – Mar 15¶
Objectives Phase 2¶
- Make the test suite deterministic and environment-agnostic.
- Align coverage metrics with actual guarantees.
Scope Phase 2¶
- Clear separation of unit vs integration tests.
- Explicit handling of environment-dependent checks.
- CI-safe defaults and documented coverage expectations.
Non-goals Phase 2¶
- No feature work.
- No expansion of test surface beyond alignment needs.
Checkpoint Phase 2¶
- Testing policy approved and enforced.
Phase 3 — LaTeX & create_catalog robustness¶
Weeks 12-15: Mar 16 – Apr 12¶
Objectives Phase 3¶
- Improve pipeline survivability and diagnostics.
Scope Phase 3¶
- Isolate failures caused by individual fonts.
- Improve error reporting and recovery paths.
- Document reproducibility and troubleshooting practices.
Phase 3 — Extended Hardening Scope (Post-C5)¶
The LaTeX and catalog robustness phase has been extended to include a deterministic hardening layer aimed at eliminating environment-dependent rendering failures and preparing a stable baseline before any discovery backend transition.
This extended scope includes:
- A deterministic specimen strategy that prevents subset-empty failures during catalog generation.
- A path-first font loading strategy to reduce
.fontspecname-resolution fragility, with safe fallback where necessary. - A LuaLaTeX loadability validation step and persistence of the result in the inventory, together with runtime metadata describing the environment under which loadability was verified.
- A runtime fingerprint mechanism allowing the system to detect when persisted loadability is no longer valid and fall back to runtime validation.
- Deterministic diagnostic extraction of:
- all discovered fonts,
- LuaLaTeX-loadable fonts,
- and their reproducible difference.
- Establishment of a stabilization baseline in which catalog generation cannot abort due to subset-empty or loadability-related failures.
This baseline is a prerequisite for any future work on alternative discovery backends (e.g. Qt-based discovery).
Non-goals Phase 3¶
- No major pipeline redesign.
- No feature additions unrelated to robustness.
Checkpoint Phase 3¶
- Pipeline resilience deemed acceptable for further evolution.
Phase 4 — CLI UX & exit code contracts¶
Weeks 16-17: Apr 13 – Apr 26¶
Objectives Phase 4¶
- Consolidate CLI semantics and guarantees.
Scope Phase 4¶
- Standardize exit codes and error signaling.
- Clarify human vs machine-readable output.
- Add regression tests for CLI contracts.
Non-goals Phase 4¶
- No new commands.
- No CLI feature expansion.
Checkpoint Phase 4¶
- CLI behavior considered stable and documented.
Phase 5 — Charset-aware enrichment (feature evolution)¶
Weeks 18-19: Apr 27 - May 10¶
Objectives Phase 5¶
- Introduce charset decoding and enrichment in a controlled manner.
Scope Phase 5¶
- Incremental, observable feature steps.
- Explicit non-goals for each step.
- Strong test and diagnostic coverage.
Non-goals Phase 5¶
- No implicit scope expansion.
- No coupling to future v2 architecture.
Checkpoint Phase 5¶
- Charset feature set evaluated for completeness and risks.
Phase 6 — Governance & contributor experience¶
Weeks 20-21: May 11 - May 24¶
Objectives Phase 6¶
- Improve maintainability and contributor onboarding.
Scope Phase 6¶
- Documentation indexing and navigation.
- Public vs internal API clarification.
- Governance and decision-record practices.
Non-goals Phase 6¶
- No functional changes.
Checkpoint Phase 6¶
- Project considered “contributor-ready”.
Phase 7 — v2.x.y design spike (non-binding)¶
Weeks 22-23: May 25 – Jun 7¶
Objectives Phase 7¶
- Explore future architecture without commitment.
Scope Phase 7¶
- Pluggable backend concepts.
- Interface sketches and feasibility analysis.
- Risk and complexity assessment.
Non-goals Phase 7¶
- No implementation.
- No implicit roadmap commitment.
Checkpoint Phase 7¶
- Explicit go / no-go decision for v2 planning.
Global rules¶
- Each phase includes a 10–20% internal buffer.
- No feature expansion before Phases 1–2 are completed.
- Every phase ends with an explicit review and re-approval step.