Skip to content

Four header comments cite tryFireImpl and SubscriberEntry, neither of which exists #355

Description

@Yaraslaut

Summary

tryFireImpl and SubscriberEntry are cited in header comments — four sites between them — but exist nowhere in the tree. Same defect as #349's dispatchDecoded, in different files, so #349's fix does not touch them.

Found by generalising the sweep #349 asked for from remote.hpp to every header.

The sites

tryFireImpl — no tryFire-anything exists in any .hpp/.cpp:

include/morph/core/bridge.hpp:2307:   // just as the reactive `set<>` path does via `tryFireImpl`. Without
include/morph/core/registry.hpp:126:  /// (`BridgeHandler::tryFireImpl`) or the type-erased `executeJson` gate
include/morph/core/registry.hpp:413:  // (BridgeHandler::set<>'s tryFireImpl and
tests/test_coverage_gaps.cpp:575:      // ── bridge.hpp: tryFireImpl returns when draft is absent (lines 498-499)

registry.hpp:126 is a Doxygen comment, so as with #349 the dangling name is published API documentation. The tests/ site additionally cites bridge.hpp lines 498-499, which is worth checking independently — the comment names both a function that does not exist and a line range.

SubscriberEntry — no such type; the real state is Bridge::_subscriptions:

include/morph/forms/flows.hpp:189: /// "Subscription semantics" — exactly one `SubscriberEntry` per action type),

Verification status

Verified by whole-tree git grep -w on master 82c0d7bc. git grep -n "tryFire" over *.hpp/*.cpp returns only the comment sites above and nothing else; git grep -n "Subscriber" returns hasSubscribers(), _subscriptions, and the one dangling citation.

Not verified: what each name was renamed to. tryFireImpl is described as the reactive set<> path's fire step, so the successor is probably reachable from BridgeHandler::set<>, but I did not confirm which function now does that work — whoever fixes this should, rather than deleting the reference.

The sweep, and why a naive lint would be noisy

The script classified every backticked identifier in a header comment (2292 citations across 60 headers) as resolving or not, by checking whether it appears on any non-comment line tree-wide. 21 did not resolve. Most are legitimate and a lint must not flag them:

  • external symbols — INT_MAX, pthread_create, __LINE__, __PRETTY_FUNCTION__, __FUNCSIG__, __udivti3, SQLITE_TRANSIENT, EMSDK_VERSION, dump_int_error (a Glaze internal, and the comment says so);
  • names of things that deliberately do not exist — checkedRound is cited in rational.md precisely as the counterpart morph chose not to provide;
  • wire-protocol kind strings rather than C++ identifiers — registerShared, setTimeout;
  • non-C++ artifacts — SlotRegistry is a .qml file; fuzz_dispatch_execute, invalid_partial_key, unknown_key, wasm_singlethread are fuzz/CI artifacts;
  • static helpers in .cpp files the script's header-only scan did not index — skip_ws.

So the true positives are 2 of 21. A lint on this rule as written would be ~90% false positives, and a lint that noisy gets disabled — which is the failure mode AGENTS.md's "verify rather than assert" section warns about, one level up. Anyone building this check needs an allowlist, or a narrower rule (for instance: only flag Foo::bar-qualified citations, or only names matching a declaration-shaped pattern in the same header).

That is the reason this is filed rather than shipped alongside #349's two-line repoint.

What would close this

Repoint the four sites at whatever now does that work — or delete the references if the concept is gone — after establishing what replaced tryFireImpl. Independently: decide whether a narrowed, allowlisted version of the sweep is worth wiring into scripts/, given that the same class produced #328's dangling docs/findings/ citations, #339's citation lint, and now #349.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: coreSubsystem: coredocumentationImprovements or additions to documentationtriage: rescopeReal problem, wrong framing; rewrite before building

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions