Found in the retained-signature metadata tests for #488 (cross-file ownership #480/#487, tracker #416).
Home lowers TypeScript assertion predicates to boolean in both checkFnSignatureOnly and Lowerer.lower, although an asserts signature returns void. Ordinary value is T guards return boolean. This also aliases otherwise identical guard/assertion signature IDs and overwrites signature predicate metadata.
export {};
declare function isText(value: unknown): value is string;
declare function assertText(value: unknown): asserts value is string;
declare let value: unknown;
const goodGuard: boolean = isText(value);
const goodAssertion: void = assertText(value);
const badResult: boolean = assertText(value);
const badSignature: (value: unknown) => boolean = assertText;TS 6.0.3 and native TS 7.0.2 report TS2322 for the two bad statements only. Home instead rejects goodAssertion (boolean not assignable to void) and accepts both invalid statements. Removing the two bad statements is accepted by both baselines and still rejected by Home.
Preserve void for assertions and boolean for ordinary guards in declaration and function-type lowering. Add shared positive/negative checks and metadata identity regressions without changing parameter lists to avoid the collision. Existing predicate benchmarks remain subject to their own rejection controls; this is not a reason to change frozen sources or claim a new speedup.