How to use it
Three steps to a build you are working towards.
1 Open the Ships tab. Your fleet is already there.
2 Open one and change a module.
3 Accept the plan, and it lands on your checklist.
! The one that stops people.
Why it works this way
Your fleet, the hulls you mean to buy, and one build per ship.
1 The build owns what. The checklist owns when.
2 Changing your mind about a slot is an edit.
3 You can plan a ship you have not bought.
Buying the hull is the plan's first step rather than something you have to do before planning at all — which is also why a hull you own is a derived line and one you only intend is an authored one. That is the same rule the checklist draws, because it is the same rule.
The details
Your fleet, the hulls you intend to buy, and one build per ship.
Ask for it
“what have I planned” “plan grade 5 dirty drives on the thrusters” “plan an overcharged multi-cannon on the third hardpoint of my Corsair” “put that on my checklist”
The first and the last need no AI configured at all.
The plan owns what. The checklist owns when.
These are two different questions and Directive 47 keeps them apart:
- A build is what a ship should be. It lives in
data/ships.json, it has one entry per slot, and changing it disturbs nothing else. - Your checklist is what you are working on next, in the order you put it in.
Nothing crosses between them unasked. Planning a slot writes the build and stops. It reaches your checklist when you promote it — and even then it arrives as a proposal you accept, the same way every other suggestion does.
That separation is what lets you rearrange a build without your checklist reordering itself under you, and reorder your checklist without the build forgetting what you decided.
What is fitted, remembered
What is actually fitted is a third thing, in a third file. data/loadouts.json holds what each
of your ships was last seen carrying, straight from the game — every ship you have sat in, not just
the one you are in now. Intent is authored and a loadout is derived, so the two never borrow from
each other.
It is a cache and nothing depends on it surviving. Delete it and Directive 47 rebuilds what it can from your journals; it exists so that a ship you last flew a year ago is still answerable today, which reading the newest journals alone could never manage. A ship you sell is dropped from it at the sale — and dropped again if the game ever hands its id to something new, because Elite reuses ship ids and an inherited module list would be worse than knowing nothing.
A sale you made while Directive 47 was closed still lands. The file records how far through your journals it has been read, so the next start picks up exactly where it left off — however long that is. Come back after a year away and the first start takes a few seconds longer while it reads the gap, and says so in the log.
Not look right? Rescan. The Ships card in Settings says how many ships are remembered and how stale the oldest of them is, and offers Rescan my journals: it reads every journal on disk again and rebuilds the lot from scratch. A ship nothing in your journals supports stops existing, and one that has been sitting there wrong is put back the way the game described it. It takes a few seconds — about three on a year of flying — and you can do it as often as you like.
Nothing else is touched. Your plans, your checklist and your settings are not read and not written, and a rescan that finds no journals at all changes nothing rather than emptying the file: a journal folder that has moved reads exactly like a fleet that has been sold, and only one of those should be believed.
One build per ship
Comparing a combat fit against an exploration fit for the same hull is a planner feature this deliberately does not have. A slot holds one plan, because a slot holds one module.
Changing your mind about a slot is an edit, not a delete and an add. Swapping a long-range pulse laser for an overcharged multi-cannon leaves you with the same third hardpoint on the same hull — with whatever history it had. Before this, the first time you changed your mind about a slot, everything that slot had been through was tombstoned and an identical-looking new item opened beside the corpse.
The fleet, and the fleet you intend
The Loadout tab opens on your fleet and answers where each ship is before you drill into anything.
A hull you do not own is not in the fleet. It is its own thing, with no ship id, because Elite’s id is what a ship list is keyed by and a Corsair nobody has bought has none. So acquiring the hull is the plan’s first step rather than a precondition sitting outside it:
Corsair, intended — not bought yet
Buying one adopts the plan rather than making you re-point it. When the journal reports a new hull of a type you had planned for, Directive 47 binds the plan to it and says so:
That Corsair is yours now, and the plan you had for one is pointed at it.
Only when exactly one intended build matches the hull. Two Corsairs planned and one bought is a question rather than a guess.
The pictures
Every card carries a drawing of the hull, and it is a render of Elite’s own geometry rather than artwork somebody drew: the shipyard preview, captured, posed in the game’s camera and drawn as orange lines over a dark hull. Drawings at the top of the fleet puts them away.
The small one came with Directive 47. All forty-seven fit in eleven megabytes, so a fresh installation has a fleet with pictures on it before anything is downloaded.
The large ones did not, and there are two of them per hull. A ship’s own page shows the same
drawing at 3840 by 2160 — rendered again at that size rather than blown up, so the lines are the
weight they always were — and opening a ship plays its turntable once through on the card you came
from. Together those are a quarter of a gigabyte for the fleet, which is not something to hand a
Commander who flies a Sidewinder. So the first time you open a ship, Directive 47 fetches the two
files for that hull, from the same GitHub release it updates itself from, and keeps them in
data/ships. Each hull is asked for once.
The hull symbol is all that is sent. Not your Commander name, not which ships you own, not where you are, nothing from your journal.
Turn it off and nothing breaks. The Ships card in Settings has Hull pictures; off, nothing is fetched and every ship keeps the small drawing it came with. Files already on disk stay and are still shown. Offline is the same thing without the setting: the small drawing stays, and the log says why the large one did not arrive.
Three sizes, above the picture. Half the pane with the ship’s own figures beside it, which is where it opens; the width of the pane, with the figures under it; and the whole window. The size you last chose is the size the next ship opens at.
The whole window is a picture you can get into. The wheel zooms where you are pointing, dragging moves it, a double click fits it again, and Escape puts it back. It stops at one image pixel to one screen pixel — on a 4K monitor that is the whole ship, and on a 1080p monitor the canopy fills the screen. Clicking the picture does the same thing.
A hull with no picture is an ordinary thing. The card is the card it always was and the page reads exactly as it did before — the figures on their own, no marks and no gap. This is a picture, not a viewer: one pose, no orbit, no lighting and no model — anything you can do to a photograph and nothing you could only do to a mesh.
The ship you are flying wears a badge. It used to be an outlined card, which is what every list everywhere uses for the row you have selected — so the fleet opened looking as though Directive 47 had already picked a ship for you. FLYING NOW on the drawing says the one thing it means.
Owned is derived. Intended is authored.
The same rule your checklist already draws between a line the journal settles and a line a person does — so it looks like the same rule, because it is one.
Dropping a build keeps what it already produced
Delete a plan and whatever it already put on your checklist stays there. You ordered your list around those lines, and silently removing them makes the history wrong.
The tool surface, for contributors
This capability advertises nothing, and the reason is cost as much as safety. The advertised
tool surface is re-billed on every turn, and the largest profile — the SRV’s, which carries that
vehicle’s controls on top of everything else — measured 39,840 bytes against a 40,000 byte
ceiling before this capability existed. ToolProfiles.ComfortableBytes says in as many words
that raising the number a third time is the wrong answer.
So the one route that genuinely needs a model to understand free English is
plan_ship_build, which already existed and now writes to the build rather than
proposing straight to the checklist. Everything below is Protected: reachable from the panel and
from a phrase, and never from the model.
get_ship_plans
Every ship the Commander owns and every hull they intend to buy, with where each one is and how many slots its build has an opinion about.
{"type":"object","properties":{},"required":[],"additionalProperties":false}
Not get_fleet, which JournalCapability already has and which answers a different question:
that one reports what the journal saw in the racks, and this one reports what the Commander means
to do about it.
promote_ship_plan
Offer a ship’s build to the checklist. It is a proposal: the Commander accepts, and one planned change produces the modification plus whatever unlocking and ranking it needs.
{"type":"object","properties":{"ship":{"type":"string","description":"Which ship, by name or hull. Omit for the one the Commander is flying."}},"required":[],"additionalProperties":false}
Promotion is one-to-many. EngineeringPlan already emits an EngineerAccess step beside a
modification, so promoting one planned change produces several lines — and each carries the slot
that caused it in its intent, which is what lets a later revision find them again.
drop_ship_plan
Drop a ship’s build. The Commander’s own act: not offered to the model, and refused if it asks. What the plan already put on the checklist is kept.
{"type":"object","properties":{"ship":{"type":"string","description":"Which ship, by name or hull. Omit for the one the Commander is flying."}},"required":[],"additionalProperties":false}
The file
{
"ships": [
{
"id": "ship-1",
"hull": "python",
"shipId": 12,
"name": "Bad Idea",
"slots": [
{
"slot": "MainEngines",
"blueprint": "Dirty Drive Tuning",
"grade": 5,
"engineer": "Felicity Farseer",
"experimental": "Drag Drives"
}
]
}
]
}
id is the build’s own identity and is independent of shipId from the moment it is created —
that independence is what there is to rebind when the hull is bought. A build with no shipId is
an intended one.
Hand-edited, it takes effect without a restart, and a line the file gets wrong is reported rather than silently dropped.