Add POST …/__dev/quest-fixture to mark quests completed without reward
delivery; wire Bruno pre-request and CI flag. Multi-rule AND unit test,
README notes, gate deny comment, review strikethroughs.
Evaluate FactionGateRule rows before TryActivate; deny with faction_gate_blocked
when standing is below minStanding. Integration and Bruno deny smoke included.
Cross-link E7.M1 doc to E7M3 five-quest roster; remove dead
_prototype_e7m1_quest_gate; add faction standing-band CI gate;
clarify server roster error strings; grid-contract loader test asserts.
Add two prototype factions, extend quest bundles with reputationGrants
and factionGateRules, freeze five-quest roster in validate_content.py,
and sync minimal server quest roster parity for green startup tests.
Rename freeze-first loader tests, add PrototypeE7M2QuestCatalogRulesTests
for cross-ref paths, align missing skill-def error with Python, and
document bundle schema path resolution in server README.
Register bundle JSON Schemas, parse bundle DTOs on QuestDefRow, and run
E7M2 prototype gates (presence, freeze table, cross-ref, mission_reward)
with skill catalog input from DI.
Document quest_start, quest_step_complete, quest_complete, and quest_accept_denied
anchors for future E9.M1 ingest with README, manual QA, and module doc updates.
Wire QuestStateOperations.TryAccept at POST /game/players/{id}/quests/{questId}/accept
with shared quest row projection, integration tests, and Bruno accept flows.
Add QuestObjectiveWiring with auto step advance/complete, hook into
GatherOperations, CraftOperations, EncounterCompletionOperations, and
QuestStateOperations accept/advance for inventory_has_item checks.
Add CanWritePlayer to IPlayerQuestStateStore and check before
prerequisite gate; map TryActivate/TryAdvanceStep store failures
from progress snapshots instead of always unknown_player.
Align test DI resolution with encounter pattern, add unknown_quest
advance/complete tests, catalog quest id constants, refactor
TryMarkComplete readability, and update decomposition docs.
Fix persistence test AAA layout, empty-id denial theory, frozen id constants,
Postgres rollback/JSONB read, XML doc cref, README Bruno link, and review doc.
Introduces IPlayerQuestStateStore (in-memory + V008 Postgres), QuestStepState
snapshots, DI wiring, AAA unit tests, and docs for E7M1-05 before NEO-117 ops.
Recipe and reward-table loaders registered schemas without locking,
corrupting SchemaRegistry.Global when xUnit spun up multiple
WebApplicationFactory hosts concurrently in CI.