90e0a57799
CI / detect-changes (pull_request) Successful in 5s
CI / branch-name (pull_request) Successful in 1s
CI / guardrail-integrity (pull_request) Successful in 4s
CI / secret-scan (pull_request) Successful in 6s
CI / dep-audit (pull_request) Failing after 55s
CI / sbom-scan (pull_request) Failing after 58s
CI / build-sha-integrity (pull_request) Successful in 6s
CI / validate-canonical-controls (pull_request) Successful in 4s
CI / loc-budget (pull_request) Successful in 18s
CI / go-lint (pull_request) Successful in 41s
CI / python-lint (pull_request) Failing after 13s
CI / nodejs-lint (pull_request) Failing after 1m4s
CI / nodejs-build (pull_request) Successful in 3m0s
CI / test-go (pull_request) Successful in 58s
CI / iace-gt-coverage (pull_request) Successful in 14s
CI / test-python-backend (pull_request) Successful in 25s
CI / test-python-document-crawler (pull_request) Successful in 13s
CI / test-python-dsms-gateway (pull_request) Successful in 10s
The existing NIST corpus (SP 800-82r3 etc., ingested before source_class tagging) was classified supervisory_guidance because "NIST" sat in guidanceMarkers, so the control-intent lift (#36) could never surface it. Add a technical_standard class: - authority.go: new standardMarkers (NIST/OWASP/Grundschutz/ISO 27001/CSA CCM/CIS), checked before guidanceMarkers (so "BSI Grundschutz" -> standard, not BSI guidance); move NIST out of guidanceMarkers; sourceClassFromWeight maps weight 80 -> standard. - authority_rerank.go: the intent-lift path (liftAboveBinding + bestBindingSemantic) now classifies via classifyAuthority instead of trusting the raw payload source_class, so the untagged legacy corpus is recognized — untagged NIST is now lifted on a control question ("Welche Controls passen zu Security Updates?"). Tested: classifier cases for NIST/Grundschutz/weight-80, and an untagged-NIST lift case. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>