Skip to content

feat(site[ocaml]) Add native API pages and tested guides - #264

Draft
tony wants to merge 29 commits into
mainfrom
feat/ocaml-native-docs
Draft

tony wants to merge 29 commits into
mainfrom
feat/ocaml-native-docs

Conversation

@tony

@tony tony commented Nov 7, 2026 •

Copy link
Copy Markdown
Contributor

OCaml readers need installation instructions, API navigation and examples backed by the native compiled interfaces. This adds the core and workspace documentation to the shared site.

Summary

  • Add OCaml core and workspace pages, packages, navigation and approved artwork.
  • Preserve typed odoc references, declaration ownership and compiled-source provenance.
  • Show tested native programs and derive tmux usage from public implementations.
  • Build OCaml documentation through a source-bound native caller and reusable producer.
  • Read opam registry versions without losing known state on unavailable responses.
  • Bound parser, component and CSS scanner setup costs.
  • Run independent workspace-picker cases with bounded concurrency.

Changes by area

Native model and links

The OCaml adapter consumes the public compiled-interface export. Type and value references retain their namespaces, standard-library types use their real manual anchors, and external destination verification checks the declared module, type and value identities, including names containing apostrophes.

The OCaml reference ratchets now record the measured first baseline: 4,584 resolved cross-references and 2,031 plain type occurrences. Only the OCaml entries are added; every existing port value is preserved. These counts come from a fresh render of this branch, including core and workspace references.

Reader documentation

Core and workspace pages use source-owned guides and installed examples. The recovery guide shows how to cancel a waiter, inspect the retained operation and check its postcondition before another action. The bootstrap guide creates a private daemon through the native workspace API and links its complete tested program. Server navigation leads to the live clients; captured client observations remain distinct. Package links reflect authored manifests and source installation. MCP remains excluded by the port policy.

OCaml's Topics, Examples and Concepts overviews lead to native task guides. The Workspace API landing lists exported declarations. Language switches omit excluded products.

Build and test tooling

The reusable producer installs the pinned OCaml runtime, exports the selected native source and builds its documentation. The manual native caller pins the producer and publisher; build-only qualification verifies artifact digests, provenance and the full inventory with publication skipped. Shared CI checks out the exact native guide source. OCaml guide, mention and manifest data use that same revision. The opam registry reader selects published package directories and preserves previous state on unavailable or malformed responses. Independent test commits share parsed Markdown, scope type-render containers per symbol and isolate concurrent browser cases. Complete rendering-output hashes match the preceding implementation. Tailwind derives utility candidates from the rendering source tree, bounding isolated preview scans. Required stylesheet rules retain their bodies and at-rule contexts. Workflow contract tests execute source-output emission and reject missing writes or altered revision values.

Product tests derive reference sections, page titles and task counterparts from the source models. Declared product overviews and ownership remain mandatory, including unpublished availability pages; copied-source negative controls reject missing pages and missing product metadata. Optional sections follow each port's actual documents.

Test plan

  • Build the complete OCaml version and inspect API links, guide destinations and navigation.
  • Verify live OCaml manual destinations and offline destination evidence.
  • Run exhaustive rendered-link checks and compare complete Markdown, AST and HTML outputs.
  • Run the workspace-picker browser cases with focus, storage and negative controls.
  • Run type-aware lint for the changed rendering checks.
  • Verify the style source boundary and run the unchanged fresh browser sample.
  • Refresh the native build-only qualification for the current producer, verify the immutable artifact and retain publication as skipped.
  • Complete the publication audit in CI.
  • Compare baseline and integration runtimes through completion with matched settings.

Focused route regressions, a rendered OCaml build, internal links within that mount and standalone site type-checking pass. The complete cross-port publication audit remains pending. The raw selected-build dangling report includes shared-prose diagnostics, which are retained separately from the source mention index and hosted root report.

The development outer loop reaches its 60-second deadline on both the integration and a separate unchanged pinned base, including a warm-cache repeat. Those failed runs remain recorded. The complete rendered-link suite passes in 56.2 seconds; this is separate from whole-loop readiness. One complete baseline observation finishes in 323 seconds with all commands succeeding before the retained budget verdict fails. Subsequent baseline observations hit individual test timeouts and remain incomplete, including with serialized top-level scheduling. The integration browser sample passes after bounding Tailwind source scanning. The complete affected rendered-link and picker suites pass with matched settings: 381 seconds on the baseline and 254 seconds with the integration. This single observation does not establish a general speedup; the whole-loop incremental cost remains unverified. Existing runner-budget repair is tracked separately in issue #273; functional hosted CI remains required.

Companion PR

Shared language artwork also carries the approved OCaml assets. The native implementation and its qualification are in libtmux-ocaml.

Current qualification

This draft integrates current main, including the excluded-product navigation fix in PR #267 and the code-panel controls in PR #286. The shared excluded-only guard and OCaml regression remain.

The frozen documentation source is native 6b814a3. Public interfaces, source guides, manifests, examples and command citations identify that revision. The refresh adds the tested native bootstrap guide, links its local cleanup helper to its actual source, and preserves the failed-workload evidence for both supported endpoint releases.

Support includes every tmux release from 3.3a through 3.8. Runtime CI uses only the endpoints, 3.3a and 3.8, on OCaml 5.5.2. Intermediate releases remain supported without extra runtime jobs.

  • Native CI 42537200917 passes quality and both endpoint jobs at the frozen documentation source.
  • Source and UI checks pass after integrating main. Assembled-output checks were explicitly skipped locally. A separate source-level investigation compares the corrected alias expectations with unchanged route selection and checks actual guide metadata across ports. Independent scoped review reports no material findings.
  • Selected rendering and DOM checks pass for the bootstrap program, local helper, standard-library constructor, workspace routes and both retained walkthrough FAIL cells. OCaml has zero broken owned destinations. The selected build's overall link verdict remains FAIL because root and sibling trees are not assembled locally.
  • Build-only qualification 42540146075 passes at native caller 40076e1, with publication SKIPPED. Both caller pins select shared 7d4f88f; the built library source is the frozen revision above. Downloaded archive digests, clean source/producer identities, the complete publisher inventory, native exporter provenance and rendered bootstrap links are verified.

The preserved full audit 42527248797 at shared head e5bc45bba18c991cd63679ac807433b0d2e13858 ended FAIL. Its complete assembly passed the link audit with zero broken links. The final suite failed nine product-navigation assertions and one separate Python install-picker timeout. The navigation corrections select one canonical-first destination for ordinary aliases and the Guides overview when it exists; explicit multi-page task equivalence remains intact. The Python timeout remains unresolved and distinct from those corrections.

The next audit, 42547143534, failed during external API evidence checks: the new bootstrap guide introduced an OCaml constructor link without a verification record. The verifier now recognizes constructor anchors, validates their parent types and exact declared names, and retains the verified standard-library destination. Wrong-owner and altered-declaration controls remain strict. The complete verifier unit suite, offline destination gate and lint pass locally. Source-dependent setup runs only in its consuming suites; no timeout setting changed.

The OCaml-only audit, 42548922757, at shared head 301038c1eea4faaa310d46e69408b88ab6f69d7d is CANCELLED after the reference-baseline branch update. It is not passing evidence. Earlier failed runs remain recorded.

Current native CI 42541594764 at the producer-pin commit is FAIL overall: quality and 3.8 pass; 3.3a fails in the existing streaming walkthrough with a bound-daemon exit. The documented 3.3a stream-gap failure, the earlier 3.8 recovery failure and the 3.4 mixed-workload failure remain unresolved. Later component passes do not close those findings.

The measured baseline commit is 52209f122. The fresh standalone render measures 4,584 cross-references; combined head 8d8fbac currently records 4,608. That difference has been reported for integration reconciliation. The combined branch was not edited here.

The combined release PR #291 owns release qualification through its complete CI audit. OCaml fixes continue on this branch for the integrator to consume. The docs owner controls merge and publication.

tony added 9 commits November 7, 2026 16:50
why: OCaml readers need source-linked API pages, native examples and
workspace guides in the shared site.

what:
- Decode compiled interfaces with native provenance and typed odoc links
- Add OCaml navigation, packages, guides and executed source examples
- Derive tmux usage from the native implementation and public facade
- Verify OCaml manual destinations and add approved brand assets
- Build the port through the reusable documentation producer
why: Exhaustive link checks repeat parser work and retain a growing
route history while rendering independent fragments.

what:
- Share a page's Markdown AST between its independent link validators
- Use default parser exports within isolated test workers
- Scope type-render containers to the symbol being checked
why: Independent browser contexts can overlap their real frame waits
without sharing page state.

what:
- Limit concurrent picker cases to two within their existing suites
- Restore test configuration after closing the fixture browser
why: A fresh CI checkout cannot stage OCaml guides without the native
source commit selected by the compiled API model.

what:
- Resolve and check out the model's OCaml source revision
- Supply the checkout to guide staging and source-derived usage checks
- Keep compiled API freshness in the owning port's exporter job
why: Online registry refreshes require a probe for each registered port;
OCaml otherwise stops the publication audit before its checks can run.

what:
- Read version directories from the central opam repository
- Validate versions against the port's declared release-tag grammar
- Preserve known metadata when registry data is unavailable or malformed
- Cover published releases, prerelease tags and failed registry reads
why: Documentation planning can include OCaml after its real build-only
caller and complete artifact have passed source-provenance validation.

what:
- Register the native repository's explicit docs workflow
- Preserve its source, version and publication controls in shared planning
why: Publication checks compare repository identities and the evidence bundle
clock with the data produced by the canonical generators.
what:
- Generate OCaml manifest entries with the repository slug
- Retain the date of the latest destination verification in the bundle
why: Isolated previews link installed dependencies beside their sources.
Scanning those links blocks module loading and browser navigation.

what:
- Resolve utility candidates from the site's rendering source tree
- Keep explicit theme and typography plugins in the stylesheet
why: Source binding depends on the values written to GITHUB_OUTPUT,
including when the workflow groups its redirects for ShellCheck.

what:
- Execute the source-output step against isolated revision fixtures
- Include OCaml in checkout and native freshness contracts
- Reject missing output, incorrect fields and altered revision values
tony added 15 commits November 7, 2026 20:51
why: Native guides contain standard-library references, saved filenames and
wire schemas that the shared renderer must distinguish before publication.
what:
- Recognize OCaml source filenames and numeric output labels
- Link registered source paths and verified standard-library declarations
- Validate complete value and type names, including apostrophes
- Preserve Lua method and Elixir arity recognition
why: Readers need a complete executed recovery example tied to the same
native source revision as the API reference and task guides.
what:
- Stage the recovery guide beside control and streaming documentation
- Refresh public interfaces, source paths, examples and usage metadata
- Bind OCaml source artifacts to a111168bceee2085f0cee5efe784d8f446011ba1
why: The OCaml integration must qualify against the current shared shell
and player behavior before its full-site publication checks.
what:
- Merge main at c5b56f2
- Preserve upstream API player links and product overview ordering
- Retain native OCaml syntax handling and excluded MCP policy
why: The committed mention index must reflect the source-owned guide
refresh before publication checks can validate the full site.
what:
- Regenerate linked and unresolved mentions after native reference fixes
- Include the scoped cancellation reference from the control guide
why: The package inventory must name the same committed native source
as the API model and source-owned documentation.
what:
- Regenerate OCaml distributions from the six pinned authored manifests
- Preserve package identities and every other port inventory
why: The declaration regression must establish a page identity before
reading its kind and name under strict TypeScript checking.
what:
- Fail explicitly when an OCaml fixture yields no page identity
- Retain all exact-name and forged-prefix comparison cases
why: Readers need current benchmark evidence and known compatibility
failures beside the native API and task guides.
what:
- Refresh OCaml source artifacts from the committed benchmark revision
- Include the mixed-workload summary, raw receipts and crash diagnosis links
- Align package provenance, examples and mention data with that source
why: Generated navigation advertised OCaml overview and workspace API
routes without corresponding pages. The shared-page switcher also
linked an intentionally excluded MCP product.

what:
- Add section overviews linked to native guides and a workspace API index
- Respect product availability for shared-page equivalents
- Cover product exclusion and authored page routes; refresh mentions
why: The OCaml reference exposes backend Client modules under Server,
without requiring a Java-shaped Server class.

what:
- Verify both qualified backend module identities in the published index
- Retain the existing declaration and destination checks
why: OCaml uses a native workspace guide and API reference, and explicitly
excludes MCP. Generic product assumptions obscured those contracts.

what:
- Give the workspace overview product metadata and guide/API cards
- Keep example placeholders off pages with an existing native guide
- Cover native guide navigation and distinguish excluded products from
  unpublished availability pages
why: Native product guides and excluded products do not share the generic
page layout. New ports need strict assertions without new language branches.

what:
- Require product overviews and ownership before selecting optional sections
- Derive titles, task counterparts and API sections from their source models
- Cover missing overview and metadata regressions without rendering guesses
- Match the workspace fallback to tested files and native guide availability
why: The shared navigation fix preserves unpublished product overviews
while excluding unsupported products. The OCaml draft no longer needs
its temporary availability guard.

what:
- Adopt main's excluded-product handling and retain the OCaml regression
- Preserve OCaml registration and source-derived product contracts
- Integrate current reference sections, breadcrumbs and overview headings

Merge main at 9a01505.
why: Eio cleanup references and signature types must reach their declarations in the shared blocking package.

what:
- Follow explicit public module aliases during odoc and type resolution
- Preserve namespace checks and stop alias cycles
- Cover renamed aliases, chained aliases, missing members and type/value collisions
why: Readers need the current cleanup contracts and a precise interoperable query subset alongside source-bound API pages.

what:
- Refresh the compiled API, guides, examples and package inventory from native 4d2203d04f74d03dc3f6df0660362fc17b771287
- Place cleanup diagnostics under Errors and add the scalar query interchange guide
- Revalidate command evidence against current implementation lines
- Keep JSON wire literals distinct from unrelated API declarations
why: OCaml supports every tmux release from 3.3a through 3.8 while CI exercises
only those endpoints. The reference and examples must describe the same source.
what:
- Pin typed interfaces and source-owned guides to native revision 3c0c07a.
- Align prerequisites and showcase validation with the 3.3a support floor.
- Remove obsolete OCaml minimum-version exemptions without changing siblings.
- Rebind command citations to their exact implementation and refresh indexes.
why: The integration must keep installed examples and workload evidence
tied to one native source.
what:
- Attach the complete bootstrap program to its workspace operations
- Refresh API, example, package and guide data from the native source
- Document shared observer/service capacity and retain both endpoint
  stream-gap walkthrough failures

source: libtmux/libtmux-ocaml
revision: 6b814a3ae27b6a700b5d45ff1ef654565a1f1605
tony added a commit that referenced this pull request Nov 9, 2026
why: It contains #264's head and corrects false tmux 3.8 walkthrough claims, so it ships instead of e5bc45b.

what: Merge 7d4f88f, refreshing OCaml's tested bootstrap and support evidence, guides, usage data and example sources.
tony added 2 commits November 8, 2026 19:39
why: Source-derived assertions counted duplicate alias destinations and
selected a source guide instead of an existing Guides overview.

what:
- Prefer canonical routes before aliases for ordinary page counterparts
- Keep multiple destinations for explicit task equivalence
- Select the available Guides overview without language-specific branches
tony added 2 commits November 8, 2026 20:04
why: The bootstrap guide links to the standard None constructor, whose
ocamldoc anchor was not recognized as a declaration by the verifier.

what:
- Validate constructor names and parent types at TYPEELT anchors
- Retain the verified Option.None destination and negative controls
- Collect source evidence only in the suites that consume it
why: Registered ports need explicit reference floors and type-link
ceilings so missing or regressed links cannot pass without a baseline.

what:
- Record 4584 resolved cross-references from the current OCaml render
- Set the initial plain-type ceiling to the measured 2031 occurrences
- Preserve every existing port's recorded values
tony added a commit that referenced this pull request Nov 9, 2026
…ts (#291)

why: Six ports had docs branches ready but no published site, and
three shared fixes were waiting behind them. Releasing them together
gives one docs commit to trust for deployment and one set of caller
pins to move, instead of six separate waves.

what:
- Add OCaml (#264), Haskell (#265), Erlang (#266, #278, #279, #280,
  #284, #292), Common Lisp (#268), Perl (#274) and Clojure (#276):
  native API pages, tested guides, navigation, landing and switcher
  entries, and cross-reference data for each
- Keep browser checks from loading third-party resources, and pass
  the check origin to the three scripts that named an undefined base
  (#287)
- Render guide badges at build time instead of hotlinking shields
  (#288)
- Size the reference sidebar and member bars from the viewport, so
  the Chrome iOS keyboard no longer shrinks them (#290)
- Make the OCaml model producer verify its native build inputs in
  their checkout and reject stale ones, with controls run in CI
- Offer one switcher page per port, and title Perl's workspace guide
  "Workspace guide"
- Regenerate the registry, mention index and cross-reference counts
  for the combined port set

Base main 2593131, head dabe59b. Port heads: #264 7d4f88f
and 73fb1ad, #265 dc024e3, #268 947da1f, #274 818fa2e,
#276 a134503, #287 a437e97, #292 e7740d9.

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant