~11 min · independence, opposition, waves, visibility
Level 0Cold Iron
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
Independent Is a Wave
Independence is not an adjective in a prompt; it is a wave property. Independent seats open from the same declared base, receive equivalent allowed context, cannot consume one another’s submissions, and commit their own artifacts before comparison.
Opposition is also a scheduled relation. A Debate rebuttal may see the opposing claim because that visibility is the pressure. A Red Team attacker may see the target artifact but not the builder’s private process. The plan grants precisely the material required by the role.
Expressing these relations as waves avoids hidden agents. Dad can see which seats are expected, which joined, which material opened, and which phase waits. The engine need not spawn or narrate invisible workers.
Independence can fail through shared mutable state even when prompts are separate. A common worktree, scratch document, or cached answer becomes a side channel. Yards and immutable store references turn the word independent into an enforceable operational shape.
Independence is topology plus visibility. Same base, separate yards, no peer artifacts before submission, explicit later openings.
Code
A visibility matrix that also checks for side channels·python
def visibility(role, phase, base, yards, submissions):
"""Exactly what this role can see right now — nothing more."""
view = {"brief", base}
if role == "worker":
view.add(yards["self"]) # its own yard only
elif role == "rebuttal" and phase >= 1:
view |= set(submissions) # opposition is allowed sight
elif role == "judge":
view |= set(submissions)
return view
def leaks(role_views, shared_mutable):
"""Separate prompts still are not independence if state is shared."""
return sorted(v for v in role_views if v in shared_mutable)
base, subs = "frozen-base", {"A", "B"}
yards = {"self": "yard-a"}
w = visibility("worker", 0, base, yards, subs)
assert not (w & subs) # no peer work before submission
print(sorted(w))
print(sorted(visibility("judge", 2, base, yards, subs)))
print("side channel:", leaks(w | {"scratch.md"}, shared_mutable={"scratch.md"}))