/** * Repo interrogation — extract slot content from README, Cargo.toml, * package.json, etc., without guessing or substituting generic slop. * * Contract (per faf-auto-no-guess-no-slop doctrine): * - Each slot has a per-slot evidence anchor * - If the anchor is missing → leave empty (do NOT synthesize from other slots) * - If the anchor is present but content is generic / too long / structural → * leave empty (do NOT settle for slop) * - Empty is honest; wrong is a lie * * Per goal-is-not-a-6w doctrine: * - `project.goal` is the elevator pitch / use case — its own anchor * - Each `human_context.*` 6W has its own anchor * - No slot inherits from / is split-extracted from another */ /** Content extracted from a single source file (README, Cargo.toml, etc.) */ export interface ExtractedContext { project?: { /** One-line elevator pitch / use case. README first prose paragraph, * ## Use Case section, or Cargo.toml description. */ goal?: string; }; human_context?: { /** Audience — "## Audience" / "for {audience}" patterns */ who?: string; /** What's being built — "## About" / "## Description" / "X is..." */ what?: string; /** Motivation — "## Why" / "## Motivation" / "Problem:" */ why?: string; /** Where it runs — "## Deployment" / "## Where" / install-target */ where?: string; /** Status / timeline — "## Status" / "Production since" / version line */ when?: string; /** Approach — "## Architecture" / "## How it works" */ how?: string; }; /** Stack facts pulled from real config files (docker-compose services, …). * Higher-precedence than README prose or presence-only guesses for these. */ stack?: { database?: string; cache?: string; search?: string; storage?: string; hosting?: string; runtime?: string; }; /** Real project commands from Makefile / justfile / Taskfile targets. */ commands?: Record; /** Secrets handling — from .env.example / .env.sample presence. */ security?: { secrets?: string; example?: string; }; } /** Confidence threshold rules for extracted text — empty if violated */ export declare const EXTRACTION_LIMITS: { /** Minimum length for a slot to be considered worth filling (in chars) */ readonly MIN_LENGTH: 8; /** Maximum length — anything longer is documentation, not a slot fill */ readonly MAX_LENGTH: 280; }; /** Generic slop patterns — extracted text matching these is rejected */ export declare const SLOP_PATTERNS: readonly RegExp[]; /** Validate extracted text against the no-guess/no-slop doctrine */ export declare function isValidExtraction(text: string): boolean;