You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add a guided, interactive skill (and the --output-profile flag it would
wrap) that takes a user from .xlsx + "what are you actually trying to do?"
to only the artifacts that use case needs — instead of always running the
full, expensive per-sheet engine emit.
Motivation
Regenerating two ~80 MB PE-platform models for the engine-integration consumer
(the "Mippy request" tracked in ROADMAP.md) made something concrete: the most expensive artifact to generate is often the least-needed one.
A downstream integration (a build-time engine contract for a production app)
typically consumes only the slim contract:
_ground-truth.json (compact)
named-outputs.json / named-inputs.json
cell-types.json
manifest.json
…and then runs its own returns/waterfall math (the delta-cascade path), or
just spot-checks baseCaseValue on import to fail the build on drift. It rarely
imports the giant transpiled per-sheet modules at all.
Yet those per-sheet modules are exactly what the slow tail of ete init spends
its time (and memory) producing — hundreds of MB, dominated by one or two huge
sheets. Today users only discover this after waiting through the full emit and
then using ~1% of the output. There's currently no knob to skip the module emit
(only --emit-debug, which adds more).
Proposal
1. A first-class --output-profile on ete init:
Profile
Emits
For
contract
ground truth (compact) + named-outputs/inputs + cell-types + manifest. Skips the per-sheet engine module emit entirely.
Wiring the model into a downstream app at build time
analysis
manifest + ground truth + CLI-readable artifacts (summary/scenario/sensitivity), no debug
The contract profile is the important one: the named maps' baseCaseValue
comes from ground truth, not from running the engine, so we can produce the
entire downstream contract without emitting the per-sheet modules — cutting
the dominant cost for the most common production consumer. (Ties into the
parser/emitter perf issue.)
2. A guided skill (ete create, or a Claude Code skill) that:
Asks what the user wants — one-shot analysis & scenarios? a build-time
engine-integration contract? full offline recompute?
Picks the matching --output-profile + flags for them.
Walks init → manifest doctor → validate, then prints a copy-paste integration block: how to read the named maps, fail the build on a baseCaseValue mismatch, and drive what-ifs via named-inputs affectsOutputs (invalidate only affected outputs).
Surfaces "model-owner question" cases — e.g. a base-case output that is
legitimately 0 (the MIP-gating case, request feat: scenario analysis CLI (V3) #7) — so a consumer doesn't
mistake faithful reproduction for a bug.
Acceptance
A new user goes from .xlsx + "I'm wiring this into a downstream app" to the
validated slim contract set plus an integration snippet, without ever
generating or waiting on the full per-sheet engine modules.
ete init --output-profile contract is documented in the README and exercised
by a test.
Notes
There's already a skill/SKILL.md (PE language → CLI translation); this is a
complementary onboarding/scaffolding skill focused on scoping the output to
the goal, not on querying an already-built model.
Summary
Add a guided, interactive skill (and the
--output-profileflag it wouldwrap) that takes a user from
.xlsx+ "what are you actually trying to do?"to only the artifacts that use case needs — instead of always running the
full, expensive per-sheet engine emit.
Motivation
Regenerating two ~80 MB PE-platform models for the engine-integration consumer
(the "Mippy request" tracked in
ROADMAP.md) made something concrete: themost expensive artifact to generate is often the least-needed one.
A downstream integration (a build-time engine contract for a production app)
typically consumes only the slim contract:
_ground-truth.json(compact)named-outputs.json/named-inputs.jsoncell-types.jsonmanifest.json…and then runs its own returns/waterfall math (the delta-cascade path), or
just spot-checks
baseCaseValueon import to fail the build on drift. It rarelyimports the giant transpiled per-sheet modules at all.
Yet those per-sheet modules are exactly what the slow tail of
ete initspendsits time (and memory) producing — hundreds of MB, dominated by one or two huge
sheets. Today users only discover this after waiting through the full emit and
then using ~1% of the output. There's currently no knob to skip the module emit
(only
--emit-debug, which adds more).Proposal
1. A first-class
--output-profileonete init:contractanalysiseteCLIfull--emit-debugThe
contractprofile is the important one: the named maps'baseCaseValuecomes from ground truth, not from running the engine, so we can produce the
entire downstream contract without emitting the per-sheet modules — cutting
the dominant cost for the most common production consumer. (Ties into the
parser/emitter perf issue.)
2. A guided skill (
ete create, or a Claude Code skill) that:engine-integration contract? full offline recompute?
--output-profile+ flags for them.init → manifest doctor → validate, then prints a copy-pasteintegration block: how to read the named maps, fail the build on a
baseCaseValuemismatch, and drive what-ifs via named-inputsaffectsOutputs(invalidate only affected outputs).legitimately
0(the MIP-gating case, request feat: scenario analysis CLI (V3) #7) — so a consumer doesn'tmistake faithful reproduction for a bug.
Acceptance
.xlsx+ "I'm wiring this into a downstream app" to thevalidated slim contract set plus an integration snippet, without ever
generating or waiting on the full per-sheet engine modules.
ete init --output-profile contractis documented in the README and exercisedby a test.
Notes
There's already a
skill/SKILL.md(PE language → CLI translation); this is acomplementary onboarding/scaffolding skill focused on scoping the output to
the goal, not on querying an already-built model.