-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Context
Auditing v0.6.0 fan-out for a real workload (discovery → gallery scraping with storage.put() sidecars) surfaced three functional gaps that aren't documented anywhere.
Findings
1. SUPPORT.md: Fan-out listed as "Supported"
Fan-out (--depth) | Supported is too strong given the blockers below. Should be Experimental at minimum until the gaps are closed.
2. PUBLIC_API.md: Known Limitations missing three functional gaps
None of these appear in the Known Limitations section:
storage.put()is nil for child runs —FileWriteris intentionally nil (noted in code comments as a deferred refactor), meaning any script that writes sidecar files will silently fail or panic as a child runtargetresolution is unfrozen — currently treated as a literal file path, but the implementation plan flags this as an open question. Users committing to a path format risk reworkcategoryinheritance — child runs inherit the root'ssourceandcategory, so a discovery root (category=discover) produces gallery children that land underdiscoverinstead ofgalleryin Lode partitions. No per-enqueue override exists
3. Fan-out-chain example doesn't warn about the boundary
The example uses emit.item() only (no storage.put()), which is fine — but there's no doc note warning users that storage.put() isn't wired for children. A user extrapolating from the example to a real workload with sidecar files would hit a silent failure.
4. CONTRACT_CLI.md fan-out section stated as fact without caveats
The --depth, --max-runs, --parallel flags are documented as stable contract, but the underlying implementation has known incomplete plumbing. At minimum, the contract should note:
storage.put()not available in child runscategoryinherited from root (no per-child override)targetresolution semantics may change
Suggested fixes
- SUPPORT.md:
Fan-out (--depth) | Experimental - PUBLIC_API.md Known Limitations: add the three gaps above
- Fan-out-chain example or its README: note that
storage.put()is not available in child runs - CONTRACT_CLI.md: add a caveats subsection under fan-out
References
- PR feat(runtime): ✨ add fan-out operator for derived work execution #117 (fan-out operator implementation)
- Design docs docs(design): 📝 add ingress models exploration document #115, docs(design): 📝 replace crawl mode with derived work execution via fan-out flags #116
- Implementation plan:
FileWriterdeferred,targetresolution flagged as open question