Conversation
chore(deps): add py-cid, py-multihash, and cbor2 for pure UnixFS CID compute and CARv1 decode
feat(address_store): pure UnixFS file CID verify with Kubo only-hash fallback; CARv1 read/write and UnixFS extract; gateway-first get/dag_export; wire ContentMesh get/getCar
feat(feedback,runtime): stageLineage Entities with wasDerivedFrom along Invoice stage CIDs; #executorRun Activity; wire stage CIDs from Runtime.execute
feat(process,plant): IoPort for CATS_IO_PARTITIONS>1; RayIoPort part-*.car layout; Processor wires io into ingress/egress; align ComputePort num_partitions
fix(infrastructure): remove orphaned .terraform.tfstate.lock.info when no live holder before destroy/apply heal path
docs(IPFS,STORAGE): pure-Python UnixFS verify; gateway CAR directory get and dag_export; partition CAR note
docs(BOM,Lineage,W3C): intra-run wasDerivedFrom stageLineage; registry gap remains cross-CAT
docs(INTEROP,PLANTs,ControlFeedbackLoop): IoPort vs TransportPort; CATS_IO_PARTITIONS and RayIoPort
feat(executor,network): mint Seed {seed, rng_seed,
num_partitions} before invoice_cid; flatten_bom resolves
seed; provenance asserts non-null unique CAT0/CAT1 Seeds
refactor(process,plant): use Higher-Order Transfer Function (hotF) naming for integrated_subproc / ComputePort surface
docs(BOM,ControlFeedbackLoop,W3C): seed_cid replay dict shape; tHOF renamed to hotF; Seed closes #187 null gap
docs: replace tHOF with hotF across DESIGN, DEMO, INTEROP, PLANTs, STORAGE
chore(make): deps-uv via pip, deps-uv-sync, Terraform into .venv/bin; content-store-init/ensure/shutdown; refresh DEPS/ENV/README
chore(structure): add plant and infrastructure .terraform.lock.hcl for reproducible init
refactor(process): type batch maps as Dict[str, Any] so function_* need no numpy at import time
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Goal: Restore distributed pre/post I/O (Bacalhau CoD–style ingress/egress) using Plant [SaaS] Ray, without putting Ray or Kubo into Process source. Align hotF (
RayComputePort/integrated_subproc) with the same partition layout so ingress → integration → egress share stable partition identity (minimize shuffle). DefaultCATS_IO_PARTITIONS=1keeps today’sTransportPort.migratedemo path.Follow-on to #202 (signed BOM / AddressStore / LDP / Solid).
What landed toward that goal
IoPortprotocol; whenCATS_IO_PARTITIONS>1, Process ingress/egress useRayIoPort(part-*.carUnixFS directory layout via ContentMesh / AddressStore). Invoice still records one root CID per stage.ComputePort.num_partitions/RayComputePortconsume/produce the samepart-*count — norepartition(n)when alreadyn. Naming: Higher-Order Transfer Function (hotF) replaces formertHOFwording forintegrated_subproc.function_*batch maps typed asDict[str, Any]— nonumpyimport in Process callables at import time.get/dag_export.Also in this PR (supporting / adjacent)
{seed, rng_seed, num_partitions}intoinvoice.seed_cidbeforeinvoice_cid;flatten_bomresolvesinvoice.seed; provenance asserts non-null, unique Seeds across CAT0/CAT1.num_partitionson Seed records the observed I/O + hotF alignmentnfor the run (env-selected today; Seed is the control-plane home going forward).stageLineage(prov:Entity+prov:wasDerivedFromalong Invoice stage CIDs) and#executorRunActivity — envelope stays address-only..terraform.tfstate.lock.infowhen no live holder before destroy/apply heal.deps-uvvia pip,deps-uv-sync, Terraform into.venv/bin;content-store-init/ensure/shutdown; committed Structure.terraform.lock.hclfiles.stageLineage+ Seed), DEPS / ENV / README.Design choices
IoPort; Plant shipsRayIoPortunderplant_cid(mirrors ComputePort)n == 1transport.migrate— iris demo unchangedn > 1IoPort; stablepart-00000.car… names as shuffle keysintegration_cacheand for ingress/egress whenn=1seed_cid); stage CIDs remain interim feedbackNon-goals: URI-as-address (2b), cross-CAT Order registry, second Plant adapters beyond Ray IoPort,
raw-leaveswrite pins, Executor readingnfrom Seed instead of env (follow-up).Data-plane read path (enables partition CAR I/O)
cat+ Kubo only-hash verify → RPC fallbackcat/get/getCargetvia CAR + UnixFS extract (RPC fallback)Control-plane / provenance (address-only envelope)
invoice_cid/log_cid/node_did/proof→BomLdpStore→ optional Solid dual-writestageLineageEntities (ipfs://stage CIDs);wasGeneratedBy#executorRun;wasDerivedFromalong data ← integration ← ingress ← inputstructure_as_executed: generated-by only (observation; not on payload chain)invoice.seed_cid→ Seed{seed, rng_seed, num_partitions}(no longer null)CATS_IO_PARTITIONS>1, Invoice stage CIDs may be UnixFS directory roots ofpart-XXXXX.carshards; AddressStore verify/extract apply per part; the Invoice still holds one root CID per stageTest plan
Plant IoPort (primary)
uv run pytest tests/test_ray_io_partitions.py -qCATS_IO_PARTITIONS=1(default): ingress/egress stay onTransportPort.migrateCATS_IO_PARTITIONS>1: ingress/egress useRayIoPortpart-*.carlayout; Invoice stage fields remain single root CIDsTYPE_CHECKING-onlydata.*/ IoPort imports; no numpy at import)uv run pytest tests/test_compute_plant_ports.py -qComputePort.num_partitionsaligned with IoPort; no shuffle-heavy repartition when alreadynAddressStore (UnixFS + CAR prerequisite)
uv run pytest tests/test_unixfs_cid_chunked.py -quv run pytest tests/test_unixfs_car_extract.py -quv run pytest tests/test_address_store_gateway.py -qonly-hashget/getCarwith RPC fallbackContentMesh.get/getCarwired through AddressStorestageLineage PROV + Seed
uv run pytest tests/test_stage_lineage_prov.py -qbomincludesstageLineage;wasDerivedFromfollows Invoice stage CIDsuv run pytest tests/test_network_seams.py -q#executorRunActivity on signed envelopeuv run pytest tests/test_provenance.py -qinvoice.seed_cid/ flattenedseedpopulated; keys{seed, rng_seed, num_partitions}; CAT0/CAT1 Seeds differTF state lock heal
uv run pytest tests/test_terraform_state_lock_heal.py -qDocs / review
docs/INTEROP.md/PLANTs.md/ControlFeedbackLoop.md— IoPort vs TransportPort; hotFdocs/IPFS.md/STORAGE.md— UnixFS verify, CAR get, partition CARdocs/BOM.md/W3C.md—stageLineage+ Seeddocs/DEPS.md/ENV.md— Make deps / content-store targets