Skip to content

haskell(feat[docs]) Document captures and snapshots - #293

Draft
tony wants to merge 11 commits into
haskell-portfrom
feat/haskell-capture-docs
Draft

tony wants to merge 11 commits into
haskell-portfrom
feat/haskell-capture-docs

Conversation

@tony

@tony tony commented Nov 9, 2026 •

Copy link
Copy Markdown
Contributor

Haskell now exposes scoped capture, detached observations, validated offline fixtures and shared Runtime ownership. This follows the initial Haskell registration in #265 and documents the public API in libtmux-haskell#4 using its native Haddock artifacts and committed reader guides.

Summary

  • Add native observation reference pages with record ownership and accurate source links.
  • Preserve authored export groups, module reexports and typed signatures.
  • Add capture, offline fixture, shared Runtime and performance guides from the documented source.
  • Attribute capture commands through a reviewed source catalogue.
  • Keep MCP excluded and workspace tooling marked unpublished.

Reference and source fidelity

The exporter preserves the scalar profile and adds an observation profile. Record labels retain their owning types, opaque declarations retain their public boundary, and private defining sources receive source links without private API pages. Native artifacts and library/exporter revisions remain independently bound.

The native command catalogue qualifies the complete library, C and package inputs, API metadata and public effect classifications. Capture receives reviewed entries for display-message, if-shell and session-gated list-clients. Existing evidence, scope and drift checks remain active.

Reader guides

Installation, capture, graph traversal, fixture validation, independent Server scopes, operational recovery and measured capture costs use committed native guides. Long type signatures wrap at valid Haskell boundaries. Collection ordering checks include the snapshot module’s ordinary functions.

Test plan

  • Native exporter and Haskell adapter regressions
  • Haskell declaration rendering, navigation and guide staging
  • Reviewed command catalogue, drift rejection and unchanged generic scanner checks
  • Site type checking and lint
  • Zero unresolved Haskell guide mentions
  • Full site unit suite
  • Clean selected-source assembly and publisher input inventory
  • Haskell-prefix link audit and sampled Chromium layouts
  • Native module/member regressions and the Haskell reference-link ratchet
  • Full assembled-site and browser matrix
  • Combined outer loop within its configured budget
  • Hosted publication audit

The clean selected-source build passed in 145.908 seconds; the final cache-backed assembly passed in 11.857 seconds. The publisher verified its 3,158-file inventory; the scoped Haskell-prefix audit checked 45,391 internal links with none broken. Sampled Chromium pages fit at 390, 768 and 1440 pixels, including the Runtime guide, public scope declarations and a dark-mode API page. The native graph fence currently displays as code on the shared site.

Haskell's resolved-reference floor rises from 300 to 1,468; its unresolved-type ceiling remains zero. Other ports' baseline rows are unchanged. Native module/member and guide-staging regressions pass. The installed shared Runtime program also passes from its pinned Git dependency on both tmux endpoints.

Full site and hosted publication qualification remain pending for the current head. The exact-head hosted run is in progress. The combined local outer run fails two PowerShell prose-audit five-second timeouts under the shared four-core, 8 GiB guard; that file passes in isolation. The site type check passes with an explicit 4 GiB Node heap within the same job cap. No test budget increase is included. One Elixir prerequisite check is skipped in the local API-model suite.

Companion PRs

tony added 8 commits November 8, 2026 20:52
why: Shared documentation needs the public record owners and actual
defining sources while retaining native Haskell signatures.

what:
- Add a separate observation profile for the scoped Server and snapshots
- Preserve module reexports and owner-scoped record fields
- Validate compiled exports, native anchors and archived source text
- Retain native inputs and preserve the qualified scalar profile
why: Duplicate record labels and facade reexports need their public
context without changing native names or losing defining sources.

what:
- Adapt the qualified observation profile alongside scalar interfaces
- Retain record owners, native links and ordered module reexports
- Give the reexport root one navigation row without copied members
- Reject incomplete modules and conflicting module identities
why: Public capture and recovery types need readable continuation lines
within the API reference column limit.

what:
- Continue outer type arrows while preserving native links and tokens
- Keep callback scopes, character literals and escaped strings intact
- Leave unbreakable literals exact and report their width
why: The public observation API needs native reference ownership, checked
source provenance and guides that use the same reviewed library revision.

what:
- Publish the Haddock observation model and authored navigation groups.
- Stage capture, offline-fixture and performance guides from source.
- Bind native command attribution to reviewed source and API metadata.
- Exercise snapshot collection ordering and preserve excluded products.
why: Function and type references need declaration-level destinations so
readers reach the named API with the correct language kind.

what:
- Resolve unique public labels within their declared module.
- Prefer data heads for shared type and constructor spellings.
- Preserve ambiguous labels and explicit source-fragment destinations.
why: Compiler extension references need checked destination identity
alongside the package API links.

what:
- Record the owning GHC manual heading for record-dot syntax.
- Capture the successful destination response and identity evidence.
why: The capture API adds an entry module and reverse references beyond the scalar API. Reference checks need to preserve that native structure.
what:
- Derive module sections from the current public model in its declared order.
- Compare exported members within their own sections, excluding backlinks.
why: The capture reference now resolves more native cross-references. Preserve
that coverage as the public API grows.
what:
- Raise the Haskell-only resolved-link floor from 300 to 1372.
- Keep the unresolved-type ceiling at zero and other ports unchanged.
tony added 3 commits November 9, 2026 04:14
why: The public Runtime API needs reference pages and an installed guide
that agree with the source consumers can build.

what:
- Refresh the native Haddock profile while retaining separate exporter provenance
- Stage the shared Runtime guide and preserve every existing public signature
- Bind queued command evidence and reference fixtures to the selected source
why: Shared Runtime declarations add native links that the reference
regression check must retain.

what:
- Raise only Haskell's floor from the complete rendered reference
- Keep the unresolved-type ceiling and other port baselines unchanged
why: The exact guide-path fixture omitted the shared Runtime page and
rejected the complete public guide catalogue in CI.

what:
- Include the shared Runtime source and reader route in the guide contract

This branch was previously deployed

1 inactive (outdated) deployment
docs-preview — 6fe29bc6 Deployed Nov 9, 2026 by tony via publish-preview / publish #1366
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