Download docs/CHANGELOG.md from PYTHAI/mindXtrain: direct link, hf CLI and curl.
- Browser
- Download file 28.2 kB
-
https://huggingface.co/PYTHAI/mindXtrain/resolve/main/docs/CHANGELOG.md
- Command line
-
hf download hf://PYTHAI/mindXtrain/docs/CHANGELOG.md
-
curl -L -o CHANGELOG.md https://huggingface.co/PYTHAI/mindXtrain/resolve/main/docs/CHANGELOG.md
Changelog
All notable changes to mindxtrain are documented in this file. The format follows Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Added
bankml 0.3.6 penalties.
serve --to bankmltakesrepeat_penalty,repeat_last_n,presence_penaltyandfrequency_penaltyin the Modelfile whenbankml versionis 0.3.6 or later (bankml's O2), and refuses them with the reason before;--bankml-system,--bankml-param KEY=VALUEand--bankml-stoplayer a persona and its sampling over the pin. The backend sends sampling fields fromoptions=/MINDXTRAIN_BANKML_OPTIONS, only when set.Byte-identical conversion. The merged directory is converted through a link named after the tag, so llama.cpp's
general.nameis the tag's and gen39 converts to6b64c748β¦, the GGUF mindX pins (throughmerged/it was "Merged" and a different sha256).MINDXTRAIN_CHAT_MODEL,MINDXTRAIN_JUDGE_MODEL,MINDXTRAIN_CHAT_OPTIONS. The panel and the judges namedllama3.2when given no model; a bankml node serves none. Read at call time.classroom(use_judge=True)without a model now uses the default judge instead of skipping it.docs/install.md: deploying bankml 0.3.6 and mindXtrain's bankml lane to the mindX VPS.bankml, the verified CPU engine (github.com/cryptoAGI/bankml,
docs/bankml.md), reached over HTTP and its CLI only β nothing vendored.operator/backends/bankml.py:@register_backend("bankml"),MINDXTRAIN_BANKML_BASE_URL(defaulthttp://127.0.0.1:18093/v1). Keeps bankml's receipt (ChatResponse.receipt, new optional field;last_receiptfor streams, parsed from the final SSE receipt event). HTTP 400 βBankmlRefusal(reason), never retried with altered parameters.- Operator wiring:
backend_kwargs(name)replaces the duplicated per-backend branches inoperator/app.pyandcoach/api.py; health probesGET /bankmland/v1/models; auto-detect tries bankml after ollama and vllm, so existing hosts resolve as before; the governance panel's env chain gainsMINDXTRAIN_BANKML_BASE_URLlast, only when set. deploy/bankml_push.pyandmindxtrain serve --to bankml [--bankml-bin] [--bankml-convert]: merge β Modelfile throughbankml_sanitize(refusesADAPTER, a foreignTEMPLATE, penalties, mirostat,typical_p, resource options, rather than dropping them) βbankml create; records the model sha256; refuses quantized configs and non-Llama architectures; detects a bankml withoutcreate/convert(pre-0.3.5) asbankml_too_old.eval/imprint_bankml.pyandmindxtrain imprint-bankml: seeded, unpenalised greedy probes with a receipt per utterance, scored byscore_imprint, tagged<scorer>/bankml-greedyand marked not comparable with the canonical 1.3-penalty gate.- MEI
InferenceEngineIdent.nameaccepts"bankml"; the Gradio Serve room offersbankml.
serve --to vllm|sglangare real deploy targets (docs/serve.md), no longer print-only.deploy/openai_server_push.py:launch_openai_serverserves a LoRA natively over the base (vLLM--enable-lora --lora-modules, SGLang--enable-lora --lora-paths) or merged (--merge,merge_lora_adapter), launches detached (own session;server.log,server.pid,launch.jsonunderout/runs/<run>/serve/<to>/), waits for/v1/models(+ vLLM/health), and optionally swaps mindX's fallback (provider="vllm"|"sglang");stop_openai_serverSIGTERMs the process group and verifies it is gone. CPU hosts get bfloat16,VLLM_CPU_KVCACHE_SPACE, SGLang--device cpu; quantized checkpoints andtensor_parallel > 1are refused without a GPU; a missing server is reported with its install hint. Every outcome is aServerLaunchResult/ServerStopResult. New CLI options:--dry-run,--stop,--merge,--host,--port,--dtype,--server-bin,--server-arg,--ready-timeout,--cpu-kvcache-gib. The Gradio Serve room offerssglang. vLLM / SGLang are reached as a subprocess and over HTTP only.
Changed
ui/console.pyomits penalty / mirostat options left at the engine's own default, so bankml accepts default console requests. For Ollama a Modelfile'srepeat_penaltynow applies where the console used to override it with 1.1.hf.extension.publish_generation(repeat_penalty=β¦):Nonepublishes a Modelfile without the penalty line (default unchanged, 1.3); the Modelfile text ispublished_modelfile().cli imprint: the script-probe extraction is_script_probes, shared withimprint-bankml.
[1.0.4] β 2026-09-16
Added
- The Gradio surface is tested.
mindxtrain uihad no coverage at all β gradio is an optional extra, so a base install cannot import the module, and every release note listed the UI as untested.tests/test_ui_app_builds.pyconstructs the whole Blocks tree (which exercises every component definition inui/app.py), checks the rooms the docs promise, asserts the surface version matches the package, and confirms the PEP 562 lazy export resolves. It skips cleanly where the extra is absent. The UI was also launched for real under gradio 6.27.0 and served its page and config.
Fixed
- The Hub tests asserted the missing-dependency path by trusting the environment. They
passed on a bare install and inverted silently the moment the
uiextra arrived, because gradio depends on huggingface-hub β three tests failed the first time they met an environment that had it. Absence is now forced (sys.modules[name] = Nonemakes the import raise), so the contract holds whatever is installed, and it is verified both ways. Introduced in 1.0.2, where the note "tested for real rather than mocked" was true only of a bare install.
Changed
httpx2added to the dev group. starlette 1.6 deprecates driving itsTestClientwithhttpx; 24 test modules useTestClient, so the dependency moves rather than the tests. The deprecation is gone; the two warnings that remain are upstream typer β click 9.0.
Notes β a correction to v1.0.3, and what is now verified
v1.0.3 overstated its own limitations. It listed "every write endpoint" and "SSE under a
real producer" as untested. That was true of the dependency-refresh probes run for that
release; it was not true of the project. The suite already covers the coach's write
endpoints β bench, compile, cost, eval/prompt, modelfile build and create, ollama start and
stop, boardroom, dojo, datasets, mei promote, classroom, autotune feedback, dcoach, chat
stream β and SSE under a real producer, in tests/test_runs_sse.py and a dozen
test_coach_*_api.py modules, including buffer replay on late subscribe, log-kind filtering,
ingest and cancel. All of it passed on the refreshed lock. A new test module was written for
those endpoints before that was checked; every endpoint turned out to be covered already and
the in-stream error contract already asserted, so it was deleted rather than added as
duplicate coverage.
The training path is now verified under the refreshed lock (torch 2.11.0, transformers
5.8.0, trl 1.3.0, peft 0.19.1, alongside starlette 1.6.0 and the pydantic downgrade). The
dream-corpus loop was run end to end on CPU β corpus read, tokenized, SFT executed
(loss 3.938, mean_token_accuracy 0.370, 512 tokens), and a real 22 MB LoRA checkpoint written
with adapter_model.safetensors, adapter_config.json, tokenizer and chat template. With the
ml extra installed the suite is 767 passed (the two tokenizer tests stop skipping).
Still not tested, and not claimed:
- MI300X / ROCm, multi-GPU, and vLLM serving. No such hardware here; the CPU lane is what was exercised.
- A full-length run. The shipped 32-sample smoke recipe projects ~70 minutes on this shared box (8.7 min/step at 50% CPU), so the loop was closed with a reduced variant β 4 samples at seq 128, the same code path, fewer tokens. Multi-hour and multi-day behaviour is unchanged and unverified here.
- The
imprintβserve --to ollamatail, which needs a running daemon.
[1.0.3] β 2026-09-15
Changed
uv.lockrefreshed against the currentpyproject.toml. The lock had drifted, so everyuv runon a node re-resolved before doing anything β about 2.5 minutes per invocation, paid by each bridge probe. 296 β 306 packages; 23 changed. The notable moves are starlette 0.52.1 β 1.6.0 (a major version, under FastAPI 0.136.1, which accepts it), huggingface-hub 1.14.0 β 1.31.0, and gradio 6.27.0 entering the lock for the first time becauseallnow includes theuiextra.- Three packages move backwards β pydantic 2.13.3 β 2.12.5, pydantic-core 2.46.3 β
2.41.5, inspect-ai 0.3.219 β 0.3.145. Nothing in the project requires the older versions;
only
pydantic>=2.9is declared, so these are the resolver's choice of a consistent set, not a constraint. They are called out because a downgrade arriving inside a routine refresh is worth seeing rather than discovering later.
Notes β what was tested, and what was not
The refreshed lock was installed into a separate environment, leaving the working one intact, and the same probes were run against both stacks so the comparison is like-for-like.
Tested, identical on both stacks: the full suite (765 passed, 2 skipped); the coach
booted under real uvicorn exactly as production runs it (mindxtrain.operator.app:app), and
37 read-only probes returned identical status codes and identical response sizes β every
page, the JSON API, the static mount, the OpenAPI schema (64 paths), the diagnostics surface,
the path-traversal guard still answering 400, and SSE (text/event-stream, bytes flowing,
and the 404 path returning without hanging). Zero server errors in either run.
Not tested β do not read this release as clearing them:
- Every write endpoint. Nothing that launches a run, builds or creates a Modelfile,
starts or stops Ollama, convenes the boardroom, settles the dojo, promotes an MEI score, or
pushes to GitHub / a droplet was exercised; they need a model, a daemon, or they do real
work.
/v1/chat/completionsand/v1/agenticare likewise untested. - SSE under a real producer. The stream was checked for content type and first bytes on an empty run, not for a long live stream with a training job writing into it.
- The training path. The
mlextra (torch, transformers) is not installed on the machine this was verified on, sotrain/imprint/servewere not run against the new lock β and huggingface-hub, which moved two minor versions, sits under transformers' download path. - The Gradio UI. gradio 6.27.0 enters the lock here for the first time;
mindxtrain uiwas not started.
One new warning, test-only. starlette 1.6 deprecates using httpx with its TestClient
and asks for httpx2; the suite emits it three times and passes regardless. Nothing in the
serving path is affected β production does not import TestClient β but the test dependency
will need moving before a starlette release removes the shim.
Operational caveat. uv run syncs the project environment, so moving a node's checkout to
this commit means the next invocation rewrites that node's venv β a starlette major bump, a
huggingface-hub bump and a pydantic downgrade β underneath whatever is running there. On a
node with a training run in flight, take it in a maintenance window, not by surprise.
[1.0.2] β 2026-09-15
Added
- mindXtrain can use Hugging Face from the command line. The
mindxtrain/hf/extension existed and was complete βaccount,pull_base,warm,publish_generation,push_dataset,lineage,push_spaceβ but nothing outside a Python import could reach it: there was no CLI verb, so on a node the Hub was effectively unavailable. Newmindxtrain hfgroup:whoami Β· pull Β· warm Β· publish Β· lineage Β· dataset Β· space. Each prints the extension's own result dict and exits nonzero when it reportsok: false, so the ascent loop can warm a base, check$?, and refuse to start a three-hour run that would otherwise discover the missing base at the end of it. - Tests for the Hub extension, which had none: token precedence across the three
accepted environment variables, the missing-dependency path (genuinely missing here, not
mocked), the
RepoFoldertrap that makes a scan report an empty repo, the guards that must not need a network, and the CLI wiring including the nonzero exit.
Changed
huggingface-hubmoved out of thechainextra into its ownhfextra. Reaching the Hub used to mean installingweb3and the Algorand SDK, because the Hub was filed under "chain". It is not a chain.chainnow pullsmindxtrain[hf]so existing installs keep working,allincludes it, and every "not installed" message names--extra hfβ the extra that actually installs it β instead of sending the reader to the blockchain one.- The
hfmodule is ruff clean under the house config.
Fixed
push_spacecaptured the upload's commit receipt and discarded it, while its two sibling publishers both return it. A Space push now reports its commit like everything else, so what was pushed is identifiable afterwards.
[1.0.1] β 2026-09-15
Added
autoresearch β the keep/reset search, shipped whole. The
researchcommand had been in the CLI since the Hugging Face fork, butmindxtrain/research/was never committed, somindxtrain researchraisedModuleNotFoundErroron every checkout but the author's. The package now ships: the declarativeAttemptContract, the git fence (commit-before-measure Β· editable allowlist Β· dedup-by-commit), the bounded attempt runner with process-group teardown, the durable append-only ledger, the keep/reset search loop, the Base anchor +mindx_autoresearch_registry.sol, the coach's read-only observer page (/coach/research), the k8s researcher job, and theattempt_diffhash in the provenance manifest β so the edit that earned a promotion is hashed into the receipt, not just the resulting weights.The Console and Science rooms' own modules.
ui/console.py(Ollama chat, token accounting, error explanations that say what to run) andui/reasoning.py(the claims / Socratic-questions / contradictions pass, aGLM when importable and an in-house fallback otherwise), both previously uncommitted, both now covered by tests that need no daemon, GPU or optional dependency.dcoach page + prompt-tools + decentralized panel. New
/coach/dcoachworkflow page: one-click Imprint & Prove (persona/skills + advanced toggles) streams the proof loop live (POST /coach/api/dcoach/run, SSE) and shows the classroom before/after recall, boardroom verdict, and autotune-feedback next-params. A read-only decentralized-network panel (GET /coach/api/decentralized) maps Prime Intellect / Templar SN3 / Nous Psyche / Gensyn / Pluralis to how mindXtrain fits (AOT-only β Verde- compatible; BLAKE3 receipt; x402; AgenticPlace). New/coach/promptsprompt-tools page: craft a system prompt + few-shot demos β test against a base model (no training) β evaluate (POST /coach/api/eval/prompt) β make permanent via Modelfile. Docs: dcoach.md.dcoach proof loop + clean-room eval tools. Prove a CPU-trained model recalls its training:
governance.proof_loop.run_proof_loopchains compose-script β imprint- train β probe before/after β classroom (governance.classroom.evaluate_classroom) β boardroom decides β autotune feedback (autotune.feedback, nudges the next run's params). New clean-room LlamaIndex-style evaluators (eval.llama_evals: Semantic-Similarity / Correctness / Pairwise / Guideline β reuse existing embeddings + the governance chat-judge). EndpointsPOST /coach/api/classroom/evaluateandPOST /coach/api/autotune/feedback.Streaming chat + ollama controls (Coach "Try the model" card). Responses now stream token-by-token (the AI-SDK text-stream pattern over SSE) via
POST /coach/api/chat/stream, with a model picker (local models first, no more silently-broken:clouddefault) and start/stop/status for the local ollama server (/coach/api/ollama/{status,start,stop}). Fixes the chat that returned no visible response. Reference:docs/Vercel AI SDK 6_ β¦ .md.Ollama Modelfile builder (
mindxtrain.deploy.modelfile) β render a validModelfilefrom a typedModelfileSpec(every instruction: FROM/SYSTEM/TEMPLATE/ ADAPTER/LICENSE/MESSAGE/REQUIRES + the full PARAMETER catalogue). A standalone Coach window at/coach/modelfileexposes a toggle + input for every instruction and parameter;POST /coach/api/modelfile/{build,create}render it and runollama create.Default personas + skills (
mindxtrain.data.personas) β built-in personas (codephreak / assistant / mentor) and toggleable skills (software engineer, platform architect, bash, solidity) that mix in-domain exchanges into a script. The Create-script card gains a persona picker + skill toggles;derive_training_paramsauto-tunes CPU imprint epochs/grad_accum from the dataset size.Governance layer (
mindxtrain.governance) β classroom / boardroom / dojo, a clean-room reimplementation of openmindx/openmind's Boardroom-consensus + Dojo-evaluation behaviour. The classroom graduates an actor on its imprint; the boardroom (any N role-based members) convenes on the promotion motion β approved / rejected / disputed; the dojo settles a dispute with a panel of a prime number of judges (odd prime β₯ 3 β no tie, always resolves). Seedocs/governance.md.Model-backed boardroom/dojo (
governance.panel) β members + judges deliberate with real models over any OpenAI-compatible backend (deliberate,model_ballot,model_judge_ballot). Coach Boardroom card +GET /coach/api/boardroom/presets,POST /coach/api/boardroom/convene,POST /coach/api/dojo/settle(model deliberation runs off the event loop).
Fixed
The default editor corrupted any editable that was not a flat TOML. Its docstring promised a no-op; the code stringified a
[table]intotrainer = "{'lr': 0.001}", then committed and measured that. It now checks flatness and declines, and_write_flat_tomlrefuses non-scalars instead of repr-ing them. Strings escape throughjson.dumps, so a value holding a quote or a backslash can no longer emit broken TOML.A failed attempt stranded HEAD on a loser. When an attempt raised after its edit was committed, the loop propagated the error and left the branch on a commit it had never scored β so the next run's baseline read the loser. The champion is restored on the way out. The restore is
reset --hard, so it is taken only while the fence still passes: if the tree is dirty outside the allowlist that work belongs to someone else, and it is left exactly where it is.mindxtrain.uidemanded gradio for stdlib-only code. The package eagerly imported.app, so the optionaluiextra was needed to reachconsole,reasoningorparse_logβ none of which import anything beyond the standard library. The Gradio-backed exports (build,main,VERSION) resolve lazily via PEP 562; a box that cannot spare the dependency can still parse a training log and talk to the daemon.The contradiction check was asymmetric, though documented as a truth-table check: it only fired when the negative claim happened to be written first.
Imprint recall now measured under the trained conditioning.
probe_recallaccepts an optionalsystemprompt and the proof loop passes the persona's system prompt to both the before and after probes β matching the system turn the script rows train under. Without it the adapter was probed out of its learned distribution, understating (even inverting) the imprint; the CPU proof loop now reports a strong positive Ξ (e.g. 0.066β0.247) and an APPROVED verdict.
Changed
New and touched modules are ruff clean under the house config (unused imports,
typingmodernisation). Pre-existing debt elsewhere is left alone rather than folded into this release.Removed hackathon framing from the public surfaces. README,
pyproject.tomldescription, the package docstring,CLAUDE.md, and the active docs (autotune / architecture / development / coach / yaml_schema / HANDOFF / NAV) no longer frame mindXtrain as a hackathon submission; deleteddocs/HACKATHON.mdanddocs/hackathon_submission.md. The frozendocs/blueprints/and dated dev-blog posts are preserved unchanged as the historical record. README now leads with the dcoach proof loop.
[1.0.0] β 2026-06-11
First production release. CPU training is active end-to-end; the GPU
(MI300X / consumer) path is code-complete and validated on CPU dry-run + unit
tests, pending real ROCm hardware to execute. Honest per-module status is in
docs/actualization_status.md.
Added (1.0.0)
- Device-aware local-GPU lane (
trl_local,mindxtrain.train.backend_trl_cpu.run_trl_local). Auto-detects a consumer GPU (CUDA or ROCm Radeon, bf16/fp16) and falls back to CPU;trl_cpuis the force-CPU wrapper. Recipemindx_fallback_qwen3_1_5b_local. Honest limit: integrated Vega/gfx90cAPUs are unsupported and fall back to CPU. - Verifiable training receipt. Every operator/CPU run emits
manifest.jsonbinding the frozenAutotunePlanhash to the checkpoint + config hashes (provenance.manifest.emit_receipt_for_run); re-verified viamindxtrain receipt, theGET /coach/api/receipt/{run_id}endpoint, and a Coach "Verifiable receipt" card. Optional x402 metering gate on/v1/training/jobs. - Actor / persona / script + imprint. Author a training script for an
actor (
mindxtrain.data.scripts), ingest assource: local, and measure the persona imprint by recall before/after training (mindxtrain.eval.imprint,mindxtrain imprint,POST /coach/api/imprint/score). Coach Create script card +POST/GET /coach/api/datasets. Recipemindx_persona_imprint_local. - mindX dream-cycle trigger (
deploy.api_client.trigger_dream_ingestion) β hands an imprinted actor to mindX'smachine.dream8hr cycle via HTTP or an inbox drop (clean-room: a pointer, never mindX code).mindxtrain imprint --trigger-dream. - Coach live-training diagnostics β accurate depiction with accordion compression: rolling loss-chart window, per-step metrics + log accordions with honest "showing last N" counts, system-metric sparklines, chat re-probe.
- Autotune on real hardware β runtime GPU-count autodetect (
rccl_probe), GEMM microbenchmark with timings (gemm_probe),serve --to sglang. - Clean-room policy codified in
CLAUDE.md+AGENTS.md: reimplement/adapt locally, never copy mindX/external source bytes.
Added (pre-1.0 foundation)
- mindX self-training loop.
mindx_dreamsdataset source adapter walks<mindx>/data/memory/ltm/*/*_training.jsonl, deduplicates by content hash, and yields OpenAI-chat rows. Pure stdlib; no GPU/heavy deps to load (mindxtrain.data.sources.mindx_dreams). - CPU training lane (
mindxtrain.train.backend_trl_cpu.run_trl_cpu). Real TRL SFT/LoRA on CPU, produces a real HF-format checkpoint compatible withquantize/receipt/publish. Wired viaTrainingBackend = "trl_cpu". - Public training-jobs API at
/v1/training/jobswith bearer auth (MINDXTRAIN_API_KEY). Versioned facade over the sameRunRegistryCoach uses, so mindX agents and external clients become peer dispatchers (mindxtrain.operator.training_api). - mindX fallback-swap caller (
mindxtrain.deploy.api_client.swap_mindx_fallback_model). PATCHes mindX's/v1/config/fallback-modelso a freshly published HF Hub checkpoint becomes mindX's active default without a source edit. Pairs with the mindX-side endpoint shipped in AgenticPlace/mindX@ad8193ea3. - Two new YAML recipes:
mindx_fallback_qwen3_1_5b_sft_lora(Qwen3-1.5B LoRA on MI300X, the production target) andmindx_fallback_qwen3_1_5b_cpu_smoke(SmolLM2-135M CPU smoke). .env.example:MINDXTRAIN_API_KEYandMINDXTRAIN_MINDX_HOME.
Changed
- Schema:
DataSourceextends to include"mindx_dreams";DataCfg.hf_idis now defaultable with amodel_validatorrequiring it only forsource: "hf";DataCfg.pathadded (used bylocal+mindx_dreams). HardwareCfg.gpus: Literal[0, 1, 8]β0= CPU lane.- Production URL flipped from
mindx.pythai.net/hackathontomindx.pythai.net/coach. Hackathon-era references preserved inHACKATHON.mdand the build-in-public posts for the historical record. - CI: ruff scoped to
mindxtrain/ tests/; mypy points at the canonicalmindxtrain/config mindxtrain/provenance(fixing stale paths). Container build added on push-to-main; GHCR publish on tag.
Notes
- Adapter smoke against the real corpus saw 1051 unique rows in
/home/hacker/mindX/data/memory(corpus snapshot 2026-05-14).
0.1.0 β 2026-05-06
Initial public release. Submitted to the AMD Γ lablab.ai Developer Hackathon (build window May 4β10 2026, on-site finale May 9β10 in San Francisco).
Added
- Single-package canonical layout per
docs/blueprints/mindxtrain2.mdΒ§Part 4:mindxtrain/{cli,config,data,models,train,eval,autotune,operator,storage,provenance,deploy,budget}. - CLI with 8 verbs:
init,bench,train,eval,quantize,serve,publish,receipt(mindxtrain.cli.main). - 60-second AOT autotune probe for AMD MI300X β the hackathon differentiator.
CK vs Triton attention selection + hipBLASLt GEMM heuristic + RCCL config
(
mindxtrain.autotune.{benchmark,attention_probe,gemm_probe,rccl_probe,plan}). - Pydantic v2
XTrainConfigwith discriminated union over 9 training methods (full, lora, qlora, dpo, orpo, grpo, gspo, kto, cpt) (mindxtrain.config.schema). - 12 YAML training recipes covering Qwen3.5/Qwen3.6/Instella across SFT-LoRA, full-FSDP, DPO, ORPO, GRPO, CPT, and VL.
- Axolotl YAML compiler; alt backends (Unsloth, torchtune, Primus) wired as
dispatch stubs (
mindxtrain.train). - Provenance manifest with BLAKE3 content addressing, ROCm/git/gfx capture,
and on-chain pointers (ERC-7857 INFT, Algorand ASA, ERC-8004 attestation)
(
mindxtrain.provenance). - Operator FastAPI app exposing
/v1/chat/completions,/v1/agentic, and the interactive/coach/UI (mindxtrain.operator). - Pluggable inference backends: vLLM, OpenAI-compatible
(
mindxtrain.operator.backends). - Pluggable storage providers: local fs, HF Hub, Lighthouse, IPFS
(
mindxtrain.storage). - Foundry contracts for ERC-8004 attestation registry (
contracts/). - Containerfiles + compose + k8s manifests for MI300X (
ops/).
Notes
- This release replaces the earlier 3-package layout
(
mindXtrain/,automindXtrain/,custmodel/) with a single ordered packagemindxtrain/. Old import paths (xtrain.*,automindx.*,custmodel.*) are not preserved β adopters must rewrite tomindxtrain.*. - Most operator and trainer surfaces ship as honest minimal stubs that raise
NotImplementedErrorfor paths not yet implemented in the hackathon scope. The autotune probe, config schema, manifest, recipes, and Axolotl compiler are the production-ready paths.