Invocation: further considerations regarding diagnostics

Requirement analysis indicates that a »Node ID« is rather tangential
to the core operation of calculating media; the only infliction point
seems to be the generation of ''systematic cache keys.''

A spec — especially for the `Turnout` however is very relevant for
diagnostics, error reporting and unit testing. So we are in the
difficult situation where rather elaborate functionality is
required only for a secondary concern, and moreover the
node data structure imposes a critical memory leverage.
This commit is contained in:
Fischlurch 2024-11-01 23:57:14 +01:00
parent aab8278579
commit 96d30cb5e7
3 changed files with 351 additions and 43 deletions

View file

@ -30,6 +30,9 @@
** tweak of the edit. This marker was added as a preview in 2010
** but we didn't get to the point of actually putting that idea
** into practical use. Yet the basic idea remains desirable...
** @deprecated 10/2024 seems very likely that similar functionality moves down
** into the render-engine implementation and will no longer be considered
** a constituent of the public interface.
*/

View file

@ -44,7 +44,7 @@
#include "lib/error.hpp"
#include "lib/nocopy.hpp"
#include "steam/common.hpp"
#include "lib/hash-value.h"
#include "steam/asset/proc.hpp"
#include "steam/mobject/parameter.hpp"
//#include "steam/engine/state-closure-obsolete.hpp" ///////////////////////////////////////////////////////TICKET #1367 : Rebuild the Node Invocation
@ -56,6 +56,7 @@
#include "lib/format-string.hpp"
#include "lib/several.hpp"
#include <string>
#include <vector>
#include <optional>
@ -66,8 +67,10 @@ namespace engine {
namespace err = lumiera::error;
using std::move;
using std::string;
using std::vector; //////////////TODO;
using lumiera::NodeID;
using lib::HashVal;
using lumiera::NodeID; ///////////////////////TODO likely to be removed
using util::_Fmt;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////TICKET #1367 : Rebuild the Node Invocation
@ -239,6 +242,30 @@ namespace engine {
return 0 < ports().size();
///////////////////////////////////////////////////TODO 10/2024 more to verify here
}
string
getNodeSpec()
{
UNIMPLEMENTED ("generate a descriptive Spec of this ProcNode for diagnostics");
}
HashVal
getNodeHash() ///< @todo not clear yet if this has to include predecessor info
{
UNIMPLEMENTED ("calculate an unique hash-key to designate this node");
}
string
getPortSpec (uint portIdx)
{
UNIMPLEMENTED ("generate a descriptive diagnostic Spec for the designated Turnout");
}
HashVal
getPortHash (uint portIdx)
{
UNIMPLEMENTED ("calculate an unique, stable and reproducible hash-key to identify the Turnout");
}
};
inline ProcNodeDiagnostic

View file

@ -13430,9 +13430,7 @@
<node CREATED="1519438604809" ID="ID_313142617" MODIFIED="1519438615852" TEXT="L&#xf6;sevorgang mu&#xdf; den Ziel-Level kennen"/>
<node CREATED="1519438617271" ID="ID_1310079168" MODIFIED="1519438673926">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
<i>fast immer</i>&#160;ist das aber UIC_VIEW
@ -13440,9 +13438,7 @@
</body>
</html></richcontent>
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
im Moment f&#228;llt mir &#252;berhaupt keine Ausnahme ein
@ -14642,9 +14638,7 @@
<node CREATED="1529019931210" ID="ID_963819454" MODIFIED="1529065532532" TEXT="Variante-1 mit API-Erweiterung ist naheliegend"/>
<node CREATED="1529019962989" ID="ID_1964052993" MODIFIED="1529065532532">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
die <b>verfickte</b>&#160;Performance wird ignoriert
@ -16896,9 +16890,7 @@
<node CREATED="1506956866802" ID="ID_652269096" MODIFIED="1557498707221" TEXT="Navigator">
<node CREATED="1507935433543" ID="ID_239254800" MODIFIED="1557498707221">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
in <i>generischer UI-Struktur</i>&#160;bewegen
@ -19987,9 +19979,7 @@
<icon BUILTIN="button_cancel"/>
<node CREATED="1661703686271" ID="ID_876601888" MODIFIED="1661704164479" TEXT="L&#xe4;nge und Fenster-Spec einheitlich in Pixeln">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
hierbei ist...
@ -47934,9 +47924,7 @@
<node CREATED="1472829929343" ID="ID_797835614" MODIFIED="1472829944881" TEXT="special handling for Ref::END / Ref::ATTRIBS"/>
<node CREATED="1457231524839" ID="ID_1492447432" MODIFIED="1575133326760" TEXT="needs to establish responsible target beforehand">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
since, on interface level, we're pretending that this mutator <i>is a single collection like thing,</i>
@ -48474,9 +48462,7 @@
<node CREATED="1456424730022" ID="ID_282791744" MODIFIED="1456437520769" TEXT="hat also keinen Platz f&#xfc;r explizite Eigenschaften"/>
<node CREATED="1456424765113" ID="ID_1716539711" MODIFIED="1456437520770">
<richcontent TYPE="NODE"><html>
<head>
</head>
<head/>
<body>
<p>
und nur letztere sind <i>tangibel</i>
@ -48933,9 +48919,7 @@
<node CREATED="1475449530565" ID="ID_284330532" MODIFIED="1475449531825" TEXT="collection von MockElm"/>
<node CREATED="1475449532556" ID="ID_1804332542" MODIFIED="1576282358008" TEXT="MockElm ist noncopyable">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
...aus gutem Grund!
@ -49186,9 +49170,7 @@
<node CREATED="1492443656859" ID="ID_1242818576" MODIFIED="1492443663663" TEXT="Tangible / Bus-Term"/>
<node CREATED="1492443664602" ID="ID_263362527" MODIFIED="1576282358006" TEXT="reine Command-ID">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
Instanz-Management ist automatisch
@ -49399,9 +49381,7 @@
<node CREATED="1618497485166" ID="ID_595584701" MODIFIED="1618497505049" TEXT="Konsequenz: &quot;R&#xfc;ckmeldung&quot; steht neben &quot;Feuern&quot;">
<node CREATED="1618497536204" ID="ID_1376398950" MODIFIED="1618497584286" TEXT="wird relevant wenn man Gesten wiederverwendet">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<head/>
<body>
<p>
Also eine generische Implementierung einer Gesten-Erkennung (z.B. dragging), welche dann durch Parametrisierung eingebunden wird
@ -91504,8 +91484,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1730427251935" ID="ID_162913631" MODIFIED="1730427287787" TEXT="sie mu&#xdf; im Turnout greifbar sein">
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1730427274867" ID="ID_1511400718" MODIFIED="1730427287787" TEXT="also durch den WeavingBuilder durchlaufen">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1730427274867" ID="ID_1511400718" MODIFIED="1730429566295" TEXT="also durch den WeavingBuilder durchlaufen">
<icon BUILTIN="button_ok"/>
</node>
</node>
</node>
@ -91586,6 +91566,284 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="yes"/>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1730486371054" HGAP="24" ID="ID_939499486" MODIFIED="1730487590452" TEXT="Node-Metadaten" VSHIFT="7">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1730486406186" ID="ID_1910737579" MODIFIED="1730486466020" TEXT="Anforderungen sind derzeit prospektiv">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1730486495702" ID="ID_1565328459" MODIFIED="1730486630088" TEXT="es wird kein &#xbb;R&#xfc;ckweg&#xab; ben&#xf6;tigt">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
weder m&#252;ssen wir nach derzeitigem Stand den Node-Datensatz anhand einer ID wiederfinden k&#246;nnen, noch m&#252;ssen wir von einer Node auf ihren Definitions-Kontext zur&#252;ckschlie&#223;en. Denn Nodes sind eine reine executiv-Repr&#228;sentation; sie werden durch Interpretation semantischer Attributierungen einmal erstellt, dann aber nur noch ausgef&#252;hrt, und bei jeder &#196;nderung verworfen und neu konstruiert
</p>
</body>
</html>
</richcontent>
<icon BUILTIN="idea"/>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1730497384901" ID="ID_1576828702" MODIFIED="1730497393100" TEXT="wirklich nicht?">
<font NAME="SansSerif" SIZE="10"/>
<icon BUILTIN="help"/>
<node COLOR="#611c6b" CREATED="1730497436551" ID="ID_115053935" MODIFIED="1730497502530" TEXT=" {ich kenn das}">
<font NAME="SansSerif" SIZE="10"/>
<icon BUILTIN="smiley-oh"/>
</node>
<node COLOR="#611c6b" CREATED="1730497472394" ID="ID_1802234089" MODIFIED="1730498938052" TEXT="am Beweisweg geht immer die ganze Eleganz zugrunde">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
So manches Verfahren der symbolischen Repr&#228;sentation erscheint zun&#228;chst unglaublich elegant und auch effizient; und wenn man es dann in die Praxis &#252;bernimmt, und das Verfahren nicht funktioniert, steht man vor einem unl&#246;sbaren R&#228;tsel. Also mu&#223; der Weg der L&#246;sungsfindung mit aufgezeichnet werden. Und das zerst&#246;rt die gesamte Eleganz und ist oft aufwendiger, als die eigentliche L&#246;sungsfindung.
</p>
</body>
</html></richcontent>
<font NAME="SansSerif" SIZE="10"/>
</node>
</node>
<node COLOR="#435e98" CREATED="1730508983538" ID="ID_519915836" MODIFIED="1730509053273" TEXT="(potentieller Ausweg: errechnete ID + externer Lookup)">
<arrowlink COLOR="#c7dcf5" DESTINATION="ID_423678075" ENDARROW="Default" ENDINCLINATION="461;-17;" ID="Arrow_ID_268382631" STARTARROW="None" STARTINCLINATION="409;26;"/>
<font NAME="SansSerif" SIZE="9"/>
<icon BUILTIN="idea"/>
</node>
</node>
<node CREATED="1730486648779" ID="ID_518441567" MODIFIED="1730488192170" TEXT="gebraucht wird: ein stabiler und reproduzierbarer Cache-Key">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
soll sich <i>genau dann &#228;ndern, </i>wenn das Ergebnis aus User-Sicht abweichen wird
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1730497062384" ID="ID_1375039507" MODIFIED="1730497334994" TEXT="gebraucht wird: eine stabile und lesbare Notation f&#xfc;r Test und Diagnose">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
Das ist ein wichtiger <i>Neben-Nutzen;</i>&#160;jedoch ist zu beachten, da&#223; dieser die Haupt-Berechnung nicht belastet, denn auf dem kritischen Pfad ist dieser Fall niemals relevant. Er wird aber sicher sehr bedeutsam sein f&#252;r lesbare Diagnose-Meldungen, und auch f&#252;r die wenigen aber wesentlichen Testf&#228;lle, welche den Aufbau und Zugang zur Datenstruktur der Render-Engine absichern.
</p>
</body>
</html></richcontent>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1721238837562" HGAP="14" ID="ID_286044031" MODIFIED="1730500771786" STYLE="bubble" TEXT="ungel&#xf6;st: Fehler-Diagnose" VSHIFT="7">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
Es handelt sich auch um eine <i>strategische Entscheidung,</i>&#160;welche Fehler man routinem&#228;&#223;ig zu identifizieren hat. Das System ist entworfen unter der Grundannahme, da&#223; der Builder bereits jedwede <i>Fehlkonfiguration</i>&#160; und <i>Bereichs&#252;berschreitung im Nutzen</i>&#160;erfa&#223;t und unterbunden hat, so da&#223; w&#228;hrend der Render-Operation nur noch (erwartbare) Zeit&#252;berschreitungen und (unerwartete) Systemfehler und Entgleisungen in externen Libraries passieren k&#246;nnen. Es wird deshalb in der Node-Invocation <b>kein Fehlerausgang vorgesehen</b>. Sollte einer der unerwarteten Fehlerf&#228;lle noch &#252;berhaupt fa&#223;bar sein (und nicht unmittelbar zum Absturz f&#252;hren), so kann von &#252;berall eine Exception augeworfen werden; Ressourcen-Lecks sch&#228;tze ich f&#252;r diesen Fall als nicht relevant ein, da aller Invocation-State ohnehin auf dem Stack liegt und Buffer durch Timeouts gesch&#252;tzt sind.
</p>
<p>
Nun ist die Frage: <i>will man in einer solchen Situation mehr leisten als &#187;Fehler in Render-Engine&#171;?</i>&#160;Denn dann m&#252;&#223;te Information &#252;ber den direkten Invocation-Kontext mit aufgegriffen werden; und um diese Information &#252;berhaupt nutzen zu k&#246;nnen, bed&#252;rfte es dann einer R&#252;ck&#252;bersetzung in Entit&#228;ten und Koordinaten des high-level-Models, um sinnvoll auf die Ursache schlie&#223;en zu k&#246;nnen. Alle mir bekannte Medien-Sofware leistet nicht diesen Grad der Fehlerdiagnose, vielmehr steht in einem solchen Fall der Benutzer allein da, und kann bestenfalls durch schrittweises Herantasten erraten, was das Problem verursacht hat. Insofern k&#246;nnte man sich auf den Standpunkt stellen, da&#223; Lumiera in dieser Hinsicht keine Probleme zu l&#246;sen hat, mit denen man in der Praxis auch anderweitig irgendwie &#252;berlebt...
</p>
</body>
</html>
</richcontent>
<edge COLOR="#ff5d00" STYLE="sharp_linear"/>
<arrowlink COLOR="#fe512a" DESTINATION="ID_190416286" ENDARROW="Default" ENDINCLINATION="1101;-48;" ID="Arrow_ID_304105897" STARTARROW="None" STARTINCLINATION="-848;70;"/>
<icon BUILTIN="bell"/>
<node CREATED="1721239003353" ID="ID_338638358" MODIFIED="1730499415537" STYLE="fork" TEXT="nicht klar wo Fehler zu erwarten sind">
<font NAME="SansSerif" SIZE="8"/>
</node>
<node CREATED="1721239003353" ID="ID_72914856" MODIFIED="1730499435886" STYLE="fork" TEXT="brauche dann Fehlerkontext">
<font NAME="SansSerif" SIZE="8"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1730487601562" ID="ID_1132202867" MODIFIED="1730487611994" TEXT="ID-Records">
<icon BUILTIN="pencil"/>
<node CREATED="1730487688726" ID="ID_355149059" MODIFIED="1730487823126" TEXT="Node ist markiert mit...">
<linktarget COLOR="#708298" DESTINATION="ID_355149059" ENDARROW="Default" ENDINCLINATION="-295;886;" ID="Arrow_ID_1310337579" SOURCE="ID_1784608228" STARTARROW="None" STARTINCLINATION="655;34;"/>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1730487849688" ID="ID_775932850" MODIFIED="1730488237937" TEXT="...rein dem strukturellen Anteil">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
ohne Differenzierungen auf der Implementierungs-Ebene durch die Ports
</p>
</body>
</html>
</richcontent>
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
<node CREATED="1730425782228" ID="ID_1450234865" MODIFIED="1730487914330" TEXT="das Node-Symbol">
<node CREATED="1729985298574" ID="ID_800143497" MODIFIED="1730487940248" TEXT="tr&#xe4;gt Marke der Domain-Ontology der sie entstammt"/>
<node CREATED="1729985326069" ID="ID_1902375822" MODIFIED="1730488021011" TEXT="semantische ID des Proc-Asset">
<arrowlink COLOR="#6f4685" DESTINATION="ID_169575397" ENDARROW="Default" ENDINCLINATION="-2831;-132;" ID="Arrow_ID_1200063463" STARTARROW="None" STARTINCLINATION="2248;201;"/>
</node>
<node CREATED="1730488027144" ID="ID_1272084848" MODIFIED="1730488095237">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
Beispiel: <font face="Monospaced" color="#312341"><b>FFmpeg:gaussianBlur</b></font>
</p>
</body>
</html></richcontent>
</node>
</node>
<node CREATED="1729985279723" ID="ID_151767070" MODIFIED="1730487909948" TEXT="die IDs der Vorl&#xe4;ufer gehen (geeignet) mit ein" VSHIFT="7"/>
</node>
<node CREATED="1730488249706" ID="ID_459312416" MODIFIED="1730488264756" TEXT="jeder Turnout tr&#xe4;gt...">
<node CREATED="1730488278894" ID="ID_1176414993" MODIFIED="1730488284466" TEXT="einen Qualifier">
<node CREATED="1730488434602" ID="ID_598589955" MODIFIED="1730489528721" TEXT="m&#xf6;glicherweise eine Implementierungs-Variante">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
hier ist zu markieren, falls der Builder oder die Domain-Ontology konkret einen Entscheidungsspielraum in einem Fall so und in einem anderen Fall so nutzt, also z.B. eine spezielle Parametrisierung des Algorithmus, die vom Default abweicht. Wenn dagegen der Algorithmus selber sich inkompatibel ge&#228;ndert hat, so wird das bereits n der ID des Proc-Asset durch ein Postfix .v# markiert
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1730489531517" ID="ID_79138326" MODIFIED="1730489559877" TEXT="zwei Argumentlisten">
<node CREATED="1730489570559" ID="ID_754446693" MODIFIED="1730489575443" TEXT="Liste der Inputs"/>
<node CREATED="1730489583238" ID="ID_376021595" MODIFIED="1730489588061" TEXT="Liste der Outputs"/>
</node>
<node CREATED="1730489713853" ID="ID_1298630940" MODIFIED="1730489725087" TEXT="jeweils ein Symbol der Streamtype-Impl"/>
<node CREATED="1730496593431" ID="ID_673973407" MODIFIED="1730496823747" TEXT="abk&#xfc;rzende Notation: /n">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
denn in den allermeisten F&#228;llen d&#252;rfte es entweder ein Feed sein, oder N gleiche Feeds
</p>
</body>
</html>
</richcontent>
</node>
</node>
<node CREATED="1730508308461" ID="ID_1597023280" MODIFIED="1730508446212" TEXT="diese Informationen werden von Level-3 durchgereicht">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
Level-3 ist der Builder, der &#252;ber die tats&#228;chlich zu legenden Verbindungen entscheidet; daf&#252;r ben&#246;tigt er noch die StreamType-Information, wohingegen Level-2 Verbindungen und Typinformationen ungepr&#252;ft anwendet. Daher mu&#223; zwangsl&#228;ufig dieser gesamte Qualifier mit den Argumentslisten auf einem h&#246;heren Level im Builder etabliert werden.
</p>
</body>
</html></richcontent>
</node>
<node CREATED="1730508458928" ID="ID_363497720" MODIFIED="1730508500047" TEXT="zumindest in den Hash-Key m&#xfc;ssen auch die Verbindungen zu Vorl&#xe4;ufer-Turnouts mit eingehen"/>
</node>
<node CREATED="1730508506074" ID="ID_1419195116" MODIFIED="1730509223073" TEXT="die textuelle ID mu&#xdf; vor allem lesbar sein, nicht jedoch methodisch ersch&#xf6;pfend">
<icon BUILTIN="yes"/>
<node CREATED="1730509107066" ID="ID_420859931" MODIFIED="1730509126872" TEXT="die Repr&#xe4;sentation kann abk&#xfc;rzen, solange sie verst&#xe4;ndlich bleibt"/>
<node CREATED="1730509088580" ID="ID_1799612340" MODIFIED="1730509199183" TEXT="f&#xfc;r die Vorl&#xe4;ufer ist eine Quell-Angabe wichtiger als die n&#xe4;chste Node-ID">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
bedeutet, es braucht einen Zugriff auf die ID der Medien-Datenquelle, und diese wird zur Kennzeichnung des Eingangs-Feeds verwendet, und nicht rekursiv die vorl&#228;ufer-Node-ID
</p>
</body>
</html></richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#e0ceaa" COLOR="#690f14" CREATED="1730508536555" ID="ID_469682313" MODIFIED="1730509371345" TEXT="Konsequenz: der Hash-Key wird durch ein separates System von Funktionsaufrufen aufgebaut">
<icon BUILTIN="forward"/>
<node CREATED="1730508587544" ID="ID_593550351" MODIFIED="1730508602529" TEXT="also nicht einfach durch Hashen des textuellen Deskriptors"/>
<node CREATED="1730508607236" ID="ID_1328970726" MODIFIED="1730508628046" TEXT="sondern mehr in der Art wie ein Merkle-Tree &#x2014; also vollst&#xe4;ndig aussch&#xf6;&#xdf;fend"/>
<node CREATED="1730508643370" ID="ID_1780989185" MODIFIED="1730508722103" TEXT="hier mu&#xdf; auch eine Komponente zur Invocation-Zeit mit eingespeist werden (Automation)">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
zwar k&#246;nnte man bereits im Builder festlegen, da&#223; eine solche Komponente dazukommt; jedoch ist erst zum Zeitpunkt der konkreten Invocation klar, welche dynamischen Parameterwerte sich ergeben und noch in die Medien-Berechnung einflie&#223;en
</p>
</body>
</html>
</richcontent>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1730508735166" ID="ID_1955634373" MODIFIED="1730509071058" TEXT="generell: auf ein Getter-API setzen">
<icon BUILTIN="yes"/>
<node CREATED="1730508758773" ID="ID_1040159044" MODIFIED="1730508787495" TEXT="bedeutet: komplett abstrahieren von der Berechnung und Storage"/>
<node CREATED="1730508788860" ID="ID_423678075" MODIFIED="1730509061121" TEXT="vermutlich wird das sp&#xe4;ter sogar komplett von den Daten im Node-Graphen getrennt">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
...will sagen, diese Funktionen interpretieren dann zwar noch die Connectivity-Information, verwenden aber f&#252;r alle tats&#228;chlich zu inkorporierenden Texte eine externe Symbol-Tabelle, allein schon zur Deduplikation. Das bedeutet aber im Umkehrschlu&#223;: hier haben wir doch einen &#187;R&#252;ckw&#228;rts-Zugriff&#171; (auch wenn er funktional realisiert werden kann, indem eine Node-ID reproduzierbar aus der Connectivity errechnet wird)
</p>
</body>
</html>
</richcontent>
<linktarget COLOR="#c7dcf5" DESTINATION="ID_423678075" ENDARROW="Default" ENDINCLINATION="461;-17;" ID="Arrow_ID_268382631" SOURCE="ID_519915836" STARTARROW="None" STARTINCLINATION="409;26;"/>
<icon BUILTIN="idea"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#f0d5c5" COLOR="#990033" CREATED="1730510962225" ID="ID_786613770" MODIFIED="1730510979532" TEXT="API f&#xfc;r Metadaten-Zugriff">
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1730510982342" ID="ID_310976542" MODIFIED="1730510998830" TEXT="Struktur/Modell">
<icon BUILTIN="info"/>
<node CREATED="1730511009387" ID="ID_420452584" MODIFIED="1730511031996" TEXT="m&#xf6;gliche Ans&#xe4;tze....">
<node CREATED="1730511036658" ID="ID_1206895083" MODIFIED="1730511110408" TEXT="auf ProcNode und auf Port-API">
<node CREATED="1730511095080" ID="ID_1789033207" MODIFIED="1730511142614" TEXT="KISS / least surprise">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1730511161751" ID="ID_315063699" MODIFIED="1730511173092" TEXT="wird dann aber auch Core-Functionality">
<icon BUILTIN="smily_bad"/>
</node>
</node>
<node CREATED="1730511017635" ID="ID_20423235" MODIFIED="1730511123004" TEXT="Accessoren auf dem ProcNode-API"/>
<node CREATED="1730511048472" ID="ID_368093003" MODIFIED="1730511057625" TEXT="in separate Klasse NodeID"/>
<node CREATED="1730511058973" ID="ID_237133439" MODIFIED="1730511312538" TEXT="nur Accessoren auf ProcNodeDiagnostic">
<icon BUILTIN="forward"/>
<node CREATED="1730511184252" ID="ID_605811898" MODIFIED="1730511206175" TEXT="somit klar als Neben-Belang gekennzeichnet">
<icon BUILTIN="ksmiletris"/>
</node>
<node CREATED="1730511246071" ID="ID_28190802" MODIFIED="1730511261741" TEXT="ProcNode - API wird dadurch immer gehaltloser">
<icon BUILTIN="smily_bad"/>
</node>
<node BACKGROUND_COLOR="#ccb59b" COLOR="#6e2a38" CREATED="1730511277272" ID="ID_602420607" MODIFIED="1730511309290" TEXT="zun&#xe4;chst der defensive Ansatz">
<font ITALIC="true" NAME="SansSerif" SIZE="14"/>
<icon BUILTIN="yes"/>
</node>
</node>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1730486716299" ID="ID_95149323" MODIFIED="1730486959772" STYLE="fork" TEXT="Storage bedarf gesondert der Betrachtung">
<edge COLOR="#808080" STYLE="bezier" WIDTH="thin"/>
<linktarget COLOR="#d64274" DESTINATION="ID_95149323" ENDARROW="Default" ENDINCLINATION="-487;32;" ID="Arrow_ID_78196027" SOURCE="ID_1171232335" STARTARROW="None" STARTINCLINATION="92;6;"/>
<icon BUILTIN="clanbomber"/>
<node CREATED="1730486972976" ID="ID_1075439785" MODIFIED="1730486996671" TEXT="in einem ersten Schritt die ben&#xf6;tigte Datenverkn&#xfc;pfung aufbauen"/>
<node CREATED="1730486997604" ID="ID_703193526" MODIFIED="1730487030882" TEXT="dann vom tats&#xe4;chlichen Nutzen her konsolidieren"/>
<node CREATED="1730487435274" ID="ID_829418674" MODIFIED="1730487557981" TEXT="komplexe zentrale Registry zur Deduplikation">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
....die Vorraussetzungen hierf&#252;r sind gut, da der einzige Zugang &#252;ber eine zentrale Builder-Schnittstelle erfolgt; dennoch wird ein solches Schema komplex, bedingt durch die Verteilung von Logik auf die verschiedenen Media-processing-Library-Plug-ins
</p>
</body>
</html>
</richcontent>
</node>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1721238837562" HGAP="132" ID="ID_1159160517" MODIFIED="1730500824387" STYLE="bubble" VSHIFT="44">
<richcontent TYPE="NODE"><html>
<head/>
<body>
<p>
gef&#228;hrlicher Hebel durch potentiell
</p>
<p>
sehr gro&#223;e Anzahl an Nodes
</p>
</body>
</html></richcontent>
<edge COLOR="#ff5d00" STYLE="sharp_linear"/>
<arrowlink COLOR="#fe512a" DESTINATION="ID_635840106" ENDARROW="Default" ENDINCLINATION="1101;-48;" ID="Arrow_ID_902176330" STARTARROW="None" STARTINCLINATION="-772;102;"/>
<icon BUILTIN="bell"/>
<node COLOR="#b10061" CREATED="1721239003353" HGAP="33" ID="ID_1810704483" MODIFIED="1730487399098" STYLE="fork" TEXT="Verschwendung zun&#xe4;chst notwendig zum Etablieren der Anforderungen" VSHIFT="30">
<font NAME="SansSerif" SIZE="8"/>
</node>
</node>
</node>
</node>
<node CREATED="1721057100380" ID="ID_1203624262" MODIFIED="1721057258792" TEXT="globaler Anker notwendig">
<linktarget COLOR="#741b46" DESTINATION="ID_1203624262" ENDARROW="Default" ENDINCLINATION="387;-47;" ID="Arrow_ID_1836206594" SOURCE="ID_409561952" STARTARROW="None" STARTINCLINATION="-442;32;"/>
<icon BUILTIN="yes"/>
@ -91751,8 +92009,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
...im Grunde ist die Identit&#228;t zun&#228;chst einmal, da&#223; es die Node gibt, da&#223; sie an einer Speicheradresse sitzt; im aktuellen Design ist es jedoch nicht notwendig, die Node anhand der Identit&#228;t finden zu k&#246;nnen, denn man findet sie &#252;ber die Verschaltung auf eine Exit-Node
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1730424347235" ID="ID_1202389221" MODIFIED="1730424362860" TEXT="aber die Identit&#xe4;t mu&#xdf; stabil und reproduzierbar sein">
<icon BUILTIN="messagebox_warning"/>
@ -91774,8 +92031,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
Rein technische Informationen w&#228;ren z.B. ein Funktions-Symbol im Executable oder Quellcode oder eine Parametersignatur; von solchen Daten kommt man niemals direkt zu einem Urteil &quot;&#228;quivalent f&#252;r den User&quot;
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1730425268920" ID="ID_909157635" MODIFIED="1730425292593" TEXT="es mu&#xdf; der Stream-Implementation-Type f&#xfc;r jeden Input und Output eingehen"/>
<node CREATED="1730425303443" ID="ID_1906269130" MODIFIED="1730426066823" TEXT="diese Infos stammen sogar aus einem h&#xf6;heren Builder-Level">
@ -91817,7 +92073,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node CREATED="1729985123726" ID="ID_1784608228" MODIFIED="1729985265663" TEXT="die Node selber tr&#xe4;gt nur den reinen Struktur-Anteil bei">
<node CREATED="1729985123726" ID="ID_1784608228" MODIFIED="1730487828815" TEXT="die Node selber tr&#xe4;gt nur den reinen Struktur-Anteil bei">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
@ -91826,7 +92082,8 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</p>
</body>
</html></richcontent>
<node CREATED="1729985279723" ID="ID_1289414475" MODIFIED="1729985284963" TEXT="ihre Vorl&#xe4;ufer"/>
<arrowlink COLOR="#708298" DESTINATION="ID_355149059" ENDARROW="Default" ENDINCLINATION="-295;886;" ID="Arrow_ID_1310337579" STARTARROW="None" STARTINCLINATION="655;34;"/>
<node CREATED="1729985279723" ID="ID_1289414475" MODIFIED="1729985284963" TEXT="ihre Vorl&#xe4;ufer" VSHIFT="7"/>
<node CREATED="1730425782228" ID="ID_1571203922" MODIFIED="1730425787280" TEXT="das Node-Symbol">
<node CREATED="1729985298574" ID="ID_374581825" MODIFIED="1729985319433" TEXT="der Kontext (Domain-Ontology) der sie gebaut hat"/>
<node CREATED="1729985326069" ID="ID_277740057" MODIFIED="1729986093675" TEXT="eine (stabile, generische) ID des Proc-Asset, welches sie implementiert">
@ -91837,8 +92094,7 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
hier darf kein logischer Zirkel entstehen! Man k&#246;nnte n&#228;mlich auf die Idee kommen, das Proc-Asset durch seine Implementierung zu klassifizieren, aber das <b>wollen wir nicht</b>. Vielmehr brauchen wir hier ein semantisches Konzept, wie z.B. &#187;gaussian blur&#171;. Das bedeutet, diese Basis-IDs m&#252;ssen vom Library Plug-in belegt werden, und sollen langfristig stabil bleiben (solange der in der LIbrary gebotene Implementierungs-Algorithmus kompatibel bleibt und auf Sicht &#228;quivalente Ergebnisse liefert)
</p>
</body>
</html>
</richcontent>
</html></richcontent>
<arrowlink COLOR="#6f4685" DESTINATION="ID_169575397" ENDARROW="Default" ENDINCLINATION="-2831;-132;" ID="Arrow_ID_1915206342" STARTARROW="None" STARTINCLINATION="2041;85;"/>
</node>
</node>
@ -91858,6 +92114,19 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<arrowlink COLOR="#5e5572" DESTINATION="ID_1032840307" ENDARROW="Default" ENDINCLINATION="-1323;101;" ID="Arrow_ID_1310977916" STARTARROW="Default" STARTINCLINATION="1366;-77;"/>
</node>
</node>
<node BACKGROUND_COLOR="#f8f1cb" COLOR="#a50125" CREATED="1730486127302" ID="ID_1171232335" MODIFIED="1730486959772" TEXT="Storage k&#xf6;nnte problematisch werden....">
<richcontent TYPE="NOTE"><html>
<head/>
<body>
<p>
wenn wir f&#252;r jede Node wieder eine texturelle ID speichern, oder auch nur mehrere Hash-Komponenten, w&#228;re der Hebel gewaltig &#8212; irgendwo mu&#223; dedupliziert werden....
</p>
</body>
</html>
</richcontent>
<arrowlink COLOR="#d64274" DESTINATION="ID_95149323" ENDARROW="Default" ENDINCLINATION="-487;32;" ID="Arrow_ID_78196027" STARTARROW="None" STARTINCLINATION="92;6;"/>
<icon BUILTIN="clanbomber"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1719186096499" ID="ID_1104635186" MODIFIED="1719186122029" TEXT="Diagnose-Setup">
@ -92013,10 +92282,18 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<node BACKGROUND_COLOR="#e2caa2" COLOR="#990000" CREATED="1729956600896" ID="ID_1377083965" MODIFIED="1729956915005" STYLE="fork" TEXT="Einsichten">
<edge COLOR="#b14253" STYLE="sharp_linear"/>
<icon BUILTIN="edit"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1721238814245" ID="ID_190416286" MODIFIED="1730500771786" TEXT="Aufgabe: Infrastruktur f&#xfc;r Fehlerbehandlung und Diagnose">
<linktarget COLOR="#fe512a" DESTINATION="ID_190416286" ENDARROW="Default" ENDINCLINATION="1101;-48;" ID="Arrow_ID_304105897" SOURCE="ID_286044031" STARTARROW="None" STARTINCLINATION="-848;70;"/>
<icon BUILTIN="bell"/>
</node>
</node>
<node BACKGROUND_COLOR="#e2caa2" COLOR="#990000" CREATED="1729956600896" ID="ID_988254887" MODIFIED="1729956915005" STYLE="fork" TEXT="Probleme">
<edge COLOR="#b14253" STYLE="sharp_linear"/>
<icon BUILTIN="edit"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1721238814245" ID="ID_635840106" MODIFIED="1730487294905" TEXT="Problem: Hebel durch Node-Storage">
<linktarget COLOR="#fe512a" DESTINATION="ID_635840106" ENDARROW="Default" ENDINCLINATION="1101;-48;" ID="Arrow_ID_902176330" SOURCE="ID_1159160517" STARTARROW="None" STARTINCLINATION="-772;102;"/>
<icon BUILTIN="bell"/>
</node>
</node>
<node BACKGROUND_COLOR="#e2caa2" COLOR="#990000" CREATED="1729956600896" ID="ID_1648467568" MODIFIED="1729956915005" STYLE="fork" TEXT="Ergebnis">
<edge COLOR="#b14253" STYLE="sharp_linear"/>
@ -132920,8 +133197,9 @@ std::cout &lt;&lt; tmpl.render({&quot;what&quot;, &quot;World&quot;}) &lt;&lt; s
<node CREATED="1729985714881" ID="ID_1202023711" MODIFIED="1729985725019" TEXT="Adapter-Plug-in f&#xfc;r jede Library notwendig">
<node CREATED="1729985728046" ID="ID_736735373" MODIFIED="1729985734050" TEXT="Aufgaben / Anforderung">
<node CREATED="1729985738500" ID="ID_1413374424" MODIFIED="1729985758687" TEXT="schafft eine abstrakte koh&#xe4;rente Sicht auf die Library (als &#xbb;Domain-Ontology&#xab;)"/>
<node CREATED="1729985648880" ID="ID_169575397" MODIFIED="1729986093676" TEXT="die Library mu&#xdf; semantische IDs f&#xfc;r die gebotenen Operationen belegen">
<node CREATED="1729985648880" ID="ID_169575397" MODIFIED="1730488021011" TEXT="die Library mu&#xdf; semantische IDs f&#xfc;r die gebotenen Operationen belegen">
<linktarget COLOR="#6f4685" DESTINATION="ID_169575397" ENDARROW="Default" ENDINCLINATION="-2831;-132;" ID="Arrow_ID_1915206342" SOURCE="ID_277740057" STARTARROW="None" STARTINCLINATION="2041;85;"/>
<linktarget COLOR="#6f4685" DESTINATION="ID_169575397" ENDARROW="Default" ENDINCLINATION="-2831;-132;" ID="Arrow_ID_1200063463" SOURCE="ID_1902375822" STARTARROW="None" STARTINCLINATION="2248;201;"/>
<icon BUILTIN="yes"/>
<node CREATED="1729985837696" ID="ID_356361059" MODIFIED="1729986052288" TEXT="Eindeutiger Namen aus Sicht des Benutzers">
<richcontent TYPE="NOTE"><html>