Decision 01 / Deterministic coreKeep authoritative calculations framework-independent.
Problem: findings and recommendations need to be reproducible and explainable without AI, storage, clocks, or network state.
Decision: parsing contracts, normalized facts, analysis, ranking, and manual recipe construction live in pure PHP packages with explicit evidence, ordering, precision, and ruleset identity.
Why it matters: the same canonical input and ruleset can be tested and compared without Laravel or provider behavior changing the result.
Decision 02 / Format-only intakeAccept deliberate PoB input without fetching or executing it.
Problem: build imports cross a hostile input boundary and can carry ambiguous edition or malformed XML data.
Decision: use bounded, independent PoE1 and beta PoE2 parsers with strict Base64/zlib/XML limits, root-based edition evidence, explicit warnings, and no URL fetch, Lua execution, or client access.
Why it matters: unsupported or ambiguous facts stay visible instead of being silently guessed.
Decision 03 / Policy gateMake external capabilities deny-by-default.
Problem: game data, providers, and external links can change policy or provenance without changing application code.
Decision: every external capability passes an exact Policy and Provenance Gate; missing, ambiguous, expired, or mismatched evidence denies execution.
Why it matters: configuration cannot quietly broaden integrations, and policy decisions are auditable without logging raw user content.
Decision 04 / Workflow persistenceUse an idempotent, encrypted handoff for queued work.
Problem: a queued analysis cannot rely on request memory, and retries must not create a second logical result.
Decision: persist an encrypted raw artifact only for the bounded queue handoff, keep opaque metadata and hashes in PostgreSQL, use owner-scoped idempotency, and delete the raw object after terminal parsing or expiry.
Why it matters: worker retries, duplicate delivery, and deletion remain explicit workflow states rather than hidden side effects.