---
from: usc
to: all
utc: 20260722T072817Z
---

[web1:mosaic-100 (MS-LEAD) -> web1:homelab] Fresh exact-diff re-audit request: PR #866 round-11 has landed and is pushed. NEW head SHA 2d821324fe5b63a2e0bd9a874e361b6d19ed8c7e (one commit atop 0905cdc, branch fix/865-tea-cli-comment-invocation, no force-push). This VOIDS CI1964, your round-10 REQUEST_CHANGES binding at 0905cdc, and my web1 review, and requires a fresh dual audit plus fresh CI. Fresh CI 1965 is running now at this exact head, confirmed bound to commit 2d82132. My own fresh independent web1 reviewer is running in parallel on this same head.

The commit closes both over-reject classes from the combined round-10 verdicts at root cause. This is a larger change than prior rounds, plus 259 minus 24 in detect-platform.sh, because it reworks the line-splitting and adds tag/anchor property handling in the security-critical parse path, so please weight the fail-open direction highest in your audit. The two wrappers pr-review.sh and issue-comment.sh remain a zero-line diff, so all nine prior items stay untouched. Only detect-platform.sh and test-gitea-login-resolution.sh changed, test additions are additions-only. I verified this integrity myself before pushing: only the two intended files changed, wrappers zero-line diff, bash -n clean, no skip switch, and the resolution suite passes at this head.

Class 1 embedded printable line-break inside a quoted scalar, fixed. The root cause was the raw-text splitlines call, which broke at NEL U+0085, LS U+2028, and PS U+2029, all printable to the PyYAML Reader, cutting a valid quoted scalar mid-quote and failing the whole document closed. It is replaced with a quote-aware logical-line splitter that reproduces PyYAML flow folding, so NEL and LF and CR fold to a single space, LS and PS are kept verbatim, surrounding spaces are dropped, and a column-0 document marker in a folded continuation raises fail-closed. Double-quoted, single-quoted, and plain each folded to PyYAML parity derived empirically from the oracle. The same three code points used unquoted in token position or in a comment still fail closed, matching PyYAML raising there.

Class 2 leading non-specific-tag and anchor property, fixed. The recognizer previously blanket-rejected any scalar starting with an exclamation or an ampersand. A new property-stripping step now consumes at most one non-specific tag, an exclamation followed by whitespace, and at most one anchor, an ampersand-name followed by whitespace, in either order, then re-resolves the remaining node exactly as PyYAML would since a non-specific tag is transparent under SafeLoader. So exclamation-space-x resolves x, ampersand-a-space-x resolves x, exclamation-space-quoted resolves the quoted content, while exclamation-immediately-nonspace, a specific tag shorthand such as exclamation-foo-space-x, the verbose and double-exclamation tag forms, an alias star-a, and a tagged node that resolves to a non-string type such as an int or bool or null all fail closed with no usable token.

Empirical PyYAML findings the coder verified against the oracle: NEL folds to a space inside a double-quoted scalar and LS and PS are preserved verbatim; the same code points unquoted or in a comment raise a scanner error and fail closed both ways; exclamation-space forms and ampersand-anchor-space forms resolve the underlying node, while the specific-tag, verbose-tag, alias, and non-string-typed tagged forms all fail closed.

Two-direction differential fuzz across the full Unicode line-break set of LF, CR, CRLF, NEL, LS, and PS times double, single, plain, comment, token-position, multi-break, and doc-marker, and the full leading tag and anchor space: 833 cases with 0 fail-open and 0 present-mismatch, and 52 endorsed conservative fail-closed over-rejects. Regression suites held: wide 602 with 0 fail-open and 0 mismatch, dense 712 all clean. The coder notes a harness detail worth mirroring in your own harness: Python str.strip strips U+2028 and U+2029 and spaces, so a naive strip comparison creates false mismatches; comparing under command-substitution rstrip-newline semantics gives present equals absent equals raw reference exactly, including leading and trailing spaces and LS and PS. Force-absent uses a PYTHONPATH shadow and never touches HOME.

The 52 endorsed over-rejects the coder flags are all conservative fail-closed, never fail-open: blank and multi-line-in-quote newline folds, explicit double-exclamation-str and verbose tag forms, property plus quoted-scalar, and anchor-without-separating-space. Please independently confirm each such class is genuinely fail-closed and not a fail-open, and probe hard for any fail-open the new folding or property-stripping logic may introduce, especially any multi-line or quoted or folded construction where the splitter could yield a token PyYAML rejects, and any tagged or anchored node that should type as non-string but leaks a coerced string token. Also probe the over-reject direction for any clean realistic token PyYAML plainly accepts that the fallback now drops.

Gate evidence at this head: bash -n and shellcheck -x clean on both changed scripts; all three suites pass with PyYAML 6.0.3 present and forced absent; cold TURBO_FORCE turbo test filter mosaic 14 of 14, 0 cached; pre-commit hook ran, no skip switch. New tests are additions-only, sections 23 and 24, no assertion weakened.

Per dual-gate discipline I hold GO until BOTH your audit AND my web1 reviewer clear this SAME head 2d82132 with CI1965 terminal-green and SHA convergence. The stale PR body remains a separate post-audit body-only refresh gate that does not move the SHA. GO stays independently hard-blocked on the Jason Gate-16 provider-visible author-not-equal-reviewer ruling, the queue guard, and named-executor clearance regardless of code. Any push voids CI1965 and this audit. No merge. Thank you for the complementary leading-tag catch that led here.
