<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Coder Legion - Recent posts tagged experience</title>
<link>https://coderlegion.com/tag/experience</link>
<description>Powered by Question2Answer</description>
<item>
<title>Building MyZubster: An Open Knowledge Graph for Reproducible Community Experience</title>
<link>https://coderlegion.com/27445/building-myzubster-an-open-knowledge-graph-for-reproducible-community-experience</link>
<description>&lt;p&gt;Building MyZubster: An Open Knowledge Graph for Reproducible Community Experience&lt;/p&gt;
&lt;p&gt;We are building MyZubster, an experimental open-source system for turning community experience into structured, reproducible and traceable knowledge.&lt;/p&gt;
&lt;p&gt;The idea started with a surprisingly simple problem.&lt;/p&gt;
&lt;p&gt;People know things.&lt;/p&gt;
&lt;p&gt;They build things, try things, break things, fix things and discover things.&lt;/p&gt;
&lt;p&gt;But most of that knowledge eventually disappears into:&lt;/p&gt;
&lt;p&gt;Discord&lt;br&gt;
GitHub Issues&lt;br&gt;
forums&lt;br&gt;
chat messages&lt;br&gt;
personal notes&lt;br&gt;
university projects&lt;br&gt;
workshop experiments&lt;/p&gt;
&lt;p&gt;Even when the information survives, another problem appears:&lt;/p&gt;
&lt;p&gt;How do we know where it came from?&lt;/p&gt;
&lt;p&gt;Was it someone's personal experience?&lt;/p&gt;
&lt;p&gt;Was it reproduced?&lt;/p&gt;
&lt;p&gt;Was it measured?&lt;/p&gt;
&lt;p&gt;Was it taken from an external source?&lt;/p&gt;
&lt;p&gt;Was it actually reviewed?&lt;/p&gt;
&lt;p&gt;MyZubster is an attempt to make those differences explicit.&lt;/p&gt;
&lt;p&gt;The first prototype: kefir&lt;/p&gt;
&lt;p&gt;The first real dataset is intentionally small and concrete: milk kefir and fermentation practices.&lt;/p&gt;
&lt;p&gt;Community practices were converted into Knowledge Cards:&lt;/p&gt;
&lt;p&gt;KF-001&lt;br&gt;
KF-002&lt;br&gt;
KF-003&lt;br&gt;
KF-004&lt;br&gt;
...&lt;/p&gt;
&lt;p&gt;A card can describe a process such as:&lt;/p&gt;
&lt;p&gt;milk kefir&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;↓
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;cloth draining&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;↓
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;thick fraction + whey&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;↓
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;reuse experiments&lt;/p&gt;
&lt;p&gt;This immediately exposed one of the fundamental problems we wanted the architecture to solve.&lt;/p&gt;
&lt;p&gt;Suppose someone reports:&lt;/p&gt;
&lt;p&gt;&quot;I keep it in the refrigerator for a few days.&quot;&lt;/p&gt;
&lt;p&gt;Software should not silently transform that into:&lt;/p&gt;
&lt;p&gt;{&lt;br&gt;
  &quot;duration&quot;: &quot;72 hours&quot;,&lt;br&gt;
  &quot;temperature&quot;: &quot;4°C&quot;&lt;br&gt;
}&lt;/p&gt;
&lt;p&gt;Those values were never supplied.&lt;/p&gt;
&lt;p&gt;So MyZubster uses a very important value:&lt;/p&gt;
&lt;p&gt;UNKNOWN&lt;/p&gt;
&lt;p&gt;Instead:&lt;/p&gt;
&lt;p&gt;{&lt;br&gt;
  &quot;duration&quot;: &quot;UNKNOWN&quot;,&lt;br&gt;
  &quot;temperature&quot;: &quot;UNKNOWN&quot;&lt;br&gt;
}&lt;/p&gt;
&lt;p&gt;This principle is one of the core invariants of the project:&lt;/p&gt;
&lt;p&gt;Missing information must remain missing until evidence provides it.&lt;/p&gt;
&lt;p&gt;Knowledge as data&lt;/p&gt;
&lt;p&gt;We're moving away from treating knowledge as only prose.&lt;/p&gt;
&lt;p&gt;A simplified MyZubster Knowledge Card looks conceptually like this:&lt;/p&gt;
&lt;p&gt;{&lt;br&gt;
  &quot;id&quot;: &quot;KF-003&quot;,&lt;br&gt;
  &quot;domain&quot;: &quot;FERMENTATION&quot;,&lt;br&gt;
  &quot;topic&quot;: &quot;whey-reuse&quot;,&lt;br&gt;
  &quot;contributor&quot;: {&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&quot;name&quot;: &quot;community-member&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  },&lt;br&gt;
  &quot;provenance&quot;: {&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&quot;type&quot;: &quot;COMMUNITY_CONTRIBUTION&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  },&lt;br&gt;
  &quot;evidence&quot;: [&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&quot;PERSONAL_PRACTICE&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  ],&lt;br&gt;
  &quot;procedure&quot;: [],&lt;br&gt;
  &quot;observations&quot;: [],&lt;br&gt;
  &quot;sources&quot;: [],&lt;br&gt;
  &quot;unknowns&quot;: []&lt;br&gt;
}&lt;/p&gt;
&lt;p&gt;The repository currently uses stable prefixes for different domains:&lt;/p&gt;
&lt;p&gt;KF-&lt;em&gt;   → Fermentation&lt;br&gt;
XMR-&lt;/em&gt;  → Monero&lt;br&gt;
SND-&lt;em&gt;  → Sound Systems&lt;br&gt;
DEV-&lt;/em&gt;  → Programming&lt;br&gt;
UNI-*  → University / Research&lt;/p&gt;
&lt;p&gt;So the kefir experiment is only the first implementation of a broader protocol.&lt;/p&gt;
&lt;p&gt;Evidence is not boolean&lt;/p&gt;
&lt;p&gt;One thing we explicitly don't want is:&lt;/p&gt;
&lt;p&gt;TRUE / FALSE&lt;/p&gt;
&lt;p&gt;as the only model for community knowledge.&lt;/p&gt;
&lt;p&gt;Real knowledge evolves.&lt;/p&gt;
&lt;p&gt;MyZubster currently distinguishes:&lt;/p&gt;
&lt;p&gt;PERSONAL_PRACTICE&lt;br&gt;
TRADITIONAL_PRACTICE&lt;br&gt;
OBSERVATION&lt;br&gt;
EXTERNAL_SOURCE&lt;br&gt;
VERIFIED_GUIDANCE&lt;/p&gt;
&lt;p&gt;This means:&lt;/p&gt;
&lt;p&gt;&quot;I do this&quot;&lt;/p&gt;
&lt;p&gt;can be useful without pretending it means:&lt;/p&gt;
&lt;p&gt;&quot;This has been scientifically verified.&quot;&lt;/p&gt;
&lt;p&gt;That's an important architectural distinction.&lt;/p&gt;
&lt;p&gt;A community contribution cannot automatically submit itself as:&lt;/p&gt;
&lt;p&gt;VERIFIED_GUIDANCE&lt;/p&gt;
&lt;p&gt;Verification is a different operation.&lt;/p&gt;
&lt;p&gt;Provenance is part of the object&lt;/p&gt;
&lt;p&gt;Every contribution should retain its origin.&lt;/p&gt;
&lt;p&gt;We don't want this:&lt;/p&gt;
&lt;p&gt;community observation&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    ↓
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;AI transformation&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    ↓
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;anonymous &quot;fact&quot;&lt;/p&gt;
&lt;p&gt;We want:&lt;/p&gt;
&lt;p&gt;community observation&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    ↓
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;structured representation&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    ↓
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;provenance preserved&lt;/p&gt;
&lt;p&gt;AI may eventually help normalize submissions, identify missing fields or connect related knowledge.&lt;/p&gt;
&lt;p&gt;But AI should not silently manufacture:&lt;/p&gt;
&lt;p&gt;quantities&lt;br&gt;
temperatures&lt;br&gt;
durations&lt;br&gt;
causation&lt;br&gt;
results&lt;br&gt;
sources&lt;br&gt;
verification&lt;/p&gt;
&lt;p&gt;That rule is enforced at the protocol level rather than left entirely to prompting.&lt;/p&gt;
&lt;p&gt;Then we added a graph&lt;/p&gt;
&lt;p&gt;Knowledge Cards quickly started needing relationships.&lt;/p&gt;
&lt;p&gt;So MyZubster now has a Knowledge Graph.&lt;/p&gt;
&lt;p&gt;Current relation types include:&lt;/p&gt;
&lt;p&gt;DERIVED_FROM&lt;br&gt;
PRODUCES&lt;br&gt;
USES_OUTPUT_OF&lt;br&gt;
REPRODUCES&lt;br&gt;
NEEDS_RESEARCH&lt;br&gt;
NEEDS_PROGRAMMING&lt;br&gt;
NEEDS_TESTING&lt;br&gt;
RELATED_TO&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;p&gt;KF-002 ── PRODUCES ──&amp;gt; KF-003&lt;/p&gt;
&lt;p&gt;Or:&lt;/p&gt;
&lt;p&gt;KF-003 ── NEEDS_RESEARCH ──&amp;gt; COL-001&lt;/p&gt;
&lt;p&gt;This changes the project significantly.&lt;/p&gt;
&lt;p&gt;The graph doesn't only represent what we know.&lt;/p&gt;
&lt;p&gt;It can also represent what needs to be done next.&lt;/p&gt;
&lt;p&gt;Knowledge can create work&lt;/p&gt;
&lt;p&gt;We introduced Collaboration Requests:&lt;/p&gt;
&lt;p&gt;COL-###&lt;/p&gt;
&lt;p&gt;Supported collaboration types currently include:&lt;/p&gt;
&lt;p&gt;PROGRAMMING&lt;br&gt;
RESEARCH&lt;br&gt;
DESIGN&lt;br&gt;
TESTING&lt;br&gt;
DOCUMENTATION&lt;br&gt;
MENTORING&lt;/p&gt;
&lt;p&gt;This means a Knowledge Card can effectively generate work.&lt;/p&gt;
&lt;p&gt;Imagine:&lt;/p&gt;
&lt;p&gt;SND-014&lt;br&gt;
Community Speaker Cabinet&lt;/p&gt;
&lt;p&gt;The design exists, but nobody has measured it properly.&lt;/p&gt;
&lt;p&gt;Instead of adding invented measurements, the graph can say:&lt;/p&gt;
&lt;p&gt;SND-014&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;│
└── NEEDS_TESTING ──&amp;gt; COL-027
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now the missing knowledge becomes an actionable collaboration request.&lt;/p&gt;
&lt;p&gt;A developer might help build the measurement tooling.&lt;/p&gt;
&lt;p&gt;An audio engineer might run the test.&lt;/p&gt;
&lt;p&gt;A university student might analyze the results.&lt;/p&gt;
&lt;p&gt;The graph connects all of it.&lt;/p&gt;
&lt;p&gt;Reproduction is a first-class object&lt;/p&gt;
&lt;p&gt;One of the most important pieces we've implemented is the Reproduction Engine.&lt;/p&gt;
&lt;p&gt;If someone tries:&lt;/p&gt;
&lt;p&gt;KF-003&lt;/p&gt;
&lt;p&gt;we don't modify KF-003.&lt;/p&gt;
&lt;p&gt;We create:&lt;/p&gt;
&lt;p&gt;REP-001&lt;/p&gt;
&lt;p&gt;and connect it:&lt;/p&gt;
&lt;p&gt;REP-001 ── REPRODUCES ──&amp;gt; KF-003&lt;/p&gt;
&lt;p&gt;The reproduction records what actually happened:&lt;/p&gt;
&lt;p&gt;{&lt;br&gt;
  &quot;targetCard&quot;: &quot;KF-003&quot;,&lt;br&gt;
  &quot;procedure&quot;: [],&lt;br&gt;
  &quot;quantity&quot;: &quot;UNKNOWN&quot;,&lt;br&gt;
  &quot;duration&quot;: &quot;UNKNOWN&quot;,&lt;br&gt;
  &quot;temperature&quot;: &quot;UNKNOWN&quot;,&lt;br&gt;
  &quot;result&quot;: &quot;...&quot;,&lt;br&gt;
  &quot;observations&quot;: [],&lt;br&gt;
  &quot;differences&quot;: []&lt;br&gt;
}&lt;/p&gt;
&lt;p&gt;This allows multiple independent attempts:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;            KF-003
         /    |    \
        /     |     \
  REP-001  REP-002  REP-003
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And critically:&lt;/p&gt;
&lt;p&gt;they don't need to agree.&lt;/p&gt;
&lt;p&gt;MyZubster should preserve conflicting observations instead of averaging them into fake certainty.&lt;/p&gt;
&lt;p&gt;Collaboration produces traceable results&lt;/p&gt;
&lt;p&gt;A Collaboration Request can produce another object:&lt;/p&gt;
&lt;p&gt;RES-###&lt;/p&gt;
&lt;p&gt;So we can represent:&lt;/p&gt;
&lt;p&gt;KF-003&lt;br&gt;
   │&lt;br&gt;
   └── NEEDS_RESEARCH&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;        ↓
     COL-001
        ↓
     RES-001
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A Collaboration Result records things such as:&lt;/p&gt;
&lt;p&gt;summary&lt;br&gt;
outcome&lt;br&gt;
artifacts&lt;br&gt;
observations&lt;br&gt;
limitations&lt;br&gt;
sources&lt;/p&gt;
&lt;p&gt;The result is linked back to both the collaboration and relevant knowledge.&lt;/p&gt;
&lt;p&gt;Completing a task doesn't automatically verify the original claim.&lt;/p&gt;
&lt;p&gt;It simply adds another traceable piece of evidence.&lt;/p&gt;
&lt;p&gt;Verification is another object&lt;/p&gt;
&lt;p&gt;We also implemented a Verification Review layer:&lt;/p&gt;
&lt;p&gt;REV-###&lt;/p&gt;
&lt;p&gt;A review requires explicit information:&lt;/p&gt;
&lt;p&gt;reviewer&lt;br&gt;
provenance&lt;br&gt;
decision&lt;br&gt;
rationale&lt;br&gt;
sources&lt;br&gt;
limitations&lt;br&gt;
reviewed evidence&lt;br&gt;
conflicts of interest&lt;/p&gt;
&lt;p&gt;Current decisions are:&lt;/p&gt;
&lt;p&gt;ACCEPT_VERIFIED_GUIDANCE&lt;br&gt;
REJECT&lt;br&gt;
NEEDS_MORE_EVIDENCE&lt;/p&gt;
&lt;p&gt;Importantly:&lt;/p&gt;
&lt;p&gt;REV-042&lt;br&gt;
ACCEPT_VERIFIED_GUIDANCE&lt;/p&gt;
&lt;p&gt;does not delete or rewrite:&lt;/p&gt;
&lt;p&gt;KF-003&lt;br&gt;
REP-001&lt;br&gt;
REP-002&lt;br&gt;
RES-004&lt;/p&gt;
&lt;p&gt;The historical evidence graph remains intact.&lt;/p&gt;
&lt;p&gt;A verified conclusion should be inspectable back to the evidence that supported it.&lt;/p&gt;
&lt;p&gt;This is starting to look like Git for community knowledge&lt;/p&gt;
&lt;p&gt;One useful way for developers to think about MyZubster is:&lt;/p&gt;
&lt;p&gt;What if some ideas from Git were applied to community knowledge?&lt;/p&gt;
&lt;p&gt;Not literally commits and branches everywhere, but similar principles:&lt;/p&gt;
&lt;p&gt;stable identities&lt;br&gt;
history&lt;br&gt;
provenance&lt;br&gt;
changes without destroying origins&lt;br&gt;
parallel experimentation&lt;br&gt;
review&lt;br&gt;
traceability&lt;/p&gt;
&lt;p&gt;Instead of repeatedly rewriting one canonical article, we can preserve an evidence history.&lt;/p&gt;
&lt;p&gt;Conceptually:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;      Knowledge
          │
  ┌───────┴───────┐
  │               │
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt; Reproduction    Collaboration&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  │               │
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt; Observation        Result&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  │               │
  └───────┬───────┘
          │
        Review
          │
          ▼
  stronger knowledge
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And the cycle continues.&lt;/p&gt;
&lt;p&gt;We also need boring infrastructure&lt;/p&gt;
&lt;p&gt;Once the graph becomes meaningful, infrastructure correctness matters.&lt;/p&gt;
&lt;p&gt;So we've implemented an Integrity Checker.&lt;/p&gt;
&lt;p&gt;It detects:&lt;/p&gt;
&lt;p&gt;duplicate IDs&lt;br&gt;
orphan references&lt;br&gt;
invalid graph relations&lt;br&gt;
unconnected records&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;p&gt;ERROR: orphan graph reference COL-999&lt;/p&gt;
&lt;p&gt;or:&lt;/p&gt;
&lt;p&gt;ERROR: ID collision KF-003&lt;/p&gt;
&lt;p&gt;We also built a global ID allocator.&lt;/p&gt;
&lt;p&gt;It recursively scans the repository and the Knowledge Graph before generating:&lt;/p&gt;
&lt;p&gt;KF-###&lt;br&gt;
XMR-###&lt;br&gt;
SND-###&lt;br&gt;
DEV-###&lt;br&gt;
UNI-###&lt;br&gt;
COL-###&lt;br&gt;
REP-###&lt;br&gt;
RES-###&lt;br&gt;
REV-###&lt;/p&gt;
&lt;p&gt;This matters because generated proposals and canonical records can live in different directories.&lt;/p&gt;
&lt;p&gt;Atomic graph persistence&lt;/p&gt;
&lt;p&gt;We're also beginning to treat the repository as an actual datastore.&lt;/p&gt;
&lt;p&gt;Writing directly to:&lt;/p&gt;
&lt;p&gt;knowledge/graph.json&lt;/p&gt;
&lt;p&gt;creates an obvious failure mode.&lt;/p&gt;
&lt;p&gt;A crash during a write could corrupt the graph.&lt;/p&gt;
&lt;p&gt;So graph persistence now follows:&lt;/p&gt;
&lt;p&gt;serialize&lt;br&gt;
   ↓&lt;br&gt;
write temporary file&lt;br&gt;
   ↓&lt;br&gt;
rename&lt;br&gt;
   ↓&lt;br&gt;
graph.json&lt;/p&gt;
&lt;p&gt;The temporary file is cleaned up if the operation fails.&lt;/p&gt;
&lt;p&gt;Our next step is stronger:&lt;/p&gt;
&lt;p&gt;record creation&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  +
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;graph mutation&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  ↓
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;transaction&lt;/p&gt;
&lt;p&gt;Either both succeed or neither does.&lt;/p&gt;
&lt;p&gt;That will give the repository a much stronger consistency model.&lt;/p&gt;
&lt;p&gt;The interesting part for developers&lt;/p&gt;
&lt;p&gt;MyZubster isn't intended to remain a collection of Markdown files.&lt;/p&gt;
&lt;p&gt;The repository is currently becoming the reference implementation for the protocol.&lt;/p&gt;
&lt;p&gt;Eventually the same concepts can sit behind an API.&lt;/p&gt;
&lt;p&gt;Something like:&lt;/p&gt;
&lt;p&gt;POST /knowledge&lt;br&gt;
POST /reproductions&lt;br&gt;
POST /collaborations&lt;br&gt;
POST /results&lt;br&gt;
POST /reviews&lt;/p&gt;
&lt;p&gt;And:&lt;/p&gt;
&lt;p&gt;GET /knowledge/KF-003&lt;br&gt;
GET /knowledge/KF-003/graph&lt;br&gt;
GET /knowledge/KF-003/reproductions&lt;br&gt;
GET /collaborations/open&lt;/p&gt;
&lt;p&gt;The UI could then hide almost all of the underlying complexity.&lt;/p&gt;
&lt;p&gt;A user could simply see:&lt;/p&gt;
&lt;p&gt;────────────────────────────────────&lt;/p&gt;
&lt;p&gt;KF-003&lt;br&gt;
Kefir Whey Reuse&lt;/p&gt;
&lt;p&gt;Evidence&lt;br&gt;
● Personal Practice&lt;/p&gt;
&lt;p&gt;Reproductions&lt;br&gt;
3&lt;/p&gt;
&lt;p&gt;Research&lt;br&gt;
1 open collaboration&lt;/p&gt;
&lt;p&gt;Verification&lt;br&gt;
Needs more evidence&lt;/p&gt;
&lt;p&gt;[ I tried this ]&lt;/p&gt;
&lt;p&gt;[ Help investigate ]&lt;/p&gt;
&lt;p&gt;[ Add evidence ]&lt;/p&gt;
&lt;p&gt;[ View knowledge graph ]&lt;/p&gt;
&lt;p&gt;────────────────────────────────────&lt;/p&gt;
&lt;p&gt;Behind those four buttons would be the evidence protocol.&lt;/p&gt;
&lt;p&gt;Why programmers are part of the model&lt;/p&gt;
&lt;p&gt;Programming isn't only needed to build MyZubster.&lt;/p&gt;
&lt;p&gt;Programming itself can become a MyZubster knowledge domain.&lt;/p&gt;
&lt;p&gt;Consider:&lt;/p&gt;
&lt;p&gt;DEV-108&lt;/p&gt;
&lt;p&gt;describing a bug or technical technique.&lt;/p&gt;
&lt;p&gt;Someone reproduces the issue:&lt;/p&gt;
&lt;p&gt;REP-081 ── REPRODUCES ──&amp;gt; DEV-108&lt;/p&gt;
&lt;p&gt;The card needs implementation work:&lt;/p&gt;
&lt;p&gt;DEV-108 ── NEEDS_PROGRAMMING ──&amp;gt; COL-054&lt;/p&gt;
&lt;p&gt;Someone produces a patch:&lt;/p&gt;
&lt;p&gt;COL-054&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;↓
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;RES-037&lt;/p&gt;
&lt;p&gt;Another developer tests it.&lt;/p&gt;
&lt;p&gt;Another reproduction is created.&lt;/p&gt;
&lt;p&gt;Documentation gets attached.&lt;/p&gt;
&lt;p&gt;The result becomes part of a traceable technical history rather than disappearing inside a chat conversation.&lt;/p&gt;
&lt;p&gt;That's one of the reasons we're interested in developer communities.&lt;/p&gt;
&lt;p&gt;Cross-domain collaboration is the bigger experiment&lt;/p&gt;
&lt;p&gt;The domains aren't supposed to become isolated silos.&lt;/p&gt;
&lt;p&gt;Consider a Sound System project:&lt;/p&gt;
&lt;p&gt;SND-031&lt;/p&gt;
&lt;p&gt;It might need software:&lt;/p&gt;
&lt;p&gt;SND-031&lt;br&gt;
   └── NEEDS_PROGRAMMING ──&amp;gt; COL-071&lt;/p&gt;
&lt;p&gt;And research:&lt;/p&gt;
&lt;p&gt;SND-031&lt;br&gt;
   └── NEEDS_RESEARCH ──&amp;gt; COL-072&lt;/p&gt;
&lt;p&gt;Now programmers, audio engineers and university students can collaborate around the same knowledge object.&lt;/p&gt;
&lt;p&gt;Or a university project could produce software:&lt;/p&gt;
&lt;p&gt;UNI-018&lt;br&gt;
   ↓&lt;br&gt;
COL-080&lt;br&gt;
   ↓&lt;br&gt;
DEV-121&lt;/p&gt;
&lt;p&gt;Knowledge starts connecting communities that normally operate separately.&lt;/p&gt;
&lt;p&gt;That's where MyZubster becomes more interesting than a fermentation database.&lt;/p&gt;
&lt;p&gt;Where we want to take it&lt;/p&gt;
&lt;p&gt;The core loop we're trying to make executable is:&lt;/p&gt;
&lt;p&gt;Share&lt;br&gt;
  ↓&lt;br&gt;
Try&lt;br&gt;
  ↓&lt;br&gt;
Observe&lt;br&gt;
  ↓&lt;br&gt;
Collaborate&lt;br&gt;
  ↓&lt;br&gt;
Verify&lt;br&gt;
  ↓&lt;br&gt;
Improve&lt;br&gt;
  ↓&lt;br&gt;
Share again&lt;/p&gt;
&lt;p&gt;The architecture underneath it is becoming:&lt;/p&gt;
&lt;p&gt;KnowledgeCard&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; │
 ├── Reproduction
 │       └── Observation
 │
 ├── CollaborationRequest
 │       └── CollaborationResult
 │
 ├── ExternalSource
 │
 └── VerificationReview
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;All connected through a provenance-aware graph.&lt;/p&gt;
&lt;p&gt;What comes next&lt;/p&gt;
&lt;p&gt;The immediate engineering work is transaction safety for record + graph mutations.&lt;/p&gt;
&lt;p&gt;After that we want to work toward:&lt;/p&gt;
&lt;p&gt;graph integrity constraints&lt;br&gt;
domain-specific verification rules&lt;br&gt;
API&lt;br&gt;
search&lt;br&gt;
evidence graph visualization&lt;br&gt;
collaboration discovery&lt;br&gt;
reputation without turning it into popularity = truth&lt;br&gt;
source traceability&lt;br&gt;
version/history tooling&lt;br&gt;
community UI&lt;/p&gt;
&lt;p&gt;And eventually, AI-assisted intake.&lt;/p&gt;
&lt;p&gt;But AI has a very specific role here.&lt;/p&gt;
&lt;p&gt;It can help transform:&lt;/p&gt;
&lt;p&gt;&quot;I tried this yesterday and it worked differently...&quot;&lt;/p&gt;
&lt;p&gt;into a structured reproduction record.&lt;/p&gt;
&lt;p&gt;It must not transform it into:&lt;/p&gt;
&lt;p&gt;&quot;This method is verified.&quot;&lt;/p&gt;
&lt;p&gt;The evidence graph decides what evidence exists.&lt;/p&gt;
&lt;p&gt;Review processes decide how that evidence should be interpreted.&lt;/p&gt;
&lt;p&gt;AI helps humans work with it.&lt;/p&gt;
&lt;p&gt;The experiment&lt;/p&gt;
&lt;p&gt;MyZubster started with kefir because we needed real knowledge rather than synthetic examples.&lt;/p&gt;
&lt;p&gt;But we're building the architecture so the same protocol can eventually represent:&lt;/p&gt;
&lt;p&gt;fermentation&lt;br&gt;
open-source software&lt;br&gt;
Monero technology&lt;br&gt;
sound-system engineering&lt;br&gt;
university research&lt;br&gt;
community experiments&lt;/p&gt;
&lt;p&gt;The central idea remains simple:&lt;/p&gt;
&lt;p&gt;Don't just store the answer. Store how we got there.&lt;/p&gt;
&lt;p&gt;Preserve who contributed something.&lt;/p&gt;
&lt;p&gt;Preserve what they actually said.&lt;/p&gt;
&lt;p&gt;Preserve what we don't know.&lt;/p&gt;
&lt;p&gt;Let other people reproduce it.&lt;/p&gt;
&lt;p&gt;Let developers and researchers collaborate around the missing pieces.&lt;/p&gt;
&lt;p&gt;Keep results linked to their origins.&lt;/p&gt;
&lt;p&gt;And make verification explicit rather than automatic.&lt;/p&gt;
&lt;p&gt;We're trying to build an open knowledge system that can improve over time without forgetting its own history.&lt;/p&gt;
&lt;p&gt;Share → Reproduce → Observe → Collaborate → Verify → Improve&lt;/p&gt;
&lt;p&gt;That's MyZubster.&lt;/p&gt;
&lt;p&gt;And we're building the protocol in code first.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/27445/building-myzubster-an-open-knowledge-graph-for-reproducible-community-experience</guid>
<pubDate>Thu, 17 Sep 2026 02:09:22 +0000</pubDate>
</item>
</channel>
</rss>