# agentic-coverage-excludes.txt — paths skipped in the coverage agentic pass
#
# `tools/coverage/run-coverage.sh` reads this file and appends one
# `-exclude-prefix` flag to the agentic slang-test invocation for each
# entry. The agentic pass under coverage instrumentation can SIGSEGV
# inside slang-test on certain tests; the orchestrator dies and takes
# the tail of the suite down with it, so we exclude those tests up
# front to keep the rest of the suite running and producing coverage.
#
# This file is NOT consulted by nightly-slang-test.yml — those
# tests still run in the nightly against the uninstrumented binary,
# where they bucket as `failed(expected)` via expected-failures.txt
# where appropriate. The exclude is purely a coverage-stability hack.
#
# Format
# ------
# One path per line. Lines starting with `#` and blank lines are
# ignored. Comments after `#` on a path line are also stripped. Each
# entry is passed verbatim to slang-test's `-exclude-prefix` flag,
# which is a path-prefix filter — listing a directory excludes
# everything under it.
#
# Each entry SHOULD be accompanied by a `#` comment block above it
# documenting the symptom and how it was identified (CI run URL +
# the last-printed test before the crash), so a future maintainer
# can verify whether the underlying issue is still present.
#
# Staleness signal
# ----------------
# Unlike `-expected-failure-list`, `-exclude-prefix` has no
# "passing tests that are expected to fail" reporter, so entries
# here can rot silently once the underlying crash is fixed. To
# audit the list periodically:
#   1. Compile slang with coverage instrumentation locally.
#   2. Remove an entry below and run
#      `./tools/coverage/run-coverage.sh --with-agentic-tests`
#      (or trigger the coverage workflow on a branch with the
#      entry removed).
#   3. If the run completes without a SIGSEGV in slang-test, the
#      underlying crash has been fixed — drop the entry for real.
# A green nightly-slang-test.yml run on the same test is a
# necessary but NOT sufficient condition: the nightly uses an
# uninstrumented binary, and the crash here is
# coverage-instrumentation-specific.

# Run 26813684019 (sequential reproducer with -server-count 1):
# SIGSEGV in slang-test immediately after
# ir-reference/metadata/type-layout-base.slang passes. The same
# test is already listed in expected-failures.txt (it fails on the
# uninstrumented Linux nightly); coverage instrumentation
# escalates that failure into a SIGSEGV inside the slang-test
# orchestrator, which kills the rest of the suite.
#
# Path note: PR #11421 reorganized the agentic suite under
# `docs/generated/tests/design/...` and `.../conformance/...`. The
# entry below uses the post-reorg path; the pre-reorg form
# `docs/generated/tests/ir-reference/...` no longer matches anything
# and silently disabled the exclude until run 26992984934 reproduced
# the crash and surfaced the staleness.
docs/generated/tests/design/ir-reference/metadata/unorm-attr-on-buffer-element.slang

# Local coverage reproducer (RelWithDebInfo + -fprofile-instr-generate,
# sequential -server-count 1): SIGSEGV in slang-test immediately after
# ir-reference/misc/string-hash-fold-emitted-constant.slang.6 passes —
# i.e. on the next test, string-hash-stable-value-cpu.slang. That test
# is a `//TEST:COMPARE_COMPUTE(filecheck-buffer=CHECK):-cpu` case; the
# in-process CPU host-callable execution segfaults the slang-test
# process, so unlike a normal failure the expected-failures.txt entry
# (`... (cpu)`) cannot catch it — the whole orchestrator dies and the
# tail of the suite (design/* after misc, coverage/autodiff, …) never
# runs and produces no coverage. The compiler itself is fine
# (`slangc -target ...` compiles it); this is a harness/host-callable
# in-process crash, so nightly-slang-test.yml (subprocess/test-server)
# still buckets it as failed(expected) via expected-failures.txt.
docs/generated/tests/design/ir-reference/misc/string-hash-stable-value-cpu.slang

# In-process HLSL-prelude state leak (NOT a crash). These four tests assert
# that emitted HLSL contains the standard prelude's NVAPI guard
# (`#ifdef SLANG_HLSL_ENABLE_NVAPI` / `#include "nvHLSLExtns.h"`). They pass
# in isolation and in nightly-slang-test.yml, but FAIL in the coverage agentic
# pass because it runs sequentially IN-PROCESS (`-server-count 1`) reusing one
# GlobalSession: a preceding `//TEST:COMPARE_COMPUTE(...):-cpu` test poisons the
# shared session so the NEXT `-target hlsl` compile omits the HLSL prelude
# entirely (reproduced: a single `-cpu` compute test before an nvapi test drops
# the guard; a non-cpu HLSL-emit test before it does not). Because many `-cpu`
# tests exist throughout the suite there is no single "leaker" to exclude, and
# the tests themselves are correct — so they are neither weakened nor added to
# expected-failures.txt (that would wrongly fail them on the subprocess-isolated
# nightly). This is a pre-existing in-process compiler/session-state leak in the
# CPU host-callable downstream path; the exclude is a coverage-stability hack
# until that leak is fixed. Identified locally 2026-07-09.
docs/generated/tests/design/pipeline/06-emit/preludes-included-by-c-and-cuda.slang
docs/generated/tests/design/target-pipelines/hlsl/nvapi-guard-present-without-nv-intrinsic.slang
docs/generated/tests/design/target-pipelines/hlsl/nvapi-guard-with-wave-intrinsic.slang
docs/generated/tests/design/target-pipelines/hlsl/prelude-nvapi-include-conditional.slang
