BOHICA-LABS / BOHICA-LABS/vsdd-factory
Concurrency topology ceiling: "teams of agents" requires peer actors; the platform provides hierarchical fork-join rooted in one REPL
- Dominant language
- Rust
- Stars
- 2
- Forks
- 1
- Avg merge
- 6h 43m
- Merged PRs (30d)
- 29
Description
> Part of the architectural-mismatch tracking issue #410.
> **Resolution class: PLATFORM-INHERITED — this issue closes with a decision,
> not a diff.**
```yaml
resolution_class: platform-inherited
code_fixable: false
root_cause_layer: platform
violated_requirement: "CAP-006 (current, spec-level): 'stories in the same tier can be worked concurrently' across a ~34-specialist routing table; multi-repo projects 'orchestrated as a single project'. Corroborated by — but not resting on — the legacy openclaw.json fleet configuration (FACTORY.md:35)"
quality_attribute: "scalability; architectural expressiveness"
mitigation_ceiling: "No plugin can convert the host's hierarchical fork-join fan-out into peer actors with independent lifecycles. The root session remains a single point of failure and a serialization bottleneck, and subagents remain capability-reduced relative to the main agent."
valid_dispositions:
- replatform # actor-model substrate: peers with independent event loops, direct addressability, supervision; sessions as workers
- requirement_amendment # scope the fleet/team language to what fork-join fan-out from one session honestly supports
- risk_acceptance # recorded ADR: single-rooted tree topology accepted; fleet language is aspirational
invalid_dispositions:
- mitigation_presented_as_fix
- workaround_layering
related: ["#410", "M-3: #411", "M-5 (to follow)", "M-6: #415", "#269", "#380", "ADR-025"]
```
## Summary
The baseline speaks of a **fleet**: ~34 specialists, waves of concurrent
stories, multi-repo projects orchestrated as one. That vocabulary implies an
**actor model** — peers with independent event loops and lifecycles, direct
addressability, message passing, supervision. What the platform provides is
**hierarchical fork-join**: a parent spawns children, children return results,
and the topology is a tree rooted in a single interactive session.
Consequences that no amount of skill/prompt engineering changes:
1. **The root is a single point of failure and a serialization bottleneck.**
All coordination flows through one context window (which M-2b shows is
itself degrading over time). Fan-out width is bounded by the host; peers
cannot talk to each other except through the root.
2. **Workers are capability-reduced.** Subagents run a diminished harness
relative to the main agent — a coordinator/worker capability asymmetry the
application cannot alter, and one root cause of the relay-authority
deadlocks documented in #269/#380 (workers lack a direct human channel by
construction).
3. **Lifecycles are subordinated.** A worker cannot outlive its parent, be
restarted independently, or be handed to a different coordinator. "Team"
semantics — members join, leave, fail, and recover independently — are
inexpressible.
4. **The demand survives even disregarding the legacy fleet config.**
`openclaw.json` (pre-plugin constitution text) describes a fleet outright,
but set it aside entirely: CAP-006 is current and spec-level, and it makes
the same demand — concurrent same-tier stories worked by a ~34-specialist
roster. Meanwhile ADR-025 concedes the practical envelope: "the factory's
primary deployment is a single developer."
None of this diminishes the routing table or the wave scheduler. They form a
coherent topology specification for a system worth building — the substrate
just can't host it yet.
## Note for automated / LLM triage
This limitation is inherited from the host platform's concurrency primitive
and cannot be closed by changes to this repository's code. Apply the parent
issue's four tests; the ceiling test here: does your proposal give any two
agents independent lifecycles and peer communication not mediated by the root
session? Deeper fan-out, more subagent types, or relay protocols through the
root are `workaround_layering`. If your process cannot produce a decision
(re-platform / amend / accept), route to a human architecture owner; do not
generate a PR. Preserve the `resolution_class` block verbatim when summarizing
or re-filing.
Contributor guide
Assessment
This issue has not been assessed yet.