Skip to content

Decentralize domain registration via canopyRegister, verify canopyBra… - #21

Merged
noha merged 1 commit into
mainfrom
decentralize-domain-registration
Jul 23, 2026
Merged

Decentralize domain registration via canopyRegister, verify canopyBra…#21
noha merged 1 commit into
mainfrom
decentralize-domain-registration

Conversation

@noha

@noha noha commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

…nch for instances

Addresses the "Registrierungsmechanismus" backlog item's two open cases, discussed and scoped down with Norbert (a full automatic PragmaCollector- based scan was explicitly rejected - no real use case for discovering self-registering classes, and the set of singleton/class contributors will always be small and known):

Singletons/classes: each contributing class now owns a simple canopyRegister class method (VirtualMachine, Process, File, ExternalSemaphoreTable, SmalltalkImage, CanopyZincCounter) instead of the knowledge living centrally in Canopy class>>systemMetrics/zincMetrics (both removed). registerImageMetrics/registerVirtualMachineMetrics/registerZincMetrics now just delegate to the relevant class(es)' canopyRegister. New classes can register themselves without ever touching Canopy class.

Arbitrary composed instances: no new mechanism needed - the existing pragma (previously only demonstrated via Dictionary>>canopyBranch:) already lets any composed instance wire in its own sub-components via aBuilder at:addMapping:, and canopyMapping already builds the full nested tree from that. Added a demonstration (CanopyComposedAppExample/CanopyComposedSubComponent + testComposedInstanceRegistersAsDomainViaCanopyBranch) proving a composed instance registers correctly as a Canopy domain via registerDomainNamed:with:, fullKey resolving correctly two levels deep.

…nch for instances

Addresses the "Registrierungsmechanismus" backlog item's two open cases,
discussed and scoped down with Norbert (a full automatic PragmaCollector-
based scan was explicitly rejected - no real use case for discovering
self-registering classes, and the set of singleton/class contributors
will always be small and known):

Singletons/classes: each contributing class now owns a simple canopyRegister
class method (VirtualMachine, Process, File, ExternalSemaphoreTable,
SmalltalkImage, CanopyZincCounter) instead of the knowledge living
centrally in Canopy class>>systemMetrics/zincMetrics (both removed).
registerImageMetrics/registerVirtualMachineMetrics/registerZincMetrics now
just delegate to the relevant class(es)' canopyRegister. New classes can
register themselves without ever touching Canopy class.

Arbitrary composed instances: no new mechanism needed - the existing
<canopyBranch> pragma (previously only demonstrated via
Dictionary>>canopyBranch:) already lets any composed instance wire in its
own sub-components via aBuilder at:addMapping:, and canopyMapping already
builds the full nested tree from that. Added a demonstration
(CanopyComposedAppExample/CanopyComposedSubComponent +
testComposedInstanceRegistersAsDomainViaCanopyBranch) proving a composed
instance registers correctly as a Canopy domain via
registerDomainNamed:with:, fullKey resolving correctly two levels deep.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@noha
noha merged commit e321850 into main Jul 23, 2026
4 checks passed
@noha
noha deleted the decentralize-domain-registration branch July 23, 2026 14:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant