<!-- DO NOT EDIT BY HAND.
Generated by `cargo xtask gen` (xtask/src/main.rs) from docs-src/models/c-api.json
(clang C inventory) joined with the syn-extracted Rust inventory and the curated,
validated map in docs-src/models/parity.model.json. Run `cargo xtask check` to
verify freshness; it fails if this file drifts or a model invariant is violated. -->

# ncurses C → ncurses-native per-function parity (gap view)

C inventory provenance: Ubuntu clang version 18.1.3 (1ubuntu1) via clang -Xclang -ast-dump=json on installed ncursesw headers; headers: `curses.h` (456 fns, sha256 `bbdf40f38aef`), `term.h` (33 fns, sha256 `26e32c4d77dc`).

## How to read this (and what the percentage is NOT)

The percentage is a strict ratio: C functions that are *resolved* divided by all
C public API functions. Resolved means either a reconstructed byte producer
(full/partial/scaffold/divergent) or an evidence-backed non-output classification
(deferred = proven to emit no immediate bytes; n_a = a pure query with no
terminal-output contract). It is **not** a claim that a counterpart implements the
C function's signature, return values, or window semantics -- ncurses-native is a
byte-output reconstruction, not a C API. Credit is withheld from every function
that is neither reconstructed nor classified with evidence.

**Overall: 481 / 481 C functions are resolved (100.0%). The other 0 are gaps.**

Legend: `*` full = every function in the group reconstructed and admitted by a court · `~` partial = some behavior reconstructed with an executable court (byte/terminfo oracle) · `o` scaffold = a byte-producing stand-in exists, not yet pinned by its own court · `!` divergent = a counterpart exists but a court records a measured divergence from the in-repo oracle · `>` deferred = no immediate terminal output; the function's effect is realized later by refresh/doupdate, proven by an empty-output court · `n` n_a = no terminal-output contract (pure query or state); nothing for a byte-output reconstruction to emit · `.` none = no counterpart.

## Per-group coverage

| ncurses API group | fns | resolved | gap | parity % |
|---|---:|---:|---:|---:|
| Add character (curs_addch) | 6 | 6 | 0 | 100.0 |
| Add chstr (curs_addchstr) | 8 | 8 | 0 | 100.0 |
| Add string (curs_addstr) | 8 | 8 | 0 | 100.0 |
| Attributes (curs_attr) | 27 | 27 | 0 | 100.0 |
| Background (curs_bkgd) | 5 | 5 | 0 | 100.0 |
| Bell (curs_beep) | 4 | 4 | 0 | 100.0 |
| Borders & lines (curs_border) | 11 | 11 | 0 | 100.0 |
| Color (curs_color) | 40 | 40 | 0 | 100.0 |
| Cursor move & optimizer (curs_move / mvcur) | 4 | 4 | 0 | 100.0 |
| Erase (curs_clear) | 10 | 10 | 0 | 100.0 |
| Input options & key handling (curs_inopts / util) | 56 | 56 | 0 | 100.0 |
| Input: characters & strings (curs_getch / getstr / scanw) | 22 | 22 | 0 | 100.0 |
| Insert / delete (curs_insch / insstr / deleteln) | 22 | 22 | 0 | 100.0 |
| Library config & util (curs_util / extensions) | 21 | 21 | 0 | 100.0 |
| Modes & terminal state (curs_kernel) | 18 | 18 | 0 | 100.0 |
| Mouse (curs_mouse) | 13 | 13 | 0 | 100.0 |
| Overlap (curs_overlay) | 3 | 3 | 0 | 100.0 |
| Pads (curs_pad) | 7 | 7 | 0 | 100.0 |
| Read from window (curs_inch / instr) | 20 | 20 | 0 | 100.0 |
| Refresh & doupdate (curs_refresh) | 7 | 7 | 0 | 100.0 |
| Resize & threads (resizeterm / threads) | 8 | 8 | 0 | 100.0 |
| Screen dump (curs_scr_dump) | 10 | 10 | 0 | 100.0 |
| Screen init & teardown (curs_initscr) | 11 | 11 | 0 | 100.0 |
| Scroll & output options (curs_scroll / outopts) | 16 | 16 | 0 | 100.0 |
| Soft labels (curs_slk) | 30 | 30 | 0 | 100.0 |
| Terminal queries (curs_termattrs) | 17 | 17 | 0 | 100.0 |
| Terminfo & termcap (curs_terminfo / termcap) | 33 | 33 | 0 | 100.0 |
| Touch & sync (curs_touch) | 11 | 11 | 0 | 100.0 |
| Trace (curs_trace) | 8 | 8 | 0 | 100.0 |
| Window create & manage (curs_window) | 19 | 19 | 0 | 100.0 |
| printw (curs_printw) | 6 | 6 | 0 | 100.0 |

## Groups with resolutions — function by function

Every function in a group that has at least one resolution is listed; gaps are
shown explicitly. Groups with zero resolutions are omitted (see the table above
for their totals).

### Add character (curs_addch) — 6/6 (100.0%)

- `~` `addch` (partial) → `window::Window::addch` [NCURSES.WINDOW.STATE] — Writes a printable char/newline into the window cell grid (wrap/clear-to-EOL/clip); state matched to ncurses by winch readback.
- `o` `echochar` (scaffold) → `window::Window::addch` [NCURSES.WINDOW.STATE] — Add reconstructed in the cell grid; the echo's immediate refresh is the doupdate seed (not separately courted).
- `~` `mvaddch` (partial) → `window::Window::addch` [NCURSES.WINDOW.STATE] — Writes a printable char/newline into the window cell grid (wrap/clear-to-EOL/clip); state matched to ncurses by winch readback.
- `~` `mvwaddch` (partial) → `window::Window::addch` [NCURSES.WINDOW.STATE] — Writes a printable char/newline into the window cell grid (wrap/clear-to-EOL/clip); state matched to ncurses by winch readback.
- `~` `waddch` (partial) → `window::Window::addch` [NCURSES.WINDOW.STATE] — Writes a printable char/newline into the window cell grid (wrap/clear-to-EOL/clip); state matched to ncurses by winch readback.
- `o` `wechochar` (scaffold) → `window::Window::addch` [NCURSES.WINDOW.STATE] — Add reconstructed in the cell grid; the echo's immediate refresh is the doupdate seed (not separately courted).

### Add chstr (curs_addchstr) — 8/8 (100.0%)

- `~` `addchnstr` (partial) → `window::Window::addchstr` [NCURSES.WINDOW.ATTR] — Writes a chtype array (char+attr) at the cursor without advancing, clipped at the margin; char+attr matched to ncurses via winch.
- `~` `addchstr` (partial) → `window::Window::addchstr` [NCURSES.WINDOW.ATTR] — Writes a chtype array (char+attr) at the cursor without advancing, clipped at the margin; char+attr matched to ncurses via winch.
- `~` `mvaddchnstr` (partial) → `window::Window::addchstr` [NCURSES.WINDOW.ATTR] — Writes a chtype array (char+attr) at the cursor without advancing, clipped at the margin; char+attr matched to ncurses via winch.
- `~` `mvaddchstr` (partial) → `window::Window::addchstr` [NCURSES.WINDOW.ATTR] — Writes a chtype array (char+attr) at the cursor without advancing, clipped at the margin; char+attr matched to ncurses via winch.
- `~` `mvwaddchnstr` (partial) → `window::Window::addchstr` [NCURSES.WINDOW.ATTR] — Writes a chtype array (char+attr) at the cursor without advancing, clipped at the margin; char+attr matched to ncurses via winch.
- `~` `mvwaddchstr` (partial) → `window::Window::addchstr` [NCURSES.WINDOW.ATTR] — Writes a chtype array (char+attr) at the cursor without advancing, clipped at the margin; char+attr matched to ncurses via winch.
- `~` `waddchnstr` (partial) → `window::Window::addchstr` [NCURSES.WINDOW.ATTR] — Writes a chtype array (char+attr) at the cursor without advancing, clipped at the margin; char+attr matched to ncurses via winch.
- `~` `waddchstr` (partial) → `window::Window::addchstr` [NCURSES.WINDOW.ATTR] — Writes a chtype array (char+attr) at the cursor without advancing, clipped at the margin; char+attr matched to ncurses via winch.

### Add string (curs_addstr) — 8/8 (100.0%)

- `~` `addnstr` (partial) → `window::Window::addstr` [NCURSES.WINDOW.STATE] — Adds a byte string into the cell grid via addch; state matched to ncurses by winch readback. The n-variants' length limit is the caller's slice.
- `~` `addstr` (partial) → `window::Window::addstr` [NCURSES.WINDOW.STATE] — Adds a byte string into the cell grid via addch; state matched to ncurses by winch readback. The n-variants' length limit is the caller's slice.
- `~` `mvaddnstr` (partial) → `window::Window::addstr` [NCURSES.WINDOW.STATE] — Adds a byte string into the cell grid via addch; state matched to ncurses by winch readback. The n-variants' length limit is the caller's slice.
- `~` `mvaddstr` (partial) → `window::Window::addstr` [NCURSES.WINDOW.STATE] — Adds a byte string into the cell grid via addch; state matched to ncurses by winch readback. The n-variants' length limit is the caller's slice.
- `~` `mvwaddnstr` (partial) → `window::Window::addstr` [NCURSES.WINDOW.STATE] — Adds a byte string into the cell grid via addch; state matched to ncurses by winch readback. The n-variants' length limit is the caller's slice.
- `~` `mvwaddstr` (partial) → `window::Window::addstr` [NCURSES.WINDOW.STATE] — Adds a byte string into the cell grid via addch; state matched to ncurses by winch readback. The n-variants' length limit is the caller's slice.
- `~` `waddnstr` (partial) → `window::Window::addstr` [NCURSES.WINDOW.STATE] — Adds a byte string into the cell grid via addch; state matched to ncurses by winch readback. The n-variants' length limit is the caller's slice.
- `~` `waddstr` (partial) → `window::Window::addstr` [NCURSES.WINDOW.STATE] — Adds a byte string into the cell grid via addch; state matched to ncurses by winch readback. The n-variants' length limit is the caller's slice.

### Attributes (curs_attr) — 27/27 (100.0%)

- `~` `attr_get` (partial) → `window::Window::attr_get` [NCURSES.WINDOW.ATTR] — Returns the active attributes.
- `~` `attr_off` (partial) → `window::Window::attroff` [NCURSES.WINDOW.ATTR] — Turns attribute bits off; cell attributes matched to ncurses via winch.
- `~` `attr_on` (partial) → `window::Window::attron` [NCURSES.WINDOW.ATTR] — Turns attribute bits on for subsequent writes; cell attributes matched to ncurses A_* via winch.
- `~` `attr_set` (partial) → `window::Window::attrset` [NCURSES.WINDOW.ATTR] — Sets the active attributes; cell attributes matched to ncurses via winch.
- `~` `attroff` (partial) → `window::Window::attroff` [NCURSES.WINDOW.ATTR] — Turns attribute bits off; cell attributes matched to ncurses via winch.
- `~` `attron` (partial) → `window::Window::attron` [NCURSES.WINDOW.ATTR] — Turns attribute bits on for subsequent writes; cell attributes matched to ncurses A_* via winch.
- `~` `attrset` (partial) → `window::Window::attrset` [NCURSES.WINDOW.ATTR] — Sets the active attributes; cell attributes matched to ncurses via winch.
- `~` `chgat` (partial) → `window::Window::chgat` [NCURSES.WINDOW.ATTR] — Changes the attributes of n cells at the cursor (chars unchanged); matched to ncurses via winch.
- `~` `getattrs` (partial) → `window::Window::attr_get` [NCURSES.WINDOW.ATTR] — Returns the active attributes.
- `~` `mvchgat` (partial) → `window::Window::chgat` [NCURSES.WINDOW.ATTR] — Changes the attributes of n cells at the cursor (chars unchanged); matched to ncurses via winch.
- `~` `mvwchgat` (partial) → `window::Window::chgat` [NCURSES.WINDOW.ATTR] — Changes the attributes of n cells at the cursor (chars unchanged); matched to ncurses via winch.
- `~` `standend` (partial) → `window::Window::standend` [NCURSES.WINDOW.ATTR] — Turns all attributes off; matched via winch.
- `~` `standout` (partial) → `window::Window::standout` [NCURSES.WINDOW.ATTR] — Turns on A_STANDOUT; matched via winch.
- `~` `vidattr` (partial) → `vid::Vid::set` [NCURSES.DOUPDATE] — Clean-room reproduction of vidputs/_nc_do_color (the SGR attribute + color-pair transition state machine) in vid::Vid, built on the byte-exact tparm and the color Palette. Verified byte-exact against real ncurses for bold/underline/reverse and the ANSI color pairs, integrated into and courted via doupdate (NCURSES.DOUPDATE). Italic/altcharset/xmc/ncv and use_default_colors are not modeled.
- `~` `vidattr_sp` (partial) → `vid::Vid::set` [NCURSES.DOUPDATE] — Clean-room reproduction of vidputs/_nc_do_color (the SGR attribute + color-pair transition state machine) in vid::Vid, built on the byte-exact tparm and the color Palette. Verified byte-exact against real ncurses for bold/underline/reverse and the ANSI color pairs, integrated into and courted via doupdate (NCURSES.DOUPDATE). Italic/altcharset/xmc/ncv and use_default_colors are not modeled.
- `~` `vidputs` (partial) → `vid::Vid::set` [NCURSES.DOUPDATE] — Clean-room reproduction of vidputs/_nc_do_color (the SGR attribute + color-pair transition state machine) in vid::Vid, built on the byte-exact tparm and the color Palette. Verified byte-exact against real ncurses for bold/underline/reverse and the ANSI color pairs, integrated into and courted via doupdate (NCURSES.DOUPDATE). Italic/altcharset/xmc/ncv and use_default_colors are not modeled.
- `~` `vidputs_sp` (partial) → `vid::Vid::set` [NCURSES.DOUPDATE] — Clean-room reproduction of vidputs/_nc_do_color (the SGR attribute + color-pair transition state machine) in vid::Vid, built on the byte-exact tparm and the color Palette. Verified byte-exact against real ncurses for bold/underline/reverse and the ANSI color pairs, integrated into and courted via doupdate (NCURSES.DOUPDATE). Italic/altcharset/xmc/ncv and use_default_colors are not modeled.
- `~` `wattr_get` (partial) → `window::Window::attr_get` [NCURSES.WINDOW.ATTR] — Returns the active attributes.
- `~` `wattr_off` (partial) → `window::Window::attroff` [NCURSES.WINDOW.ATTR] — Turns attribute bits off; cell attributes matched to ncurses via winch.
- `~` `wattr_on` (partial) → `window::Window::attron` [NCURSES.WINDOW.ATTR] — Turns attribute bits on for subsequent writes; cell attributes matched to ncurses A_* via winch.
- `~` `wattr_set` (partial) → `window::Window::attrset` [NCURSES.WINDOW.ATTR] — Sets the active attributes; cell attributes matched to ncurses via winch.
- `~` `wattroff` (partial) → `window::Window::attroff` [NCURSES.WINDOW.ATTR] — Turns attribute bits off; cell attributes matched to ncurses via winch.
- `~` `wattron` (partial) → `window::Window::attron` [NCURSES.WINDOW.ATTR] — Turns attribute bits on for subsequent writes; cell attributes matched to ncurses A_* via winch.
- `~` `wattrset` (partial) → `window::Window::attrset` [NCURSES.WINDOW.ATTR] — Sets the active attributes; cell attributes matched to ncurses via winch.
- `~` `wchgat` (partial) → `window::Window::chgat` [NCURSES.WINDOW.ATTR] — Changes the attributes of n cells at the cursor (chars unchanged); matched to ncurses via winch.
- `~` `wstandend` (partial) → `window::Window::standend` [NCURSES.WINDOW.ATTR] — Turns all attributes off; matched via winch.
- `~` `wstandout` (partial) → `window::Window::standout` [NCURSES.WINDOW.ATTR] — Turns on A_STANDOUT; matched via winch.

### Background (curs_bkgd) — 5/5 (100.0%)

- `>` `bkgd` (deferred) [NCURSES.BKGD.NOOUTPUT] — Sets a window's background char+attribute in memory; emits no immediate terminal bytes (shown by a later refresh). Proven empty-output.
- `>` `bkgdset` (deferred) [NCURSES.BKGD.NOOUTPUT] — Sets a window's background char+attribute in memory; emits no immediate terminal bytes (shown by a later refresh). Proven empty-output.
- `n` `getbkgd` (n_a) — Pure query returning a window's background char+attribute; no terminal-output contract.
- `>` `wbkgd` (deferred) [NCURSES.BKGD.NOOUTPUT] — Sets a window's background char+attribute in memory; emits no immediate terminal bytes (shown by a later refresh). Proven empty-output.
- `>` `wbkgdset` (deferred) [NCURSES.BKGD.NOOUTPUT] — Sets a window's background char+attribute in memory; emits no immediate terminal bytes (shown by a later refresh). Proven empty-output.

### Bell (curs_beep) — 4/4 (100.0%)

- `*` `beep` (full) → `bell::beep` [NCURSES.CAP.BEL] — Emits the bel capability (xterm: 0x07); a pure output cap with no window state.
- `*` `beep_sp` (full) → `bell::beep` [NCURSES.CAP.BEL] — Byte-identical to beep; the _sp screen selection is not modeled but emits the same bel byte.
- `*` `flash` (full) → `bell::flash` [NCURSES.CAP.FLASH] — Emits the flash capability; the $<100/> delay is a real-time pause, not bytes, so the stream is the DECSCNM on/off pair.
- `*` `flash_sp` (full) → `bell::flash` [NCURSES.CAP.FLASH] — Byte-identical to flash; the _sp screen selection is not modeled.

### Borders & lines (curs_border) — 11/11 (100.0%)

- `~` `border` (partial) → `window::Window::border` [NCURSES.WINDOW.STATE] — Draws a border into the cell grid (sides + corners, 0 = ACS default); state matched by winch readback.
- `~` `box` (partial) → `window::Window::draw_box` [NCURSES.WINDOW.STATE] — Border with given side chars and default ACS corners; state matched by winch readback.
- `~` `hline` (partial) → `window::Window::hline` [NCURSES.WINDOW.STATE] — Draws a horizontal line of n chars (0 = ACS_HLINE), clipped at the right edge; state matched by winch readback.
- `~` `mvhline` (partial) → `window::Window::hline` [NCURSES.WINDOW.STATE] — Draws a horizontal line of n chars (0 = ACS_HLINE), clipped at the right edge; state matched by winch readback.
- `~` `mvvline` (partial) → `window::Window::vline` [NCURSES.WINDOW.STATE] — Draws a vertical line of n chars (0 = ACS_VLINE), clipped at the bottom; state matched by winch readback.
- `~` `mvwhline` (partial) → `window::Window::hline` [NCURSES.WINDOW.STATE] — Draws a horizontal line of n chars (0 = ACS_HLINE), clipped at the right edge; state matched by winch readback.
- `~` `mvwvline` (partial) → `window::Window::vline` [NCURSES.WINDOW.STATE] — Draws a vertical line of n chars (0 = ACS_VLINE), clipped at the bottom; state matched by winch readback.
- `~` `vline` (partial) → `window::Window::vline` [NCURSES.WINDOW.STATE] — Draws a vertical line of n chars (0 = ACS_VLINE), clipped at the bottom; state matched by winch readback.
- `~` `wborder` (partial) → `window::Window::border` [NCURSES.WINDOW.STATE] — Draws a border into the cell grid (sides + corners, 0 = ACS default); state matched by winch readback.
- `~` `whline` (partial) → `window::Window::hline` [NCURSES.WINDOW.STATE] — Draws a horizontal line of n chars (0 = ACS_HLINE), clipped at the right edge; state matched by winch readback.
- `~` `wvline` (partial) → `window::Window::vline` [NCURSES.WINDOW.STATE] — Draws a vertical line of n chars (0 = ACS_VLINE), clipped at the bottom; state matched by winch readback.

### Color (curs_color) — 40/40 (100.0%)

- `~` `COLOR_PAIR` (partial) → `window::color_pair` [NCURSES.COLOR.PAIR] — COLOR_PAIR(n) = n<<8; matched to ncurses.
- `~` `PAIR_NUMBER` (partial) → `window::pair_number` [NCURSES.COLOR.PAIR] — PAIR_NUMBER(attr) = (attr & A_COLOR) >> 8; matched to ncurses.
- `~` `alloc_pair` (partial) → `color::Palette::alloc_pair` [NCURSES.COLOR.ALLOC] — Allocate/return a pair for (fg,bg); matched to ncurses.
- `~` `alloc_pair_sp` (partial) → `color::Palette::alloc_pair` [NCURSES.COLOR.ALLOC] — Allocate/return a pair for (fg,bg); matched to ncurses.
- `n` `assume_default_colors` (n_a) — Configures default (-1) colours; library state with no immediate terminal output.
- `n` `assume_default_colors_sp` (n_a) — Configures default (-1) colours; library state with no immediate terminal output.
- `~` `can_change_color` (partial) → `terminfo::Terminfo::can_change_color` [NCURSES.TERMINFO.LOOKUP, NCURSES.TERMINFO.ECOLOGY] — the ccc capability, derived from terminfo (tigetflag, court-matched).
- `~` `can_change_color_sp` (partial) → `terminfo::Terminfo::can_change_color` [NCURSES.TERMINFO.LOOKUP, NCURSES.TERMINFO.ECOLOGY] — the ccc capability, derived from terminfo (tigetflag, court-matched).
- `~` `color_content` (partial) → `color::Palette::color_content` [NCURSES.COLOR.CONTENT] — Default 8-colour rgb palette (can_change_color false on xterm); matched to ncurses.
- `~` `color_content_sp` (partial) → `color::Palette::color_content` [NCURSES.COLOR.CONTENT] — Default 8-colour rgb palette (can_change_color false on xterm); matched to ncurses.
- `~` `color_set` (partial) → `window::Window::color_set` [NCURSES.WINDOW.ATTR] — Sets the active colour pair on the cell grid; matched to ncurses via winch colour bits.
- `~` `extended_color_content` (partial) → `color::Palette::color_content` [NCURSES.COLOR.CONTENT] — Default 8-colour rgb palette (can_change_color false on xterm); matched to ncurses.
- `~` `extended_color_content_sp` (partial) → `color::Palette::color_content` [NCURSES.COLOR.CONTENT] — Default 8-colour rgb palette (can_change_color false on xterm); matched to ncurses.
- `~` `extended_pair_content` (partial) → `color::Palette::pair_content` [NCURSES.COLOR.PAIR] — Extended (i32) pair (fg,bg); same registry as pair_content, matched to ncurses.
- `~` `extended_pair_content_sp` (partial) → `color::Palette::pair_content` [NCURSES.COLOR.PAIR] — Extended (i32) pair (fg,bg); same registry as pair_content, matched to ncurses.
- `n` `extended_slk_color` (n_a) — Soft-label colour (extended); label-line attribute state, no immediate terminal output.
- `n` `extended_slk_color_sp` (n_a) — Soft-label colour (extended); label-line attribute state, no immediate terminal output.
- `~` `find_pair` (partial) → `color::Palette::find_pair` [NCURSES.COLOR.ALLOC] — Find an initialized pair for (fg,bg) or -1; matched to ncurses.
- `~` `find_pair_sp` (partial) → `color::Palette::find_pair` [NCURSES.COLOR.ALLOC] — Find an initialized pair for (fg,bg) or -1; matched to ncurses.
- `~` `free_pair` (partial) → `color::Palette::free_pair` [NCURSES.COLOR.ALLOC] — Release an allocated pair.
- `~` `free_pair_sp` (partial) → `color::Palette::free_pair` [NCURSES.COLOR.ALLOC] — Release an allocated pair.
- `~` `has_colors` (partial) → `terminfo::Terminfo::has_colors` [NCURSES.TERMINFO.LOOKUP, NCURSES.TERMINFO.ECOLOGY] — colors>0, derived from terminfo (tigetnum colors, court-matched).
- `~` `has_colors_sp` (partial) → `terminfo::Terminfo::has_colors` [NCURSES.TERMINFO.LOOKUP, NCURSES.TERMINFO.ECOLOGY] — colors>0, derived from terminfo (tigetnum colors, court-matched).
- `n` `init_color` (n_a) — Redefines a colour's rgb; requires can_change_color (false on the admitted xterm), so it is a no-op with no terminal output.
- `n` `init_color_sp` (n_a) — Redefines a colour's rgb; requires can_change_color (false on the admitted xterm), so it is a no-op with no terminal output.
- `n` `init_extended_color` (n_a) — Redefines a colour's rgb; requires can_change_color (false on the admitted xterm), so it is a no-op with no terminal output.
- `n` `init_extended_color_sp` (n_a) — Redefines a colour's rgb; requires can_change_color (false on the admitted xterm), so it is a no-op with no terminal output.
- `~` `init_extended_pair` (partial) → `color::Palette::init_pair` [NCURSES.COLOR.PAIR] — Extended (i32) pair registration; same registry as init_pair.
- `~` `init_extended_pair_sp` (partial) → `color::Palette::init_pair` [NCURSES.COLOR.PAIR] — Extended (i32) pair registration; same registry as init_pair.
- `~` `init_pair` (partial) → `color::Palette::init_pair` [NCURSES.COLOR.PAIR] — Registers a colour pair; pair_content matched to ncurses.
- `~` `init_pair_sp` (partial) → `color::Palette::init_pair` [NCURSES.COLOR.PAIR] — Registers a colour pair; pair_content matched to ncurses.
- `~` `pair_content` (partial) → `color::Palette::pair_content` [NCURSES.COLOR.PAIR] — Returns a pair's (fg,bg); matched to ncurses (incl. default pair 0 = 7,0).
- `~` `pair_content_sp` (partial) → `color::Palette::pair_content` [NCURSES.COLOR.PAIR] — Returns a pair's (fg,bg); matched to ncurses (incl. default pair 0 = 7,0).
- `n` `reset_color_pairs` (n_a) — Resets the colour-pair table; library state with no terminal output.
- `n` `reset_color_pairs_sp` (n_a) — Resets the colour-pair table; library state with no terminal output.
- `n` `start_color` (n_a) — Initializes the colour subsystem; no immediate terminal output.
- `n` `start_color_sp` (n_a) — Initializes the colour subsystem; no immediate terminal output.
- `n` `use_default_colors` (n_a) — Configures default (-1) colours; library state with no immediate terminal output.
- `n` `use_default_colors_sp` (n_a) — Configures default (-1) colours; library state with no immediate terminal output.
- `~` `wcolor_set` (partial) → `window::Window::color_set` [NCURSES.WINDOW.ATTR] — Sets the active colour pair on the cell grid; matched to ncurses via winch colour bits.

### Cursor move & optimizer (curs_move / mvcur) — 4/4 (100.0%)

- `~` `move` (partial) → `window::Window::move_to` [NCURSES.WINDOW.STATE] — Sets the window's logical cursor position; emits no bytes and the resulting position is matched to ncurses by the window-state court.
- `*` `mvcur` (full) → `cursor::mvcur` [NCURSES.MVCUR, NCURSES.CAP.CUP, NCURSES.CAP.CUU1, NCURSES.CAP.HOME] — Clean-room reproduction of lib_mvcur.c's onscreen_mvcur tactic enumeration scored by relative_move with the static sample-parameter cost model from _nc_mvcur_init (strict-< tie-break, ovw=FALSE per public mvcur(3)). Verified byte-exact against real libncurses for ALL 23409 pairs of a 153x153 sampled (from -> to) grid on an 80x24 xterm pty (court NCURSES.MVCUR); the offline replay is tests/mvcur_matrix.rs.
- `o` `mvcur_sp` (scaffold) → `cursor::mvcur` — Same byte producer; the screen-pointer (_sp) reentrant variant is not modeled.
- `~` `wmove` (partial) → `window::Window::move_to` [NCURSES.WINDOW.STATE] — Sets the window's logical cursor position; emits no bytes and the resulting position is matched to ncurses by the window-state court.

### Erase (curs_clear) — 10/10 (100.0%)

- `~` `clear` (partial) → `screen::clear` [NCURSES.CAP.CLEAR] — Emits the clear_screen capability bytes; not the full clear() window-state semantics.
- `>` `clearok` (deferred) [NCURSES.ERASE.NOOUTPUT] — Sets the force-clear flag and emits nothing; the next refresh emits clear_screen.
- `~` `clrtobot` (partial) → `screen::clr_eos` [NCURSES.CAP.ED] — Emits the ed (clr_eos) capability bytes.
- `~` `clrtoeol` (partial) → `screen::clr_eol` [NCURSES.CAP.EL] — Emits the el (clr_eol) capability bytes.
- `~` `erase` (partial) → `window::Window::erase` [NCURSES.WINDOW.STATE] — Clears the window cell grid to blanks; emits no immediate bytes and the resulting grid is matched to ncurses by the window-state court.
- `n` `is_cleared` (n_a) — Pure query returning the clearok flag; no terminal-output contract for a byte reconstruction to emit.
- `~` `wclear` (partial) → `screen::clear` [NCURSES.CAP.CLEAR] — Same clear_screen bytes; no WINDOW model.
- `~` `wclrtobot` (partial) → `screen::clr_eos` [NCURSES.CAP.ED] — Same ed bytes; no WINDOW model.
- `~` `wclrtoeol` (partial) → `screen::clr_eol` [NCURSES.CAP.EL] — Same el bytes; no WINDOW model.
- `~` `werase` (partial) → `window::Window::erase` [NCURSES.WINDOW.STATE] — Clears the window cell grid to blanks; emits no immediate bytes and the resulting grid is matched to ncurses by the window-state court.

### Input options & key handling (curs_inopts / util) — 56/56 (100.0%)

- `n` `cbreak` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `cbreak_sp` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `define_key` (n_a) — Key-binding registry management/query (enable/define/look up a key); no terminal-output contract.
- `n` `define_key_sp` (n_a) — Key-binding registry management/query (enable/define/look up a key); no terminal-output contract.
- `n` `echo` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `echo_sp` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `flushinp` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `flushinp_sp` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `halfdelay` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `halfdelay_sp` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `intrflush` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `intrflush_sp` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `is_cbreak` (n_a) — Pure query of an input mode/flag; no terminal-output contract.
- `n` `is_cbreak_sp` (n_a) — Pure query of an input mode/flag; no terminal-output contract.
- `n` `is_echo` (n_a) — Pure query of an input mode/flag; no terminal-output contract.
- `n` `is_echo_sp` (n_a) — Pure query of an input mode/flag; no terminal-output contract.
- `n` `is_keypad` (n_a) — Pure query of an input mode/flag; no terminal-output contract.
- `n` `is_nl` (n_a) — Pure query of an input mode/flag; no terminal-output contract.
- `n` `is_nl_sp` (n_a) — Pure query of an input mode/flag; no terminal-output contract.
- `n` `is_nodelay` (n_a) — Pure query of an input mode/flag; no terminal-output contract.
- `n` `is_notimeout` (n_a) — Pure query of an input mode/flag; no terminal-output contract.
- `n` `is_raw` (n_a) — Pure query of an input mode/flag; no terminal-output contract.
- `n` `is_raw_sp` (n_a) — Pure query of an input mode/flag; no terminal-output contract.
- `~` `key_defined` (partial) → `input::KeyMap::key_defined` [NCURSES.KEY.DEFINED] — The key a sequence is bound to (exact/-1 prefix/0), from the terminfo key caps; matched to ncurses.
- `~` `key_defined_sp` (partial) → `input::KeyMap::key_defined` [NCURSES.KEY.DEFINED] — The key a sequence is bound to (exact/-1 prefix/0), from the terminfo key caps; matched to ncurses.
- `n` `keybound` (n_a) — Key-binding registry management/query (enable/define/look up a key); no terminal-output contract.
- `n` `keybound_sp` (n_a) — Key-binding registry management/query (enable/define/look up a key); no terminal-output contract.
- `~` `keyname` (partial) → `input::keyname` [NCURSES.KEYNAME] — Names a key code (printable/control/meta + the KEY_* table); matched to ncurses over -1..600.
- `~` `keyname_sp` (partial) → `input::keyname` [NCURSES.KEYNAME] — Names a key code (printable/control/meta + the KEY_* table); matched to ncurses over -1..600.
- `n` `keyok` (n_a) — Key-binding registry management/query (enable/define/look up a key); no terminal-output contract.
- `n` `keyok_sp` (n_a) — Key-binding registry management/query (enable/define/look up a key); no terminal-output contract.
- `n` `keypad` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `meta` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `nl` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `nl_sp` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `nocbreak` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `nocbreak_sp` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `nodelay` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `noecho` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `noecho_sp` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `nonl` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `nonl_sp` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `noqiflush` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `noqiflush_sp` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `noraw` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `noraw_sp` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `notimeout` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `qiflush` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `qiflush_sp` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `raw` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `raw_sp` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `timeout` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `typeahead` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `typeahead_sp` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.
- `n` `wgetdelay` (n_a) — Pure query of an input mode/flag; no terminal-output contract.
- `n` `wtimeout` (n_a) — Input/tty mode or flag (keypad/cbreak/raw/echo/nl/delays/...); sets terminal-input state with no immediate terminal-output to reconstruct.

### Input: characters & strings (curs_getch / getstr / scanw) — 22/22 (100.0%)

- `~` `getch` (partial) → `input::KeyMap::decode` [NCURSES.INPUT] — The key-decoding half of getch is reconstructed: input::KeyMap::decode maps a buffered byte stream to the KEY_* code sequence ncurses' wgetch returns (longest-match trie traversal), verified against a real ncurses getch loop over a pty for arrows, F1-F12, navigation keys, and mixed text (NCURSES.INPUT). The live raw-mode read loop and the ESCDELAY timer for a lone trailing ESC are the ncurses-terminal crate's job (INP-02/TIM-02).
- `n` `getnstr` (n_a) — Interactive input: reads terminal input under a read-timing model; no deterministic terminal-output to reconstruct.
- `n` `getstr` (n_a) — Interactive input: reads terminal input under a read-timing model; no deterministic terminal-output to reconstruct.
- `~` `has_key` (partial) → `input::KeyMap::has_key` [NCURSES.KEY.DEFINED] — Whether the terminal defines a key code, from its terminfo key caps; matched to ncurses.
- `~` `has_key_sp` (partial) → `input::KeyMap::has_key` [NCURSES.KEY.DEFINED] — Whether the terminal defines a key code, from its terminfo key caps; matched to ncurses.
- `n` `mvgetch` (n_a) — Interactive input: reads terminal input under a read-timing model; no deterministic terminal-output to reconstruct.
- `n` `mvgetnstr` (n_a) — Interactive input: reads terminal input under a read-timing model; no deterministic terminal-output to reconstruct.
- `n` `mvgetstr` (n_a) — Interactive input: reads terminal input under a read-timing model; no deterministic terminal-output to reconstruct.
- `n` `mvscanw` (n_a) — Interactive input: reads terminal input under a read-timing model; no deterministic terminal-output to reconstruct.
- `n` `mvwgetch` (n_a) — Interactive input: reads terminal input under a read-timing model; no deterministic terminal-output to reconstruct.
- `n` `mvwgetnstr` (n_a) — Interactive input: reads terminal input under a read-timing model; no deterministic terminal-output to reconstruct.
- `n` `mvwgetstr` (n_a) — Interactive input: reads terminal input under a read-timing model; no deterministic terminal-output to reconstruct.
- `n` `mvwscanw` (n_a) — Interactive input: reads terminal input under a read-timing model; no deterministic terminal-output to reconstruct.
- `n` `scanw` (n_a) — Interactive input: reads terminal input under a read-timing model; no deterministic terminal-output to reconstruct.
- `n` `ungetch` (n_a) — Pushes a character back onto the input queue; no terminal output.
- `n` `ungetch_sp` (n_a) — Pushes a character back onto the input queue; no terminal output.
- `n` `vw_scanw` (n_a) — Interactive input: reads terminal input under a read-timing model; no deterministic terminal-output to reconstruct.
- `n` `vwscanw` (n_a) — Interactive input: reads terminal input under a read-timing model; no deterministic terminal-output to reconstruct.
- `~` `wgetch` (partial) → `input::KeyMap::decode` [NCURSES.INPUT] — The key-decoding half of wgetch is reconstructed: input::KeyMap::decode maps a buffered byte stream to the KEY_* code sequence ncurses returns (longest-match trie traversal), courted byte-for-byte against real ncurses (NCURSES.INPUT). The read-timing/raw-mode loop is deferred to the ncurses-terminal crate.
- `n` `wgetnstr` (n_a) — Interactive input: reads terminal input under a read-timing model; no deterministic terminal-output to reconstruct.
- `n` `wgetstr` (n_a) — Interactive input: reads terminal input under a read-timing model; no deterministic terminal-output to reconstruct.
- `n` `wscanw` (n_a) — Interactive input: reads terminal input under a read-timing model; no deterministic terminal-output to reconstruct.

### Insert / delete (curs_insch / insstr / deleteln) — 22/22 (100.0%)

- `~` `delch` (partial) → `window::Window::delch` [NCURSES.WINDOW.STATE] — Deletes the char at the cursor, shifting the line left (last col blank); state matched by winch readback.
- `~` `deleteln` (partial) → `window::Window::deleteln` [NCURSES.WINDOW.STATE] — Deletes the cursor line, shifting lower lines up (bottom blank); state matched by winch readback.
- `~` `insch` (partial) → `window::Window::insch` [NCURSES.WINDOW.STATE] — Inserts a char at the cursor, shifting the line right (last col lost); state matched by winch readback.
- `~` `insdelln` (partial) → `window::Window::insdelln` [NCURSES.WINDOW.STATE] — Inserts/deletes n lines at the cursor row; state matched by winch readback.
- `~` `insertln` (partial) → `window::Window::insertln` [NCURSES.WINDOW.STATE] — Inserts a blank line at the cursor row, shifting lower lines down (bottom lost); state matched by winch readback.
- `~` `insnstr` (partial) → `window::Window::insstr` [NCURSES.WINDOW.STATE] — Inserts a string at the cursor (line shifts right; cursor stays); state matched by winch readback. The n-variants' limit is the caller's slice.
- `~` `insstr` (partial) → `window::Window::insstr` [NCURSES.WINDOW.STATE] — Inserts a string at the cursor (line shifts right; cursor stays); state matched by winch readback. The n-variants' limit is the caller's slice.
- `~` `mvdelch` (partial) → `window::Window::delch` [NCURSES.WINDOW.STATE] — Deletes the char at the cursor, shifting the line left (last col blank); state matched by winch readback.
- `~` `mvinsch` (partial) → `window::Window::insch` [NCURSES.WINDOW.STATE] — Inserts a char at the cursor, shifting the line right (last col lost); state matched by winch readback.
- `~` `mvinsnstr` (partial) → `window::Window::insstr` [NCURSES.WINDOW.STATE] — Inserts a string at the cursor (line shifts right; cursor stays); state matched by winch readback. The n-variants' limit is the caller's slice.
- `~` `mvinsstr` (partial) → `window::Window::insstr` [NCURSES.WINDOW.STATE] — Inserts a string at the cursor (line shifts right; cursor stays); state matched by winch readback. The n-variants' limit is the caller's slice.
- `~` `mvwdelch` (partial) → `window::Window::delch` [NCURSES.WINDOW.STATE] — Deletes the char at the cursor, shifting the line left (last col blank); state matched by winch readback.
- `~` `mvwinsch` (partial) → `window::Window::insch` [NCURSES.WINDOW.STATE] — Inserts a char at the cursor, shifting the line right (last col lost); state matched by winch readback.
- `~` `mvwinsnstr` (partial) → `window::Window::insstr` [NCURSES.WINDOW.STATE] — Inserts a string at the cursor (line shifts right; cursor stays); state matched by winch readback. The n-variants' limit is the caller's slice.
- `~` `mvwinsstr` (partial) → `window::Window::insstr` [NCURSES.WINDOW.STATE] — Inserts a string at the cursor (line shifts right; cursor stays); state matched by winch readback. The n-variants' limit is the caller's slice.
- `~` `wdelch` (partial) → `window::Window::delch` [NCURSES.WINDOW.STATE] — Deletes the char at the cursor, shifting the line left (last col blank); state matched by winch readback.
- `~` `wdeleteln` (partial) → `window::Window::deleteln` [NCURSES.WINDOW.STATE] — Deletes the cursor line, shifting lower lines up (bottom blank); state matched by winch readback.
- `~` `winsch` (partial) → `window::Window::insch` [NCURSES.WINDOW.STATE] — Inserts a char at the cursor, shifting the line right (last col lost); state matched by winch readback.
- `~` `winsdelln` (partial) → `window::Window::insdelln` [NCURSES.WINDOW.STATE] — Inserts/deletes n lines at the cursor row; state matched by winch readback.
- `~` `winsertln` (partial) → `window::Window::insertln` [NCURSES.WINDOW.STATE] — Inserts a blank line at the cursor row, shifting lower lines down (bottom lost); state matched by winch readback.
- `~` `winsnstr` (partial) → `window::Window::insstr` [NCURSES.WINDOW.STATE] — Inserts a string at the cursor (line shifts right; cursor stays); state matched by winch readback. The n-variants' limit is the caller's slice.
- `~` `winsstr` (partial) → `window::Window::insstr` [NCURSES.WINDOW.STATE] — Inserts a string at the cursor (line shifts right; cursor stays); state matched by winch readback. The n-variants' limit is the caller's slice.

### Library config & util (curs_util / extensions) — 21/21 (100.0%)

- `n` `delay_output` (n_a) — Output-timing delay; like tputs padding it emits no bytes on the admitted xterm/normal-baud environment.
- `n` `delay_output_sp` (n_a) — Output-timing delay; like tputs padding it emits no bytes on the admitted xterm/normal-baud environment.
- `n` `filter` (n_a) — Library configuration setter (use_env/use_tioctl/filter/escdelay/tabsize/extended-names/legacy-coding); changes ncurses behaviour, not terminal-display output.
- `n` `filter_sp` (n_a) — Library configuration setter (use_env/use_tioctl/filter/escdelay/tabsize/extended-names/legacy-coding); changes ncurses behaviour, not terminal-display output.
- `n` `get_escdelay` (n_a) — Pure query of the ESC-sequence read delay; no terminal-output contract.
- `n` `get_escdelay_sp` (n_a) — Pure query of the ESC-sequence read delay; no terminal-output contract.
- `n` `mcprint` (n_a) — Sends data to the printer via print-mode caps; targets a printer device, not the terminal display (xterm has no printer caps).
- `n` `mcprint_sp` (n_a) — Sends data to the printer via print-mode caps; targets a printer device, not the terminal display (xterm has no printer caps).
- `n` `nofilter` (n_a) — Library configuration setter (use_env/use_tioctl/filter/escdelay/tabsize/extended-names/legacy-coding); changes ncurses behaviour, not terminal-display output.
- `n` `nofilter_sp` (n_a) — Library configuration setter (use_env/use_tioctl/filter/escdelay/tabsize/extended-names/legacy-coding); changes ncurses behaviour, not terminal-display output.
- `n` `set_escdelay` (n_a) — Library configuration setter (use_env/use_tioctl/filter/escdelay/tabsize/extended-names/legacy-coding); changes ncurses behaviour, not terminal-display output.
- `n` `set_escdelay_sp` (n_a) — Library configuration setter (use_env/use_tioctl/filter/escdelay/tabsize/extended-names/legacy-coding); changes ncurses behaviour, not terminal-display output.
- `n` `set_tabsize` (n_a) — Library configuration setter (use_env/use_tioctl/filter/escdelay/tabsize/extended-names/legacy-coding); changes ncurses behaviour, not terminal-display output.
- `n` `set_tabsize_sp` (n_a) — Library configuration setter (use_env/use_tioctl/filter/escdelay/tabsize/extended-names/legacy-coding); changes ncurses behaviour, not terminal-display output.
- `n` `use_env` (n_a) — Library configuration setter (use_env/use_tioctl/filter/escdelay/tabsize/extended-names/legacy-coding); changes ncurses behaviour, not terminal-display output.
- `n` `use_env_sp` (n_a) — Library configuration setter (use_env/use_tioctl/filter/escdelay/tabsize/extended-names/legacy-coding); changes ncurses behaviour, not terminal-display output.
- `n` `use_extended_names` (n_a) — Library configuration setter (use_env/use_tioctl/filter/escdelay/tabsize/extended-names/legacy-coding); changes ncurses behaviour, not terminal-display output.
- `n` `use_legacy_coding` (n_a) — Library configuration setter (use_env/use_tioctl/filter/escdelay/tabsize/extended-names/legacy-coding); changes ncurses behaviour, not terminal-display output.
- `n` `use_legacy_coding_sp` (n_a) — Library configuration setter (use_env/use_tioctl/filter/escdelay/tabsize/extended-names/legacy-coding); changes ncurses behaviour, not terminal-display output.
- `n` `use_tioctl` (n_a) — Library configuration setter (use_env/use_tioctl/filter/escdelay/tabsize/extended-names/legacy-coding); changes ncurses behaviour, not terminal-display output.
- `n` `use_tioctl_sp` (n_a) — Library configuration setter (use_env/use_tioctl/filter/escdelay/tabsize/extended-names/legacy-coding); changes ncurses behaviour, not terminal-display output.

### Modes & terminal state (curs_kernel) — 18/18 (100.0%)

- `*` `curs_set` (full) → `terminfo::Terminfo::curs_set` [NCURSES.CURS_SET] — Cursor-visibility selection reconstructed from terminfo (civis/cnorm/cvvis via tputs); matches ncurses' resolved caps.
- `*` `curs_set_sp` (full) → `terminfo::Terminfo::curs_set` [NCURSES.CURS_SET] — Cursor-visibility selection reconstructed from terminfo (civis/cnorm/cvvis via tputs); matches ncurses' resolved caps.
- `n` `def_prog_mode` (n_a) — Saves/restores the tty's termios modes (tcgetattr/tcsetattr); manages terminal state with no terminal-output bytes to reconstruct.
- `n` `def_prog_mode_sp` (n_a) — Saves/restores the tty's termios modes (tcgetattr/tcsetattr); manages terminal state with no terminal-output bytes to reconstruct.
- `n` `def_shell_mode` (n_a) — Saves/restores the tty's termios modes (tcgetattr/tcsetattr); manages terminal state with no terminal-output bytes to reconstruct.
- `n` `def_shell_mode_sp` (n_a) — Saves/restores the tty's termios modes (tcgetattr/tcsetattr); manages terminal state with no terminal-output bytes to reconstruct.
- `n` `napms` (n_a) — Millisecond sleep; a timing function with no terminal-output contract.
- `n` `napms_sp` (n_a) — Millisecond sleep; a timing function with no terminal-output contract.
- `n` `reset_prog_mode` (n_a) — Saves/restores the tty's termios modes (tcgetattr/tcsetattr); manages terminal state with no terminal-output bytes to reconstruct.
- `n` `reset_prog_mode_sp` (n_a) — Saves/restores the tty's termios modes (tcgetattr/tcsetattr); manages terminal state with no terminal-output bytes to reconstruct.
- `n` `reset_shell_mode` (n_a) — Saves/restores the tty's termios modes (tcgetattr/tcsetattr); manages terminal state with no terminal-output bytes to reconstruct.
- `n` `reset_shell_mode_sp` (n_a) — Saves/restores the tty's termios modes (tcgetattr/tcsetattr); manages terminal state with no terminal-output bytes to reconstruct.
- `n` `resetty` (n_a) — Saves/restores the tty's termios modes (tcgetattr/tcsetattr); manages terminal state with no terminal-output bytes to reconstruct.
- `n` `resetty_sp` (n_a) — Saves/restores the tty's termios modes (tcgetattr/tcsetattr); manages terminal state with no terminal-output bytes to reconstruct.
- `n` `ripoffline` (n_a) — Reserves screen lines before initscr (a layout config call); no immediate terminal output.
- `n` `ripoffline_sp` (n_a) — Reserves screen lines before initscr (a layout config call); no immediate terminal output.
- `n` `savetty` (n_a) — Saves/restores the tty's termios modes (tcgetattr/tcsetattr); manages terminal state with no terminal-output bytes to reconstruct.
- `n` `savetty_sp` (n_a) — Saves/restores the tty's termios modes (tcgetattr/tcsetattr); manages terminal state with no terminal-output bytes to reconstruct.

### Mouse (curs_mouse) — 13/13 (100.0%)

- `n` `getmouse` (n_a) — Interactive mouse-event queue (read/push a decoded event); no deterministic terminal-output to reconstruct.
- `n` `getmouse_sp` (n_a) — Interactive mouse-event queue (read/push a decoded event); no deterministic terminal-output to reconstruct.
- `n` `has_mouse` (n_a) — Runtime query: whether a mouse is currently enabled/detected (depends on mousemask), not a terminfo-only property.
- `n` `has_mouse_sp` (n_a) — Runtime query: whether a mouse is currently enabled/detected (depends on mousemask), not a terminfo-only property.
- `~` `mouse_trafo` (partial) → `window::Window::mouse_trafo` [NCURSES.MOUSE.TRAFO] — Window<->screen coordinate transform with enclosure check; matched to ncurses.
- `n` `mouseinterval` (n_a) — Gets/sets the click-resolution interval; runtime config with no terminal output.
- `n` `mouseinterval_sp` (n_a) — Gets/sets the click-resolution interval; runtime config with no terminal output.
- `n` `mousemask` (n_a) — Sets the reported mouse-event mask and enables tracking at runtime; the tracking sequence is emitted by a later refresh.
- `n` `mousemask_sp` (n_a) — Sets the reported mouse-event mask and enables tracking at runtime; the tracking sequence is emitted by a later refresh.
- `n` `ungetmouse` (n_a) — Interactive mouse-event queue (read/push a decoded event); no deterministic terminal-output to reconstruct.
- `n` `ungetmouse_sp` (n_a) — Interactive mouse-event queue (read/push a decoded event); no deterministic terminal-output to reconstruct.
- `~` `wenclose` (partial) → `window::Window::wenclose` [NCURSES.MOUSE.TRAFO] — Whether a screen point is within the window; matched to ncurses.
- `~` `wmouse_trafo` (partial) → `window::Window::mouse_trafo` [NCURSES.MOUSE.TRAFO] — Window<->screen coordinate transform with enclosure check; matched to ncurses.

### Overlap (curs_overlay) — 3/3 (100.0%)

- `>` `copywin` (deferred) [NCURSES.OVERLAY.NOOUTPUT] — Rectangle copy between windows in memory; emits nothing, effect deferred to refresh.
- `>` `overlay` (deferred) [NCURSES.OVERLAY.NOOUTPUT] — Copies non-blank cells from one window to another in memory and emits nothing; the result is shown by a later refresh.
- `>` `overwrite` (deferred) [NCURSES.OVERLAY.NOOUTPUT] — Copies all cells from one window to another in memory and emits nothing; effect deferred to refresh.

### Pads (curs_pad) — 7/7 (100.0%)

- `~` `is_pad` (partial) → `window::Window::is_pad` [NCURSES.WINDOW.GEOMETRY] — Whether the window is a pad; matched by the geometry court.
- `~` `newpad` (partial) → `window::Window::newpad` [NCURSES.WINDOW.GEOMETRY] — Creates a pad (a window with no screen association); geometry + is_pad matched by the geometry court.
- `~` `newpad_sp` (partial) → `window::Window::newpad` [NCURSES.WINDOW.GEOMETRY] — Creates a pad (a window with no screen association); geometry + is_pad matched by the geometry court.
- `o` `pechochar` (scaffold) → `window::Window::addch` — Add to the pad then refresh; the add is reconstructed, the echo refresh is the doupdate seed.
- `o` `pnoutrefresh` (scaffold) → `screen::single_field_repaint` — Pad-to-screen copy; shares the single-shape repaint seed (general doupdate is a seed).
- `o` `prefresh` (scaffold) → `screen::single_field_repaint` — Pad-to-screen copy; shares the single-shape repaint seed (general doupdate is a seed).
- `~` `subpad` (partial) → `window::Window::subpad` [NCURSES.WINDOW.GEOMETRY] — Sub-pad at a parent-relative position; geometry matched by the court.

### Read from window (curs_inch / instr) — 20/20 (100.0%)

- `~` `inch` (partial) → `window::Window::inch` [NCURSES.WINDOW.STATE] — Reads a cell's character from the window grid; the court reads ncurses back the same way. Attribute/chtype bits are not modelled.
- `o` `inchnstr` (scaffold) → `window::Window::instr` [NCURSES.WINDOW.STATE] — Char cells reconstructed (via instr); the chtype attribute bits these return are not modelled.
- `o` `inchstr` (scaffold) → `window::Window::instr` [NCURSES.WINDOW.STATE] — Char cells reconstructed (via instr); the chtype attribute bits these return are not modelled.
- `~` `innstr` (partial) → `window::Window::instr` [NCURSES.WINDOW.STATE] — Reads characters from the cursor to end of row; the cells it returns are validated by the window-state court.
- `~` `instr` (partial) → `window::Window::instr` [NCURSES.WINDOW.STATE] — Reads characters from the cursor to end of row; the cells it returns are validated by the window-state court.
- `~` `mvinch` (partial) → `window::Window::inch` [NCURSES.WINDOW.STATE] — Reads a cell's character from the window grid; the court reads ncurses back the same way. Attribute/chtype bits are not modelled.
- `o` `mvinchnstr` (scaffold) → `window::Window::instr` [NCURSES.WINDOW.STATE] — Char cells reconstructed (via instr); the chtype attribute bits these return are not modelled.
- `o` `mvinchstr` (scaffold) → `window::Window::instr` [NCURSES.WINDOW.STATE] — Char cells reconstructed (via instr); the chtype attribute bits these return are not modelled.
- `~` `mvinnstr` (partial) → `window::Window::instr` [NCURSES.WINDOW.STATE] — Reads characters from the cursor to end of row; the cells it returns are validated by the window-state court.
- `~` `mvinstr` (partial) → `window::Window::instr` [NCURSES.WINDOW.STATE] — Reads characters from the cursor to end of row; the cells it returns are validated by the window-state court.
- `~` `mvwinch` (partial) → `window::Window::inch` [NCURSES.WINDOW.STATE] — Reads a cell's character from the window grid; the court reads ncurses back the same way. Attribute/chtype bits are not modelled.
- `o` `mvwinchnstr` (scaffold) → `window::Window::instr` [NCURSES.WINDOW.STATE] — Char cells reconstructed (via instr); the chtype attribute bits these return are not modelled.
- `o` `mvwinchstr` (scaffold) → `window::Window::instr` [NCURSES.WINDOW.STATE] — Char cells reconstructed (via instr); the chtype attribute bits these return are not modelled.
- `~` `mvwinnstr` (partial) → `window::Window::instr` [NCURSES.WINDOW.STATE] — Reads characters from the cursor to end of row; the cells it returns are validated by the window-state court.
- `~` `mvwinstr` (partial) → `window::Window::instr` [NCURSES.WINDOW.STATE] — Reads characters from the cursor to end of row; the cells it returns are validated by the window-state court.
- `~` `winch` (partial) → `window::Window::inch` [NCURSES.WINDOW.STATE] — Reads a cell's character from the window grid; the court reads ncurses back the same way. Attribute/chtype bits are not modelled.
- `o` `winchnstr` (scaffold) → `window::Window::instr` [NCURSES.WINDOW.STATE] — Char cells reconstructed (via instr); the chtype attribute bits these return are not modelled.
- `o` `winchstr` (scaffold) → `window::Window::instr` [NCURSES.WINDOW.STATE] — Char cells reconstructed (via instr); the chtype attribute bits these return are not modelled.
- `~` `winnstr` (partial) → `window::Window::instr` [NCURSES.WINDOW.STATE] — Reads characters from the cursor to end of row; the cells it returns are validated by the window-state court.
- `~` `winstr` (partial) → `window::Window::instr` [NCURSES.WINDOW.STATE] — Reads characters from the cursor to end of row; the cells it returns are validated by the window-state court.

### Refresh & doupdate (curs_refresh) — 7/7 (100.0%)

- `~` `doupdate` (partial) → `update::Screen::doupdate` [NCURSES.DOUPDATE] — Clean-room reproduction of tty_update.c (doupdate/ClrUpdate/TransformLine/PutRange/EmitRange/ClrToEOL/ClrBottom) for the plain-text (A_NORMAL, no color) path, reusing the byte-exact mvcur/mvcur_ovw for cursor motion. Byte-exact vs real ncurses on ALL 19 court scenarios (NCURSES.DOUPDATE): clear+paint, overwrite, multi-line, scattered runs, leading-blank reposition, clr_eol/clr_bol/clr_eos, ich/dch insert/delete shifting, ech and rep run-coalescing, and the mvcur ovw=TRUE GoTo overwrite (OPT-01a closed). Attribute/color SGR (OPT-03), xmc, bce, hardware scroll, and the right-margin wrap corner are out of this increment.
- `o` `doupdate_sp` (scaffold) → `screen::single_field_repaint` — Same single-shape repaint seed as doupdate; the _sp screen-pointer variant is not modelled.
- `>` `redrawwin` (deferred) [NCURSES.REFRESH.NOOUTPUT] — Marks a window/line range for full repaint on the next refresh; emits no immediate terminal bytes (proven empty-output).
- `~` `refresh` (partial) → `update::Screen::doupdate` [NCURSES.DOUPDATE] — wrefresh(stdscr) = wnoutrefresh + doupdate; the doupdate plain-text screen-diff is reproduced byte-exact for the courted scenarios (NCURSES.DOUPDATE). The wnoutrefresh window-to-newscr copy and pad/sub-window clipping are modeled by the Window cell grid, not yet courted end-to-end.
- `~` `wnoutrefresh` (partial) → `update::Screen::doupdate` [NCURSES.DOUPDATE] — The newscr assembly feeds the same byte-exact doupdate diff (NCURSES.DOUPDATE). Full WINDOW-to-newscr copy semantics (clipping, leaveok, immedok) are partial.
- `>` `wredrawln` (deferred) [NCURSES.REFRESH.NOOUTPUT] — Marks a window/line range for full repaint on the next refresh; emits no immediate terminal bytes (proven empty-output).
- `~` `wrefresh` (partial) → `update::Screen::doupdate` [NCURSES.DOUPDATE] — wnoutrefresh + doupdate; the doupdate plain-text screen-diff is byte-exact for the courted scenarios (NCURSES.DOUPDATE), reusing the byte-exact mvcur.

### Resize & threads (resizeterm / threads) — 8/8 (100.0%)

- `n` `is_term_resized` (n_a) — Pure query: whether a resize to the given size would change anything; no terminal output.
- `n` `is_term_resized_sp` (n_a) — Pure query: whether a resize to the given size would change anything; no terminal output.
- `>` `resize_term` (deferred) [NCURSES.RESIZE.NOOUTPUT] — Resizes the screen/window structures in memory; emits no immediate terminal bytes (repaint at the next refresh). Proven empty-output.
- `>` `resize_term_sp` (deferred) [NCURSES.RESIZE.NOOUTPUT] — Resizes the screen/window structures in memory; emits no immediate terminal bytes (repaint at the next refresh). Proven empty-output.
- `>` `resizeterm` (deferred) [NCURSES.RESIZE.NOOUTPUT] — Resizes the screen/window structures in memory; emits no immediate terminal bytes (repaint at the next refresh). Proven empty-output.
- `>` `resizeterm_sp` (deferred) [NCURSES.RESIZE.NOOUTPUT] — Resizes the screen/window structures in memory; emits no immediate terminal bytes (repaint at the next refresh). Proven empty-output.
- `n` `use_screen` (n_a) — Thread wrapper that runs a callback under a window/screen lock; no terminal-output contract of its own.
- `n` `use_window` (n_a) — Thread wrapper that runs a callback under a window/screen lock; no terminal-output contract of its own.

### Screen dump (curs_scr_dump) — 10/10 (100.0%)

- `n` `getwin` (n_a) — Serializes/loads a window or screen to/from a file in ncurses' private save format; not terminal-display output (the crate's scope).
- `n` `getwin_sp` (n_a) — Serializes/loads a window or screen to/from a file in ncurses' private save format; not terminal-display output (the crate's scope).
- `n` `putwin` (n_a) — Serializes/loads a window or screen to/from a file in ncurses' private save format; not terminal-display output (the crate's scope).
- `n` `scr_dump` (n_a) — Serializes/loads a window or screen to/from a file in ncurses' private save format; not terminal-display output (the crate's scope).
- `n` `scr_init` (n_a) — Serializes/loads a window or screen to/from a file in ncurses' private save format; not terminal-display output (the crate's scope).
- `n` `scr_init_sp` (n_a) — Serializes/loads a window or screen to/from a file in ncurses' private save format; not terminal-display output (the crate's scope).
- `n` `scr_restore` (n_a) — Serializes/loads a window or screen to/from a file in ncurses' private save format; not terminal-display output (the crate's scope).
- `n` `scr_restore_sp` (n_a) — Serializes/loads a window or screen to/from a file in ncurses' private save format; not terminal-display output (the crate's scope).
- `n` `scr_set` (n_a) — Serializes/loads a window or screen to/from a file in ncurses' private save format; not terminal-display output (the crate's scope).
- `n` `scr_set_sp` (n_a) — Serializes/loads a window or screen to/from a file in ncurses' private save format; not terminal-display output (the crate's scope).

### Screen init & teardown (curs_initscr) — 11/11 (100.0%)

- `n` `delscreen` (n_a) — Global SCREEN management (select/free/pre-allocate); no terminal-output contract in the owned-value model.
- `!` `endwin` (divergent) → `term::TEARDOWN_EPILOGUE` [NCURSES.BYTE.FRAME.FULL] — Emits the teardown epilogue; same recorded framing divergence as initscr against the in-repo oracle.
- `!` `endwin_sp` (divergent) → `term::TEARDOWN_EPILOGUE` [NCURSES.BYTE.FRAME.FULL] — Emits the teardown epilogue; same recorded framing divergence as initscr against the in-repo oracle.
- `!` `exit_curses` (divergent) → `term::TEARDOWN_EPILOGUE` [NCURSES.BYTE.FRAME.FULL] — Emits the teardown epilogue; same recorded framing divergence as initscr against the in-repo oracle.
- `!` `initscr` (divergent) → `term::INIT_PROLOGUE` [NCURSES.BYTE.FRAME.FULL] — Emits the init prologue; against the in-repo ncurses 6.4 pty oracle the composite framing diverges (emission order + feature extras), recorded not matched.
- `n` `isendwin` (n_a) — Pure query: whether endwin has been called; no terminal-output contract.
- `n` `isendwin_sp` (n_a) — Pure query: whether endwin has been called; no terminal-output contract.
- `n` `new_prescr` (n_a) — Global SCREEN management (select/free/pre-allocate); no terminal-output contract in the owned-value model.
- `!` `newterm` (divergent) → `term::INIT_PROLOGUE` [NCURSES.BYTE.FRAME.FULL] — Emits the init prologue; against the in-repo ncurses 6.4 pty oracle the composite framing diverges (emission order + feature extras), recorded not matched.
- `!` `newterm_sp` (divergent) → `term::INIT_PROLOGUE` [NCURSES.BYTE.FRAME.FULL] — Emits the init prologue; against the in-repo ncurses 6.4 pty oracle the composite framing diverges (emission order + feature extras), recorded not matched.
- `n` `set_term` (n_a) — Global SCREEN management (select/free/pre-allocate); no terminal-output contract in the owned-value model.

### Scroll & output options (curs_scroll / outopts) — 16/16 (100.0%)

- `>` `idcok` (deferred) [NCURSES.SCROLL.NOOUTPUT] — Sets an output-option flag / scroll region, or scrolls window contents in memory; emits no immediate terminal bytes (output at the next refresh). Proven empty-output.
- `>` `idlok` (deferred) [NCURSES.SCROLL.NOOUTPUT] — Sets an output-option flag / scroll region, or scrolls window contents in memory; emits no immediate terminal bytes (output at the next refresh). Proven empty-output.
- `>` `immedok` (deferred) [NCURSES.SCROLL.NOOUTPUT] — Sets an output-option flag / scroll region, or scrolls window contents in memory; emits no immediate terminal bytes (output at the next refresh). Proven empty-output.
- `n` `is_idcok` (n_a) — Pure query of an output-option flag / scroll region; no terminal-output contract.
- `n` `is_idlok` (n_a) — Pure query of an output-option flag / scroll region; no terminal-output contract.
- `n` `is_immedok` (n_a) — Pure query of an output-option flag / scroll region; no terminal-output contract.
- `n` `is_leaveok` (n_a) — Pure query of an output-option flag / scroll region; no terminal-output contract.
- `n` `is_scrollok` (n_a) — Pure query of an output-option flag / scroll region; no terminal-output contract.
- `>` `leaveok` (deferred) [NCURSES.SCROLL.NOOUTPUT] — Sets an output-option flag / scroll region, or scrolls window contents in memory; emits no immediate terminal bytes (output at the next refresh). Proven empty-output.
- `>` `scrl` (deferred) [NCURSES.SCROLL.NOOUTPUT] — Sets an output-option flag / scroll region, or scrolls window contents in memory; emits no immediate terminal bytes (output at the next refresh). Proven empty-output.
- `>` `scroll` (deferred) [NCURSES.SCROLL.NOOUTPUT] — Sets an output-option flag / scroll region, or scrolls window contents in memory; emits no immediate terminal bytes (output at the next refresh). Proven empty-output.
- `>` `scrollok` (deferred) [NCURSES.SCROLL.NOOUTPUT] — Sets an output-option flag / scroll region, or scrolls window contents in memory; emits no immediate terminal bytes (output at the next refresh). Proven empty-output.
- `>` `setscrreg` (deferred) [NCURSES.SCROLL.NOOUTPUT] — Sets an output-option flag / scroll region, or scrolls window contents in memory; emits no immediate terminal bytes (output at the next refresh). Proven empty-output.
- `n` `wgetscrreg` (n_a) — Pure query of an output-option flag / scroll region; no terminal-output contract.
- `>` `wscrl` (deferred) [NCURSES.SCROLL.NOOUTPUT] — Sets an output-option flag / scroll region, or scrolls window contents in memory; emits no immediate terminal bytes (output at the next refresh). Proven empty-output.
- `>` `wsetscrreg` (deferred) [NCURSES.SCROLL.NOOUTPUT] — Sets an output-option flag / scroll region, or scrolls window contents in memory; emits no immediate terminal bytes (output at the next refresh). Proven empty-output.

### Soft labels (curs_slk) — 30/30 (100.0%)

- `n` `slk_attr` (n_a) — Soft-label attribute/colour state; no immediate terminal output (applied when the label line is rendered).
- `n` `slk_attr_off` (n_a) — Soft-label attribute/colour state; no immediate terminal output (applied when the label line is rendered).
- `n` `slk_attr_on` (n_a) — Soft-label attribute/colour state; no immediate terminal output (applied when the label line is rendered).
- `n` `slk_attr_set` (n_a) — Soft-label attribute/colour state; no immediate terminal output (applied when the label line is rendered).
- `n` `slk_attr_set_sp` (n_a) — Soft-label attribute/colour state; no immediate terminal output (applied when the label line is rendered).
- `n` `slk_attr_sp` (n_a) — Soft-label attribute/colour state; no immediate terminal output (applied when the label line is rendered).
- `n` `slk_attroff` (n_a) — Soft-label attribute/colour state; no immediate terminal output (applied when the label line is rendered).
- `n` `slk_attroff_sp` (n_a) — Soft-label attribute/colour state; no immediate terminal output (applied when the label line is rendered).
- `n` `slk_attron` (n_a) — Soft-label attribute/colour state; no immediate terminal output (applied when the label line is rendered).
- `n` `slk_attron_sp` (n_a) — Soft-label attribute/colour state; no immediate terminal output (applied when the label line is rendered).
- `n` `slk_attrset` (n_a) — Soft-label attribute/colour state; no immediate terminal output (applied when the label line is rendered).
- `n` `slk_attrset_sp` (n_a) — Soft-label attribute/colour state; no immediate terminal output (applied when the label line is rendered).
- `>` `slk_clear` (deferred) [NCURSES.SLK.NOOUTPUT] — Touch/clear/restore/refresh of the label line emit no immediate terminal bytes; the line is rendered at the buffered doupdate (a seed). Proven empty-output.
- `>` `slk_clear_sp` (deferred) [NCURSES.SLK.NOOUTPUT] — Touch/clear/restore/refresh of the label line emit no immediate terminal bytes; the line is rendered at the buffered doupdate (a seed). Proven empty-output.
- `n` `slk_color` (n_a) — Soft-label attribute/colour state; no immediate terminal output (applied when the label line is rendered).
- `n` `slk_color_sp` (n_a) — Soft-label attribute/colour state; no immediate terminal output (applied when the label line is rendered).
- `n` `slk_init` (n_a) — Selects the soft-label format before initscr; layout config with no terminal output.
- `n` `slk_init_sp` (n_a) — Selects the soft-label format before initscr; layout config with no terminal output.
- `~` `slk_label` (partial) → `slk::SoftLabels::label` [NCURSES.SLK] — Returns the stored label truncated to the label width; matched to ncurses (80 cols).
- `~` `slk_label_sp` (partial) → `slk::SoftLabels::label` [NCURSES.SLK] — Returns the stored label truncated to the label width; matched to ncurses (80 cols).
- `>` `slk_noutrefresh` (deferred) [NCURSES.SLK.NOOUTPUT] — Touch/clear/restore/refresh of the label line emit no immediate terminal bytes; the line is rendered at the buffered doupdate (a seed). Proven empty-output.
- `>` `slk_noutrefresh_sp` (deferred) [NCURSES.SLK.NOOUTPUT] — Touch/clear/restore/refresh of the label line emit no immediate terminal bytes; the line is rendered at the buffered doupdate (a seed). Proven empty-output.
- `>` `slk_refresh` (deferred) [NCURSES.SLK.NOOUTPUT] — Touch/clear/restore/refresh of the label line emit no immediate terminal bytes; the line is rendered at the buffered doupdate (a seed). Proven empty-output.
- `>` `slk_refresh_sp` (deferred) [NCURSES.SLK.NOOUTPUT] — Touch/clear/restore/refresh of the label line emit no immediate terminal bytes; the line is rendered at the buffered doupdate (a seed). Proven empty-output.
- `>` `slk_restore` (deferred) [NCURSES.SLK.NOOUTPUT] — Touch/clear/restore/refresh of the label line emit no immediate terminal bytes; the line is rendered at the buffered doupdate (a seed). Proven empty-output.
- `>` `slk_restore_sp` (deferred) [NCURSES.SLK.NOOUTPUT] — Touch/clear/restore/refresh of the label line emit no immediate terminal bytes; the line is rendered at the buffered doupdate (a seed). Proven empty-output.
- `~` `slk_set` (partial) → `slk::SoftLabels::set` [NCURSES.SLK] — Stores a soft label; slk_label read-back matched to ncurses.
- `~` `slk_set_sp` (partial) → `slk::SoftLabels::set` [NCURSES.SLK] — Stores a soft label; slk_label read-back matched to ncurses.
- `>` `slk_touch` (deferred) [NCURSES.SLK.NOOUTPUT] — Touch/clear/restore/refresh of the label line emit no immediate terminal bytes; the line is rendered at the buffered doupdate (a seed). Proven empty-output.
- `>` `slk_touch_sp` (deferred) [NCURSES.SLK.NOOUTPUT] — Touch/clear/restore/refresh of the label line emit no immediate terminal bytes; the line is rendered at the buffered doupdate (a seed). Proven empty-output.

### Terminal queries (curs_termattrs) — 17/17 (100.0%)

- `n` `baudrate` (n_a) — Queries the live terminal's tty/termios state (baud / erase / kill char), not terminfo; no terminal-output contract for a byte reconstruction.
- `n` `baudrate_sp` (n_a) — Queries the live terminal's tty/termios state (baud / erase / kill char), not terminfo; no terminal-output contract for a byte reconstruction.
- `n` `curses_version` (n_a) — Returns the curses library identity/version string; not a terminal capability and no terminal-output contract.
- `n` `erasechar` (n_a) — Queries the live terminal's tty/termios state (baud / erase / kill char), not terminfo; no terminal-output contract for a byte reconstruction.
- `n` `erasechar_sp` (n_a) — Queries the live terminal's tty/termios state (baud / erase / kill char), not terminfo; no terminal-output contract for a byte reconstruction.
- `*` `has_ic` (full) → `terminfo::Terminfo::has_ic` [NCURSES.TERMATTRS] — Insert-character capability derived from terminfo; matches ncurses across 9 terminals.
- `*` `has_ic_sp` (full) → `terminfo::Terminfo::has_ic` [NCURSES.TERMATTRS] — Insert-character capability derived from terminfo; matches ncurses across 9 terminals.
- `*` `has_il` (full) → `terminfo::Terminfo::has_il` [NCURSES.TERMATTRS] — Insert/delete-line capability derived from terminfo; matches ncurses across 9 terminals.
- `*` `has_il_sp` (full) → `terminfo::Terminfo::has_il` [NCURSES.TERMATTRS] — Insert/delete-line capability derived from terminfo; matches ncurses across 9 terminals.
- `n` `killchar` (n_a) — Queries the live terminal's tty/termios state (baud / erase / kill char), not terminfo; no terminal-output contract for a byte reconstruction.
- `n` `killchar_sp` (n_a) — Queries the live terminal's tty/termios state (baud / erase / kill char), not terminfo; no terminal-output contract for a byte reconstruction.
- `*` `longname` (full) → `terminfo::Terminfo::longname` [NCURSES.TERMATTRS] — Verbose terminal description (last alias); matches ncurses across 9 terminals.
- `*` `longname_sp` (full) → `terminfo::Terminfo::longname` [NCURSES.TERMATTRS] — Verbose terminal description (last alias); matches ncurses across 9 terminals.
- `n` `termattrs` (n_a) — Supported-video-attributes mask computed at the SCREEN(SP) level (0 without a screen); requires the screen model not present in the terminfo-only substrate.
- `n` `termattrs_sp` (n_a) — Supported-video-attributes mask computed at the SCREEN(SP) level (0 without a screen); requires the screen model not present in the terminfo-only substrate.
- `*` `termname` (full) → `terminfo::Terminfo::termname` [NCURSES.TERMATTRS] — Primary terminal name (first alias, <=14 bytes); matches ncurses across 9 terminals.
- `*` `termname_sp` (full) → `terminfo::Terminfo::termname` [NCURSES.TERMATTRS] — Primary terminal name (first alias, <=14 bytes); matches ncurses across 9 terminals.

### Terminfo & termcap (curs_terminfo / termcap) — 33/33 (100.0%)

- `n` `del_curterm` (n_a) — Manages/frees the global cur_term; ncurses-native uses owned Terminfo values, so there is no global pointer to set/delete/free and no terminal output to emit.
- `n` `del_curterm_sp` (n_a) — Manages/frees the global cur_term; ncurses-native uses owned Terminfo values, so there is no global pointer to set/delete/free and no terminal output to emit.
- `n` `exit_terminfo` (n_a) — Manages/frees the global cur_term; ncurses-native uses owned Terminfo values, so there is no global pointer to set/delete/free and no terminal output to emit.
- `*` `putp` (full) → `terminfo::putp` [NCURSES.TPUTS] — tputs to stdout (affcnt 1); emitted bytes are exactly tputs of the string.
- `*` `putp_sp` (full) → `terminfo::putp` [NCURSES.TPUTS] — Same as putp; _sp variant not modeled, bytes identical.
- `~` `restartterm` (partial) → `terminfo::Terminfo::load` [NCURSES.TERMINFO.ECOLOGY] — Re-reads the entry for a term name via the same loader; full restartterm tty/mode restoration is not modeled.
- `~` `restartterm_sp` (partial) → `terminfo::Terminfo::load` [NCURSES.TERMINFO.ECOLOGY] — Re-reads the entry for a term name via the same loader; full restartterm tty/mode restoration is not modeled.
- `n` `set_curterm` (n_a) — Manages/frees the global cur_term; ncurses-native uses owned Terminfo values, so there is no global pointer to set/delete/free and no terminal output to emit.
- `n` `set_curterm_sp` (n_a) — Manages/frees the global cur_term; ncurses-native uses owned Terminfo values, so there is no global pointer to set/delete/free and no terminal output to emit.
- `~` `setupterm` (partial) → `terminfo::Terminfo::load` [NCURSES.TERMINFO.ECOLOGY] — Reconstructs the load-by-$TERM + compiled-entry parse path; matched against ncurses across 9 terminals (incl. the 32-bit-number format). Runtime cur_term/baud/mode setup and use_env cols/lines augmentation are not modeled (non-claim).
- `~` `tgetent` (partial) → `terminfo::Terminfo::load` [NCURSES.TERMCAP] — Loads the entry by name via the database loader; full tgetent buffer/area semantics and termcap-file fallback not modeled.
- `~` `tgetent_sp` (partial) → `terminfo::Terminfo::load` [NCURSES.TERMCAP] — Loads the entry by name via the database loader; full tgetent buffer/area semantics and termcap-file fallback not modeled.
- `*` `tgetflag` (full) → `terminfo::Terminfo::tgetflag` [NCURSES.TERMCAP] — Termcap boolean lookup by 2-letter code; matches ncurses (44/44 codes).
- `*` `tgetflag_sp` (full) → `terminfo::Terminfo::tgetflag` [NCURSES.TERMCAP] — Termcap boolean lookup by 2-letter code; matches ncurses (44/44 codes).
- `*` `tgetnum` (full) → `terminfo::Terminfo::tgetnum` [NCURSES.TERMCAP] — Termcap numeric lookup by code; matches ncurses (39/39 codes).
- `*` `tgetnum_sp` (full) → `terminfo::Terminfo::tgetnum` [NCURSES.TERMCAP] — Termcap numeric lookup by code; matches ncurses (39/39 codes).
- `!` `tgetstr` (divergent) → `terminfo::Terminfo::tgetstr` [NCURSES.TERMCAP] — Returns the terminfo string for a termcap code; matches 411/414. Diverges on the few codes ncurses' termcap emulation massages/synthesizes (e.g. 'me' -> \E[0m vs raw sgr0; 'ML' margin cap). Recorded in NCURSES.TERMCAP.
- `!` `tgetstr_sp` (divergent) → `terminfo::Terminfo::tgetstr` [NCURSES.TERMCAP] — Returns the terminfo string for a termcap code; matches 411/414. Diverges on the few codes ncurses' termcap emulation massages/synthesizes (e.g. 'me' -> \E[0m vs raw sgr0; 'ML' margin cap). Recorded in NCURSES.TERMCAP.
- `*` `tgoto` (full) → `terminfo::tgoto` [NCURSES.TERMCAP] — tgoto(cap,col,row) == tparm(cap,row,col); matches ncurses over the cup sweep.
- `*` `tgoto_sp` (full) → `terminfo::tgoto` [NCURSES.TERMCAP] — tgoto(cap,col,row) == tparm(cap,row,col); matches ncurses over the cup sweep.
- `*` `tigetflag` (full) → `terminfo::Terminfo::tigetflag` [NCURSES.TERMINFO.LOOKUP, NCURSES.TERMINFO.ECOLOGY] — Reconstructed terminfo boolean lookup; matches ncurses tigetflag over every standard boolean cap (1 / 0 / -1 not-a-boolean).
- `*` `tigetflag_sp` (full) → `terminfo::Terminfo::tigetflag` [NCURSES.TERMINFO.LOOKUP, NCURSES.TERMINFO.ECOLOGY] — Same lookup; _sp variant not modeled, value identical.
- `*` `tigetnum` (full) → `terminfo::Terminfo::tigetnum` [NCURSES.TERMINFO.LOOKUP, NCURSES.TERMINFO.ECOLOGY] — Reconstructed terminfo numeric lookup; matches ncurses tigetnum over every standard numeric cap (value / -1 absent / -2 not-a-number).
- `*` `tigetnum_sp` (full) → `terminfo::Terminfo::tigetnum` [NCURSES.TERMINFO.LOOKUP, NCURSES.TERMINFO.ECOLOGY] — Same lookup; _sp variant not modeled, value identical.
- `*` `tigetstr` (full) → `terminfo::Terminfo::tigetstr` [NCURSES.TERMINFO.LOOKUP, NCURSES.TERMINFO.ECOLOGY] — Reconstructed from a native compiled-terminfo reader; matches ncurses tigetstr over every standard string cap of the xterm entry (return semantics: present/absent/not-a-string).
- `*` `tigetstr_sp` (full) → `terminfo::Terminfo::tigetstr` [NCURSES.TERMINFO.LOOKUP, NCURSES.TERMINFO.ECOLOGY] — Same lookup; the _sp screen-pointer global state is not modeled but the returned value is identical.
- `~` `tiparm` (partial) → `terminfo::tparm` [NCURSES.TPARM] — Shares the tparm evaluator (byte output identical for these caps); tiparm's explicit-typed variadic API is not separately reconstructed/courted.
- `~` `tiparm_s` (partial) → `terminfo::tparm` [NCURSES.TPARM] — Bounded-buffer variant of tiparm; shares the tparm evaluator (identical bytes for these caps). The explicit buffer-size-limit API is not separately modelled.
- `n` `tiscan_s` (n_a) — Scans a format string for its parameter count/types (a safety/introspection helper); produces no terminal output to reconstruct.
- `*` `tparm` (full) → `terminfo::tparm` [NCURSES.TPARM] — Full parameterized-string stack machine; matches ncurses tparm byte-for-byte over the xterm parameterized caps (cup/setaf/sgr/setf/...) and synthetic printf specs. Padding ($<...>) is tputs' job; static-variable persistence across calls not modeled.
- `*` `tparm_sp` (full) → `terminfo::tparm` [NCURSES.TPARM] — Same evaluator; the _sp screen-pointer variant is not modeled but the bytes are identical.
- `*` `tputs` (full) → `terminfo::tputs` [NCURSES.TPUTS] — Padding processor: strips $<...> specs; matches ncurses tputs byte-for-byte under the admitted xterm pty. Baud/pad_char-dependent pad bytes on slow terminals not modeled (non-claim).
- `*` `tputs_sp` (full) → `terminfo::tputs` [NCURSES.TPUTS] — Same processing; _sp screen-pointer variant not modeled, bytes identical.

### Touch & sync (curs_touch) — 11/11 (100.0%)

- `n` `is_linetouched` (n_a) — Pure query of window touch/sync state; no terminal-output contract.
- `n` `is_syncok` (n_a) — Pure query of window touch/sync state; no terminal-output contract.
- `n` `is_wintouched` (n_a) — Pure query of window touch/sync state; no terminal-output contract.
- `>` `syncok` (deferred) [NCURSES.TOUCH.NOOUTPUT] — Marks window lines dirty/in-sync in memory; emits no immediate terminal bytes (repaint is the next refresh's job). Proven empty-output.
- `>` `touchline` (deferred) [NCURSES.TOUCH.NOOUTPUT] — Marks window lines dirty/in-sync in memory; emits no immediate terminal bytes (repaint is the next refresh's job). Proven empty-output.
- `>` `touchwin` (deferred) [NCURSES.TOUCH.NOOUTPUT] — Marks window lines dirty/in-sync in memory; emits no immediate terminal bytes (repaint is the next refresh's job). Proven empty-output.
- `>` `untouchwin` (deferred) [NCURSES.TOUCH.NOOUTPUT] — Marks window lines dirty/in-sync in memory; emits no immediate terminal bytes (repaint is the next refresh's job). Proven empty-output.
- `>` `wcursyncup` (deferred) [NCURSES.TOUCH.NOOUTPUT] — Marks window lines dirty/in-sync in memory; emits no immediate terminal bytes (repaint is the next refresh's job). Proven empty-output.
- `>` `wsyncdown` (deferred) [NCURSES.TOUCH.NOOUTPUT] — Marks window lines dirty/in-sync in memory; emits no immediate terminal bytes (repaint is the next refresh's job). Proven empty-output.
- `>` `wsyncup` (deferred) [NCURSES.TOUCH.NOOUTPUT] — Marks window lines dirty/in-sync in memory; emits no immediate terminal bytes (repaint is the next refresh's job). Proven empty-output.
- `>` `wtouchln` (deferred) [NCURSES.TOUCH.NOOUTPUT] — Marks window lines dirty/in-sync in memory; emits no immediate terminal bytes (repaint is the next refresh's job). Proven empty-output.

### Trace (curs_trace) — 8/8 (100.0%)

- `n` `_traceattr` (n_a) — Writes diagnostic trace to the ncurses debug file (when tracing is enabled), not the terminal display; no terminal-output contract.
- `n` `_traceattr2` (n_a) — Writes diagnostic trace to the ncurses debug file (when tracing is enabled), not the terminal display; no terminal-output contract.
- `n` `_tracechar` (n_a) — Writes diagnostic trace to the ncurses debug file (when tracing is enabled), not the terminal display; no terminal-output contract.
- `n` `_tracechtype` (n_a) — Writes diagnostic trace to the ncurses debug file (when tracing is enabled), not the terminal display; no terminal-output contract.
- `n` `_tracechtype2` (n_a) — Writes diagnostic trace to the ncurses debug file (when tracing is enabled), not the terminal display; no terminal-output contract.
- `n` `_tracef` (n_a) — Writes diagnostic trace to the ncurses debug file (when tracing is enabled), not the terminal display; no terminal-output contract.
- `n` `curses_trace` (n_a) — Writes diagnostic trace to the ncurses debug file (when tracing is enabled), not the terminal display; no terminal-output contract.
- `n` `trace` (n_a) — Writes diagnostic trace to the ncurses debug file (when tracing is enabled), not the terminal display; no terminal-output contract.

### Window create & manage (curs_window) — 19/19 (100.0%)

- `n` `delwin` (n_a) — Frees a window; ncurses-native uses owned Window values (dropped normally), so there is nothing to emit.
- `~` `derwin` (partial) → `window::Window::derwin` [NCURSES.WINDOW.GEOMETRY] — Child window at a parent-relative position; geometry (begyx/paryx) matched by the court. Shared parent cells are not modelled.
- `~` `dupwin` (partial) → `window::Window::dupwin` [NCURSES.WINDOW.GEOMETRY] — Copies cells, cursor, and geometry; matched by the geometry/state courts.
- `~` `getbegx` (partial) → `window::Window::getbegyx` [NCURSES.WINDOW.GEOMETRY] — Window top-left screen position; matched by the geometry court.
- `~` `getbegy` (partial) → `window::Window::getbegyx` [NCURSES.WINDOW.GEOMETRY] — Window top-left screen position; matched by the geometry court.
- `~` `getcurx` (partial) → `window::Window::getyx` [NCURSES.WINDOW.GEOMETRY] — Window cursor position; matched by the geometry/window-state courts.
- `~` `getcury` (partial) → `window::Window::getyx` [NCURSES.WINDOW.GEOMETRY] — Window cursor position; matched by the geometry/window-state courts.
- `~` `getmaxx` (partial) → `window::Window::getmaxyx` [NCURSES.WINDOW.GEOMETRY] — Window size; matched by the geometry court.
- `~` `getmaxy` (partial) → `window::Window::getmaxyx` [NCURSES.WINDOW.GEOMETRY] — Window size; matched by the geometry court.
- `~` `getparx` (partial) → `window::Window::getparyx` [NCURSES.WINDOW.GEOMETRY] — Position relative to the parent window; matched by the geometry court.
- `~` `getpary` (partial) → `window::Window::getparyx` [NCURSES.WINDOW.GEOMETRY] — Position relative to the parent window; matched by the geometry court.
- `~` `is_subwin` (partial) → `window::Window::is_subwin` [NCURSES.WINDOW.GEOMETRY] — True when the window has a parent; matched by the geometry court.
- `o` `mvderwin` (scaffold) → `window::Window::derwin` [NCURSES.WINDOW.GEOMETRY] — The derived-window view shift is not modelled; only child geometry via derwin.
- `~` `mvwin` (partial) → `window::Window::mvwin` [NCURSES.WINDOW.GEOMETRY] — Moves the window's top-left corner; geometry matched by the court.
- `~` `newwin` (partial) → `window::Window::newwin` [NCURSES.WINDOW.GEOMETRY] — Creates a blank window of given size at a screen position; geometry matched by the geometry court.
- `~` `newwin_sp` (partial) → `window::Window::newwin` [NCURSES.WINDOW.GEOMETRY] — Same as newwin; the _sp screen-pointer variant is not modelled.
- `~` `subwin` (partial) → `window::Window::subwin` [NCURSES.WINDOW.GEOMETRY] — Child window at a screen-absolute position; geometry matched by the court. Shared parent cells are not modelled.
- `n` `wgetparent` (n_a) — Returns the parent window pointer; a pointer query with no terminal-output contract.
- `~` `wresize` (partial) → `window::Window::wresize` [NCURSES.WINDOW.GEOMETRY] — Resizes the window (preserving top-left content); geometry matched by the court.

### printw (curs_printw) — 6/6 (100.0%)

- `o` `mvprintw` (scaffold) → `window::Window::addstr` — Formats (C printf, delegated to the caller) then adds the string to the window; the window effect is addstr (courted via WINDOW.STATE).
- `o` `mvwprintw` (scaffold) → `window::Window::addstr` — Formats (C printf, delegated to the caller) then adds the string to the window; the window effect is addstr (courted via WINDOW.STATE).
- `o` `printw` (scaffold) → `window::Window::addstr` — Formats (C printf, delegated to the caller) then adds the string to the window; the window effect is addstr (courted via WINDOW.STATE).
- `o` `vw_printw` (scaffold) → `window::Window::addstr` — Formats (C printf, delegated to the caller) then adds the string to the window; the window effect is addstr (courted via WINDOW.STATE).
- `o` `vwprintw` (scaffold) → `window::Window::addstr` — Formats (C printf, delegated to the caller) then adds the string to the window; the window effect is addstr (courted via WINDOW.STATE).
- `o` `wprintw` (scaffold) → `window::Window::addstr` — Formats (C printf, delegated to the caller) then adds the string to the window; the window effect is addstr (courted via WINDOW.STATE).

