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.
Summary
tryFireImplandSubscriberEntryare cited in header comments — four sites between them — but exist nowhere in the tree. Same defect as #349'sdispatchDecoded, in different files, so #349's fix does not touch them.Found by generalising the sweep #349 asked for from
remote.hppto every header.The sites
tryFireImpl— notryFire-anything exists in any.hpp/.cpp:registry.hpp:126is a Doxygen comment, so as with #349 the dangling name is published API documentation. Thetests/site additionally citesbridge.hpplines 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 isBridge::_subscriptions:Verification status
Verified by whole-tree
git grep -won master82c0d7bc.git grep -n "tryFire"over*.hpp/*.cppreturns only the comment sites above and nothing else;git grep -n "Subscriber"returnshasSubscribers(),_subscriptions, and the one dangling citation.Not verified: what each name was renamed to.
tryFireImplis described as the reactiveset<>path's fire step, so the successor is probably reachable fromBridgeHandler::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:
INT_MAX,pthread_create,__LINE__,__PRETTY_FUNCTION__,__FUNCSIG__,__udivti3,SQLITE_TRANSIENT,EMSDK_VERSION,dump_int_error(a Glaze internal, and the comment says so);checkedRoundis cited inrational.mdprecisely as the counterpart morph chose not to provide;registerShared,setTimeout;SlotRegistryis a.qmlfile;fuzz_dispatch_execute,invalid_partial_key,unknown_key,wasm_singlethreadare fuzz/CI artifacts;.cppfiles 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 intoscripts/, given that the same class produced #328's danglingdocs/findings/citations, #339's citation lint, and now #349.