docs: close the cahier — §12 walk, F4, retire docs/reports/ (E6-C) - #942
Merged
Conversation
Final phase of the documentation-rewrite campaign. Walks the cahier's §12 global acceptance criteria (recorded in the PR body), reconciles the stale symbol count (F4), documents the last shim-coverage gap, and retires the now-spent specification set. - **F4** — `docs/reports/99-api-coverage.md` → `docs/api-coverage.md`. `names(OptimalControl)` is 203, not the stale 193: top-line and the §4/§7/§8 subtotals corrected (47→58, 22→25, 24→26), the "flagging for whoever next" note resolved (the 3-symbol gap is the §13 deprecated shims, now real exported bindings). Header reframed: the *theme* half of coverage is enforced by the build-time assertion in `docs/api_reference.jl`; this file is the guide-side record. - **migration.md** — the `Flow(ocp, u, g, μ)` row's "suggestion is wrong" note is stale (CTFlows#401 fixed, verified: it now names the keyword form). New "What could not be shimmed" row for `CTSolvers.Modelers.ADNLP()` / `CTDirect.Collocation()`: `UndefVarError` on the module name — `CTSolvers`/`CTDirect`/`CTParser` are not re-exported by design; the constructors themselves are, so write `OptimalControl.ADNLP()` / `OptimalControl.Collocation()`. - **Retire `docs/reports/`** — the spec set was tracked only to be a stable contract for the campaign's ~13 PRs; that job is done. Keep only the coverage matrix (moved to `docs/api-coverage.md`); delete `00`–`10` and the Work board. Not built, not consumed programmatically; four comment paths in `docs/api_reference.jl` updated. Docs build clean: exit 0, the `api_reference.jl` completeness assertion passes (all 203), only the 6 pre-existing upstream `@extref`, 0 internal `@ref` breakage. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Final phase of the documentation-rewrite campaign. Walks the cahier's §12 global acceptance criteria, reconciles the stale symbol count (F4), documents the last shim-coverage gap, and retires the now-spent specification set (
decisions.md§6).§12 global acceptance criteria — the walk
docs/Project.tomlresolves against rootProject.tomlmake.jlLOAD_PATH-stacks the root env; the full E6-C build resolves and executesmake.jlruns withdraft = false, log clean of resolution errorsmake.jlshipsdraft = trueglobally; all 43 content pages opt back in withDraft = falsein their@meta; onlysolve/gpu.mdstays drafted (issue #885),api/ecosystem.mdhas no executable code. Build log: exactly the 6 pre-existing upstream@extref(Plots.plot(::CTModels.Solutions.Solution)×4,CTBase.Strategies.parameter×2) in the toleratedwarnonlyclasses; 0 internal@refbreakage; 0failed to run.draft = false) predates the E5 per-page opt-in and should be reworded to "every content page executes except the deliberately-draftedgpu.md"Lie(,⋅,HamiltonianLift,OptimalControl.VectorField, bareautonomous=,Flow(ocp, u, g,— except the Migration pagemigration.md, the only occurrences are the rename tables ongeometry/ad.mdandgeometry/overview.md, labelled stale-form demos ongeometry/lie-macro.mdandflows/from-hamiltonians.md, and comments onfunctional-api.mdexplaining CTModels' realtime_dependence!(…; autonomous=…)signature. No live-code violation.∂ₜsharesgeometry/ad.md(as the §7 sitemap andapi-coverage.md§9 both intend).docs/api-coverage.mdhas no uncovered re-exported symboldocs/api_reference.jlerrors the build if any of the 203names(OptimalControl)is absent fromAPI_THEMES, or if a theme lists a non-exported, non-qualifiedname. Passes in this build.docs/attic/is gonetest ! -d docs/atticPreconditionErrornaming its replacement, or is documented in the Migration page as unshimmable with the reasonPreconditionError(Lie,⋅,HamiltonianLift,Flow(f::Function), the 5-positional Hamiltonian-flow call, the 4-positional state-flow call,time(ocp),time(sol),success(sol));Flow(ocp, u, g, μ)throws upstream in CTFlows naming the keyword form (CTFlows#401 closed);autonomous=/variable=/inplace=andaugment=trueare unshimmable and documented (migration.md"What could not be shimmed"); theOptimalControl.VectorFieldprefix is not breaking.CTSolvers.Modelers.ADNLP()/CTDirect.Collocation()— now added to that table by this PR.Changes
docs/reports/99-api-coverage.md→docs/api-coverage.md.names(OptimalControl)is 203, not the stale 193: top-line and the §4/§7/§8 subtotals corrected (47→58, 22→25, 24→26), the "flagging for whoever next" note resolved (the 3-symbol gap is the §13 deprecated shimsLie/⋅/HamiltonianLift, now real exported bindings). Header reframed — the theme half of coverage is enforced bydocs/api_reference.jl's build-time assertion; this file is the guide-side record.docs/src/migration.md— theFlow(ocp, u, g, μ)row's "suggestion text is currently wrong" note is stale (CTFlows#401 fixed; verified it now namesFlow(ocp, u; constraint=g, multiplier=μ)). New "What could not be shimmed" row forCTSolvers.Modelers.ADNLP()/CTDirect.Collocation():UndefVarErroron the module name —CTSolvers/CTDirect/CTParserare deliberately not re-exported; the constructors themselves are, so writeOptimalControl.ADNLP()/OptimalControl.Collocation().docs/reports/— the spec set was tracked only to be a stable contract for the campaign's ~13 PRs; that job is done. Keep only the coverage matrix; delete00–10and the Work board. Not built, not consumed programmatically. Four comment paths indocs/api_reference.jlupdated.Verification
Docs build (
julia --project=. docs/make.jl): exit 0, VitePress site builds, theapi_reference.jlcompleteness assertion passes (all 203 symbols), only the 6 pre-existing upstream@extref"cannot resolve", 0 internal@refbreakage.Follow-up (not in this PR)
Investigating criterion 7 surfaced that the ecosystem deprecates removed v2.0 spellings four different ways — hard
PreconditionError(OptimalControldeprecated.jl, CTFlows guards), softBase.depwarnstill working (CTBaseis_parameter_type), silent alias (CTParsereuler_b→euler_implicit,trapezoidal→trapeze), and nothing at all (CTSolvers, CTDirect, CTModels, CTLie). A coherent deprecation policy across the repos is a separate work item.🤖 Generated with Claude Code