Skip to content

A node type's ports block is inert — decide enforce / delete / generate #72

Description

@MSD21091969

Measured, and pinned in mtdc-lab. The ports block on a node type gates nothing in this repo.

The mechanism

internal/operad/validate.go ValidateLINK checks: WF known → WF allows LINK → WF15 contract → linkPairDeclared (the (src_port, tgt_port) tuple against the WF's primary + additional pairs) → port colour compatibility. Pair-level src/tgt types are checked in the state-aware path.

Nothing reads a node type's ports. internal/operad/loader.go:181 parses the block into a PortSpec and stores it at registry.go:34; every non-test read of .Ports / PortSpec in internal/ is the loader and the struct definition. Written, never read.

What that permits, measured against ontology 4.0.7

count
declared ports named by no WF pair — un-LINKable 44 of 82 (53.7%)
(WF-pair, type) obligations naming a port the type does not declare 123, across 42 of 56 types

Concrete instance: ontology 4.0.6 added manifold to the WF01 owns/owned-by tgt_types, while manifold declares only {"self": ["identity"]}.

Both directions are large because the two namespaces are never reconciled by anything executable.

Evidence

  • mtdc-lab/moos-generated/tests/ports_are_inert.rs — 3 tests, pinned at 4.0.7.
  • mtdc-lab/findings/20260809-t281-round7-port-census.md — the 44.
  • Independent corroboration: mtdc-lab's genlib::emit_tables emits id, qualifier_segments, urn_nid, urn_pattern per node type and no ports — the generator already concluded they are not part of verification.

What is owed here

A Go test pinning the oracle side. mtdc-lab can only pin that its mirror admits a LINK onto an undeclared port; it cannot execute this repo's validator. Until a test here asserts that ValidateLINK admits such an envelope, the claim rests on the source read above. That test is small and belongs in internal/operad.

The ruling, which is not this issue's to make

Three options — enforce (fail-closed, breaks 123 obligations, needs the ontology repaired first), delete, or generate ports as a projection of the pair table with a drift gate. Costed at mtdc-lab/proposals/ffs0-ports-as-projection.md. Reserved to Sam.

Note that this repo's own CLAUDE.md already says "Relations are truth. Properties never duplicate topology" — which argues one way without settling it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions