Skip to content

docs: overhaul the documentation and gate it in CI - #377

Open
mvandeberg wants to merge 1 commit into
cppalliance:developfrom
mvandeberg:pr/doc-improvement
Open

docs: overhaul the documentation and gate it in CI#377
mvandeberg wants to merge 1 commit into
cppalliance:developfrom
mvandeberg:pr/doc-improvement

Conversation

@mvandeberg

Copy link
Copy Markdown
Contributor

Rewrites the narrative and reference documentation against the shipped code, and adds the linting, baseline and CI machinery that keeps them from drifting again.

Narrative pages (doc/modules/ROOT/pages)

  • Correct factual defects across every chapter: phantom ReadSource/WriteSink and Source/Sink/BufferSource hierarchies, the "one virtual call per I/O operation" and unconditional heap-frame claims, Corosio's backend count, the stream-concept count, the compiler floor and stale -fcoroutines advice, strand::dispatch's inline-resume condition, fuse's run loop, and seven build recipes that linked a nonexistent target.
  • Link first-mention API references through the cpp: macro instead of retyping signatures, and delete the reproduced contracts and interface sketches those links replace.
  • Declare a Diátaxis :page-mode: per page genre, drop the chapter skeletons, and rebuild each landing page.
  • Apply a Simplified Technical English wording pass to every page and heading.
  • Add 8q.gui-integration with a compiled example under example/gui-integration; move the Corosio echo-server example out to Corosio.

Reference docstrings (include/boost/capy)

  • Rewrite identity-shaped briefs to describe behavior.
  • Specify await-effects contracts for when_all, when_any, task and quitter, and document the awaiter and lock_guard members of async_event, async_mutex, async_waker, immediate, quitter and task.
  • Complete @PARAM, @return, @pre, thread-safety and memory-resource lifetime coverage across full overload sets.
  • Fix docstring examples that did not compile, and correct claims about strand's on_work_started/finished, thread_pool's lazy start, default-constructed UB, after-error behavior, release() postconditions, and MutableBufferSequence conversion.
  • Add the boost/capy/test.hpp umbrella header; exclude internal test helpers from the reference via mrdocs.yml.
  • Apply the same Simplified Technical English pass to header prose.

Doc-quality tooling (doc/lint, doc/.vale, .github/workflows/docs.yml)

  • Vale configuration plus Capy styles: NoFluff, PartHeadings, SentenceLength, SimpleTense, Terminology and an accept vocabulary.
  • Node checkers under doc/lint: doc-lint, sentence-length, mrdocs-warnings, run-a11y, docstring extraction, baseline authoring and comparison, and a selftest with fixtures.
  • baseline.json grandfathers existing violations so the gate fails only on new ones. Docstrings are extracted from /// comments so the gates see headers, not just .adoc.
  • CI runs a blocking doc-quality gate on A1/A6/A7/B2/D2, MrDocs warnings and C2/C4/C9/C10; every check fails closed when it collapses to zero or its corpus was not regenerated. Accessibility (pa11y) and the remaining rules report without blocking. A workflow_dispatch job reseeds the baseline.

Doc tests (test/doc)

  • Extend the compiled snippets and programs, build them warnings-as-errors, and drop the snippets whose page sketches were deleted.

Process artifacts

  • DOC_IMPROVEMENT_PLAN.md, DOC_STYLE_GUIDE.md, DOC_AUDIT_REFERENCE.md, DOC_REVIEW_FEEDBACK.md, DOC_AUDIT_PHASE4_EXIT.md, doc-worklist.md, doc-xref-gaps.md, doc-rationale-classification.md and doc-prompts/ record the plan, the style rules, the audit method and the remaining backlog.

Known state: the doc-quality job fails on purpose. Two accepted sentence-length (C2) findings in when_any.hpp are not in the baseline; the post-merge reseed grandfathers them. See doc/lint/README.md.

Rewrites the narrative and reference documentation against the shipped
code, and adds the linting, baseline and CI machinery that keeps them
from drifting again.

Narrative pages (doc/modules/ROOT/pages)

  * Correct factual defects across every chapter: phantom
    ReadSource/WriteSink and Source/Sink/BufferSource hierarchies, the
    "one virtual call per I/O operation" and unconditional heap-frame
    claims, Corosio's backend count, the stream-concept count, the
    compiler floor and stale -fcoroutines advice, strand::dispatch's
    inline-resume condition, fuse's run loop, and seven build recipes
    that linked a nonexistent target.
  * Link first-mention API references through the cpp: macro instead of
    retyping signatures, and delete the reproduced contracts and
    interface sketches those links replace.
  * Declare a Diátaxis :page-mode: per page genre, drop the chapter
    skeletons, and rebuild each landing page.
  * Apply a Simplified Technical English wording pass to every page and
    heading.
  * Add 8q.gui-integration with a compiled example under
    example/gui-integration; move the Corosio echo-server example out to
    Corosio.

Reference docstrings (include/boost/capy)

  * Rewrite identity-shaped briefs to describe behavior.
  * Specify await-effects contracts for when_all, when_any, task and
    quitter, and document the awaiter and lock_guard members of
    async_event, async_mutex, async_waker, immediate, quitter and task.
  * Complete @PARAM, @return, @pre, thread-safety and memory-resource
    lifetime coverage across full overload sets.
  * Fix docstring examples that did not compile, and correct claims about
    strand's on_work_started/finished, thread_pool's lazy start,
    default-constructed UB, after-error behavior, release()
    postconditions, and MutableBufferSequence conversion.
  * Add the boost/capy/test.hpp umbrella header; exclude internal test
    helpers from the reference via mrdocs.yml.
  * Apply the same Simplified Technical English pass to header prose.

Doc-quality tooling (doc/lint, doc/.vale, .github/workflows/docs.yml)

  * Vale configuration plus Capy styles: NoFluff, PartHeadings,
    SentenceLength, SimpleTense, Terminology and an accept vocabulary.
  * Node checkers under doc/lint: doc-lint, sentence-length,
    mrdocs-warnings, run-a11y, docstring extraction, baseline authoring
    and comparison, and a selftest with fixtures.
  * baseline.json grandfathers existing violations so the gate fails only
    on new ones. Docstrings are extracted from /// comments so the gates
    see headers, not just .adoc.
  * CI runs a blocking doc-quality gate on A1/A6/A7/B2/D2, MrDocs
    warnings and C2/C4/C9/C10; every check fails closed when it collapses
    to zero or its corpus was not regenerated. Accessibility (pa11y) and
    the remaining rules report without blocking. A workflow_dispatch job
    reseeds the baseline.

Doc tests (test/doc)

  * Extend the compiled snippets and programs, build them
    warnings-as-errors, and drop the snippets whose page sketches were
    deleted.

Process artifacts

  * DOC_IMPROVEMENT_PLAN.md, DOC_STYLE_GUIDE.md, DOC_AUDIT_REFERENCE.md,
    DOC_REVIEW_FEEDBACK.md, DOC_AUDIT_PHASE4_EXIT.md, doc-worklist.md,
    doc-xref-gaps.md, doc-rationale-classification.md and doc-prompts/
    record the plan, the style rules, the audit method and the remaining
    backlog.

Known state: the doc-quality job fails on purpose. Two accepted
sentence-length (C2) findings in when_any.hpp are not in the baseline;
the post-merge reseed grandfathers them. See doc/lint/README.md.
@cppalliance-bot

Copy link
Copy Markdown

An automated preview of the documentation is available at https://377.capy.prtest3.cppalliance.org/index.html

If more commits are pushed to the pull request, the docs will rebuild at the same URL.

2026-08-14 20:42:33 UTC

@codecov

codecov Bot commented Aug 14, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 98.09%. Comparing base (aa1a38c) to head (42e9daa).
⚠️ Report is 3 commits behind head on develop.

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff            @@
##           develop     #377   +/-   ##
========================================
  Coverage    98.09%   98.09%           
========================================
  Files          132      132           
  Lines         6288     6288           
========================================
  Hits          6168     6168           
  Misses         120      120           
Flag Coverage Δ
linux 98.08% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
include/boost/capy/buffers.hpp 100.00% <ø> (ø)
include/boost/capy/buffers/buffer_param.hpp 100.00% <ø> (ø)
include/boost/capy/buffers/buffer_slice.hpp 100.00% <ø> (ø)
include/boost/capy/buffers/consuming_buffers.hpp 100.00% <ø> (ø)
include/boost/capy/buffers/make_buffer.hpp 100.00% <ø> (ø)
include/boost/capy/concept/decomposes_to.hpp 100.00% <ø> (ø)
include/boost/capy/cond.hpp 100.00% <ø> (ø)
include/boost/capy/detail/slice_of.hpp 100.00% <ø> (ø)
include/boost/capy/error.hpp 100.00% <ø> (ø)
include/boost/capy/ex/any_executor.hpp 100.00% <100.00%> (ø)
... and 35 more

... and 42 files with indirect coverage changes


Continue to review full report in Codecov by Harness.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update aa1a38c...42e9daa. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@cppalliance-bot

Copy link
Copy Markdown

GCOVR code coverage report https://377.capy.prtest3.cppalliance.org/gcovr/index.html
LCOV code coverage report https://377.capy.prtest3.cppalliance.org/genhtml/index.html
Coverage Diff Report https://377.capy.prtest3.cppalliance.org/diff-report/index.html

Build time: 2026-08-14 20:59:43 UTC

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

2 participants