Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
500 commits
Select commit Hold shift + click to select a range
224e1bd
The only recordings of the real runtime are archived before we invali…
phy0x1a79ed Aug 19, 2026
a3de946
A result now says what it came from, because the task that made it re…
phy0x1a79ed Aug 19, 2026
46e7c13
Author annotation_trio_from_assembly template (assembly -> kofam/unir…
phy0x1a79ed Aug 20, 2026
ca7fa5a
Move annotation_trio_from_assembly driver beside its spec.yml
phy0x1a79ed Aug 20, 2026
b42cbcb
The startup banner metasmith did not write is gone, and the one warni…
phy0x1a79ed Aug 20, 2026
8b291fe
One verb prepares the agent a workflow is about to run on, whichever …
phy0x1a79ed Aug 20, 2026
d24c9e2
Deploy's progress bar stays up once a deploy has happened, and surviv…
phy0x1a79ed Aug 20, 2026
aa1509a
Stream docker/apptainer pull progress into the deploy log instead of …
phy0x1a79ed Aug 20, 2026
da044d3
Revert "Stream docker/apptainer pull progress into the deploy log ins…
phy0x1a79ed Aug 20, 2026
27a4e44
Fix uniref50's dead download host and interproscan's mismatched extra…
phy0x1a79ed Aug 20, 2026
84eada5
DAG renderer drops given nodes nothing requires
phy0x1a79ed Aug 20, 2026
3c6f72b
Don't trust a stale trace while staging, and remember the last agent …
phy0x1a79ed Aug 20, 2026
e13ee66
Remember per-step cpu/memory/time overrides across a reload
phy0x1a79ed Aug 20, 2026
9f8e397
One resource header, right-justified with the columns, and a seeding …
phy0x1a79ed Aug 21, 2026
dd92312
Merge fixes from the dev scope: interproscan/kofamscan transform fixe…
phy0x1a79ed Aug 21, 2026
e290141
Try uniref50 mirrors in series instead of a single hardcoded host
phy0x1a79ed Aug 21, 2026
2cead8c
Stop leaking the previous run's log/trace before run_number is assigned
phy0x1a79ed Aug 21, 2026
68f7aa0
Key resource overrides by transform name, hide setup-environment, wid…
phy0x1a79ed Aug 21, 2026
1b5d361
The prune that existed, made real, and staging routed through it
phy0x1a79ed Aug 21, 2026
5c106e6
Stop a run all the way down: one group, one token, ps and reap
phy0x1a79ed Aug 21, 2026
367db2c
A leaf is identified by where it is and when it changed, settled wher…
phy0x1a79ed Aug 21, 2026
6808515
Annotators emit a key table beside a description table, and a run pub…
phy0x1a79ed Aug 21, 2026
2c97ddf
Merge branch 'feat/gui' into release
phy0x1a79ed Aug 21, 2026
53d77e3
Merge branch 'feat/engine/process-management' into release
phy0x1a79ed Aug 21, 2026
e1bdd22
The flow builders leave an input alone when a rebuild did not change it
phy0x1a79ed Aug 21, 2026
297eebb
Merge branch 'feat/gui' into release
phy0x1a79ed Aug 21, 2026
d19a3b0
The standard library ships inside the package again, and cannot drift…
phy0x1a79ed Aug 21, 2026
1519f4c
An image that carries no standard library is refused before it is pub…
phy0x1a79ed Aug 21, 2026
8b6a796
An executor block that actually binds, a kofam archive that unpacks, …
phy0x1a79ed Aug 21, 2026
c1fa190
Rectify the dev scope against release
phy0x1a79ed Aug 21, 2026
0a93622
Resource overrides and Nextflow presets become per-workflow, disk-bac…
phy0x1a79ed Aug 21, 2026
1343cca
A cache hit that promised a product now delivers it, or re-runs
phy0x1a79ed Aug 21, 2026
48d34da
Merge remote-tracking branch 'origin/dev' into feat/gui
phy0x1a79ed Aug 21, 2026
1ab79d6
Union per-namespace type libraries in CollectResults instead of overw…
phy0x1a79ed Aug 21, 2026
517d746
Persist the staged plan again after codegen stamps lineage ids
phy0x1a79ed Aug 21, 2026
7aeeab3
Refuse to launch a second run while one is already live
phy0x1a79ed Aug 21, 2026
f3cab4b
Report cache-hit steps in the run trace
phy0x1a79ed Aug 21, 2026
c17a422
Remove stale polling note from the run view
phy0x1a79ed Aug 21, 2026
69f2099
The python_for_data_science env pin moves to image tag 1.4.0
phy0x1a79ed Aug 21, 2026
b3f6bca
Merge branch 'feat/gui' into feat/dev
phy0x1a79ed Aug 21, 2026
5fcafe4
Bump version to 0.21.0
phy0x1a79ed Aug 21, 2026
8bc6e91
The release build stages the vendored library, and says which steps a…
phy0x1a79ed Aug 21, 2026
b4ac5cd
The stat-keyed leaf identity is a punch-list item, and the anaconda t…
phy0x1a79ed Aug 21, 2026
42e683a
Coerce config_file to a Path and let the caller say a preset is local…
phy0x1a79ed Aug 21, 2026
b604ced
Surface row-unique counts and stuck-probe errors in the GUI API, add …
phy0x1a79ed Aug 21, 2026
38823c7
Rework the preset editor into a persistent per-workflow dropdown with…
phy0x1a79ed Aug 21, 2026
aadbb20
Merge branch 'feat/gui' into feat/dev
phy0x1a79ed Aug 21, 2026
c40ba79
Merge branch 'release' into feat/dev
phy0x1a79ed Aug 21, 2026
c38c8d8
Fix broken-pipe crash on deploy: docker pull fallback killed the driv…
phy0x1a79ed Aug 22, 2026
d771732
The GUI's startup warm-up no longer prints to the terminal
phy0x1a79ed Aug 22, 2026
b8438bd
Two run tests launch a second run without cancelling the first
phy0x1a79ed Aug 22, 2026
8736901
Drop the relay's orphan reclaim: the pid it tested was never the host's
phy0x1a79ed Aug 22, 2026
741c65b
Merge branch 'release' into feat/dev
phy0x1a79ed Aug 22, 2026
49f6e30
Trim redundant field hints, and the agent's deploy bar becomes a perm…
phy0x1a79ed Aug 22, 2026
e85a16a
Reproduce the trio's frozen second run, and the defects around it, as…
phy0x1a79ed Aug 26, 2026
5060bc7
The exit marker stops following a transform's cd, and a dead step sto…
phy0x1a79ed Aug 26, 2026
1048a9e
Two invariants the cache and the container boundary rely on, written …
phy0x1a79ed Aug 26, 2026
ea8ebd2
The retry-ladder cap is checked against a nextflow that has to parse it
phy0x1a79ed Aug 26, 2026
d9ccc9b
Contract tests for a per-member cache unit, observed red
phy0x1a79ed Aug 26, 2026
031d82b
The cache unit is one group member's invocation, decided before submi…
phy0x1a79ed Aug 26, 2026
68d48f2
The cache lane's tests answer to the member unit
phy0x1a79ed Aug 26, 2026
358b8a8
A task's cache record names its session, and the driver reads only it…
phy0x1a79ed Aug 26, 2026
e3b13bf
The twin's resources are config syntax, and the docker lane speaks th…
phy0x1a79ed Aug 26, 2026
baa0d80
The cached twin has no stub block, so a directory product survives a …
phy0x1a79ed Aug 26, 2026
b89a3df
The cache docs describe the member unit, the local twin, and the in-t…
phy0x1a79ed Aug 26, 2026
8977253
The member-cache plan and its autopilot run log, copied into the scope
phy0x1a79ed Aug 26, 2026
9b9f40d
The driver derives a shard from its key, not from the container's path
phy0x1a79ed Aug 30, 2026
63ed76f
Bump version to 0.22.0
phy0x1a79ed Aug 30, 2026
5a8557e
The punch list catches up with the member cache: two entries retired,…
phy0x1a79ed Aug 30, 2026
4d838b0
The release gate's three reds become three decisions
phy0x1a79ed Aug 30, 2026
5846910
The docker lane catches up with promotion moving into the task
phy0x1a79ed Aug 30, 2026
bc7ca10
The transform harness routes its members, and three tests stop readin…
phy0x1a79ed Aug 30, 2026
faaf002
The pbert chunk number is inside the filename, so no run could get pa…
phy0x1a79ed Aug 24, 2026
0e32e05
python_for_data_science 1.4.0 cannot read a parquet file, so the pin …
phy0x1a79ed Aug 24, 2026
1078187
polars was never the reason parquet failed; the transform's pyarrow i…
phy0x1a79ed Aug 24, 2026
807af6b
The parquet engine is a choice the code makes now, so the image can b…
phy0x1a79ed Aug 24, 2026
8b765f9
A missing string is NaN to pandas and a type error to polars, so the …
phy0x1a79ed Aug 24, 2026
3e474d3
The env with no pyarrow gets a rule, since the failure is late and quiet
phy0x1a79ed Aug 24, 2026
6d860bb
The release protocol learns to collect the library before it gates it
phy0x1a79ed Aug 30, 2026
e5882b4
The published artifacts get driven as a consumer, since no guard does
phy0x1a79ed Aug 30, 2026
a1a2128
The 2-to-3 sample case gets measured on the release, not argued from …
phy0x1a79ed Aug 30, 2026
a8a9155
The consumer gate learns to run something, since solving proved nothing
phy0x1a79ed Aug 30, 2026
2cebd92
A leaf the client staged keeps the identity the client gave it
phy0x1a79ed Aug 31, 2026
3b064bc
The epoch's tombstone sweep takes a write lock, so it cannot eat a fr…
phy0x1a79ed Aug 31, 2026
3120281
Merge feat/dev: a staged leaf keeps the client's identity, and the ep…
phy0x1a79ed Sep 1, 2026
2d6364a
Bump version to 0.22.1
phy0x1a79ed Sep 1, 2026
20e3cfd
Two cache followups close, because 0.22.1 fixes them
phy0x1a79ed Sep 1, 2026
d9907aa
Merge release: 0.22.1's doc and gate work comes back to dev
phy0x1a79ed Sep 1, 2026
cd13426
Install the wheel in the docker image, not the sdist
phy0x1a79ed Sep 1, 2026
e710211
The selection rule becomes swappable, and PUCT is measured against it
phy0x1a79ed Sep 2, 2026
a1d1453
The PUCT run log lands beside its report
phy0x1a79ed Sep 2, 2026
606126b
The template numbers correct the report's direction
phy0x1a79ed Sep 2, 2026
6bc387c
The run log picks up the template correction
phy0x1a79ed Sep 2, 2026
26569cd
The viromics driver plans the reachable half of Antonio's pipeline
phy0x1a79ed Sep 2, 2026
53f398b
A dark render of the viromics DAG, for the report that embeds both
phy0x1a79ed Sep 2, 2026
2b13020
The large workflows answer the question the templates could not
phy0x1a79ed Sep 2, 2026
5526697
The refiner gets a ceiling it can stop at
phy0x1a79ed Sep 2, 2026
4d8e505
The refiner's lineage walk stops when it finds what it was asked for
phy0x1a79ed Sep 2, 2026
3165407
A native agent keeps its native runtime inside ExecuteStep
phy0x1a79ed Sep 3, 2026
7e69326
A transform runs from its own path, and its inputs carry the names it…
phy0x1a79ed Sep 3, 2026
f54350b
The authoring loop says how to test a transform before it says how to…
phy0x1a79ed Sep 3, 2026
a5801cc
Antonio's viromics pipeline, as a topology built on one frozen reference
phy0x1a79ed Sep 3, 2026
4ce2d5b
The plan the engine returns now has to answer for itself
phy0x1a79ed Sep 3, 2026
915df15
Pin the witness to the engine, and each clause to a plan that breaks it
phy0x1a79ed Sep 3, 2026
9346d22
Rust reaches Lean, and names the three shapes that do not
phy0x1a79ed Sep 3, 2026
93f10d6
The viromics plan, cut into five readable passes
phy0x1a79ed Sep 3, 2026
882c19d
The solver build reaches the crate it depends on
phy0x1a79ed Sep 4, 2026
1cb0dc6
One product, one instance, one producer
phy0x1a79ed Sep 4, 2026
6591cac
The specification gets a reference checker, and every clause a decoy
phy0x1a79ed Sep 4, 2026
1f6689b
The extraction has to answer for what it did not translate
phy0x1a79ed Sep 4, 2026
4480372
The gate counts the recursions a proof will have to pay for
phy0x1a79ed Sep 4, 2026
1a55272
The witness splits in two, and the whole of it reaches Lean
phy0x1a79ed Sep 4, 2026
da44cf1
The specification is written over the code that was extracted
phy0x1a79ed Sep 4, 2026
407b5d9
The specification type-checks against the code it is about
phy0x1a79ed Sep 4, 2026
e2253f6
The gate is pinned, and the documents say what is now true
phy0x1a79ed Sep 4, 2026
20b3281
The proof needs terminating definitions, and there is a flag for that
phy0x1a79ed Sep 4, 2026
8432f36
The module index names the witness
phy0x1a79ed Sep 4, 2026
43e293f
The run report lands beside its siblings
phy0x1a79ed Sep 4, 2026
7a2bfb3
The KBase catalog becomes a metasmith library, and every app is accou…
phy0x1a79ed Sep 4, 2026
9715500
The specification gate can fail, and it asks Lean rather than grep
phy0x1a79ed Sep 4, 2026
f380e6a
A place for proofs, and the one bridge out of the triple world
phy0x1a79ed Sep 4, 2026
4b860c8
Escape the asterisk InterProScan hands to sed
phy0x1a79ed Sep 4, 2026
af349b6
The GUI does not open a browser it has nowhere to open
phy0x1a79ed Sep 4, 2026
1fa8065
Ship the AB48 binning + GPR run as a template
phy0x1a79ed Sep 4, 2026
26f7d48
Four thousand KBase narratives become 1,633 workflows, and 431 of the…
phy0x1a79ed Sep 4, 2026
3cb6d35
The first extracted loop is proved, and the recipe is written down
phy0x1a79ed Sep 4, 2026
1c2001b
The dense bit set is proved, and the accumulating loops want a differ…
phy0x1a79ed Sep 4, 2026
537d910
The accessors are proved total, and the gate stops reading a binary l…
phy0x1a79ed Sep 4, 2026
ebbf0d9
KBase's 493 apps become 54 verbs, and 64 of its 67 unions disappear
phy0x1a79ed Sep 4, 2026
594ec42
The dense table and the recursion decide the same relation, unconditi…
phy0x1a79ed Sep 4, 2026
defb229
Four clauses that never look at lineage
phy0x1a79ed Sep 4, 2026
a42288f
The two lineage clauses, and a proof that the ten are not independent
phy0x1a79ed Sep 4, 2026
4d873be
Shape and Derived, and a second reason the clauses are not independent
phy0x1a79ed Sep 4, 2026
fb5bcd9
One module that imports them all, which is where a name clash would show
phy0x1a79ed Sep 4, 2026
3ecc014
Givens, and a third reason a clause needs Indexed
phy0x1a79ed Sep 4, 2026
d86a87a
The keystone holds unconditionally, so the case split is sound
phy0x1a79ed Sep 4, 2026
785863c
The obligation moves to where it can be discharged
phy0x1a79ed Sep 4, 2026
cbcf864
check_spec is proved
phy0x1a79ed Sep 5, 2026
288ceb7
The documents say what is now true, and what was believed and is not
phy0x1a79ed Sep 5, 2026
bafd1b4
The run report lands beside its siblings
phy0x1a79ed Sep 5, 2026
9963019
A direct run binds items, so an input arrives with the ancestry it wa…
phy0x1a79ed Sep 5, 2026
d1d2f64
One door into the pool, and a product that says what type it is
phy0x1a79ed Sep 5, 2026
5a78613
The store is the index, because a pool entry is already a data instance
phy0x1a79ed Sep 5, 2026
03b7eb1
The standard library is 22 transforms short of KBase, and 97 already …
phy0x1a79ed Sep 5, 2026
67408e4
Importing data is registering an instance, by the same act a run uses
phy0x1a79ed Sep 5, 2026
4d9e9df
The witness meets the workflows it was proved for
phy0x1a79ed Sep 5, 2026
9ca0177
An entry says what made it, when it arrived, and what you called it
phy0x1a79ed Sep 5, 2026
8a6504a
A store you can read: filtered, grouped, tagged, and a tab over it
phy0x1a79ed Sep 5, 2026
95e87c1
The unpinned solve is the refiner, and the refiner returns its input
phy0x1a79ed Sep 5, 2026
a303561
Say what the store is now, and correct what it never was
phy0x1a79ed Sep 5, 2026
c4e6c2a
Plan the next step from what the store already holds
phy0x1a79ed Sep 5, 2026
d2e84d0
The refiner does earn its budget, and three iterations is all it needs
phy0x1a79ed Sep 5, 2026
e4ed645
A run key is not a heading, so stop shouting it
phy0x1a79ed Sep 5, 2026
502bda6
Round 3's proposal becomes 21 transforms, and eleven analyses plan th…
phy0x1a79ed Sep 5, 2026
f402c68
Direct-run stamps a lineage KEY, and three provides lists stop lying
phy0x1a79ed Sep 5, 2026
998c73e
The refiner's rejections are one wrong relation, and the record said …
phy0x1a79ed Sep 5, 2026
e9bc131
The two ancestry relations fail in opposite directions, and that forc…
phy0x1a79ed Sep 5, 2026
c967beb
check_plan grows a strict mode, because the witness cannot see a coll…
phy0x1a79ed Sep 5, 2026
9b27636
Propagate a swap downstream, and correct an improvement that was neve…
phy0x1a79ed Sep 5, 2026
c07fa7a
Ten shell bodies run, and the four table transforms get their algorithms
phy0x1a79ed Sep 5, 2026
a56118d
The lineage prune runs on the refiner path too, and that is the 23x
phy0x1a79ed Sep 5, 2026
9509e98
validate_node reads declared parents, and the budget default drops to 8
phy0x1a79ed Sep 5, 2026
4fe2f54
The four table transforms run, and the modelling lane gets its stoich…
phy0x1a79ed Sep 5, 2026
f9deed9
The prune reaches the engine: the unpinned solve is 4m06s to 1.76s
phy0x1a79ed Sep 5, 2026
386a514
The prune removes cyclic candidates too, so the anchor test loses its…
phy0x1a79ed Sep 5, 2026
b92e0d4
Every KBase parity transform now runs, and a true provides line moved…
phy0x1a79ed Sep 5, 2026
9dfadf1
Round 5 closes: twenty of twenty-one run, and the docs stop saying stub
phy0x1a79ed Sep 5, 2026
7d4ac59
The two execution arms collapse to one call, and the preflight asks t…
phy0x1a79ed Sep 5, 2026
ab3a32a
Two lanes meet, a sample gets a name, and the bin question closes wit…
phy0x1a79ed Sep 5, 2026
b8ea9bd
The cobra image is pushed and verified, and nine environments stop hi…
phy0x1a79ed Sep 5, 2026
ca72265
Round 6's record, and two findings the punch list gains rather than l…
phy0x1a79ed Sep 5, 2026
7996c77
REFINER_BUDGET was unreachable, so the budget that shipped was still 256
phy0x1a79ed Sep 5, 2026
a9a2c02
The Rust refiner matches the specification: the differential is green
phy0x1a79ed Sep 5, 2026
031cd8e
The suite completes: 2078 passed, and the one failure this round caus…
phy0x1a79ed Sep 5, 2026
93f59a8
The report page carries the suite result
phy0x1a79ed Sep 5, 2026
c4cf51a
The selection rule becomes a seam, byte-identical on 81 payloads
phy0x1a79ed Sep 5, 2026
e95773e
The ratchet harness: two commands, ten seconds, two gates
phy0x1a79ed Sep 5, 2026
7c8b257
puct-base: PUCT in both phases: priors from normalised score channels…
phy0x1a79ed Sep 5, 2026
2d2ef3e
submit's banner printed after the child's output; flush it
phy0x1a79ed Sep 5, 2026
80eeb93
frontier-cap: Progressive widening by transform: only the first cap f…
phy0x1a79ed Sep 5, 2026
47cb875
puct-novelty: fpu=1.5,decay=0.985 solves 78/81 at steps 1486, iters 2…
phy0x1a79ed Sep 5, 2026
51ad6b0
Merge branch 'feat/solver-c' into feat/solver-ratchet
phy0x1a79ed Sep 5, 2026
efdd070
Round 1 ratchets: the novelty defaults, and a ranking that no longer …
phy0x1a79ed Sep 5, 2026
9af459f
SOP: the ranking workers read now matches the corrected verdict
phy0x1a79ed Sep 5, 2026
3bc45c8
selffeed-prior: w2=0.95: a structural third prior channel solves 81/8…
phy0x1a79ed Sep 5, 2026
e501242
no-progress-penalty: a no-progress expansion charged -0.25 instead of…
phy0x1a79ed Sep 5, 2026
76734aa
Round 2 ratchets: a structural prior solves the last three, and costs…
phy0x1a79ed Sep 5, 2026
26a3360
The ratchet's corpus, harness and finding, committed so the next sess…
phy0x1a79ed Sep 5, 2026
f9be314
The docs catch up: PUCT is in the engine, opt-in, and the suspension …
phy0x1a79ed Sep 5, 2026
16d1980
The python solver is retired: the witness is the reference now
phy0x1a79ed Sep 5, 2026
46d43db
PUCT is the selection rule, and the gate now runs the function that w…
phy0x1a79ed Sep 6, 2026
1089e7c
Merge the solver line: PUCT ships and the python solver is retired
phy0x1a79ed Sep 6, 2026
b7932c4
The type prune dropped every ancestor, so a supertype target named no…
phy0x1a79ed Sep 6, 2026
cd956a2
Eight solves, from one step to fifty-three, as a scrolling gallery
phy0x1a79ed Sep 6, 2026
1dad71f
Merge branch 'feat/solver' into viromics/make-template
phy0x1a79ed Sep 6, 2026
f0560e7
The aggregator asks for gtdbtk per bin set, as it already did for Che…
phy0x1a79ed Sep 6, 2026
edfbcda
The aggregator forces gtdbtk per binner, as it already did checkm
phy0x1a79ed Sep 6, 2026
55a4d4d
The steps carry the ink, and each plate leaves the page by clipboard
phy0x1a79ed Sep 6, 2026
f37b5f9
Panel 2 takes a read pair, panel 3 takes one read file
phy0x1a79ed Sep 6, 2026
f358189
The CAMI corpus is enumerated: 11,747 objects, 6.39 TiB, one manifest
phy0x1a79ed Sep 9, 2026
6de6b98
Size CAMI I from the store, not from GigaDB's catalogue
phy0x1a79ed Sep 9, 2026
f6d2e06
A CAMI driver: assembly, binning and annotation from interleaved reads
phy0x1a79ed Sep 9, 2026
ff46196
A resumed download that overshoots has to restart, not resume again
phy0x1a79ed Sep 9, 2026
dd8ec41
Cache-hit processes are local, and job arrays abort the whole run
phy0x1a79ed Sep 9, 2026
7e3d0a1
A Swift hash ending in -N is an ETag, not a checksum
phy0x1a79ed Sep 9, 2026
ee66e94
The viromics lane arrives, twelve mocks and all
phy0x1a79ed Sep 10, 2026
df4fccc
A direct run reaches the protocol, and a real error survives the report
phy0x1a79ed Sep 10, 2026
f7b3226
Six environments for the viromics lane, and a generator that stops ea…
phy0x1a79ed Sep 10, 2026
ad224a6
Four viromics references, and CCTyper needs none
phy0x1a79ed Sep 10, 2026
e3ccb2d
The Pratama 2026 corpus, and the paper it reproduces
phy0x1a79ed Sep 10, 2026
3d256e0
The decorated tree iPHoP actually wants, and r232 is fine after all
phy0x1a79ed Sep 10, 2026
ce9e0d8
Four viromics mocks become four tools that run
phy0x1a79ed Sep 10, 2026
2a3b160
CRISPR arrays and the spacer link, and a green run that had run nothing
phy0x1a79ed Sep 10, 2026
9a2b8f0
The merge cuts real sequence, and the interval convention is settled
phy0x1a79ed Sep 10, 2026
af64f68
CheckV runs, and the fourteen-column contract holds
phy0x1a79ed Sep 10, 2026
306182e
An unset variable made download-db.sh copy the container root
phy0x1a79ed Sep 10, 2026
3f47ff2
The last four viromics tools run, and MetaWRAP joins them
phy0x1a79ed Sep 10, 2026
b53b33d
vConTACT3 exports nothing unless asked, and its ANI path is broken
phy0x1a79ed Sep 10, 2026
2315a7e
The README stops calling twelve running tools mocks
phy0x1a79ed Sep 11, 2026
6b3ab83
iPHoP's augmented database is not a database, and VirSorter2 had no d…
phy0x1a79ed Sep 11, 2026
1ae3d27
A direct run can answer SourceOf, so collecting transforms are runnable
phy0x1a79ed Sep 11, 2026
9303847
bin_refinement's -m is a thread divisor, not a memory cap
phy0x1a79ed Sep 11, 2026
e796adf
MetaWRAP produces refined bins, and the fan-out works
phy0x1a79ed Sep 11, 2026
68074d5
The CAMI driver plans reproducibly, and comebin is costed on both lanes
phy0x1a79ed Sep 11, 2026
61eda9c
Merge feat/engine/cami: the driver plans reproducibly
phy0x1a79ed Sep 11, 2026
2d944c1
Park the manuscript's literature brief on the branch
phy0x1a79ed Sep 11, 2026
c98a9da
Take release's Docker fix: the image installs the wheel, not the sdist
phy0x1a79ed Sep 11, 2026
cc4b2dc
Take the data pool: one door in, and a direct run binds items
phy0x1a79ed Sep 11, 2026
ac56adc
Take the viromics and CAMI lane, reconciled onto the item-binding API
phy0x1a79ed Sep 11, 2026
f788075
Take the KBase parity lane, and migrate the library off the two-arm d…
phy0x1a79ed Sep 11, 2026
6607f0e
Take the solver ratchet: PruneTypes keeps ancestors, and SRA is one t…
phy0x1a79ed Sep 11, 2026
ddd5e17
A step fed by another step in the same plan can find its own inputs a…
phy0x1a79ed Sep 11, 2026
92906d8
metaSPAdes follows the JGI protocol, and the library says what it cites
phy0x1a79ed Sep 11, 2026
fac52cb
Take the JGI metaSPAdes protocol, on the collapsed dispatch API
phy0x1a79ed Sep 11, 2026
9f5d0ad
Recorded ancestry beats the direct-run provenance union
phy0x1a79ed Sep 11, 2026
34401df
A run's driver can live in a Slurm job instead of a login session
phy0x1a79ed Sep 11, 2026
be203ed
Scoring is a step in the pipeline, and CAMI's gold standard needs a b…
phy0x1a79ed Sep 11, 2026
160bcb1
cache_probe takes an assembler, and the prefix hits across a plan-sha…
phy0x1a79ed Sep 11, 2026
5c3340b
Take the scoring lane: AMBER, and a bridge to CAMI's gold standard
phy0x1a79ed Sep 11, 2026
33ed327
Four findings from the campaign's staging attempt, recorded
phy0x1a79ed Sep 11, 2026
9488a2d
An import act assigns an identity instead of deriving one
Phyberosis Sep 11, 2026
6ab4572
A client can read an agent's pool where that pool sits
Phyberosis Sep 11, 2026
4410414
The dev overlay has no writer, recorded
Phyberosis Sep 11, 2026
7662a20
A plan can take its givens from the pool, by reference
Phyberosis Sep 11, 2026
8a38aa3
A plan refuses a given whose identity it minted
phy0x1a79ed Sep 12, 2026
e5d2880
A driver declares its givens and the pool identifies them
phy0x1a79ed Sep 12, 2026
6082a44
The drivers take their givens from the pool, or say why not
phy0x1a79ed Sep 12, 2026
5251254
The web interface reads a remote pool and takes givens from one
phy0x1a79ed Sep 12, 2026
1089931
The docs say what identity is now, and where the pool's limits are
phy0x1a79ed Sep 12, 2026
9c25206
Bump version to 0.23.0
phy0x1a79ed Sep 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
12 changes: 10 additions & 2 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,15 @@
# Deny-all plus an allow-list, so a new top-level directory costs nothing until an
# image actually needs it. Only the images whose build CONTEXT IS THE REPO ROOT read
# this file -- docker/metasmith and docker/ecspr. docker/fabfos and docker/ecspr_bake
# build from their own directory and are unaffected.
**
!/envs
!/lib
!/src
!/src/metasmith
!/src/bash_relay
!/dist
!/main/relay_agent/
!metasmith_starter.ipynb
# docker/ecspr: the package, its suite (the image runs it at --check), and tini.
!/src/ecspr
!/tests/ecspr
!/docker/ecspr/load
2 changes: 1 addition & 1 deletion .dvc/config
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
[cache]
dir = ../../dvc-cache
type = "hardlink,symlink"
81 changes: 64 additions & 17 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
/cache
*.sif
__pycache__
# stamped from the source tree immediately before each build; committing one would
# let a tag name a source state that is not the one in the tree
/src/metasmith/build_hash.txt
/src/ecspr/build_hash.txt
.ipynb_checkpoints
.virtual_documents
/*.ipynb
Expand All @@ -11,22 +14,22 @@ __pycache__
*.egg-info
/lib/relay_agent/*.spec

/data
/scratch/*
!/scratch/gui-main.dvc
!/scratch/.gitignore
/secrets
/lib/*
!/lib/local
.secret
.DS_Store

/conda_build
/conda_recipe/*
!/conda_recipe/compile_recipe.py
!/conda_recipe/meta_template.yaml
/conda_recipe/*/*
!/conda_recipe/*/compile_recipe.py
!/conda_recipe/*/meta_template.yaml

# A deployed agent home, under every spelling anyone has used for one. These are
# deployment artifacts, never repo content, and a script that anchors its home on
# cwd rather than on __file__ drops one wherever it was launched from.
**/metasmith_home
**/msm_home
**/test_msm_home

.pixi
pixi.lock
Expand All @@ -39,34 +42,78 @@ pixi.toml
# tests/e2e/agentic/ and left these rules pointing at the old path, which
# would have committed the next sweep's transcripts.
/.opencode-serve-*.log
/tests/e2e/agentic/.runs/
/tests/e2e/agentic/.cache/
/tests/metasmith/e2e/agentic/.runs/
/tests/metasmith/e2e/agentic/.cache/

/src/metasmith/std/dtypes.yml
/main/relay_agent/0x*
/src/bash_relay/0x*

*.acc
local_home
std_assembly_data
.claude/

# GUI: the frontend bundle is generated by ./dev.sh --build-gui, never committed
# GUI: the frontend bundle is generated by ./dev/metasmith.sh --build-gui, never committed
/src/metasmith/gui/static/
/frontend/node_modules/
/src/metasmith/frontend/node_modules/

# the msm_solver binaries, staged here by ./dev.sh -be so the wheel can ship
# the msm_solver binaries, staged here by ./dev/metasmith.sh -be so the wheel can ship
# them. Same deal as gui/static/: generated, platform-specific, never committed.
/src/metasmith/engine/

# the vendored metasmith_libraries snapshot, staged here by
# ./dev/metasmith.sh --vendor-library so the wheel/conda/docker build can ship
# it. Same deal as engine/: generated, never committed.
/src/metasmith/vendor/

# fabfos's own bundled copy of the same library, staged by ./dev/fabfos.sh -b.
/src/fabfos/_library/

# GUI: `msm gui` writes its project directory into the cwd -- agents/,
# workflows/<name>/, runs/<name>/ (store.py), plus the served config and
# whatever library it pulled in. `./dev.sh --gui` puts that under
# scratch/gui-main/ (already ignored via /scratch); these rules are the guard
# for anyone who runs it from the repo root anyway.
# whatever library it pulled in. `./dev/metasmith.sh --gui` puts that under
# src/metasmith/scratch/gui-main/ (already ignored via src/metasmith/.gitignore);
# these rules are the guard for anyone who runs it from the repo root anyway.
/agents/
/workflows/
/runs/
/.metasmith_gui.yml
/.cache/
/MetasmithLibraries/
/example_resources/

# _metadata/ under the standard library and under fabfos's own algorithm
# library is a build product (`metasmith build all`), not source -- compiled
# from data_types/*.yml + the transform Python by dev/libraries.sh -bm (the
# standard library) or dev/fabfos.sh -bm (fabfos's own, since it sits inside
# the package and is not reached by --vendor-library). A stale or missing
# copy is silent (the library loads and resolves nothing, no error anywhere),
# which is what _assert_metadata_present in ops/build.py now guards against
# at vendor time. See AGENTS.md > "The build is not optional".
/src/metasmith_libraries/resources/*/_metadata/
/src/metasmith_libraries/transforms/*/_metadata/
# staged in from envs/metasmith_libraries by `dev/libraries.sh --stage-envs`
/src/metasmith_libraries/envs/
/src/fabfos/algorithm/_metadata/

# The vendored copy of src/ecspr that build_references/build.sh stages as
# `buildlib::ecspr`. Generated from the source tree immediately before the
# metadata compile, so committing it would be committing a second copy of a
# package this repository already holds -- and one that can disagree with it.
# build_references/_metadata IS tracked; this is the one build product under it
# that is not.
/src/fabfos/build_references/resources/buildlib/ecspr/

# A deployed agent home is a build product of running something, not repo
# content. `/msm_home/` is the current spelling and the one the ignore rules
# missed -- they named two older ones. The tests' own home sits one directory
# deeper and is named by tests/metasmith_libraries/conftest.py.
/msm_home/
/tests/metasmith_libraries/test_msm_home/

# authoring aid: `build_templates.py --dag` renders here, never committed
/src/metasmith_libraries/results/
# the frozen reference library (`python -m fabfos.refs freeze`). Generated, and
# its manifest holds ABSOLUTE paths, so a committed copy would be wrong on every
# other machine -- the ids inside it are not, which is the point.
/data/fabfos/refs.xgdb/
4 changes: 2 additions & 2 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ build:
python: "mambaforge-22.9" # https://hub.docker.com/r/condaforge/mambaforge/tags

conda:
environment: envs/docs.yml
environment: envs/metasmith/docs.yml

# Build documentation in the "docs/" directory with Sphinx
sphinx:
configuration: docs/source/conf.py
configuration: docs/metasmith/source/conf.py
6 changes: 3 additions & 3 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
{
"python.autoComplete.extraPaths": [
"${workspaceFolder}/lib",
"${workspaceFolder}/src/metasmith/lib",
"${workspaceFolder}/src",
],
"python.analysis.extraPaths": [
"${workspaceFolder}/lib",
"${workspaceFolder}/src/metasmith/lib",
"${workspaceFolder}/src",
],
"python.analysis.exclude": [
"**/cache",
],
"terminal.integrated.env.linux": {
"PYTHONPATH": "${workspaceFolder}/lib:${workspaceFolder}/src",
"PYTHONPATH": "${workspaceFolder}/src/metasmith/lib:${workspaceFolder}/src",
"ws": "${workspaceFolder}",
},
"esbonio.server.enabled": false,
Expand Down
Loading