9c33582412
Not the endpoint yet — the bigger knowledge lever first. The Advisor can say "I need 5 answers" but does not yet decide what it can find out by ITSELF. The Silent Knowledge Pass runs in front of the Advisor and, from signals existing scanners/parsers already produce (website, repository, documents, product data), deterministically derives capabilities the company demonstrably HAS + product facts that drive scope — so every recognised item shrinks the delta and removes a question. compliance/onboarding/silent_intake.py: silent_intake(signals, signal_map) -> detected_capabilities (+ evidence already in hand) + product_facts. The signal->conclusion map is curated DATA (knowledge/onboarding/intake_signal_map.yaml), signals are injected (scanners are upstream). Pure, deterministic, no LLM. advisor_start gains detected_capabilities (folded into the profile at HIGH confidence -> covered, not asked) and an auto_detected result + headline. The experience flips from a question wall to "we already recognised 4 capabilities, 2 product facts and have 4 pieces of evidence in hand — only these few remain". Order now: Silent Pass -> #58 endpoint/frontend -> #59 empirical loop. NOT new architecture, just an orchestration step in front. Non-runtime (no app caller) -> no deploy. 15 onboarding tests pass, mypy --strict clean, check-loc 0.
65 lines
1.6 KiB
Python
65 lines
1.6 KiB
Python
"""Smart Onboarding Advisor — the onboarding runtime step (orchestration over existing engines).
|
|
|
|
Turns (company + products + certifications + target) into inferred assumptions, the next best questions
|
|
(<=5, each self-explaining), the capability delta, top measures, evidence requests and completeness —
|
|
with NO sales interpretation and NO regulation picking. Orchestrator only: no new engine/registry/
|
|
meta-model; certificate->capability hypotheses and target requirements are INJECTED.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from .engine import advisor_start, apply_answer
|
|
from .hypotheses import (
|
|
CapabilityHypothesis,
|
|
inferred_hypotheses,
|
|
resolve_for_certifications,
|
|
)
|
|
from .observations import (
|
|
Observation,
|
|
ObservationType,
|
|
empirical_confidence,
|
|
empirical_distribution,
|
|
reviewed,
|
|
)
|
|
from .silent_intake import (
|
|
DetectedCapability,
|
|
IntakeSignal,
|
|
ProductFact,
|
|
SignalMapping,
|
|
SilentIntakeResult,
|
|
silent_intake,
|
|
)
|
|
from .schemas import (
|
|
AdvisorMeasure,
|
|
AdvisorQuestion,
|
|
AdvisorResult,
|
|
InferredAssumption,
|
|
OnboardingInput,
|
|
RejectedAssumption,
|
|
)
|
|
|
|
__all__ = [
|
|
"advisor_start",
|
|
"apply_answer",
|
|
"OnboardingInput",
|
|
"AdvisorResult",
|
|
"AdvisorQuestion",
|
|
"AdvisorMeasure",
|
|
"InferredAssumption",
|
|
"RejectedAssumption",
|
|
"CapabilityHypothesis",
|
|
"inferred_hypotheses",
|
|
"resolve_for_certifications",
|
|
"Observation",
|
|
"ObservationType",
|
|
"empirical_distribution",
|
|
"empirical_confidence",
|
|
"reviewed",
|
|
"silent_intake",
|
|
"IntakeSignal",
|
|
"SignalMapping",
|
|
"DetectedCapability",
|
|
"ProductFact",
|
|
"SilentIntakeResult",
|
|
]
|