<feed xmlns='http://www.w3.org/2005/Atom'>
<title>guess-market/api/src/main, branch 1.0</title>
<subtitle>definitely not polymarket
</subtitle>
<id>https://git.sartin.in/guess-market/atom?h=1.0</id>
<link rel='self' href='https://git.sartin.in/guess-market/atom?h=1.0'/>
<link rel='alternate' type='text/html' href='https://git.sartin.in/guess-market/'/>
<updated>2026-08-18T15:19:50Z</updated>
<entry>
<title>Break down purchase receipts by cost/commission, harden XML validation and state I/O</title>
<updated>2026-08-18T15:19:50Z</updated>
<author>
<name>Kostya</name>
<email>mail@sartin.in</email>
</author>
<published>2026-08-18T15:19:50Z</published>
<link rel='alternate' type='text/html' href='https://git.sartin.in/guess-market/commit/?id=755d2265054e5140e82d322681566c3034583c95'/>
<id>urn:sha1:755d2265054e5140e82d322681566c3034583c95</id>
<content type='text'>
Adds a full pre-load validation pass for GM XML seeds (ids, names,
options, commission, LMSR liquidity), replaces IO.print with
System.out, and surfaces detailed error messages across load/save
commands instead of generic failures.
</content>
</entry>
<entry>
<title>Wire event ledger movements, show winning market by name, seed LMSR subsidy</title>
<updated>2026-08-18T09:07:57Z</updated>
<author>
<name>Kostya</name>
<email>mail@sartin.in</email>
</author>
<published>2026-08-18T09:07:57Z</published>
<link rel='alternate' type='text/html' href='https://git.sartin.in/guess-market/commit/?id=9dab2b3d624ecae08439532157fb8b9805fe9274'/>
<id>urn:sha1:9dab2b3d624ecae08439532157fb8b9805fe9274</id>
<content type='text'>
- Event ledger now grows on purchase and shrinks on payout, mirroring
  the exact amounts moved on the buyer's ledger (it previously had a
  Ledger object that nothing ever wrote to).
- Settlement and event-detail views now show the winning market's
  display name instead of its raw key; event details are viewable for
  settled events too (the picker previously excluded anything not
  ACTIVE).
- LMSR events seed their ledger with a SUBSIDY entry for the market
  maker's worst-case loss (b * ln(outcomes)), reusing the existing
  cost() function rather than recomputing the formula.
</content>
</entry>
<entry>
<title>Replace order matching with risk/matching/fulfillment/settlement pipeline</title>
<updated>2026-08-17T11:15:59Z</updated>
<author>
<name>Kostya</name>
<email>mail@sartin.in</email>
</author>
<published>2026-08-17T11:15:59Z</published>
<link rel='alternate' type='text/html' href='https://git.sartin.in/guess-market/commit/?id=13a221ffaefc169d028c7eab6f21ac88052d1d40'/>
<id>urn:sha1:13a221ffaefc169d028c7eab6f21ac88052d1d40</id>
<content type='text'>
Move XML loading infrastructure and models under service/catalog, and
split order execution into a real pipeline: RiskEngine checks the order,
MatchingEngine matches it, FulfillmentContext books the resulting trades,
and SettlementContext resolves winning markets. GuessMarketContext.buyShares
becomes placeOrder(price, quantity), and TradingMechanism.buy now returns
matched trades directly instead of a single TradeExecution.
</content>
</entry>
<entry>
<title>Split DTOs into api/model, extract order matching into service/matching</title>
<updated>2026-08-16T18:50:15Z</updated>
<author>
<name>Kostya</name>
<email>mail@sartin.in</email>
</author>
<published>2026-08-16T18:50:15Z</published>
<link rel='alternate' type='text/html' href='https://git.sartin.in/guess-market/commit/?id=eed9265be711432f40247f149c07f9e33511192a'/>
<id>urn:sha1:eed9265be711432f40247f149c07f9e33511192a</id>
<content type='text'>
Moves Event/Ledger DTOs out of the flat api package into
api/model/{event,ledger}, and moves LocalCatalogContext and order
matching logic into dedicated service/catalog and service/matching
packages, replacing TradingOperation/TradingOperationImpl.
</content>
</entry>
<entry>
<title>Rename Option/Account to Market/Ledger, add Result-based error handling</title>
<updated>2026-08-16T11:55:08Z</updated>
<author>
<name>Kostya</name>
<email>mail@sartin.in</email>
</author>
<published>2026-08-16T11:55:08Z</published>
<link rel='alternate' type='text/html' href='https://git.sartin.in/guess-market/commit/?id=07a7a1cb3e4cfc1580bc05b0a6010a1e9f7e7508'/>
<id>urn:sha1:07a7a1cb3e4cfc1580bc05b0a6010a1e9f7e7508</id>
<content type='text'>
Split GuessMarketContext into a separate CatalogContext for read-only
event listing, wrap fallible operations in Result&lt;T&gt; instead of throwing,
and wire load/save of events and users through a JSON Wrapper.
</content>
</entry>
<entry>
<title>Wire buyShares and menu commands, replace factory interfaces with DI</title>
<updated>2026-08-14T11:02:33Z</updated>
<author>
<name>Kostya</name>
<email>mail@sartin.in</email>
</author>
<published>2026-08-14T11:02:33Z</published>
<link rel='alternate' type='text/html' href='https://git.sartin.in/guess-market/commit/?id=98ebc2b0f6fdde1f7502a35ebe067fb95e5ee336'/>
<id>urn:sha1:98ebc2b0f6fdde1f7502a35ebe067fb95e5ee336</id>
<content type='text'>
Implement LocalGuessMarketContext.buyShares/loadEvents via a new
TradingOperation and Loader, backed by in-memory repositories. Replace
the ConsoleInputProviderFactory/ConsoleOutputProviderFactory pattern
with picocontainer-injected providers, and drive the menu from a list
of MenuCommand implementations instead of a hardcoded printout.
</content>
</entry>
<entry>
<title>Add service module with stubbed LocalGuessMarketContext</title>
<updated>2026-08-13T16:24:24Z</updated>
<author>
<name>Kostya</name>
<email>mail@sartin.in</email>
</author>
<published>2026-08-13T16:24:24Z</published>
<link rel='alternate' type='text/html' href='https://git.sartin.in/guess-market/commit/?id=ae8486da5c542d6af9a2e0f9f7cc39729a055eee'/>
<id>urn:sha1:ae8486da5c542d6af9a2e0f9f7cc39729a055eee</id>
<content type='text'>
GuessMarketContext gained a richer surface (loadEvents/listEvents/
buyShares/closeEvent/account/save-restoreState) backed by new
EventDetailDTO, MarketStateDTO, OptionStateDTO and PurchaseReceiptDTO.
The old engine-module provider implemented the previous shape and is
removed; market.guess.service.LocalGuessMarketContext replaces it as a
stub, each method throwing UnsupportedOperationException pending a
real implementation.
</content>
</entry>
<entry>
<title>Replace EventDTO with richer EventSummaryDTO/TradeRowDTO view models</title>
<updated>2026-08-13T15:52:07Z</updated>
<author>
<name>Kostya</name>
<email>mail@sartin.in</email>
</author>
<published>2026-08-13T15:52:07Z</published>
<link rel='alternate' type='text/html' href='https://git.sartin.in/guess-market/commit/?id=40fa8c52d2afc87c76b2d38566e9920120b2da3c'/>
<id>urn:sha1:40fa8c52d2afc87c76b2d38566e9920120b2da3c</id>
<content type='text'>
Introduce MechanismType and rename CommissionChargeType to
CommissionTiming to better describe LMSR vs order-book events.
LocalGuessMarketContext.GetAllEventsAsync is stubbed pending the new
mapping.
</content>
</entry>
<entry>
<title>Move I/O provider abstraction to ui-console, add ledger/account/problem DTOs</title>
<updated>2026-08-13T15:39:56Z</updated>
<author>
<name>Kostya</name>
<email>mail@sartin.in</email>
</author>
<published>2026-08-13T15:39:56Z</published>
<link rel='alternate' type='text/html' href='https://git.sartin.in/guess-market/commit/?id=9dd3ec7ff11839503e4d5ef6639d0faa21403095'/>
<id>urn:sha1:9dd3ec7ff11839503e4d5ef6639d0faa21403095</id>
<content type='text'>
InputProvider/OutputProvider were api-layer types only ever implemented
by the console UI; relocate them there. Drop the unused
GuessMarketEngine/LocalGuessMarketService pair, flesh out LoadResultDTO
with success/failure variants, and make LocalGuessMarketContext.LoadAsync
report real outcomes instead of an empty placeholder.
</content>
</entry>
<entry>
<title>Move engine contracts to api module, add I/O provider abstraction and PicoContainer wiring</title>
<updated>2026-08-10T20:21:55Z</updated>
<author>
<name>Kostya</name>
<email>mail@sartin.in</email>
</author>
<published>2026-08-10T20:21:55Z</published>
<link rel='alternate' type='text/html' href='https://git.sartin.in/guess-market/commit/?id=9d19a3187789f01d6dbbc73d14c7f90df3e67560'/>
<id>urn:sha1:9d19a3187789f01d6dbbc73d14c7f90df3e67560</id>
<content type='text'>
Relocates GuessMarketEngine/GuessMarketContext into market.guess.api so
engine and ui-console depend on a shared contract instead of engine
internals, and makes context loading async (CompletableFuture). Adds
InputProvider/OutputProvider interfaces with console implementations,
wires the console app's Menu through a PicoContainer, and adds the
generated model classes plus vendored picocontainer jar needed to build it.
</content>
</entry>
</feed>
