Network-isolated tests
Every unmocked fetch fails in automated tests, so canonical verification cannot spend Riot or model credit.
Engineering dossier
LeagueLoop treats AI as one bounded transformation inside an observable pipeline. This page exposes the architecture and proof normally discovered through a public repository.
← Return to the coaching reportData flow
External data becomes evidence before the model sees it, then deterministic validation stands between generated coaching and the player.
Execution trace
The diagram defines ownership. This trace connects each boundary to behavior a reviewer can inspect or test.
Accept local, credential-backed review requests
Reject non-local traffic before parsing or external work.
Validate → normalize
Transport, timeout, schema, and cancellation paths are covered by boundary tests.
Derive → score → keep ≤ 12
Candidate IDs and rankings are deterministic for a stored packet.
Attach applicable, patch-matched claims
Packet validation rejects inactive or out-of-scope knowledge IDs.
One call → validate → fail closed
The provider sets retries to zero; structured-output tests reject unsupported references.
Accepted review → browser + PDF
The report projection excludes intake identity, source match ID, and provider metrics.
Safety contract
These are enforced constraints, not instructions that the model is trusted to remember.
Allowlisted projection + runtime schemaOutput validator rejects foreign referencesPacket builder + output validatorRoute guards + provider retries: 0Formatter + prose validationBundled report + route artifact checksEngineering evidence
The portfolio case is strongest when implemented safeguards and unfinished production work are equally visible.
Every unmocked fetch fails in automated tests, so canonical verification cannot spend Riot or model credit.
Validation rejects facts imported from another candidate or cited outside the candidate time window.
The model can cite only active claims selected for the exact candidate before generation.
The export receives a strict report projection rather than subtracting sensitive fields from application state.
The hosted artifact replays the accepted Talon-versus-Zed report without external calls or writes.
Durable multi-user storage, arbitrary account review, abuse protection, and production API access are not implemented.
Decision records
Structured match data establishes facts; the model only prioritizes and explains bounded evidence.
Replay-dependent moments cannot crowd out metadata-supported adjustments.
Each strategic claim is bound to the candidates it may support before generation.
The portfolio surface replays an accepted report without widening the private credential boundary.
Failure behavior
0Demonstrated0Demonstrated0Demonstrated1 attemptedDemonstratedNo duplicateDemonstratedNext release boundary
These are release gates, not implemented capabilities.
Bind every generated review to a verified user and an explicit access policy.
Store durable review state with ownership, retention, and deletion rules.
Add request quotas, rate limits, idempotency, monitoring, and a hard cost ceiling.
Reverify Riot production access, policy, patch behavior, and operational failure handling.
Selected implementation proof
lib/coaching/schema.tsif (!candidate?.evidenceIds.includes(evidenceId)) {
throw new Error(
`Opportunity ${opportunity.candidateId} cited evidence`,
);
}
if (!candidate?.applicableKnowledgeIds.includes(knowledgeId)) {
throw new Error(
`Opportunity ${opportunity.candidateId} cited knowledge`,
);
}Condensed validator logic: generated evidence and knowledge references must belong to the selected candidate.
talon-review-validator-v2Internal: window_s: [460, 560]
Player: 7:40–9:20
Raw elapsed seconds never enter
advice, titles, or labels.Numeric seconds remain available for deterministic checks, while the renderer enforces recognizable game time.