Skip to content

02_PHASES.md

Fontshow — Planning Phases Definition

Baseline: base-zero planning Effective from: v0.28.7.post14


Purpose

This document defines the planning phases used by the Fontshow project.

Phases describe:

  • what kind of work is allowed,
  • what outcomes are expected,
  • what is explicitly out of scope.

Phases are conceptual. They do not define dates, durations, or deadlines.

Temporal information lives exclusively in 01_TIMELINE.md.


Phase 0 — Baseline & Tooling

Objective Phase 0

Establish a stable and shared baseline for planning, tooling, and development environment.

In scope Phase 0

  • Planning normalization
  • Tooling validation
  • Local development setup
  • Documentation baseline
  • Archival of superseded materials

Out of scope Phase 0

  • Feature development
  • Refactors unrelated to tooling or planning
  • User-facing changes

Exit criteria Phase 0

  • Canonical planning documents established
  • Development environment reproducible
  • Legacy planning artifacts archived

Phase 1 — Stabilization

Objective Phase 1

Make existing behavior explicit, reliable, and documented.

In scope Phase 1

  • Formalization of implicit contracts
  • Alignment between code, tests, and documentation
  • Bug fixes that restore intended behavior

Out of scope Phase 1

  • New features
  • Architectural redesign
  • Performance optimization beyond correctness

Exit criteria Phase 1

  • Stabilization issues closed or explicitly deferred
  • Behavioral contracts documented and enforced

Phase 2 — Testing Strategy Consolidation

Objective Phase 2

Ensure deterministic and meaningful testing across environments.

In scope Phase 2

  • Classification of tests (unit vs integration)
  • Isolation of environment-dependent tests
  • CI-safe defaults

Hardening and Stabilization-Oriented Work

The project includes a phase focused on strengthening determinism, robustness, and maintainability without altering the procedural architecture or introducing new features.

This phase is characterized by:

  • elimination of known rendering and loading failure modes,
  • deterministic LuaLaTeX loadability validation and persistence,
  • strengthening of reproducibility guarantees,
  • preparation of a stable baseline before any discovery backend transition (e.g. Qt).

Allowed Work in this Phase

The following categories of work are explicitly allowed:

  • Refactoring aimed at clearer separation of existing layers (discovery, resolution, rendering) without changing behavior.
  • Robustness improvements in the rendering pipeline to prevent catalog aborts (subset-empty, fragile loading, environment-dependent failures).
  • Introduction of deterministic mechanisms such as loadability persistence and runtime fingerprinting.
  • Improvements in diagnostics and reproducibility (e.g. deterministic extraction of discovery vs loadable fonts).
  • Code quality hardening that improves maintainability and prevents hidden bugs, including:
  • progressive static analysis hardening,
  • gradual typing where it clarifies contracts,
  • documentation and docstring audits where they improve understanding of invariants and behavior.

Explicit Non-Goals

The following are not goals of this phase:

  • Architectural paradigm changes (the project remains procedural).
  • Introduction of GUI or user-facing feature expansion.
  • Performance optimization unrelated to robustness or determinism.
  • Opportunistic or large-scale refactors not directly supporting stabilization goals.
  • Introduction of new discovery backends (e.g. Qt) before the stabilization baseline is reached.

Stabilization Gate

Completion of this phase is defined by achieving a deterministic and reproducible baseline in which:

  • catalog generation cannot abort due to subset-empty or loadability-related failures,
  • loadability persistence is validated against runtime fingerprint,
  • behavior is reproducible for identical environments,
  • no known unresolved rendering failure classes remain.

Only after this gate is satisfied can work on alternative discovery backends proceed.

Out of scope Phase 2

  • New testing frameworks
  • Coverage inflation without semantic value

Exit criteria Phase 2

  • Clear test taxonomy
  • Predictable CI behavior
  • Coverage aligned with contracts

Phase 3 — Pipeline Robustness

Objective Phase 3

Increase resilience and diagnosability of processing pipelines.

In scope Phase 3

  • Failure classification
  • Error reporting improvements
  • Partial failure survivability

Out of scope Phase 3

  • New pipeline stages
  • Major performance rework

Exit criteria Phase 3

  • Documented failure modes
  • Actionable diagnostics
  • Stable pipeline behavior

Phase 4 — CLI Contracts

Objective Phase 4

Define and enforce stable CLI behavior.

In scope Phase 4

  • Exit code semantics
  • Error handling guarantees
  • Output consistency

Out of scope Phase 4

  • New CLI commands
  • Breaking changes without explicit migration

Exit criteria Phase 4

  • CLI contract documented
  • CLI behavior covered by tests

Phase 5 — Charset-Aware Enrichment

Objective Phase 5

Clarify scope and limits of charset-related enrichment.

In scope Phase 5

  • Definition of boundaries and non-goals
  • Observability of charset behavior

Out of scope Phase 5

  • Broad Unicode feature expansion
  • Heuristic-heavy inference changes

Exit criteria Phase 5

  • Charset behavior documented
  • Observability in place

Phase 6 — Governance & Documentation

Objective Phase 6

Consolidate governance rules and contributor guidance.

In scope Phase 6

  • Decision records
  • Contribution guidelines
  • API boundary clarification

Out of scope Phase 6

  • Enforcement tooling
  • Process-heavy bureaucracy

Exit criteria Phase 6

  • Governance model documented
  • Contributor workflow clarified

Phase 7 — v2 Design Spike

Objective Phase 7

Explore future architectural directions without commitment.

In scope Phase 7

  • Design exploration
  • Risk identification
  • Go / no-go evaluation

Out of scope Phase 7

  • Implementation
  • Breaking changes
  • Migration plans

Exit criteria Phase 7

  • Documented findings
  • Explicit decision recorded

Relationship to Other Planning Documents

  • Timeline: 01_TIMELINE.md
  • Atomic actions: 05_ATOMIC_ACTION_LIST.md
  • Issues synthesis: 06_ISSUE_BACKLOG_SYNTHESIS.md

Status

This document is normative for planning and phase classification.