Undocktor
Undocktor is an unofficial, zero-login EVE Online doctrine-fit linter for YourBot.
Comandos que este plugin adiciona
Sobre este plugin
Undocktor
Diagnose your doctrine fit before you undock.
Undocktor is an unofficial, zero-login EVE Online doctrine-fit linter for YourBot. A server manager records canonical doctrines in the YourBot dashboard. A pilot then pastes the text produced by EVE Online's Copy to Clipboard fitting action into /undocktor and receives an ephemeral PASS, REVIEW, FAIL, or PARSE ERROR report.
Undocktor evaluates text locally inside the YourBot plugin sandbox. It has no EVE login, ESI integration, network access, item database, or game-client integration.
1. What Undocktor does
Undocktor compares one pasted fitting with one enabled, manager-configured doctrine. It checks:
- the normalized hull name;
- fitted-item quantities;
- optional approved substitutions;
- advisory stacked supplies, including cargo, drones, and fighters as one combined supply category in version 0.1;
- advisory loaded-charge differences; and
/offlinemarkers when that policy is enabled.
The result describes only the supplied text:
- PASS — the pasted text meets the configured policy and contains no enabled warning condition.
- REVIEW — blocking fit requirements pass, but one or more advisory differences need a pilot's attention.
- FAIL — the hull, a required fitted item, or an exact-policy extra does not meet the doctrine.
- PARSE ERROR — the input is malformed, ambiguous, unsupported, or outside a safety limit.
These statuses are diagnostic results, not guarantees of flight readiness.
2. What it does not verify
Undocktor does not connect to EVE Online, ESI, EVE SSO, the game client, process memory, network packets, cache files, combat logs, or external services. It does not inspect or calculate:
- the ship actually assembled in game;
- character skills or fitting eligibility;
- implants, clones, or boosters;
- cargo, drone-bay, or fighter-bay placement;
- module online state beyond the pasted
/offlinemarker; - CPU, powergrid, capacitor, damage, tank, price, or availability;
- abyssal mutation attributes or other unsupported metadata; or
- account, character, corporation, alliance, or fleet data.
Undocktor has no runtime SDE and does not know whether an item name is current. It compares normalized names in the manager template and pilot text.
3. Server-manager setup
Every dashboard page and widget requires YourBot's manager permission. Undocktor provides twelve fixed doctrine slots.
- Open the Undocktor dashboard and choose a doctrine slot.
- Paste a complete canonical fitting copied from EVE into Canonical EFT.
- Enter a unique lowercase code, such as
ferox-rail, plus a display name. - Optionally add a category, description, and approved substitutions.
- Choose fitted, supply, loaded-charge, and offline policies.
- Enable the slot and save it. Saving runs the same bounded parser used for pilot input.
- Review the Overview page for setup warnings and the derived hull/revision.
Codes must contain 2–24 lowercase ASCII letters, digits, or hyphens. Names are limited to 80 characters, categories to 40, descriptions to 500, and canonical EFT/substitution text to 4,000 each. The hull is always derived from the canonical EFT.
A material code, canonical template, policy, or substitution edit advances the doctrine revision. A no-op save preserves it. Category- or description-only edits do not change matching behavior and may preserve the revision.
The Settings page controls the displayed-difference limit (5–20, default 10), anonymous aggregate counters, and an optional server privacy notice of up to 500 characters. The core disclaimer cannot be removed.
Configure role and channel restrictions with Discord application-command permissions. Undocktor intentionally does not request discord:read merely to inspect member roles or channels.
4. Pilot workflow
- In EVE Online, open the fitting you want to check.
- Use the fitting window's Copy to Clipboard action.
- Run
/undocktor-listto see enabled doctrine codes. - Run
/undocktorand enter the selected code. - Paste the complete clipboard text into the fitting field and submit.
- Read the ephemeral result, then confirm the live ship in EVE before undocking.
/undocktor-help summarizes this workflow and its caveats. All three command responses and modal results are ephemeral. Undocktor never echoes the full pasted fit or its fit name.
5. Doctrine policies
Fitted items
EXACTrequires every canonical fitted item and rejects unmatched fitted extras.AT_LEASTrequires every canonical fitted item and reports unmatched extras as informational.
Missing required fitted items always cause FAIL.
Stacked supplies
AT_LEAST_WARNwarns when the pasted fit has less than the canonical quantity.EXACT_WARNwarns on missing or extra quantities.IGNOREskips supply comparison.
Supplies are advisory and do not cause FAIL in version 0.1. Cargo, drones, and fighters are not separated semantically.
Loaded charges and offline markers
Each can be set to WARN or IGNORE. With WARN, a difference produces REVIEW unless a higher-precedence failure already applies.
6. Substitution syntax
Enter one rule per line:
Required Item => Alternative A | Alternative B
The required item must occur in the canonical fitted multiset. Matching is exact after Unicode normalization, whitespace collapse, and case folding; substitutions are not regular expressions, fuzzy groups, item families, or meta-level rules. The canonical item remains accepted automatically.
Limits are 50 rules, 10 alternatives per rule, and 4,000 total characters. One pilot item unit can satisfy only one required unit. Undocktor uses deterministic capacity matching so overlapping alternatives are not double-counted.
7. Localization caveat
Doctrine and pilot hull/item names must use the same language unless the manager explicitly configures translated names as approved alternatives. Undocktor does not translate names and does not ship an item database. Unicode names are supported, but normalization does not make different localized names equivalent.
8. Privacy and data retention
Undocktor persists only:
- manager-configured doctrine records, including the manager's canonical EFT for later editing;
- settings and doctrine revision/template metadata; and
- optional anonymous aggregate result counters.
It never persists a pilot's pasted fit, fit name, parsed items, EVE identity, Discord identity in check history, or command transcript. Short-lived per-user rate-limit keys and interaction deduplication keys use YourBot's ephemeral store and expire; they are not durable history.
No pilot text is sent to an external service. Normal logs contain only safe structural codes and never modal values, parsed pilot collections, or raw EFT. Disable aggregate statistics in Settings if the server does not want anonymous result totals.
The sole explicit manifest capability is storage:kv. Slash-command/modal responses are provided through the platform's implied interaction permission. Undocktor requests no HTTP, WebSocket, SQL, secrets, Discord read/send/edit, message-content, or scheduling capability.
9. EVE/CCP disclaimer
Undocktor is an unofficial community tool and is not affiliated with or endorsed by CCP hf. EVE Online and all related marks are trademarks of CCP hf. Undocktor checks text pasted by the user; it does not verify the ship fitted in game, skills, implants, boosters, cargo placement, online state, or account data. Confirm the live ship in EVE before undocking.
No official EVE art, logos, UI screenshots, ship images, icons, or fonts are bundled. Marketplace branding should use an original geometric diagnostic/ship-check icon. See DISCLAIMER.md for the full project notice.
10. Troubleshooting
No doctrine codes are listed
Ask a server manager to configure and enable at least one valid dashboard slot. Disabled or malformed slots are not disclosed to pilots.
PARSE ERROR
Copy the fit again from EVE's fitting window and paste the complete plain text. Do not paste XML, DNA, JSON, prose, multiple fits, mutation metadata, or a screenshot. Input is limited to 4,000 characters and 250 lines. The response intentionally reports a safe error code instead of echoing an offending line.
Unknown doctrine code
Run /undocktor-list and use the displayed code. Suggestions include enabled doctrines only.
REVIEW when the ship looks right
Inspect supplies, loaded charges, approved substitution usage, and /offline markers. Confirm that the manager template and pilot export use the same language.
Rate-limit or duplicate response
Fit checks are limited to six per user per 60 seconds. A repeated Discord interaction is deduplicated for 24 hours so aggregate counters are not incremented twice.
11. Development and testing
The runtime uses the Python standard library plus yourbot-sdk==0.8.3. Install development dependencies and run the automated gates from the repository root:
python3 -m pip install -r requirements-dev.txt
python3 -m pytest
python3 -m compileall .
yourbot doctor
yourbot validate
python3 scripts/build_zip.py
Do not report a gate as passing unless that command completed successfully in the current checkout.
Current-client fixture release gate
Automated unit cases are not a substitute for current EVE client output. Before publishing, tests/fixtures/eve_exports/ must contain at least 20 sanitized real Copy to Clipboard exports with machine-readable expected results:
- 6 ordinary subcapital fits;
- 2 strategic cruisers;
- 2 fits with empty categories;
- 2 drone-heavy fits;
- 2 cargo/ammo-heavy fits;
- 2 offline/import edge cases;
- 2 non-English exports; and
- 2 invalid or deliberately hand-edited edge cases.
Add a structure fixture only if structure support is advertised. To collect a case, copy it from the current client, remove only identifying fit-name text while leaving the hull/item/quantity syntax intact, save it as UTF-8 under the fixture directory, and record the expected parse status and canonical counts in EXPECTED_RESULTS.json. Never replace this corpus with invented examples or call the parser production-ready while its release-gate test is failing or xfailed.
A private-server live smoke test with current exports remains a separate manual release gate.
12. Packaging and validation
scripts/build_zip.py creates the deterministic archive:
dist/undocktor-0.0.1.zip
The archive places manifest.json and __main__.py at its root and includes the runtime undocktor/ package, dashboard manifest, README, changelog, and disclaimer. It excludes tests and fixtures, development requirements and metadata, build scripts, caches, virtual environments, VCS data, previous distributions, and research/build source material.
The builder rejects an archive at or above 10 MiB compressed, 40 MiB uncompressed, or 200 files, verifies ZIP integrity/root layout, and prints the final path and SHA-256 digest. Identical source bytes produce identical archive bytes.
Before Dev Portal upload, inspect the ZIP listing and run yourbot validate against the repository. After upload, confirm the plugin ID/version, review the requested capability, install it on a private Discord server, exercise all commands and manager dashboard pages, and complete the real-client fixture/live smoke-test gates.
O Que Há de Novo v0.0.1 há 7 dias Passou na análise da plataforma · Jul 2026
Tem alguma pergunta?
Faça uma pergunta diretamente ao desenvolvedor de Undocktor. Entre com Discord para enviar sua pergunta. Você será notificado quando responderem.
Faça login para perguntar ao desenvolvedor →Pronto para instalar Undocktor?
Entre com Discord, configure seu servidor e adicione-o em minutos.
Instalar no seu servidor →