Goal
Make WFL 8/10 production-ready by January 1, 2027 , with an internal target of December 1, 2026 and December reserved as a stabilization buffer.
This is a reliability and release-readiness goal, not a requirement to implement every desired language feature. The supported language must be predictable, secure, testable, documented, and operable.
Target dates
November 15, 2026: release candidate
December 1, 2026: satisfy the 8/10 production-readiness gate
December 2026: stabilization buffer
January 1, 2027: public production-ready declaration
Production-readiness scorecard
Score each area from 0–10 and multiply it by its weight. The weighted total must be 8.0 or higher , and all mandatory release gates below must pass.
Area
Weight
Definition of done
Correctness
25%
No known critical correctness defects; parser, analyzer, type checker, modules, and runtime agree on supported behavior
Security
20%
Shared execution-budget protections are complete; no unresolved critical/high security findings
Reliability
15%
Malformed, adversarial, and resource-intensive programs fail safely without uncontrolled hangs or process crashes
Testing
15%
Linux/Windows CI, regression corpus, databases, release smoke tests, and sustained fuzzing cover supported behavior
Compatibility
10%
Supported language behavior is documented and protected by compatibility tests; breaking-change policy exists
Operations
5%
Releases are repeatable, artifacts are verifiable, and installation/upgrade/rollback paths are documented
Documentation
5%
Supported documentation examples execute successfully in CI; unsupported/aspirational syntax is clearly marked
Maintenance
5%
Supported platforms, security reporting, triage rules, ownership, and release lifecycle are documented
Score history
Update this table at least monthly and after any release-candidate review.
Mandatory release gates
A weighted score alone cannot compensate for a failed safety gate.
No open critical correctness, security, data-loss, or uncontrolled-resource-exhaustion defect
No open high-severity security finding
Shared runtime execution budget covers parsing, evaluation, pattern matching, web handling, and module loading
Deadline, cancellation, operation, recursion/import, pattern-state, byte, HTTP, and WebSocket limits have adversarial tests
All supported documentation examples execute in CI
All supported TestPrograms pass end-to-end on Linux and Windows, with every skip documented and justified
Parser/analyzer/type-checker/runtime consistency suite passes
Required CI checks pass on the release commit
Fuzz targets complete the agreed sustained run without an unresolved crash or hang
Fresh-install and representative-application smoke tests pass
Release artifacts, checksums, installation, upgrade, rollback, supported-platform, and known-limitations documentation are published
Release candidate completes 14 consecutive days without a critical regression
Phase 1 — Baseline and containment
Target: July 12–August 15, 2026
Inventory all open issues and classify them as critical, high, medium, low, or post-production-readiness
Record initial scorecard values with links to evidence
Finish and integrate the shared ExecutionBudget
Convert every known correctness defect into an end-to-end regression test — partial (PRs test: Phase 1 baseline & containment for #610 #614 and Fix #592: bare zero-arg included action reference now resolves #637 ): Zero-argument include-exposed action referenced by bare name is fatal at top level & in action bodies (Variable '<name>' is not defined) — the call form #580's fix didn't cover #592 guards are active, but seven Follow-up to #571: remaining language/stdlib rough edges (inference, repeat N times, text→number, pattern-VM, filesystem glob, and more) #578 desired-behavior regressions remain #[ignore]; exhaustive per-item Follow-up to #571: remaining language/stdlib rough edges (inference, repeat N times, text→number, pattern-VM, filesystem glob, and more) #578 classification, Container methods do not support overloading (silent last-wins) #638 coverage, and the Fix #592: bare zero-arg included action reference now resolves #637 include-wide undefined-name follow-up remain open
Establish fuzz targets for lexer, parser, pattern engine, and module loading — partial (PR test: Phase 1 baseline & containment for #610 #614 ): lexer/parser/pattern established; the module-loading fuzz target is still open (needs a safe async loader harness)
Record baseline coverage, test count, skipped programs, warnings, fuzz duration, and known crashes/hangs — partial (PR test: Phase 1 baseline & containment for #610 #614 ): test count/skips/warnings/fuzz-duration/crashes recorded (CI run 29240959575 → 1480 passed / 0 failed / 25 ignored); line coverage is not yet instrumented
Define supported platforms and support boundaries
Exit gate: No known production-readiness risk is untracked.
Phase 2 — Language correctness
Target: August 16–September 30, 2026
Primary known blockers include:
Date-unit names (year/month/day/hour/minute/second) as action-local vars are a fatal "already defined in an outer scope" error inside included files #557
ends with / starts with operators are swallowed as multi-word identifiers at statement level #566
Typechecker: Any/Unknown values from list indexing and untyped parameters rejected by strict ERROR rules (false positives) #567
String value "[]" is coerced to an empty list #583
Type checker: store x as <action call> raises ERROR "Could not infer type for variable" whenever the callee's return type is Unknown #588
Type checker: self-recursive action's result is typed Nothing inside its own body (false "Cannot index into Nothing") #590
Zero-argument include-exposed action referenced by bare name is fatal at top level & in action bodies (Variable '<name>' is not defined) — the call form #580's fix didn't cover #592 — original defect fixed by Fix #592: bare zero-arg included action reference now resolves #637 ; the broader include/module consistency work remains open
Docs audit: natural-language constructs that read like valid WFL but don't work (precedence, /, finally, between, error binding) #571
Follow-up to #571: remaining language/stdlib rough edges (inference, repeat N times, text→number, pattern-VM, filesystem glob, and more) #578 — GitHub issue is closed, but current main still labels it a High open umbrella with seven ignored desired-behavior regressions
Follow-up: implement features behind 4 skipped aspirational tests + fix 10 broken keyword_reference docs examples #555
Container methods do not support overloading (silent last-wins) #638 — container methods still use silent last-definition-wins behavior instead of overload/error consistency
Restrict Fix #592: bare zero-arg included action reference now resolves #637 's include-aware bare-name relaxation so an unrelated undefined variable remains fatal (unresolved P2 review finding )
Workstreams:
Exit gate: No known critical correctness defects and fewer than five accepted high-severity correctness defects, each with an owner and deadline.
Phase 3 — Security and reliability hardening
Target: October 1–31, 2026
Exit gate: Adversarial inputs cannot trivially hang, exhaust, or crash the host process, and no critical/high security finding remains open.
Phase 4 — Release candidate
Target: November 1–15, 2026
Exit gate: The release candidate passes every mandatory gate and begins a 14-day stabilization period.
Phase 5 — 8/10 release and stabilization
Target: November 16–December 31, 2026
PR requirements
Every PR contributing to this goal should include:
Scorecard area: which readiness category it improves
Tracked risk/issue: the linked defect, audit finding, or gate
Evidence: tests, benchmarks, fuzz results, documentation validation, or operational proof
Regression protection: what prevents the problem from returning
Compatibility impact: none, compatible extension, deprecation, or breaking change
Resource impact: effect on operations, memory, recursion, bytes, I/O, network, or concurrency
Remaining work: follow-up issue where the PR does not fully close the gate
Suggested PR text:
Production-readiness area:
Tracked issue/risk:
Gate improved:
Evidence:
Regression protection:
Compatibility impact:
Resource impact:
Remaining work:
Review cadence
Update this tracker after material readiness PRs.
Re-score monthly through October.
Re-score weekly during November and the RC period.
Treat newly discovered critical/high findings as release blockers.
Prefer correctness, security, reliability, and regression protection over new features until the release gates pass.
Definition of complete
This tracking issue closes only when:
The weighted score is at least 8.0/10 with linked evidence.
Every mandatory release gate passes.
No critical/high security or critical correctness finding remains open.
The release candidate completes its 14-day stability period.
The production-ready release and known limitations are published.
Goal
Make WFL 8/10 production-ready by January 1, 2027, with an internal target of December 1, 2026 and December reserved as a stabilization buffer.
This is a reliability and release-readiness goal, not a requirement to implement every desired language feature. The supported language must be predictable, secure, testable, documented, and operable.
Target dates
Production-readiness scorecard
Score each area from 0–10 and multiply it by its weight. The weighted total must be 8.0 or higher, and all mandatory release gates below must pass.
Score history
Update this table at least monthly and after any release-candidate review.
Dev diary/2026-07-13-issue-610-phase-1-scorecard-baseline.md0f52b3a)9a8e0cc, source6a7884d)Mandatory release gates
A weighted score alone cannot compensate for a failed safety gate.
Phase 1 — Baseline and containment
Target: July 12–August 15, 2026
Variable '<name>' is not defined) — the call form #580's fix didn't cover #592 guards are active, but seven Follow-up to #571: remaining language/stdlib rough edges (inference, repeat N times, text→number, pattern-VM, filesystem glob, and more) #578 desired-behavior regressions remain#[ignore]; exhaustive per-item Follow-up to #571: remaining language/stdlib rough edges (inference, repeat N times, text→number, pattern-VM, filesystem glob, and more) #578 classification, Container methods do not support overloading (silent last-wins) #638 coverage, and the Fix #592: bare zero-arg included action reference now resolves #637 include-wide undefined-name follow-up remain openExit gate: No known production-readiness risk is untracked.
Phase 2 — Language correctness
Target: August 16–September 30, 2026
Primary known blockers include:
ends with/starts withoperators are swallowed as multi-word identifiers at statement level #566store x as <action call>raises ERROR "Could not infer type for variable" whenever the callee's return type is Unknown #588Nothinginside its own body (false "Cannot index into Nothing") #590Variable '<name>' is not defined) — the call form #580's fix didn't cover #592 — original defect fixed by Fix #592: bare zero-arg included action reference now resolves #637; the broader include/module consistency work remains open/,finally,between, error binding) #571Workstreams:
Any,Unknown, andNothingExit gate: No known critical correctness defects and fewer than five accepted high-severity correctness defects, each with an owner and deadline.
Phase 3 — Security and reliability hardening
Target: October 1–31, 2026
Exit gate: Adversarial inputs cannot trivially hang, exhaust, or crash the host process, and no critical/high security finding remains open.
Phase 4 — Release candidate
Target: November 1–15, 2026
Exit gate: The release candidate passes every mandatory gate and begins a 14-day stabilization period.
Phase 5 — 8/10 release and stabilization
Target: November 16–December 31, 2026
PR requirements
Every PR contributing to this goal should include:
Suggested PR text:
Review cadence
Definition of complete
This tracking issue closes only when: