alunduil / alunduil/blog.alunduil.com
The null object took the name the real thing needed
- Ngôn ngữ chính
- Astro
- Star
- 1
- Fork
- 1
- Merge trung bình
- 6 giờ 34 phút
- Pull request đã merge (30 ngày)
- 118
Mô tả
## Spark
`Partir.Agent.Observer` was specced, then shipped as `Partir.Agent.Null` mid-PR. An agent that emits no intent against any scene is a null object, not an observer — and someone typing `partir-glut observe` expects a camera they can point. Renaming it freed `Observer` and immediately surfaced two design questions the shared name had been hiding.
## Why it could be interesting
The first instance of an abstraction is almost always the do-nothing one, and the do-nothing one is almost always named after the abstraction's most obvious real use — because at that point nobody has built the real use yet. The claim: naming the null instance after the concept you haven't implemented is a reliable way to lose the concept, and the tell is that the no-op's name describes a behaviour it doesn't have. Fixing it is cheap and mechanical; the payoff is that the questions the fused name was suppressing become filable.
## Open questions
- [ ] What made it obvious at the moment it became obvious? The spec said Observer for weeks. Something during PR #92 broke the fusion — the post lives or dies on that beat.
- [ ] Is there a general tell, or does this only read as obvious in hindsight? Candidate: the no-op's name is a verb-derived noun describing behaviour the no-op doesn't perform.
- [ ] The word collision worth naming or worth avoiding: this `Agent` is a typeclass for anything driving a client — human, camera, screenshot bot — not the LLM sense in #357 and #565. Does addressing that help the reader or derail the post?
- [ ] Do #94 and #95 need to be resolved before this is writeable, or is "the rename produced two open questions" the honest ending?
## Source material
- qua-world/partir.qua.world#11 → PR https://github.com/qua-world/partir.qua.world/pull/92; the issue body carries the "Update (naming, 2026-08-30)" note explaining the split
- qua-world/partir.qua.world#94 (viewpoint: intent or client-local state) and #95 (screenshot agent — "Raised while naming the null agent during PR #92")
- Commits: "Name the do-nothing agent Null, freeing Observer", "Name what the observer spec asks of step", "Report the agent the observe command becomes"
- Adjacent: #426 (name workflows for when they run, jobs for what they check), #357, #565
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Đánh giá
Issue này chưa được đánh giá.