/** * Slice `b1-filesplit-campaign` (wave 3) — verbatim extraction of the comment / * vocabulary-member machinery from `./promotion-artifact-evidence.ts` so that * module clears the 300 raw-line cap. These are the declarations the hard-floor * reader is built ON (comment masking, comment spans, the member shape, the * by-literal merge and the memory-citation pattern); the reader itself * (`collectMembers` / `vocabularyMembers` / `hardFloorFailure`) stays where it * was, importing these. No body, doc comment or regex changed. */ /** Comments are blanked to spaces, which keeps every offset in the file valid. */ export declare function maskComments(text: string): string; export type CommentSpan = { start: number; end: number; text: string; }; export declare function commentSpans(source: string): CommentSpan[]; export type VocabularyMember = { literal: string; doc: string; /** * R10: does this member sit in the declaration that ENFORCES — the * `HARD_FLOOR_CATEGORIES` array `isHardFloorCategory` reads? A member of the * `HardFloorCategory` union alone is a type; it pauses nothing, so it is not * evidence that a rule is a hard floor. */ enforcing: boolean; }; /** * R10 — one entry per literal, and `enforcing` is only ever set by the array. * * Reading the two declarations as one flat member list let a member of the * `HardFloorCategory` union ALONE satisfy this check while * `isHardFloorCategory` — and therefore `shouldPauseAtGate` — did not recognise * it. The gate reported BACKED for a hard floor that paused nothing. Splitting * the provenance of `enforcing` out of the member list is what makes the two * agree: what the predicate accepts is exactly what the array contains. * * The docs are joined across occurrences rather than kept per-declaration, * because a category's doc belongs to the CATEGORY. This repo's own layer-C * promotion cites `.peaks/memory/2026-06-28-full-auto-boundary.md` from the * comment beside the UNION member of `commit-boundary-side-effect`, while the * ARRAY is what enforces it; reading the doc from one declaration only would * make that citation unreadable — a false negative on a file already known good. */ export declare function mergeByLiteral(members: readonly VocabularyMember[]): VocabularyMember[]; export declare function citedMemories(doc: string): string[];