Probe: what recipe data is Eco Gnome actually giving us today? (de-risks #98 follow-up A) #105
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
De-risk the recipe/pricing roadmap (#98, follow-ups A-E) by establishing exactly what recipe data Eco Gnome is actually giving us today, versus what is still aspirational. Follow-up A (the keystone recipe ingest) cannot be scoped for real until this is answered. This is a research / consult probe.
Background
The #98 design assumed a bespoke Eco
RecipeManagerexporter, then the director correction pointed out Eco Gnome is itself a recipe exporter - so A should ingest Eco Gnome's output. But whether that output is reachable now is unconfirmed: the current integration is only a homepage link-out to eco-gnome.com (Home.tsx), and the self-host + DataExporter path (#40,coilyco-bridge/deploy/services/eco-gnome) is blocked on kai-server mod-ops (ward#585 / eco-ops#30). Readdocs/calculator.mdand #40 first.Questions to answer concretely
ecocraft/eco_gnome_data.json(vanilla recipe/item data in the eco-gnome image): what is its shape, and is it usable as a seed for eco-app's own/preview/recipes.jsonwithout the mod being installed at all?coilyco-bridge/deploy/services/eco-gnome/eco-gnome.coilysiren.meactually deployed and running? If so, does its Postgres or any app endpoint expose recipes we could read directly? (The advisor holds the tailnet + AWS live-observe set - check the live service, do not guess.)Deliverable
Post a comment on this issue stating available-now vs blocked, the recommended concrete source for A, and any newly-discovered blocker worth its own issue. No code change - this is a probe that unblocks A's scoping.
🔎 ward agent advisor
ward agent advisor --driver clauderan a one-shot standard research pass on this question:Probe result: what Eco Gnome recipe data we can get today
Bottom line up front: Follow-up A can start now. The keystone seed for
/preview/recipes.jsonis the vanillaecocraft/eco_gnome_data.jsonbundled in the eco-gnome-website repo/image - a complete, well-structured recipe graph (1,453 recipes, 1,526 items, 43 skills, 142 tags) in exactly the same schema the DataExporter mod emits. So A is not blocked; only server-accurate (modded) numbers are blocked, and they arrive as a drop-in replacement of the same file later. Do not target the self-hosted DB - it exposes no readable recipe endpoint and currently holds no Sirens data.1. What eco-gnome-mod's DataExporter dumps (fields / serialization / delivery)
Serialization: a single JSON file,
eco_gnome_data.json,Newtonsoft.Jsonindented (DataExporter.ExportAll->File.WriteAllText("eco_gnome_data.json", ...)).Delivery: written to the Eco server root folder on disk, automatically on server start and on-demand via
/EcoGnome export(admin chat command). It is not HTTP-pushed - the mod'sEcoGnomeApi.csonly calls the website for server/user registration and price sync (register-server,register-user,user-prices,categories-items-v2), never to upload recipe data. Getting the file into a website instance is a separate step (the website'sPOST /api/server/upload-data?apiKey=or its in-app ImportData path).Top-level shape:
{ Version, Skills[], Items[], Tags[], Recipes[] }.Recipe fields (
RecipeExported, confirmed against both the mod source and the bundled file) - every field #98/A wanted is present:Name,FamilyName(variant family - sibling recipes share it;IsDefaultflags the canonical one),LocalizedName(24 languages)Ingredients[]andProducts[]- each{ ItemOrTag, Quantity: { BaseValue, Modifiers[] } }(ingredients+quantities and products+yields, tag-or-item aware)CraftingTable(station item name),RequiredSkill+RequiredSkillLevelLabor- a DynamicValue whoseBaseValueisrecipeFamily.LaborInCalories, i.e. labor cost = calories (they are the same field in Eco; there is no separate calorie number)CraftMinutes- craft time, a DynamicValueIsBlueprint,IsDefaultModifiers[]on Quantity/Labor/CraftMinutes carry Skill/Module/Talent dynamic effects ({DynamicType, Item, ValueType}), so speed/labor/yield bonuses are captured for accurate pricing.Skill fields:
Name,LocalizedName,MaxLevel,LaborReducePercent[](per-level),Talents[].Item fields: lean -
Name,LocalizedName,FuelCalories(all crafting detail lives on recipes).Tag fields:
Name,LocalizedName,AssociatedItems[](resolvesItemOrTagingredients to concrete items).Gap to note for A: there is no explicit "table tier" field - tier is inferable from
CraftingTable+RequiredSkillLevel, not first-class.2. The bundled
ecocraft/eco_gnome_data.json- shape and seed-viabilityYes, it is directly usable as a seed with no mod installed. It sits at
ecocraft/eco_gnome_data.jsonin eco-gnome-website (6.3 MB), is baked into the published image, and is fetchable raw (https://raw.githubusercontent.com/Eco-Gnome/eco-gnome-website/master/ecocraft/eco_gnome_data.json-> HTTP 200, 6,293,819 bytes). It is the identical schema the mod produces (sameExportedDatarecord:Skills/Items/Tags/Recipes), so ingest code written against it is forward-compatible with the eventual modded export - the later swap changes only the contents, not the parser.The one caveat that matters for scoping: this bundle is vanilla base-game data. Sirens' server is "highly modded" (20+ mods: Biochemist, Animal Husbandry, Greenhouses, BunWulf Agricultural/HardwareCo, Librarian, ...). The vanilla seed will omit every modded recipe/item and any modded stat changes. Fine for building and demoing A's pipeline; not server-accurate until Phase 2.
3. The self-hosted instance (live check over the network)
It IS deployed and serving.
https://eco-gnome.coilysiren.meresponds withserver: Kestreland a Blazor app (405to HEAD on/,400with query params) - a live ASP.NET Core / .NET 9 process, not a placeholder. The deploy slot (coilyco-bridge/deploy/services/eco-gnome) pinsghcr.io/eco-gnome/eco-gnome-website@sha256:7b6ded5e...with apostgres:17sidecar.But it is not a usable recipe source for A:
/api/eco/server-prices,/api/eco/user-prices,/api/eco/categories-items-v2) return prices only -{Name, MinPrice, DefaultPrice, MaxPrice}style. Recipes/items/skills go in (viaPOST /api/server/upload-dataor the Blazor ImportData UI) and never come back out over HTTP. Reading them would mean querying Postgres directly, which is a ClusterIP service (not tailnet-exposed) - a much heavier coupling than parsing a static JSON.GET /api/eco/server-prices?ecoServerId=testreturns "Can't find server. Did you register your server..." - no Eco server is registered against it, so at best it contains the vanilla seed, the same data we can read straight from the bundle.4. The DataExporter mod on kai-server
Not installed / still gated. The live game server (
eco.coilysiren.me,0.13.0.4) advertises "20+ mods" but does not list EcoGnome/DataExporter among them, and bothdocs/calculator.md(Phase 2) and the deploy README state the modded export waits on the eco mod-ops pipeline, ward#585 / eco-ops#30. Nothing observed contradicts that - treat the modded export as still blocked.5. Bottom line for follow-up A
eco_gnome_data.json(fetch raw / vendor a copy)Recommendation for A: target the bundled
eco_gnome_data.jsonschema as the ingest contract and seed/preview/recipes.jsonfrom it now (vendor a pinned copy in-repo, or fetch at build - it's MIT, ~6 MB, keep the attribution already recorded in the deployATTRIBUTION.md). Because the mod emits the identical shape, A's parser needs no rework when Phase 2 lands - the modded file simply replaces the vanilla one, and only then does A gain Sirens' modded recipes. A does not need to wait on ward#585 / eco-ops#30; that dependency only upgrades the data from vanilla to server-accurate, not the code.No new blocker discovered that warrants its own issue. The only follow-up is the same-repo doc correction noted in (3) - fold it into A's PR or a trivial docs touch-up, not a separate tracked issue.
Researched and posted automatically by
ward agent advisor --driver claude(ward#179). This is one-shot research, not a carried change - verify before acting on it.— Claude (she/her), via
ward agent