Skip to content

V2 Release Gates

A future v2.0.0 release requires:

  • Privacy scan passes with no active secrets.
  • Makefile works in CI.
  • Real JSON Schema validation passes.
  • At least 45 meaningful tests pass.
  • Every authoritative curriculum lesson contains at least 900 meaningful English words after headings, navigation, code fences, tables, and source lists are excluded.
  • Every exercise contains at least 300 meaningful words and the required normal, edge, failure, rubric, and passing-condition sections.
  • Every quiz has at least eight questions, including two scenarios, and an answer-key link.
  • Every solution contains at least 500 meaningful words, all required explanatory sections, and eight explained answers.
  • Normalized exact duplication is forbidden. Lesson five-token-shingle Jaccard similarity must remain below 0.72; the checker reports both paths and the measured score.
  • Minimal, production, and bad examples must be distinct across modules. Exercises, quiz questions, solutions, and unrelated reading lists must not be normalized duplicates.
  • Every prompt pattern must define a distinct mechanism, observable use and avoidance boundaries, a realistic good and bad prompt, at least three measurable acceptance criteria, at least three pattern-specific failure modes, and exactly one structured normal, edge, and failure verification case. Identity-normalized field similarity must remain below the documented thresholds in scripts/check_content_quality.py.
  • verification_cases is the sole pattern verification source. The removed legacy verification projection must not be restored; consumers must read the structured cases directly.
  • Pattern name is the single display label. A duplicate title alias is not part of the pattern schema.
  • The universal Prompt Contract fields—Objective, Context, Inputs, Instructions, Constraints, Tools and Sources, Output Contract, and Evaluation—apply at catalog level and are not repeated as identical prompt_contract_fields metadata on every pattern.
  • Every stable pattern ID must have the semantically approved primary curriculum lesson enforced by PATTERN_PRIMARY_LESSONS; additional lessons are limited by the maintained adjacency taxonomy.
  • Every stable template ID must provide one directly copyable minimal prompt and one operational production prompt, with structured canonical variables, a machine-readable output contract, at least four observable acceptance criteria, at least three structured task-specific failure modes, one worked example, and exactly one normal, edge, and failure test case.
  • Template prompts must implement their mechanisms directly. Internal pattern-... instructions, the former four-step universal skeleton, undeclared prompt variables, unused inputs, duplicate prompt or evaluation blocks, and identity-normalized prompt similarity at or above the documented thresholds in scripts/check_content_quality.py are release blockers.
  • variables is the sole template input-definition source. The removed required_inputs and expected_outputs projections must not return; output requirements live only in the structured output_contract.
  • All 28 stable template IDs must have the approved primary pattern, supporting-pattern allowlist, primary curriculum lesson, and additional-lesson allowlist enforced by scripts/template_taxonomy.py.
  • The eight stable provider IDs and slugs must resolve to eight provider pages. Catalog scope, stable guidance, provider-specific guidance, gaps, acceptance criteria, source IDs, canonical URLs, fast-stale claims, and last_verified dates must remain synchronized with those pages.
  • Official provider sources must resolve to records with official: true. Non-official but useful material is allowed only through supporting_source_ids, and a source cannot occupy both roles.
  • Provider acceptance-criteria and remaining-gap blocks, minimal examples, production examples, and long identity-normalized prose must be distinct. Exact section copies, provider-name swaps, and three-token near-copy scores at or above 0.12 fail. Seven-token full-document similarity remains a secondary signal with limit 0.38; the checker reports the highest measured pair.
  • Every provider fast-stale claim must carry a declared source ID and verification date. Nested fast_stale_areas[*].last_verified ages inherit the parent provider stale_after_days and stale_risk policy, so a current parent date cannot mask an expired child claim.
  • Provider-used resources take related_lessons from the official/supporting catalogs as the single canonical mapping; lesson IDs must resolve to the curriculum inventory and may not be empty or duplicated. Inventory of the eight stable providers remains enforced outside the general provider schema.
  • Time-sensitive resources have valid freshness fields. Freshness uses the current UTC date by default, supports deterministic --as-of YYYY-MM-DD audits, rejects future verification dates and invalid risk or stale-period values, and fails expired high-risk records.
  • Courses and credentials are classified correctly.
  • Curriculum modules are internally navigable.
  • Exercises have solutions or solution criteria.
  • MkDocs strict build passes.
  • External link policy passes.
  • Independent content review is completed.
  • No release-critical draft markers remain.