/** * Heuristic mapping from span context (name + attributes) to framework * article claims. Customers who care about precise tagging supply their * own tagger via `AttestryExporterConfig.frameworkTagger`; this * default is intentionally conservative. * * Conservative ⇒ when in doubt, return `[]` (no claim). Over-tagging * is worse than under-tagging because every claim becomes part of the * canonical hash and the customer's audit narrative. * * Mapping rules (in priority order — first match wins per category): * * 1. **Classification / risk-categorization** * - `ai.operation === "classification"` OR span name contains * "classify" → EU AI Act Article 6 (high-risk classification * rules), NIST AI RMF MAP-1.1. * * 2. **LLM completion** * - `ai.operation === "completion"`, `gen_ai.operation.name === "chat"`, * OR span name contains "llm"/"completion" → EU AI Act Article 50 * (transparency obligations for general-purpose AI), NIST AI RMF * MEASURE-2.7. * * 3. **Tool / function call** * - `tool.name` set OR span name contains "tool" → EU AI Act * Article 14 (human oversight — tool calls are oversight * chokepoints), ISO 42001 § 8.4. * * 4. **Policy evaluation** * - `policy.outcome` set OR span name contains "policy" → EU AI Act * Article 9 (risk management system), NIST AI RMF GOVERN-1.4. * * 5. **Retrieval / RAG** * - Span name contains "retrieval"/"rag" OR `vector_db.*` attrs * set → ISO 42001 § 8.2 (data quality), NIST AI RMF MEASURE-2.10. * * Spans matching none of the above return `[]`. The exporter still * records them as decisions if `shouldRecordAsDecision` returned true — * the framework tags are advisory metadata, not the determining factor. */ import type { FrameworkClaim, SpanFrameworkContext } from "./types.js"; export declare function tagWithFrameworks(ctx: SpanFrameworkContext): FrameworkClaim[]; //# sourceMappingURL=framework-tagger.d.ts.map