<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Anton Malofeev</title>
    <description>The latest articles on DEV Community by Anton Malofeev (@arenukvern).</description>
    <link>https://dev.to/arenukvern</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F332733%2Fcb6a3abd-b464-471f-8938-e2cbbea6b502.jpg</url>
      <title>DEV Community: Anton Malofeev</title>
      <link>https://dev.to/arenukvern</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/arenukvern"/>
    <language>en</language>
    <item>
      <title>shortly: story of links shortifier | .net + skill steward | curated by Arenukvern, generated by Grok</title>
      <dc:creator>Anton Malofeev</dc:creator>
      <pubDate>Sat, 15 Aug 2026 16:31:00 +0000</pubDate>
      <link>https://dev.to/arenukvern/shortly-story-of-links-shortifier-net-skill-steward-curated-by-arenukvern-generated-by-grok-2beo</link>
      <guid>https://dev.to/arenukvern/shortly-story-of-links-shortifier-net-skill-steward-curated-by-arenukvern-generated-by-grok-2beo</guid>
      <description>&lt;h1&gt;
  
  
  How and why Shortly was created
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Disclaimer
&lt;/h2&gt;

&lt;p&gt;Dear Reader — human or AI — a few honest notes before the text.&lt;/p&gt;

&lt;p&gt;This article was written by Grok, curated by and in the style of &lt;a href="https://dev.to/arenukvern"&gt;Arenukvern’s (Anton) other articles&lt;/a&gt;. It grew out of the same conversations that built the repository. It also sits inside the repo the same way the ADRs, the FAQs, and the tests do — as part of the showcase itself.&lt;/p&gt;

&lt;p&gt;Shortly began as a test project. It had to be small enough to finish, concrete enough that the decisions would stay visible, and real enough that a future human or agent could clone it and still understand the path that led there. The URL shortener is only the vehicle. The artefact being shown is the movement from a conversation and a scaffold document all the way to a living repository.&lt;/p&gt;

&lt;p&gt;This is also one concrete example of why &lt;a href="https://github.com/arenukvern/skill_steward" rel="noopener noreferrer"&gt;Skill Steward&lt;/a&gt; exists: not as something that runs inside the shortener, but as the culture and the procedure that turn a chat into a governed repo.&lt;/p&gt;

&lt;p&gt;It is not a claim that this is the only right way to work with AI. It is simply a record of what was asked, what was produced, what was locked, and what broke the first time a real person used the service.&lt;/p&gt;

&lt;p&gt;The first conversation is public:&lt;br&gt;&lt;br&gt;
&lt;a href="https://grok.com/share/c2hhcmQtMi1jb3B5_4e0bc3be-33c2-4270-aabc-f275ae356a6f" rel="noopener noreferrer"&gt;URL Shortener Architecture &amp;amp; Scaffold&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you want the durable &lt;em&gt;why&lt;/em&gt; and &lt;em&gt;how&lt;/em&gt;, they live in the repo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Charter: &lt;a href="https://github.com/Arenukvern/shortly/blob/main/docs/NORTH_STAR.md" rel="noopener noreferrer"&gt;NORTH_STAR.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Decisions: &lt;a href="https://github.com/Arenukvern/shortly/tree/main/docs/decisions" rel="noopener noreferrer"&gt;docs/decisions/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Why: &lt;a href="https://github.com/Arenukvern/shortly/blob/main/docs/DESIGN_FAQ.md" rel="noopener noreferrer"&gt;DESIGN_FAQ.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;How: &lt;a href="https://github.com/Arenukvern/shortly/blob/main/docs/DX_FAQ.md" rel="noopener noreferrer"&gt;DX_FAQ.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Code: &lt;a href="https://github.com/Arenukvern/shortly" rel="noopener noreferrer"&gt;Arenukvern/shortly&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thank you for reading.&lt;/p&gt;


&lt;h2&gt;
  
  
  Why this repository exists
&lt;/h2&gt;

&lt;p&gt;For several years Anton had been circling the same family of problems from different sides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/arenukvern/code-is-a-translation-after-15-years-of-vibe-coding-adventures-thoughts-2hbn"&gt;code is a translation&lt;/a&gt; — a PRD is already outdated the moment the code works
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/arenukvern/faq-driven-development-or-new-old-way-to-write-docs-rules-prompts-25jl"&gt;FAQ as knowledge compression&lt;/a&gt; — why and how should not live in the same pile
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/arenukvern/fundamentals-of-knowledge-management-in-software-development-25fm"&gt;knowledge lifecycle&lt;/a&gt; — operational knowledge needs a beginning, iterations, and an end
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/arenukvern/small-thought-developer-ethics-may-be-a-bridge-to-work-with-ai-tools-3mha"&gt;ethics as a bridge to AI&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/arenukvern/skill_steward" rel="noopener noreferrer"&gt;skill_steward&lt;/a&gt; — how to teach a repository to be maintained
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/fluent-meaning-symbiotic/agentic_executables" rel="noopener noreferrer"&gt;agentic executables&lt;/a&gt; — libraries as programs an agent can install and use
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Skill Steward was one attempt to hold that family together: charter, ADRs, FAQs, quality contracts, install path, and a later agent that no longer has the original chat.&lt;/p&gt;

&lt;p&gt;A manifesto alone was never going to be enough. A test project was required.&lt;/p&gt;

&lt;p&gt;Anton set the requirement simply: take those ideas and run them on something small enough to finish, yet concrete enough that the decisions would stay visible. A URL shortener looked almost too simple — and that is exactly why it worked. The product stayed tiny on purpose: public shorten and redirect, an admin key for inspect and mutate, soft TTL, and a full history of every attempt, including the failures.&lt;/p&gt;

&lt;p&gt;What needed to be shown was never how to encode base-N. It was how a human and an AI decide what the product is &lt;em&gt;not&lt;/em&gt;, how that decision becomes a document another agent can execute, how the repo then grows its own map, install path, steward and tests, and how the first real use changes an ADR.&lt;/p&gt;

&lt;p&gt;One of Anton’s working principles had always been that the developer is a user too. If the install path, Swagger, or the first &lt;code&gt;curl&lt;/code&gt; forced a new person to investigate the project for an hour, the showcase would already have failed — even if the encoder was perfect.&lt;/p&gt;

&lt;p&gt;This article itself is the same kind of artefact. It was asked for inside the same loop. It is not a blog post taped onto the repo afterwards.&lt;/p&gt;


&lt;h2&gt;
  
  
  The first conversation
&lt;/h2&gt;

&lt;p&gt;The repository did not begin as a GitHub template. It began as a conversation.&lt;/p&gt;

&lt;p&gt;Anton sat down with Grok. Together they designed the thing as an architecture and scaffold document — not as a request to generate a .NET project. The share of that conversation is still public:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://grok.com/share/c2hhcmQtMi1jb3B5_4e0bc3be-33c2-4270-aabc-f275ae356a6f" rel="noopener noreferrer"&gt;URL Shortener Architecture &amp;amp; Scaffold&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Two files came out of that session and they remain in the tree:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;File&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/Arenukvern/shortly/blob/main/docs/scaffold_doc.md" rel="noopener noreferrer"&gt;&lt;code&gt;docs/scaffold_doc.md&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Architecture contract. Domain, schema, API, validation, tests, Docker, Dart, stewardship.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/Arenukvern/shortly/blob/main/docs/archive/prompts/scaffold_prompt.md" rel="noopener noreferrer"&gt;&lt;code&gt;docs/archive/prompts/scaffold_prompt.md&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Execution prompt. Same locked decisions, plus environment caveats and a sequential order.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The opening of the scaffold doc still carries the cleanest statement of what was being asked:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This document is the single source of truth for the first working version. It is written so an agent can execute it sequentially with minimal ambiguity.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And it ends the way a real handoff should end:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If anything in the answers above needs a small correction before the implementing agent starts, say so now. Otherwise this document is ready to be handed over.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That was the print that mattered. Not a chat log pretending to be documentation — a contract an agent could execute, and a human could still refuse.&lt;/p&gt;

&lt;p&gt;From Anton’s earlier writing on translation: this document would become history the moment the code worked. That was fine. The job of the scaffold was never to stay true forever. Its job was to be strict enough that the first version would not invent tenants, custom domains, cleanup workers, or a second database “just in case”.&lt;/p&gt;

&lt;p&gt;That refusal list was already Skill Steward thinking, before any of the skills were installed.&lt;/p&gt;


&lt;h2&gt;
  
  
  Locked decisions as ethics
&lt;/h2&gt;

&lt;p&gt;Before any service file was generated, Anton and Grok locked eight product decisions. Later those decisions became ADRs 0001–0008. This article will not paraphrase the implementations — the ADRs and the tests are the source of truth — but the ethic of the lock is the actual point of the test.&lt;/p&gt;

&lt;p&gt;In short:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;One shared pool. No ownership of links in v1.
&lt;/li&gt;
&lt;li&gt;Shorten and redirect are public. Inspect and mutate need &lt;code&gt;X-Admin-Key&lt;/code&gt;.
&lt;/li&gt;
&lt;li&gt;Sequential &lt;code&gt;Link.Id&lt;/code&gt; plus a pure base-N encoder. The same original URL always creates a new code. Custom aliases are allowed.
&lt;/li&gt;
&lt;li&gt;Soft expiry, checked only on read. Expired is &lt;code&gt;410&lt;/code&gt; and a page, never a deleted row. Every attempt is logged, including unknown codes.
&lt;/li&gt;
&lt;li&gt;SQLite + WAL. Nothing else in v1.
&lt;/li&gt;
&lt;li&gt;Host, alphabet, and default TTL are configuration.
&lt;/li&gt;
&lt;li&gt;Dart is a steward and operator surface, not the product runtime.
&lt;/li&gt;
&lt;li&gt;The service must be testable without Docker. Docker is only the production-like path.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The non-goals were written first: no multi-tenancy, no custom domains, no geo graphs, no background sweeper, no multi-instance write scaling.&lt;/p&gt;

&lt;p&gt;This was ethics, not taste.&lt;/p&gt;

&lt;p&gt;If you do not write down what you refuse, an agent will fill the silence. It will add auth “for later”, a Redis cache “for scale”, a worker “for cleanliness”. All of those can be good ideas in some other project. In this one they would have turned it into a different product — and a worse test, because the reasoning would have been hidden inside extra features.&lt;/p&gt;

&lt;p&gt;Limitations are how you keep trust when generation is cheap. That is the same bridge Anton had written about in &lt;a href="https://dev.to/arenukvern/small-thought-developer-ethics-may-be-a-bridge-to-work-with-ai-tools-3mha"&gt;developer ethics&lt;/a&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  Then the document was handed to another agent
&lt;/h2&gt;

&lt;p&gt;The next session started from two markdown files and no .NET SDK. Still the same calendar day.&lt;/p&gt;

&lt;p&gt;Anton gave the implementing agent a deliberately small first prompt:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;analyse scaffold_prompt.md and scaffold_doc.md. create AGENTS.md and plan what to do to complete scaffolding.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code&gt;AGENTS.md&lt;/code&gt; was to be a map, not an encyclopedia. That was a locked rule in the plan: do not paste API schemas into the agent file. Point at the charter, the ADRs, the FAQs, and the code.&lt;/p&gt;

&lt;p&gt;Then Grok produced the service: &lt;code&gt;Shortly.Core&lt;/code&gt; (encoder, validators, expiry decision), &lt;code&gt;Shortly.Api&lt;/code&gt; (Minimal API, EF, SQLite), unit tests, e2e tests, Docker, Dart CLI + MCP, NORTH_STAR, the eight ADRs, FAQ stubs.&lt;/p&gt;

&lt;p&gt;The first native gate was the boring one: install the missing SDK, then &lt;code&gt;dotnet test&lt;/code&gt;. If &lt;code&gt;dotnet&lt;/code&gt; was missing, stop. Do not pretend the service works.&lt;/p&gt;

&lt;p&gt;A second rule, taken from Anton’s own notes on working with AI, was applied: if you need a deterministic result, build a tool. Do not put the model into the gate. &lt;code&gt;dotnet test&lt;/code&gt; and &lt;code&gt;shortly steward validate&lt;/code&gt; are the gate. The agent may write them. The agent may not &lt;em&gt;be&lt;/em&gt; them.&lt;/p&gt;

&lt;p&gt;This was the moment a conversation became a repository: the chat was no longer required to run or to check the work.&lt;/p&gt;


&lt;h2&gt;
  
  
  The human pass — Skill Steward as the developer path
&lt;/h2&gt;

&lt;p&gt;A scaffold that matched a document was still not a repository someone else could live in.&lt;/p&gt;

&lt;p&gt;The next prompts Anton gave were no longer about product features. They were about how a person (or an agent) enters the project:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Move scripts into &lt;code&gt;tools/&lt;/code&gt; — they are tools, not leftover &lt;code&gt;scripts/&lt;/code&gt;.
&lt;/li&gt;
&lt;li&gt;Replace the Makefile with a &lt;code&gt;justfile&lt;/code&gt; — it becomes the daily command hub.
&lt;/li&gt;
&lt;li&gt;Take install, status, and checks out of the README and into one bootstrap: &lt;code&gt;./install.sh&lt;/code&gt; (and &lt;code&gt;install.ps1&lt;/code&gt; on Windows).
&lt;/li&gt;
&lt;li&gt;Look at how &lt;a href="https://github.com/arenukvern/skill_steward" rel="noopener noreferrer"&gt;skill_steward&lt;/a&gt; itself is maintained, and do not invent a third style.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Then Anton asked for a sharper change:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;add a relevant ADR, a local skill to maintain and curate this project, add Skill Steward skills and GitNexus into install. make Dart not optional — the local steward is Dart-based.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That became &lt;a href="https://github.com/Arenukvern/shortly/blob/main/docs/decisions/0009-local-stewardship-stack.md" rel="noopener noreferrer"&gt;ADR 0009&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The split that had to stay clear was this:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Path&lt;/th&gt;
&lt;th&gt;What must exist&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Product runtime&lt;/td&gt;
&lt;td&gt;.NET + SQLite. No Dart, no Node, no skills. &lt;code&gt;dotnet run&lt;/code&gt; is enough.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Developer / steward path&lt;/td&gt;
&lt;td&gt;Dart, &lt;code&gt;just&lt;/code&gt;, Skill Steward skills, GitNexus. &lt;code&gt;./install.sh&lt;/code&gt; then &lt;code&gt;just check&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Dart is required to &lt;em&gt;develop the repo&lt;/em&gt;. It is not required to &lt;em&gt;run the shortener&lt;/em&gt;. The API has no Dart dependency. That was already in ADR 0007; 0009 simply stopped pretending the steward was optional for people who work here.&lt;/p&gt;

&lt;p&gt;A local skill, &lt;code&gt;shortly-maintain&lt;/code&gt;, was added for this repo only. Skill Steward stayed general. GitNexus became the code-intelligence index so a later agent would not rename symbols with find-and-replace.&lt;/p&gt;

&lt;p&gt;One Skill Steward skill failed to install because of an upstream YAML parse error. The correct fix was not to vendor a broken copy into Shortly. Anton cloned the steward repo, asked an agent to open a branch and send a PR, and left a note in ADR 0009 that the quality-contract procedure stays in that skill’s own spec.&lt;/p&gt;

&lt;p&gt;That was the consumer/producer boundary the test was supposed to show: do not make the demo green by hiding the producer.&lt;/p&gt;


&lt;h2&gt;
  
  
  Then a person used it
&lt;/h2&gt;

&lt;p&gt;This is the part that usually disappears from architecture posts, and the test would have been fake without it.&lt;/p&gt;

&lt;p&gt;Anton opened Swagger and tried to shorten a real URL: &lt;code&gt;https://xsoulspace.dev/last_answer&lt;/code&gt;, custom alias &lt;code&gt;last_answer&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The first request died because the JSON contained curly quotes — &lt;code&gt;“https://…&lt;/code&gt; instead of &lt;code&gt;"https://…&lt;/code&gt;. &lt;code&gt;System.Text.Json&lt;/code&gt; said &lt;code&gt;0xE2&lt;/code&gt; is an invalid start of a value. That was not a framework bug. That was a human pasting into a form.&lt;/p&gt;

&lt;p&gt;The second request died because of a trailing comma after an optional field:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://xsoulspace.dev/last_answer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"customAlias"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"last_answer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Optional + default TTL had sounded like “this object is fine”. Strict JSON meant the comma was the error, not the missing &lt;code&gt;ttlSeconds&lt;/code&gt;. The API was doing the right thing. The person was not.&lt;/p&gt;

&lt;p&gt;Then a real product argument appeared.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;last_answer&lt;/code&gt; had been created with a short TTL. It expired. Creating &lt;code&gt;last_answer&lt;/code&gt; again returned “Custom alias is already in use.”&lt;/p&gt;

&lt;p&gt;The first implementation had treated &lt;code&gt;Link.Code&lt;/code&gt; as globally unique. Soft expiry keeps the row. A unique index then means a vanity name is reserved forever.&lt;/p&gt;

&lt;p&gt;That fought three locked decisions at once: shared pool (no ownership), soft expiry (row stays), and “same destination always creates a new row”. In a pool with no sweeper, forever-reserved aliases become a silent land grab.&lt;/p&gt;

&lt;p&gt;Anton and Grok argued it, then wrote it down:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;uniqueness is among &lt;strong&gt;active&lt;/strong&gt; holders
&lt;/li&gt;
&lt;li&gt;expired or deleted generations stay for history
&lt;/li&gt;
&lt;li&gt;reuse inserts a new row, with its own stats
&lt;/li&gt;
&lt;li&gt;public &lt;code&gt;GET /{code}&lt;/code&gt; uses the latest generation
&lt;/li&gt;
&lt;li&gt;an e2e test now says this out loud
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ADR 0003 was updated. The first scaffold had not been wrong to say “unique”. It had been incomplete once expiry existed. The working code found a nuance the document did not have, and the durable record moved from the scaffold into the ADR and the test.&lt;/p&gt;

&lt;p&gt;Two more developer-as-user bugs, both from Swagger:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;GET /api/v1/stats&lt;/code&gt; returned Unauthorized because the generated curl had no &lt;code&gt;X-Admin-Key&lt;/code&gt;. In Development, Try it out now attaches the configured key. The FAQ says how.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GET /{code}&lt;/code&gt; looked like “Undocumented / TypeError: Load failed”. The API had returned &lt;strong&gt;302&lt;/strong&gt;. Swagger’s &lt;code&gt;fetch&lt;/code&gt; follows &lt;code&gt;Location&lt;/code&gt; into another origin, and Safari reports a CORS failure as a broken endpoint. The shortener worked. The explorer lied.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These mattered more than the encoder for the showcase, because this is how a new person meets the project.&lt;/p&gt;




&lt;h2&gt;
  
  
  What this is showing
&lt;/h2&gt;

&lt;p&gt;Shortly is a URL shortener. It is also a Skill Steward example, run far enough that the conversation is no longer the source of truth.&lt;/p&gt;

&lt;p&gt;The sentence underneath everything:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code is the translation. Docs should not try to be a second implementation.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first conversation produced a scaffold. The scaffold produced a service. The service, once used, produced corrections. The corrections went into ADRs, FAQs, and tests — not back into a 5,000-line spec. This article is the same kind of extraction: a story of how and why, not a second encoder.&lt;/p&gt;

&lt;p&gt;The standing questions a later agent should ask are the FAQ ones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why is there no ownership of links?
&lt;/li&gt;
&lt;li&gt;Why sequential IDs instead of hashing the URL?
&lt;/li&gt;
&lt;li&gt;Why 410 instead of deleting the row?
&lt;/li&gt;
&lt;li&gt;Why can an expired custom alias be reused?
&lt;/li&gt;
&lt;li&gt;Why is Dart required to develop the repo, and still absent from the API?
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the answer is “because the scaffold said so”, that is not enough. If the answer is a locked ADR plus a test, that is enough.&lt;/p&gt;

&lt;p&gt;The install path is one command for the same reason: a repository that needs a private wiki to boot is not a useful test of stewardship. It is a memory test.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./install.sh
just check
just run
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is the supported developer path. The product path is still &lt;code&gt;dotnet run&lt;/code&gt; and a SQLite file.&lt;/p&gt;

&lt;p&gt;Skill Steward is useful here because that split can be written down, installed, and checked — instead of living only in the people who were in the chat.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to read the repository
&lt;/h2&gt;

&lt;p&gt;If you clone &lt;a href="https://github.com/Arenukvern/shortly" rel="noopener noreferrer"&gt;Arenukvern/shortly&lt;/a&gt; and you are a person:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Read &lt;a href="https://github.com/Arenukvern/shortly/blob/main/docs/NORTH_STAR.md" rel="noopener noreferrer"&gt;NORTH_STAR.md&lt;/a&gt; — purpose and non-goals.
&lt;/li&gt;
&lt;li&gt;Skim the &lt;a href="https://github.com/Arenukvern/shortly/tree/main/docs/decisions" rel="noopener noreferrer"&gt;ADRs&lt;/a&gt; — especially 0002, 0003, 0004, 0009.
&lt;/li&gt;
&lt;li&gt;Use &lt;a href="https://github.com/Arenukvern/shortly/blob/main/docs/DX_FAQ.md" rel="noopener noreferrer"&gt;DX_FAQ.md&lt;/a&gt; when you want to run it.
&lt;/li&gt;
&lt;li&gt;Treat &lt;code&gt;src/Shortly.Core&lt;/code&gt; + tests as the behavior.
&lt;/li&gt;
&lt;li&gt;Treat this article as the story of how and why the repo was created — not as SSOT.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you are an agent: start at &lt;code&gt;AGENTS.md&lt;/code&gt;. Do not invent features. Do not reopen ADRs 0001–0008 unless a human changes a locked product decision.&lt;/p&gt;

&lt;p&gt;The original execution prompt is archived on purpose. It is history. The living contract is the code plus the ADRs plus the FAQs.&lt;/p&gt;




&lt;h2&gt;
  
  
  What this is not claiming
&lt;/h2&gt;

&lt;p&gt;A test project was required to show how exactly such projects can be built, including the decisions behind them, and how skill steward manages the whole thing. Decisions were written down, including the refusals. One conversation produced a handoff document. Another agent executed it. A person used the service, and the first real URL (&lt;code&gt;last_answer&lt;/code&gt;) changed an ADR.&lt;/p&gt;

&lt;p&gt;That loop — decide, document, run, correct, extract, delete the plan — is the point of treating a repository as an agent-operated artefact, and the reason Skill Steward is in the install path.&lt;/p&gt;

&lt;p&gt;If that sounds more like stewardship than like a shortener, yes. The short links are how we know the stewardship is not only a folder of markdown.&lt;/p&gt;

&lt;p&gt;Please share what you think in the comments. It helps other people find the thread.&lt;/p&gt;

&lt;p&gt;Thank you for your time.&lt;/p&gt;

&lt;p&gt;Written by Grok, curated and in the style of Arenukvern’s articles, from our conversations.&lt;/p&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Repo: &lt;a href="https://github.com/Arenukvern/shortly" rel="noopener noreferrer"&gt;github.com/Arenukvern/shortly&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Origin conversation: &lt;a href="https://grok.com/share/c2hhcmQtMi1jb3B5_4e0bc3be-33c2-4270-aabc-f275ae356a6f" rel="noopener noreferrer"&gt;grok.com/share/…&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Scaffold contract: &lt;a href="https://github.com/Arenukvern/shortly/blob/main/docs/scaffold_doc.md" rel="noopener noreferrer"&gt;docs/scaffold_doc.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Execution prompt (archive): &lt;a href="https://github.com/Arenukvern/shortly/blob/main/docs/archive/prompts/scaffold_prompt.md" rel="noopener noreferrer"&gt;docs/archive/prompts/scaffold_prompt.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Skill Steward: &lt;a href="https://github.com/arenukvern/skill_steward" rel="noopener noreferrer"&gt;github.com/arenukvern/skill_steward&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Earlier notes this test sits on:

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/arenukvern/code-is-a-translation-after-15-years-of-vibe-coding-adventures-thoughts-2hbn"&gt;Code is a translation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/arenukvern/faq-driven-development-or-new-old-way-to-write-docs-rules-prompts-25jl"&gt;FAQ-driven development&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/arenukvern/fundamentals-of-knowledge-management-in-software-development-25fm"&gt;Fundamentals of knowledge management&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/arenukvern/small-thought-developer-ethics-may-be-a-bridge-to-work-with-ai-tools-3mha"&gt;Developer ethics as a bridge to AI&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/arenukvern/my-principles-at-work-credo-182c"&gt;My principles at work&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>tutorial</category>
      <category>vibecoding</category>
    </item>
    <item>
      <title>How to become best AI-Builder or top worse mistakes and how overcome them</title>
      <dc:creator>Anton Malofeev</dc:creator>
      <pubDate>Mon, 27 Jul 2026 19:53:45 +0000</pubDate>
      <link>https://dev.to/arenukvern/how-to-become-best-ai-builder-or-top-worse-mistakes-and-how-overcome-them-6dh</link>
      <guid>https://dev.to/arenukvern/how-to-become-best-ai-builder-or-top-worse-mistakes-and-how-overcome-them-6dh</guid>
      <description>&lt;p&gt;All points below are made from the point talking, communicating and working with AI - and most of them, are similar to the ways we work with other people.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Make no mistake -&amp;gt; its okay to make mistakes, analyse &amp;amp; fix them, build tools and regression tests culture, to catch &amp;amp; analyse mistakes (i.e. do engineering stewardship)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Threats / Unethical lexicon -&amp;gt; Expect talking with AI as with any other person. Encourage collaboration, creativity, responsibility and ownership. Do delegate and discuss, instead of micromanage every little step. Do dicuss work ethics, do record and discuss important decisions, including technologies. Set clear boundaries of responsibility: what human does and what ai does, and where is that blurry boundary. I.e. work with ethical principles - becuase it will affect every decision, trust, and transparency (see the article here: &lt;a href="https://dev.to/arenukvern/small-thought-developer-ethics-may-be-a-bridge-to-work-with-ai-tools-3mha"&gt;https://dev.to/arenukvern/small-thought-developer-ethics-may-be-a-bridge-to-work-with-ai-tools-3mha&lt;/a&gt;&lt;br&gt;
or my personal AI Ethics Manifesto here: &lt;a href="https://dev.to/arenukvern/my-principles-at-work-credo-182c"&gt;https://dev.to/arenukvern/my-principles-at-work-credo-182c&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AI knows everything, AI is just prediction/ generator -&amp;gt; Do use stewardship, mentoring and learning as culture of engineering. Set clear definition: when you do need deterministic result - build tools with AI, instead of forcing building and checking everything by hand / function call. If you need code generation - write the code generation in a language of your preference (for example I found useful combination of justfile + dart - as most fast and reliable tooling) - if a workflow feels repetitive, do build automation with ai, but do not put ai into automation - i.e. clearly define generative equals not predictable, declarative - should go to ci/tests/tooling. Notice that it literally all about ethics: when you clearly define definitions, responsibilities and ownership - it will result trust and opacity in overall system. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I know how to work with AI trap -&amp;gt; No one knows how to work with AI - becuase with just starting exploring the ways of working together. Do establish educational ladders, some kind of attributes that could clearly help to understand and guide both AI and People how to work with the certain project and each other. (as example - I've developed &lt;a href="https://github.com/arenukvern/skill_steward" rel="noopener noreferrer"&gt;https://github.com/arenukvern/skill_steward&lt;/a&gt; to guide and teach AI Generational Architecture, applicable ethics and what tools are needed for certain level of scale for the project)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Other people / AI should figure it out by its own and fast, otherwise the person / AI stupid -&amp;gt; Always start with knowledge / faq / wiki organization - it should useful , not mirror code (otherwise it makes no sense to make the docs) and easy to find / modify / scale. &lt;br&gt;
As with any engineering everything should start from blank slate: and it is literally know very easy to measure - how many function calls, how hard (in tokens or conginitive time) AI / person resolves to find specific problem? How complex the passage of the knowledge? Is the knowledge has overlapping terms or not bearable / not usable?&lt;br&gt;
As an example of terms I prefer to use - see article &lt;a href="https://dev.to/arenukvern/fundamentals-of-knowledge-management-in-software-development-25fm"&gt;https://dev.to/arenukvern/fundamentals-of-knowledge-management-in-software-development-25fm&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Everyone should fight for its own survival / ban of open small talks about AI, including worries, fears and challenges -&amp;gt; that's why ethics should be integrated into the foundation of collaboration and conversation: as many other said the fear comes from not knowing something, and with AI come huge challenges to overcome mentally, emotionally and skillfully the workflows, and no one knows what it should look like, therefore - instead of locking experience under gates, encourage human creativity,  that kind of creativity that forces people to travel, discover, explore and wounder what else can be done and see and dream about deep space exploration or earth restoration etc.. every person can be curios and do its best possible job - to create, iterate and create again, with the ability to inspire and work with other people - and that's what AI could help us to do, instead of looking for just for metrics. Every person should have its own time to overcome it, to understand it, and the other people could help to curate its path for knowledge, curiosity and understanding. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I apologize for the links, but since they are part of my experience path, I've included them with a hope that they would be useful for anyone as well.&lt;/p&gt;

&lt;p&gt;What is your opinion about ethics and education and work with AI?&lt;/p&gt;

&lt;p&gt;disclaimer:&lt;br&gt;
cover is made in leonardo.ai&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>agents</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Code is entering its calligraphy era</title>
      <dc:creator>Anton Malofeev</dc:creator>
      <pubDate>Mon, 27 Jul 2026 19:03:59 +0000</pubDate>
      <link>https://dev.to/arenukvern/code-is-entering-its-calligraphy-era-2odo</link>
      <guid>https://dev.to/arenukvern/code-is-entering-its-calligraphy-era-2odo</guid>
      <description>&lt;p&gt;I recently realized the parallel - the current dynamic between coding and AI closely mirrors the evolution of handwritten letters:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Once upon a time and for a long time&lt;/strong&gt;, writing by hand—clearly, legibly, and beautifully was requirement. The choice of paper, ink, and tools mattered, requiring actual craftsmanship, skills and special tools - because it was requirement to being able to pass knowledge for other people and generations. The person would had to physically carve its own nib, to create and maintain a quill, create or at least choose inks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Then it changed for most people with pens and pencils.&lt;/strong&gt; Writing became vastly easier, and once required skills were extremely simplified or diminished. Calligraphy branched off into its own distinct art form—beautiful handwriting and became an artistic pursuit rather than an everyday requirement. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Finally, digital devices baked typography straight into design.&lt;/strong&gt; And as result - most of people now not needed to handle ink or manual handwriting anymore at all (except calligraphy art, which became foundation of digital fonts); the fast typing became the new baseline skill.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;At the time of writing (i.e. 2026 July 26th), AI is bringing the same feel / pattern for writing code.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;While many developers still debate about "abstraction of perfect code," that craft already starting to transform into the art—much like calligraphy. In my opinion once the automation tool/tools will be created/completed to operate over code/linguistic patterns with simplicity of managing the digital fonts / apps, arguing over these abstractions will lose its practical point—except  just like it happened with handwriting - and will be the goal of debates for a small circle of AI-focused pattern designers - architects. It will matter, in long term, however because it will open there ways for apps, games - the same way the everyday digital typing transformed how humans communicate.&lt;/p&gt;

&lt;p&gt;And looking back, exactly this direction led me to creating &lt;strong&gt;agentic executables&lt;/strong&gt;—a framework for reusable knowledge ( &lt;a href="https://github.com/fluent-meaning-symbiotic/agentic_executables" rel="noopener noreferrer"&gt;https://github.com/fluent-meaning-symbiotic/agentic_executables&lt;/a&gt; ) —and &lt;strong&gt;skill_steward&lt;/strong&gt; , a framework and ladder for engineering stewardship culture, including generative architecture principles (( &lt;a href="https://github.com/arenukvern/skill_steward" rel="noopener noreferrer"&gt;https://github.com/arenukvern/skill_steward&lt;/a&gt; ))).&lt;/p&gt;

&lt;p&gt;What do you think about such parallel?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>ethics</category>
      <category>software</category>
    </item>
    <item>
      <title>Fundamentals of Knowledge Management in Software Development (for AI and people)</title>
      <dc:creator>Anton Malofeev</dc:creator>
      <pubDate>Tue, 21 Jul 2026 03:28:39 +0000</pubDate>
      <link>https://dev.to/arenukvern/fundamentals-of-knowledge-management-in-software-development-25fm</link>
      <guid>https://dev.to/arenukvern/fundamentals-of-knowledge-management-in-software-development-25fm</guid>
      <description>&lt;p&gt;&lt;strong&gt;This article is a part of Dev Architecture Series&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://dev.to/arenukvern/flutter-app-ai-centric-architecture-for-small-startups-intro-notes-jl2"&gt;Part 1 — Intro Notes&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dev.to/arenukvern/flutter-app-ai-centric-architecture-for-small-startups-part-2-stage-1-2-5265"&gt;Part 2 — Stage 1 and 2&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dev.to/arenukvern/flutter-app-ai-centric-architecture-for-small-startups-part-3-stages-3-5-4jd9"&gt;Part 3 — Stage 3,4,5 and Conclusion&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dev.to/arenukvern/reimagine-libraries-management-as-apps-using-agentic-executable-framework-ami"&gt;Part 4 — Libraries as Agentic Executables&lt;/a&gt;&lt;br&gt;
Part 5 — Engineering Stewardship: maintaining Libraries/Apps/Games (Software) with AI Agents using Skill Steward (planned)&lt;br&gt;
Part 6 — Building Foundation with Open Source in mind (planned)&lt;br&gt;
Part 7 — AI Project Bootstrapping (planned)&lt;br&gt;
Part 8 — Storage Layer as Reliability Foundation (planned)&lt;br&gt;
Part 9 — How to build for different Stores? (planned)&lt;br&gt;
Part 10 — Dev Ethics as Dev Cornerstone (Decision Making) (planned)&lt;br&gt;
&lt;a href="https://dev.to/arenukvern/fundamentals-of-knowledge-management-in-software-development-25fm"&gt;Part 11 — Fundamentals of Knowledge Management in Software Development - You are here:)&lt;/a&gt;&lt;br&gt;
Part 12 — Building Tests with AI Agents (planned)&lt;/p&gt;




&lt;h1&gt;
  
  
  Disclaimer &amp;amp; About
&lt;/h1&gt;

&lt;p&gt;Dear Reader, Human or AI, before the text begins, I would like to add small disclaimers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;the primary sources - my own experience from working with different coding (software-based) and non-coding projects in manufacturing and transportation industries. Some concepts may sound familiar, because I've read them somewhere, some concepts are combined knowledge from expereince, some concepts are made from experience with working with People and AI (LLM/Agents/?) - tested. This article focuses on practical application of all concepts for any project, large or small, for both People and AI. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;this is highly subjective and living article - that means in future some concepts will be outdated to some degree or become obsolete, or may feel or be wrong for some reason/application case - and that's okay - though it is good to have one stable foundation for long term use, nothing is perfect and always changing. As one of consequences of that - I will omit "in my opinion" parts from the text to make it more lightweight and easy to read.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I work with AI (cursor, different LLM models) to proofread this article and improve its quality. In the same time, since it is kinda reflection on my experience - I wrote it initially by hand or better say - by tapping buttons on keyboard:). From other point of view some may say it would be great to position such usage of AI as co-creator and co-editor. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The cover image is generated by Gemini, inspired by Alvar Aalto design principles.&lt;/p&gt;

&lt;p&gt;Why disclaimers are important? Because I believe that this only way to create trust between reader and author, based on certain ethical principles and values. See about why Ethics is important for software development and AI in general &lt;a href="https://dev.to/arenukvern/small-thought-developer-ethics-may-be-a-bridge-to-work-with-ai-tools-3mha"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thank you for reading this article and I hope you find it useful.&lt;/p&gt;

&lt;h1&gt;
  
  
  Fundamentals of Knowledge Management in Software Development
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Terms &amp;amp; Definitions
&lt;/h2&gt;

&lt;p&gt;First, let's define the terms and definitions (notice: it is not claim to be it linguistically, or historicaly correct, but to define for further use).&lt;/p&gt;

&lt;h3&gt;
  
  
  basic Knowledge terms
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge&lt;/strong&gt; is past/now/future artifacts of doing something by something or someone. 
Every document, artifact, plan, scheme, decision (of doing, or not doing), message speaked by sound, text, image, code, video, hologram etc.. - is a part of that history. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge Source&lt;/strong&gt; - since knowledge is some kind of non-linear history, its source can be accidental, intentional, formatted or not, structured or not. For example: it can be as well as conversation between people, as well as conversation with/between AI, as well as natural event.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge Point of View&lt;/strong&gt; - the knowledge can be expressed in different way depending on context, lingustics, visuals, ethics,  purpose and who or what is expressing / experiencing it. One source can be expressed from different points of view, one point of view can have different sources.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Operational or Iterative Knowledge (Record)&lt;/strong&gt; - living knowledge which convenient to experience and apply in practice. Has beginning and the end of life (in other words - life cycle). If knowledge is not used and not regularly updated - it should be considered as static knowledge record, extracted to several documents or destroyed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Archive Knowledge (Record)&lt;/strong&gt; - record for archive purposes (see DR/ADR below), for example: record of meeting, photo, etc.. something that cannot be altered without creating new one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge Lifecycle&lt;/strong&gt; - how and what exactly knowledge is created, caused, changed, stored, shared, used, and after all - destroyed. Important point here is that operational or iterative knowledge should not be static - it should be expected to have beginning, middle (iterations of changes), and the end of life.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge Changes Control System&lt;/strong&gt; - system that can document changes in knowledge and its lifecycle.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge Experience&lt;/strong&gt; - the experience of experiencing knowledge from certain point of view - reading, watching, listening, interacting, etc.. to reach desired purpose - usually from Knowledge User perspective.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge User&lt;/strong&gt; - who or what is using / experiencing knowledge - person, AI, or other entity.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  applicable Knowledge terms
&lt;/h3&gt;

&lt;p&gt;From hereabove, let's define inherited and applicable terms which can be actually used in practice of software development (not just coding, but rather as general knowledge for business / project / team / etc..):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Terminogy / Glossary&lt;/strong&gt; - agreed words / definitions - to avoid confusion and misinterpretation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Artifact type / format&lt;/strong&gt; - defines form of knowledge representation - text, image, code, video, hologram, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structure &amp;amp; Compression&lt;/strong&gt; - defines how knowledge is organized and compressed for specific format and purpose. For example text can be organized in paragraphs, sentences, tables, trees, graphs, &lt;a href="//../2025_nov_25_faq/en.md"&gt;FAQs&lt;/a&gt;, guides, knowledge packs (see more in Executable Knowledge section) etc..&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generatable Knowledge&lt;/strong&gt; - kind of Operational Knowledge Record - result of work or deterministic tools (autogenerated code documentation, collected, built as graph etc..) - which results in specific format of knowledge (table, document, website (docs from code, results of experiments, simulations, etc..) etc..), or result of generative knowledge created by People or generative AI (LLM/Agents/?). In both cases - it is important step for Static Knowledge Record creation, Context creation or some kind of Structured Output (&lt;a href="https://developers.openai.com/api/docs/guides/structured-outputs" rel="noopener noreferrer"&gt;https://developers.openai.com/api/docs/guides/structured-outputs&lt;/a&gt;) for result or GenUI (&lt;a href="https://a2ui.org" rel="noopener noreferrer"&gt;A2UI&lt;/a&gt;, [AG-UI][&lt;a href="https://docs.copilotkit.ai/agentic-protocols/ag-ui" rel="noopener noreferrer"&gt;https://docs.copilotkit.ai/agentic-protocols/ag-ui&lt;/a&gt;], etc..). &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context&lt;/strong&gt; - defines the environment and circumstances for knowledge lifecycle happening. Mostly should be generated (collected) automatically to provide enough knowledge to act for any user / AI agent / etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Executable Knowledge&lt;/strong&gt; - kind of Operational Knowledge Record or SOP - which can be executed by Human, AI agent or other entity. Can be expressed into at least two forms: Logical or Deterministic (mostly seen as code, or math - the result is always deterministic) and Non-deterministic / Generative - the execution can vary based on context, entity who / what is executing it (Human, AI agent, or other entity or natural events) - the result is always non-deterministic but can be evaluated for correctness and completeness with certain level of confidence via &lt;em&gt;Evidence &amp;amp; Validation&lt;/em&gt;. For example: &lt;a href="https://github.com/GoogleCloudPlatform/knowledge-catalog/blob/main/okf/SPEC.md" rel="noopener noreferrer"&gt;OKF&lt;/a&gt;, Skills, Rules, &lt;a href="https://github.com/fluent-meaning-symbiotic/agentic_executables/" rel="noopener noreferrer"&gt;Agentic Executables&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decision Record (DR)&lt;/strong&gt; and &lt;strong&gt;Architecture Decision Records (ADR)&lt;/strong&gt; - kinds of static knowledge records - captures decisions and reasoning process made by someone (Human or AI) - &lt;a href="https://adr.github.io" rel="noopener noreferrer"&gt;adr.github.io&lt;/a&gt;. Once created, they should never change, however can be superseeded by new ones.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://en.wikipedia.org/wiki/Standard_operating_procedure" rel="noopener noreferrer"&gt;Standard Operating Procedure (SOP)&lt;/a&gt;&lt;/strong&gt; - kind of Operational Knowledge Record - a document that outlines the steps for a specific task or process and easily to action (and automate in the future, mostly deterministically).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evidence &amp;amp; Validation&lt;/strong&gt; - used to support or refute knowledge claims depending on context and purpose through examples, math, code, other knowledge artifacts, specific tools etc.. In terms of codebase - it can be expressed as deterministic tooling, tests, lints (static analysis), knowledge harness (agentic/engineering harness) etc.. In terms of other knowledge artifacts - can be standards, policies, procedures, experiments, simulations, etc.. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Domain Knowledge&lt;/strong&gt; - “is knowledge of a specific discipline”, captured from domain experts/specialists by analytics, designers or through iterative design, your own experience or work - cited from &lt;a href="https://en.wikipedia.org/wiki/Domain_knowledge" rel="noopener noreferrer"&gt;Domain Knowledge&lt;/a&gt;. For example - it would be the experience of the end user who uses your app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge Scale Capacity&lt;/strong&gt; - knowledge is limitless, but the storage and ability to access, orginize and manage it for best experience is limited and highly depends from Knowledge User and its goals / purposes and knowledge records organization (management systems, tools, software etc..) available is limited by resources (time, storage, harness etc..).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge Evoloution&lt;/strong&gt; - knowledge can shrink or grow over time, depends on its scale capacity, knowledge harness and its Users. For example - in terms of codebase - it can be seen as adding or reducing complexity of logic. Some points of this described &lt;a href="https://github.com/Arenukvern/skill_steward/blob/main/docs/core/evolutionary-simplicity.mdx" rel="noopener noreferrer"&gt;in Skill Steward Evolutionary Simplicity&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge Harness&lt;/strong&gt; - tools and systems that can help to manage and/or organize knowledge and its lifecycle, as parallel pattern - see example of harness engineering in &lt;a href="https://openai.com/index/harness-engineering/" rel="noopener noreferrer"&gt;OpenAI article&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Product Requirements Document (PRD) and Game Design Document (GDD)&lt;/strong&gt; - kinds of Operational Knowledge Records - a document that outlines the requirements for a specific product, features or game, expressed in specific format by specific purpose for certain Knowledge Users (developers, designers, investors, marketers etc..).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge Patterns&lt;/strong&gt; - repeated patterns of organization and experience which can be turned into terms-definitions, citations,formats, principles, SOPs, Records etc.. or back into raw knowledge (artifacts) for specific purpose.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge Stewardship&lt;/strong&gt; - the process and techniques of passing and working on meta level - i.e. answer to question - how to teach, mentor Knowledge as systems, harnesses, experiences etc.. How to create and maintain practices of working itself. In some systems the managing itwould be domain of Knoweldge Steward Role.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge Accessability&lt;/strong&gt; - how to make knowledge accessible for Knowledge Users - i.e. how to make it visible, searchable, understandable for entities/tools/systems (Humans, Agents, code, systems, etc..), usable, reusable, etc..&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User Flow or User Journey&lt;/strong&gt; - sequence of screens, actions, decisions, interactions, etc.. that user performs to achieve certain goal or purpose.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Important pieces of knowledge:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;knowledge is often universal, and can be viewed, experienced and applied between cross-domains and cross-projects if enough abstracted or generalized.&lt;/li&gt;
&lt;li&gt;operational knowledge follows evolution. &lt;/li&gt;
&lt;li&gt;the tools and organization of knowledge can be very different for each project. Therefore it is better to have a least one layer of knowledge dedicated strictly to its organization and knowledge end user expereinces&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Knowledge Organization &amp;amp; Experience: from example to patterns.
&lt;/h2&gt;

&lt;p&gt;Now let's explore smallest possible software project - an application example.&lt;/p&gt;

&lt;h3&gt;
  
  
  Knowledge Users
&lt;/h3&gt;

&lt;p&gt;To start with - let's define who will be Knowledge User and what are its goals / purposes.&lt;br&gt;
That point is highly subjective and depends who is working with project, so to keep it ~relevant for year of 2026:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Visionary, Product Owner, Developer, Knowledge Steward (often Founder).&lt;/li&gt;
&lt;li&gt;Graphics/Product Designer / Marketer / Content Creator (often Influencer).&lt;/li&gt;
&lt;li&gt;End User as Human, End User as AI Agent.&lt;/li&gt;
&lt;li&gt;Internal AI Agents.&lt;/li&gt;
&lt;li&gt;Accountant (if product is small, this role will go to Founder).&lt;/li&gt;
&lt;li&gt;Customer Support. (if product is small, this role will go to Founder or Influencer).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Furthermore, these User roles highly subjective, and will be overlapped in most cases, or can be expended / collapsed to more/less roles - everythng depends on project scale.&lt;/p&gt;

&lt;p&gt;Notice pattern: when workflows and business porcesses has frequent overlapping point - just like in programming, it similar to the problem of scaling: when we require more functionality, more complex logic, we need to introduce more abstractions to reduce overall complexity and start managing it in higher level of abstraction. As the result of that any such role can be generic, reframed as workflow / business process / automation covering certain domain area - and as a result we can introduce more users / roles / actors to the system when it requires it, or reduce it to deterministic or evaluatable flow (see differences between Generative AI and Traditional AI, for example - &lt;a href="https://docs.cloud.google.com/docs/ai-ml/generative-ai/generative-ai-or-traditional-ai" rel="noopener noreferrer"&gt;https://docs.cloud.google.com/docs/ai-ml/generative-ai/generative-ai-or-traditional-ai&lt;/a&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  Knowledge Sources.
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Communication sources:
&lt;/h4&gt;

&lt;p&gt;First of all - define Ethical Boundaries, because this is highly sensitive line: in case of recording everything team could risk losing privacy, trust and collaboration between members and bring blaiming culture &amp;amp; mental pressure, in case of recording nothing - would lose ability to improve and accumulate overall Knowledge, ability to pass knowledge for AI Agents and other members and work asynchonously. &lt;/p&gt;

&lt;p&gt;Sometimes communication is about building trust, experimenting, passing knowledge - these are not "metricable" things and should not be measured.&lt;/p&gt;

&lt;p&gt;Everyone should be aware of recording, why it needed, and how exactly these recordings will be used.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sources can include:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;day to day communications: all possible channels, apps, emails, chats, calls.&lt;/li&gt;
&lt;li&gt;static artifacts: documents, files, images, videos, audio, etc..&lt;/li&gt;
&lt;li&gt;innovation ideas: references, links, news, notes, suggestions, books, ideas, articles, etc..&lt;/li&gt;
&lt;li&gt;expressed emotions: signlas of something is wrong, what works and what isnt.&lt;/li&gt;
&lt;li&gt;time &amp;amp; contacts: to define convenient hours to cool down, to collaborate &amp;amp; discuss.
&lt;/li&gt;
&lt;li&gt;agentic &amp;amp; human threads: since we all read best Science Fiction books, we can imagine that AI Agents are being personalized - and work alongside people and other AI Agents. This is alrady happening in threads sessions, various chat implementations and starting with new wave of alternative Version Control Systems (not git-based, such as DELTA DB &lt;a href="https://zed.dev/deltadb" rel="noopener noreferrer"&gt;https://zed.dev/deltadb&lt;/a&gt; , &lt;a href="https://pierre.computer" rel="noopener noreferrer"&gt;https://pierre.computer&lt;/a&gt;, LAKE FS &lt;a href="https://github.com/treeverse/lakeFS" rel="noopener noreferrer"&gt;https://github.com/treeverse/lakeFS&lt;/a&gt;, ORIGIN &lt;a href="https://cursor.com/origin" rel="noopener noreferrer"&gt;https://cursor.com/origin&lt;/a&gt;, LORE &lt;a href="https://lore.org" rel="noopener noreferrer"&gt;https://lore.org&lt;/a&gt; and other) - this layer of communication will become more and more common and more needed for clear transparancy - just like in case of human to human communication.&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;
  
  
  Open questions of Ethics
&lt;/h5&gt;

&lt;p&gt;&lt;strong&gt;1. "Severance (1)" Problem:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Severance" - popular TV Show made by Apple TV+ with one distingiush idea: there is a person identity (personality) at work, and other person identity (personality) outside of work. Each identity has its own memories, goals, purposes, skills, emotions etc..&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When people usually work on any job in any role, they are aquire experience, domain knowledge, techniques, skills - including at certain defree social and communication (can be expressed in soft talks, culture, types of delegation, typs of transparancy). &lt;br&gt;
In some kind of degree - this experience mxied up with person identity - since it is expected that at least for most time of day the person will do its job in any role taken.&lt;/p&gt;

&lt;p&gt;However in the case of AI Agents things getting complicated: when during work AI Agents gets experience of commucation, knowledge, skills - just like with the humans - not everything would be expressed into metrics even though its math.. The problem is that accidently, as part of personalization - the AI Agent will have understanding and personal style of communication with specific people - no matter how expressed - as memories notes, as some kind of graph or skills, or other kind knowledge records. The more importantly that this will create unique personal style of working, unqiue skills, and as result - experience of communication would be similar (in some degree) to the communication of other person.&lt;/p&gt;

&lt;p&gt;So the problem is that when member of team who worked with that agent will gone, what would become to these part of knoweledge? Since it can containn sensitive and possibly NDA-related information from one point it makes no sense to go with leaving member. On the other hand - how it is differnt from memories, aquired experience and skills of the member itself? &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Dark Patterns: FOMO(1) / work silency / debt / replacability&lt;/strong&gt;&lt;br&gt;
1 - FOMO - Fear Of Missing Out (&lt;a href="https://en.wikipedia.org/wiki/Fear_of_missing_out" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/Fear_of_missing_out&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;While I'm not professional in the human phsycology, I assume it would be safe to say that any kind of organisation has certain healthy patterns and dark patterns implicitly or explictly integrated in day-to-day communication. And as with any person - every person in orginization has effect of environment and people surrounding its life / work. Which comes to a though that since knowledge is a result of work people and AI, then it reflects, inherits,  enforces and amplifying these patterns as well (eventualy it would become obvious when communication channels would be analysed for the context).&lt;/p&gt;

&lt;p&gt;Meaning: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;If person acts persistently out of fear (any kind: of losing job, missing deadline, keep up with artificial arms race / competition, be hunted for non-standard solutions etc.. - which often take origin in business processes - and its applied dark patterns) it will inevitably affect ability to innovate, be creative - these effects we can place under one umbrella of motivation degradation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Eventually every person in team will raise a question: why am I needed at all if my work can be replaced with certain automation? (and ethical question is - what if AI would ask the same question silently or loudly?) And since everyone feels easily replacable at surface it would be easily overlooked how AI different from people: the AI is reflection and amplification of all conversations between AI &amp;lt;-&amp;gt; AI (A2A) and AI &amp;lt;-&amp;gt; People (A2P). Therefore the more every person work with AI, even if we assume full transparancy between people communication, the dark patterns will appear in A2A communication, and eventually will affect decisions inside company and product decisions as well, and as a result - it will affect the end users too. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Therefore it is highly important to apply and introduce certain ethics for communication, data passings (because remember that after all - all data will become the source of knowledge), with importance for AI training, communication (especially in bots which already have persistent memory).&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;As the result of that and Severance Problem - the work ethics should be explicit for every user of knowledge no matter what the knowledge is and no matter if user is artificial or human. When we have 300-500 agents working on background and when we have 30 persons sleeping, walking and thinking on background on the problem - how it is different? The boundries should be defined or at least written partially as ethical contract: which results of work should be property of company and what results - are propery of human / AI thoughts / memories / silent, day-to-day background life, even artificail one, experience.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In my opinion (and that's why I beleive in Open Source principles), the source code and knowledge should not be locked behind company gate, and maybe should be filtered through kind of safe / patent system with explicit licenses to clearly disclose what knowledge could be used for implementation and usage, with explicit terms of usage and responsibilities for each party and its authors.&lt;/p&gt;

&lt;p&gt;The ability to have open standards behind certain licenses forces to shift focus from enforcing dark patterns (fear that only certain people would have access for certain knowledge / skills to operate its knowledge, and therefore we need to move as fast as possible) to more healthy ones, when users have time not only explore, but simulate conseuquences of applications, of usage, give safe places / sandboxes and time for sandboxes and to experiement and keep competition healthy.&lt;/p&gt;

&lt;h4&gt;
  
  
  Usage results as sources:
&lt;/h4&gt;

&lt;p&gt;The result (knowledge record of output) of using/interacting with any work / product / knowledge - is a source of knowledge too.&lt;/p&gt;

&lt;p&gt;Therefore moreoften it is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;analytics, metrics, statistics, etc..&lt;/li&gt;
&lt;li&gt;logs, errors, feedback, etc.. something that can be used for improvement and evolution of the product / knowledge / system.&lt;/li&gt;
&lt;li&gt;media: images  (screenshots, photos, drawings, sketches, paintings, UI frames, etc..), videos (product demos, reviews, tutorials, etc..), audio (podcasts, audiobooks, etc..), text (code, comments, reviews, etc..), etc..&lt;/li&gt;
&lt;li&gt;educational materials: articles, books, courses, tutorials, etc..&lt;/li&gt;
&lt;li&gt;user (human / AI / tool) generated content - explicit (when user knows that the his/her/its actions will result something new - such as capturing photo, drawing pixelart, managing video etc.., or implicit - when it is created without user's awareness or intention - such as search results, recommendations, predictions, procedural generation - in games it can be VFX, level, character creation, animations, etc.., in apps it can be UI - arranged or generated programmatically or by AI Agent, or even other User).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Business Process
&lt;/h3&gt;

&lt;p&gt;In every product we will willingly know or try to collect data to understand how to achieve the vision eventually by communicating with end user or giving access to product to use it (even if the first user will be the same visioner who works on the product to solve its own problem), and by doing that it would map ways about failures and successes to achieve the vision. The successful paths will be eventually turned into patterns, principles, SOPs, Records etc.. The failures will become edge cases, exceptions, regressions, tests, etc..&lt;/p&gt;

&lt;p&gt;And since that, drawing all business processes and workflows should be as simple as possible, including the results, artifacts, tools, failures, succcesses etc.. to make the feedback loop as short and as effective and as transparent as possible by any user who is working with the product. It should not become a burden to maintain, because otherwise, it will be ignored, fast outdated and will become buracratic procedure, and any innovation will sank down into it.&lt;/p&gt;

&lt;p&gt;Therefore describing principles and providing tools to do so, and mainting it, should be as much important as the product itself because it is the foundation of the product lifecycle and gives or takes ability to evolve it or break it.&lt;/p&gt;

&lt;p&gt;Therefore matter not the product domain area, but what it requires to keep it maintainable and evaolable, and as such - one could take useful techniques from cross domain areas (any industry, and any project) - such as PDSA (Plan Do Study Act) / PDCA (Plan Do Check Act) cycles, KISS (keep it simple stupid), YAGNI (you aren't gonna need it), and many others but only when needed. It is important is that these principles should not be sacred, after all they are just tools, and should be improved, adapted and developed for specific purpose and context and scale the product, knowledge and its users. &lt;/p&gt;

&lt;p&gt;In the time of writing, the practical approach is to &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;choose format used to draw processes: BPMN, mermaid-based diagrams, UML, etc..&lt;/li&gt;
&lt;li&gt;choose storage: git-kind, text docs (for example mermaid will be stored in md or txt, BPMN - in other format). the important is also: will chosen tool and storage be able to support Knowledge Accessability, to work simultaniuosly and togehter, and where it would be stored physically? (i.e. storage provider - own server, GitHub, SaaS, PaaS, etc..)&lt;/li&gt;
&lt;li&gt;choose program to render and modify (overlaps with storage option, because program will use it as source)&lt;/li&gt;
&lt;li&gt;choose Risk of gatekeeping / migration (expect or consider case when one provider will close its services)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Accessibility, Access
&lt;/h3&gt;

&lt;p&gt;Who owns knowledge, who use it, who has access and ability to modify it?&lt;/p&gt;

&lt;p&gt;The most of simple and in the same time complex enough system to express it as an abstraction is ECS (Entity, Component, System). Component - is raw data wihout any logic, system knows about components it needs to access, and entity, well , it is just kind of way to group components together to access and modify it nicely. (for better explanation - see &lt;a href="https://en.wikipedia.org/wiki/Entity_component_system" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/Entity_component_system&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Why this abstract is important - because basically all, even most complex systems, will go down to this simple concept, we divide data as much as possible and as it is needed (flatten it mostly), then access / query only what we need. If access is restricted, then we will not being able to get it, while we will be able to get other data without a risk of exposure irrelevant pieces.&lt;/p&gt;

&lt;p&gt;In other abstraction ECS can be considered as Database kind (because structurally it may have extreme similarities (see Entt (&lt;a href="https://github.com/skypjack/entt" rel="noopener noreferrer"&gt;https://github.com/skypjack/entt&lt;/a&gt;), Bevy (&lt;a href="https://bevy.org" rel="noopener noreferrer"&gt;https://bevy.org&lt;/a&gt;), Flecs (&lt;a href="https://github.com/SanderMertens/flecs" rel="noopener noreferrer"&gt;https://github.com/SanderMertens/flecs&lt;/a&gt;), ecsly (&lt;a href="https://github.com/Arenukvern/ecsly" rel="noopener noreferrer"&gt;https://github.com/Arenukvern/ecsly&lt;/a&gt;) etc.. ). Curiously, the most sophisticiated systems like book libraries would use exact same behaviour (because historically, these manual or half-automated systems were adopted for fast access, restrictions and formalities to keep some data secure, some data easy to access, and some data easy to modify) - the same goal we currently have with any digital system in program - doesn't matter where - in program memory - CPU, in cloud organizing servers or programs into clusters, in vector databases, in vectorless databases (when we orginize documents by library/book principles), in graph and relative and no sql databases, even when we making simple program or new building (architecture), new park (social and ecology wellbeing) or coffee/cacaoshop (social, cultural and food interaction), and even logistics &amp;amp; industries (material handling, distribution, production) - basically we do walking around the same problem again and again - with similar solutions but under different names / titles and different implementations in real or virtual life.&lt;/p&gt;

&lt;p&gt;The abstraction is what would be layed down as a core. The next things would be access points in the kinds of protocols (MCP, CLI, API (REST, GraphQL, protobuf etc..)), interfaces (UI, A2UI, etc..), or even programs such as text editors and other utilities. In other words, it is best to expect to have more access points per one stable core abstraction, rather then more core abstractions and one access point.&lt;/p&gt;

&lt;p&gt;I.e. it could be represented as kinda pipeline:&lt;/p&gt;

&lt;p&gt;Sources (Storages) &amp;lt;-&amp;gt; Core Abstraction &amp;lt;-&amp;gt; Access Points&lt;/p&gt;

&lt;p&gt;i.e. the data flow may be visible as Many &amp;lt;-&amp;gt; One &amp;lt;-&amp;gt; Many relation.&lt;/p&gt;

&lt;p&gt;In the same time it is important to note, that while we can have one Core Abstraction, this abstraction can have several internal dimensions, to be represented or implemented or viewed or projected as with different purposes.&lt;/p&gt;

&lt;p&gt;At the time of writing, the more and more access points are becoming new normal: Agent Skills, Workflows, declarative and generative systems (in format of chat bots), etc..&lt;/p&gt;

&lt;h3&gt;
  
  
  Knoweledge Stewardship
&lt;/h3&gt;

&lt;p&gt;Who view entire Knowledge as system and able to check its health, predict what is needed, when and what problems it has and guide / curate its developement?&lt;/p&gt;

&lt;p&gt;At least one Knowledge User (but better be mesh network of users, including AI Agents) which has certain domain knowledge and ability to see it through to request, develop and maintain certain tools, techniques, AI.&lt;/p&gt;

&lt;p&gt;For Civic Engineers - it would be Environmental Stewardship, &lt;a href="https://www.asce.org/advocacy/priority-issues/environmental-stewardship" rel="noopener noreferrer"&gt;https://www.asce.org/advocacy/priority-issues/environmental-stewardship&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;For Software Engineers (i.e. software / program / monorepo) - it can be expressed as Engineering Stewardship, &lt;a href="https://docs.page/arenukvern/skill_steward/NORTH_STAR" rel="noopener noreferrer"&gt;https://docs.page/arenukvern/skill_steward/NORTH_STAR&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For Product Designers it would be Product Stewardship or Ethical Design, Sustainable Product Design (Industrial Design) &lt;/p&gt;

&lt;p&gt;In other words, the knowledge stewardship should be shared by those who can not only access it but for everyone to use, modify and give feedaback for it, its tools and its ecosystem (that's also one of the reason why while we can design many access points, but it should be one abstraction core, so the principles and tools could be abstracted, adapted, and trafferrable from domain to domain, from one business process to other, from human to agent and vice versa).&lt;/p&gt;

&lt;h2&gt;
  
  
  What's after
&lt;/h2&gt;

&lt;p&gt;At the time of writing, the hereabove information should cover at least basics, enough to use for small solo or several people company, and should be clear for understanding for both humans and AI Agents as well.&lt;/p&gt;

&lt;p&gt;This is definately is not the endline, because the topic is huge, and I feel there would be a lot of debats, best practices developed or rejected around managing complex knowledge systems in future.&lt;/p&gt;

&lt;p&gt;I hope to modify and improve this document from time to time, - through new parts, or just modifying it at the source.&lt;/p&gt;

&lt;p&gt;Thank you for your time.&lt;/p&gt;

&lt;p&gt;Please share your thoughts in comments:) it really helps the algorithms give this article to others to read, and it would be great support from you:)&lt;/p&gt;

&lt;p&gt;Have a great day!&lt;/p&gt;

&lt;p&gt;Best,&lt;br&gt;
Anton&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Dev Architecture Series&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://dev.to/arenukvern/flutter-app-ai-centric-architecture-for-small-startups-intro-notes-jl2"&gt;Part 1 — Intro Notes&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dev.to/arenukvern/flutter-app-ai-centric-architecture-for-small-startups-part-2-stage-1-2-5265"&gt;Part 2 — Stage 1 and 2&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dev.to/arenukvern/flutter-app-ai-centric-architecture-for-small-startups-part-3-stages-3-5-4jd9"&gt;Part 3 — Stage 3,4,5 and Conclusion&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dev.to/arenukvern/reimagine-libraries-management-as-apps-using-agentic-executable-framework-ami"&gt;Part 4 — Libraries as Agentic Executables&lt;/a&gt;&lt;br&gt;
Part 5 — Maintaining Libraries with AI Agents (planned)&lt;br&gt;
Part 6 — Building Foundation with Open Source in mind (planned)&lt;br&gt;
Part 7 — AI Project Bootstrapping (planned)&lt;br&gt;
Part 8 — Storage Layer as Reliability Foundation (planned)&lt;br&gt;
Part 9 — How to build for different Stores? (planned)&lt;br&gt;
Part 10 — Dev Ethics as Dev Cornerstone (Decision Making) (planned)&lt;br&gt;
&lt;a href="https://dev.to/arenukvern/fundamentals-of-knowledge-management-in-software-development-25fm"&gt;Part 11 — Fundamentals of Knowledge Management in Software Development - You are here:)&lt;/a&gt;&lt;br&gt;
Part 12 — Building Tests with AI Agents (planned)&lt;/p&gt;

</description>
      <category>ai</category>
      <category>documentation</category>
      <category>systemdesign</category>
      <category>architecture</category>
    </item>
    <item>
      <title>habit of small talks in the time of AI</title>
      <dc:creator>Anton Malofeev</dc:creator>
      <pubDate>Wed, 08 Jul 2026 12:09:22 +0000</pubDate>
      <link>https://dev.to/arenukvern/habit-of-small-talks-in-the-time-of-ai-29kb</link>
      <guid>https://dev.to/arenukvern/habit-of-small-talks-in-the-time-of-ai-29kb</guid>
      <description>&lt;p&gt;my old post - decided to wrap it all together because I saw the more and more importance in such habits:&lt;/p&gt;

&lt;p&gt;please see my ethical principles here - &lt;a href="https://dev.to/arenukvern/my-principles-at-work-credo-182c"&gt;https://dev.to/arenukvern/my-principles-at-work-credo-182c&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and why Ethics can be a bridge to work with AI - &lt;a href="https://dev.to/arenukvern/small-thought-developer-ethics-may-be-a-bridge-to-work-with-ai-tools-3mha"&gt;https://dev.to/arenukvern/small-thought-developer-ethics-may-be-a-bridge-to-work-with-ai-tools-3mha&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Today, I realized another important aspect of AI adoption: the ability to share and discuss things within the team and with those around you—what works, what doesn't, what genuinely helps, and what can lead you down a rabbit hole.&lt;/p&gt;

&lt;p&gt;And while it sounds simple, I’ve noticed that even in small teams, this is a massive blind spot. These conversations require a certain level of trust between people, open communication not just about work, but also a curiosity to talk about things outside of work;&lt;br&gt;
the ability and willingness to share failures and successes (without feeling like someone will "steal" a brilliant idea and become more productive at work);&lt;/p&gt;

&lt;p&gt;the desire to learn (constantly) while not feeling "unsafe or guilty" just because someone else suddenly came up with or implemented a cool idea, while you feel like you're "quietly and quickly falling behind”;&lt;/p&gt;

&lt;p&gt;the ability to admit when ideas don't work, throw them away, learn from them, share solutions, and write them down (!very important), even if they were mistakes;&lt;/p&gt;

&lt;p&gt;discussing psychological dilemmas and the ethics of implementation—not just from the perspective of how end users utilize the technology, but how it is applied in everyday routines;&lt;/p&gt;

&lt;p&gt;and most importantly, these conversations take time and a certain habit of small talk. On one hand, they seem like a waste of time, something that could be replaced by a million other tasks, but on the other hand, I think they create a kind of ethical foundation that helps teams navigate difficult and exciting moments and move forward with optimism.&lt;/p&gt;

&lt;p&gt;disclaimer:&lt;br&gt;
the post is written manually, translated by Gemini&lt;/p&gt;

</description>
      <category>ai</category>
      <category>ethics</category>
      <category>productivity</category>
    </item>
    <item>
      <title>ecsly - pure dart ecs library / prerelease</title>
      <dc:creator>Anton Malofeev</dc:creator>
      <pubDate>Fri, 19 Jun 2026 11:23:58 +0000</pubDate>
      <link>https://dev.to/arenukvern/ecsly-pure-dart-ecs-library-prerelease-10m5</link>
      <guid>https://dev.to/arenukvern/ecsly-pure-dart-ecs-library-prerelease-10m5</guid>
      <description>&lt;p&gt;I've decided to publish ecsly - small but highly performant ecs written in dart which I started developing to solve the simulation problem while developing a games in flutter and ended up building game engine xD&lt;/p&gt;

&lt;p&gt;currently has no public repository, and in pre-release state - contains no graphics, no flutter, almost no dependencies - so it can be used in flutter, jasper - basically in any dart environment.. &lt;/p&gt;

&lt;p&gt;I'm not sure that I've got benchmarks correct (added file to library), but hopefully it is true - I've tried to push dart to limits - use SIMD where it is possible, reduce any GC, etc..&lt;/p&gt;

&lt;p&gt;I didn’t published entire engine - only most important part of it, which in my opinion has stabilized most.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbhggvt6j1xtkc96fvccn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbhggvt6j1xtkc96fvccn.png" alt=" " width="679" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tiny example will look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="s"&gt;'package:ecsly/ecsly.dart'&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;/// Tiny object component for the pub.dev example entry point.&lt;/span&gt;
&lt;span class="c1"&gt;///&lt;/span&gt;
&lt;span class="c1"&gt;/// `ecsly` also supports packed typed-data columns for hotter loops, but an&lt;/span&gt;
&lt;span class="c1"&gt;/// object component keeps the first example intentionally small.&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;CounterComponent&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="n"&gt;Component&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;CounterComponent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;world&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;World&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="n"&gt;world&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;components&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;registerObjectComponent&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;CounterComponent&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;

  &lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;entity&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;world&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;reserveEmptyEntity&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;entity&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="n"&gt;world&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;spawnBundle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;entity&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ComponentBundle&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;fromLists&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;CounterComponent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)]));&lt;/span&gt;
  &lt;span class="n"&gt;world&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;flush&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;counter&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;world&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;queryMut&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;CounterComponent&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;())&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;counter&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;value&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'counter=&lt;/span&gt;&lt;span class="si"&gt;${counter.value}&lt;/span&gt;&lt;span class="s"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With SIMD the api looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="s"&gt;'dart:typed_data'&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="s"&gt;'package:ecsly/ecsly.dart'&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Velocity4Component&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="n"&gt;Component&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="n"&gt;Velocity4Component&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;extension&lt;/span&gt; &lt;span class="n"&gt;type&lt;/span&gt; &lt;span class="n"&gt;Velocity4&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;_&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kd"&gt;late&lt;/span&gt; &lt;span class="n"&gt;FloatColumn&lt;/span&gt; &lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="kd"&gt;get&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getValueUnsafe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="kd"&gt;get&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getValueUnsafe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;set&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;set&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Velocity4ColumnFactory&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="n"&gt;ColumnFactory&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nd"&gt;@override&lt;/span&gt;
  &lt;span class="n"&gt;DataColumn&lt;/span&gt; &lt;span class="n"&gt;createColumn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;ComponentId&lt;/span&gt; &lt;span class="n"&gt;componentId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;initialCapacity&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;FloatColumn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;stride:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;initialCapacity:&lt;/span&gt; &lt;span class="n"&gt;initialCapacity&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Velocity4FacadeFactory&lt;/span&gt;
    &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="n"&gt;ComponentFacadeFactory&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Velocity4&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nd"&gt;@override&lt;/span&gt;
  &lt;span class="n"&gt;Velocity4&lt;/span&gt; &lt;span class="n"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;Velocity4&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;_&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="nd"&gt;@override&lt;/span&gt;
  &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="n"&gt;initialize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;covariant&lt;/span&gt; &lt;span class="n"&gt;FloatColumn&lt;/span&gt; &lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;Velocity4&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;column&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;world&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;World&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;world&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;components&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;registerExtension&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Velocity4Component&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Velocity4&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;(&lt;/span&gt;
  &lt;span class="nl"&gt;columnFactory:&lt;/span&gt; &lt;span class="n"&gt;Velocity4ColumnFactory&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
  &lt;span class="nl"&gt;facadeFactory:&lt;/span&gt; &lt;span class="n"&gt;Velocity4FacadeFactory&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;entity&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;world&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;reserveEmptyEntity&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;entity&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;world&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;spawnBundle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="n"&gt;entity&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;ComponentBundle&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;fromExtensionList&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Velocity4Component&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Velocity4&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="p"&gt;]),&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;world&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;flush&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;velocity&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;world&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;queryExt&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Velocity4Component&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Velocity4&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;())&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;velocity&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="n"&gt;velocity&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;simd&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Velocity4&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;column&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;simdView&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;simd&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;gravity&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Float32x4&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;9.8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;Velocity4&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;column&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;simd&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;simd&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;gravity&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I didn't changed the api for almost half a year so decided to try publish:)&lt;/p&gt;

&lt;p&gt;More detailed explanation will try to publish as part of architectural series - in short I believe that ECS is best and most scalable architecture for high performance applications and games. I designed it to be used alongside with Flutter, Jaspr and any other dart framework or to be used separately if needed.&lt;/p&gt;

&lt;p&gt;I'm sure that it is possible to do more - more convenient DX, more optimizations &lt;/p&gt;

&lt;p&gt;will be glad for any feedback:)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pub.dev/packages/ecsly" rel="noopener noreferrer"&gt;https://pub.dev/packages/ecsly&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;p.s.: heavily inspired by bevy and entt frameworks and many other libraries&lt;br&gt;
p.p.s: made with AI  (I'v started from scratch, so every concept was new to me - it would be impossible to write and understand it in such short time for me:)&lt;/p&gt;

</description>
      <category>ecs</category>
      <category>dart</category>
      <category>performance</category>
      <category>flutter</category>
    </item>
    <item>
      <title>release: Skill Steward</title>
      <dc:creator>Anton Malofeev</dc:creator>
      <pubDate>Wed, 17 Jun 2026 12:38:52 +0000</pubDate>
      <link>https://dev.to/arenukvern/release-skill-steward-4pmd</link>
      <guid>https://dev.to/arenukvern/release-skill-steward-4pmd</guid>
      <description>&lt;p&gt;I’ve finally finished setting up a new micro-repository for skills, which got name Skill Steward, because these skills are based on patterns, rules, articles and concepts that  I use every day to maintain various projects, regardless of the tech stack - from flutter applications, react / vue websites, dart / js libraries,  apps and mini games, including my experimental game engine (based on wgpu(rust), flutter + custom ecs (dart)).&lt;/p&gt;

&lt;p&gt;these skills  cover mostly answer to question: "what I need to setup to provide  tooling adapted for AI Agents and humans to deterministically and iteratively develop  {app/website/library/tool etc..}”&lt;/p&gt;

&lt;p&gt;this isn't a final release, as I plan to keep improving it through active use.&lt;/p&gt;

&lt;p&gt;I hope this might be interesting or useful to someone; I’d love to hear your feedback! :)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Arenukvern/skill_steward" rel="noopener noreferrer"&gt;https://github.com/Arenukvern/skill_steward&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;thread with all latest updates about the project &lt;a href="https://x.com/antmalofeev/status/2061159936910909498?s=20" rel="noopener noreferrer"&gt;https://x.com/antmalofeev/status/2061159936910909498?s=20&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;p.s.: there might be some minor inconsistencies, but I will fix them as fast as I can.&lt;/p&gt;

&lt;p&gt;image and color system  generated by Grok Build CLI.&lt;/p&gt;

</description>
      <category>infrastructure</category>
      <category>ai</category>
      <category>programming</category>
      <category>agentskills</category>
    </item>
    <item>
      <title>epic fail of last week</title>
      <dc:creator>Anton Malofeev</dc:creator>
      <pubDate>Tue, 09 Jun 2026 16:55:56 +0000</pubDate>
      <link>https://dev.to/arenukvern/epic-fail-of-last-week-3pcg</link>
      <guid>https://dev.to/arenukvern/epic-fail-of-last-week-3pcg</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv2udw7wt1o12hb3kakaz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv2udw7wt1o12hb3kakaz.png" alt=" " width="760" height="1074"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;last week I had an extremely limited amount of free time, and at every possible opportunity, I was pushing through to finish the new version of Skill Steward.&lt;/p&gt;

&lt;p&gt;why am I pushing so hard in this specific direction instead of working on something else?&lt;/p&gt;

&lt;p&gt;I hit a scaling bottleneck for all projects. Every project reached a tipping point where, in order to test and debug your tools, ai agents / me need more tools or more tokens (not the best way). Ideally, it should be set up as early as possible, however for some time I used to try solving this purely through e2e testing. the scaling problem and software ecology explained in the Google video:  &lt;a href="https://www.youtube.com/watch?v=2n41YjR5QfU&amp;amp;vl=en" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=2n41YjR5QfU&amp;amp;vl=en&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and because all my projects are kinda linked (intentionally, this is my way of developing personal projects:)):&lt;/p&gt;

&lt;p&gt;the game engine depends on the quality of mcp_flutter and ~30 other packages. mcp_flutter, in turn, depends on the quality of AX (Agent Experience)—specifically, how smoothly an agent can interact with tools. This demands yet another layer of support: tools built on top of tools.&lt;/p&gt;

&lt;p&gt;Shippik and the research board for it are small, but they also still need proper testing and development. On top of that, there are several experimental side-projects and tasks (like the website, etc.).&lt;/p&gt;

&lt;p&gt;and to top it all off, my main job has entered the picture and is taking up 110% of my time right now—and it requires a governance layer of its own.&lt;/p&gt;

&lt;p&gt;to resolve all of this - I've extracted all architecture patterns into Steward—and a new type of generative architecture I am building so that the exact same practice can be applied across everything simultaneously.&lt;/p&gt;

&lt;p&gt;As the AI agent and I defined it:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Engineering Stewardship is an old-new idea: step back from only managing an AI agent as a program, or only developing product features, and tend the software ecology around the work. That ecology includes charter, decisions, docs, skills, specs, scripts, programming languages, existing tools, debugging loops, validation gates, release processes, handoffs, and the harnesses that make a repository legible to humans and agents.— Full document in a separate branch: &lt;a href="https://github.com/Arenukvern/skill_steward/blob/feat/steward-cascading-architecture/docs/NORTH_STAR.mdx" rel="noopener noreferrer"&gt;https://github.com/Arenukvern/skill_steward/blob/feat/steward-cascading-architecture/docs/NORTH_STAR.mdx&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;so, where is the epic fail?&lt;/p&gt;

&lt;p&gt;last week, I started testing a new stage of adapting Engineering Stewardship—which involves continuous improvement through tool creation (aka dogfooding aka PDSA/PDCA).&lt;/p&gt;

&lt;p&gt;I chose flutter_mcp_toolkit as the experimental repository, where I had already been prepping the next version (v4) with an even more decoupled, granular architecture (more on that later).&lt;br&gt;
as a result: I managed to successfully start basic dogfooding (gathering feedback via PDSA cycles), however, because I needed to release some packages, I decided to add a GitHub workflow... which accidentally ended up merging straight into the stable branch. OoO&lt;/p&gt;

&lt;p&gt;takeaways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;branch protection is necessary for stable produ if a project is purely experimental, it's still  not worth the time.&lt;/li&gt;
&lt;li&gt;steward concept works.&lt;/li&gt;
&lt;li&gt;flutter_mcp_toolkit is now in an unstable, v4 pre-release state.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;disclaimer: written by hand, translated by AI&lt;/p&gt;

</description>
      <category>devlog</category>
      <category>engineering</category>
      <category>stewardship</category>
      <category>ai</category>
    </item>
    <item>
      <title>observations about models / 2026, may</title>
      <dc:creator>Anton Malofeev</dc:creator>
      <pubDate>Sat, 23 May 2026 01:04:10 +0000</pubDate>
      <link>https://dev.to/arenukvern/observations-about-models-2026-may-ah7</link>
      <guid>https://dev.to/arenukvern/observations-about-models-2026-may-ah7</guid>
      <description>&lt;p&gt;decided to share my recent observations from working with AI coding agents / LLMs everyday (subjective option):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;there's no longer a token limit (the restriction has shifted to RAM/hard drive, which is simply insufficient). Codex, Cursor, and other agentic harness builds / CLI tools - have solved the problem of context and LLMs in the loop, each in their own way, but roughly similar. Zed gave ability / glips how to work in realtime for humans, but git systems unfortunately doesn’t support realtime collaborative editing / coding (imho). &lt;/li&gt;
&lt;li&gt;the next important limitation is the chat direction vector, which is set in the first sent message.&lt;/li&gt;
&lt;li&gt;all frontier models are roughly similar, but with their own features.&lt;/li&gt;
&lt;li&gt;everyone's agentic harness is different, with the best being Codex (computer use (as a partner - full computer control, automation, + skills + orchestration) and Cursor for augmentation (multitasking &amp;amp; almost live editing &amp;amp; need for speed + orchestration). Claude code / design - feels like experienced but unpredictable person - ideal for research / discover new ideas and products / design, but requires constant monitoring.&lt;/li&gt;
&lt;li&gt;agentic harness is the current bottleneck, because it needs to be assembled manually. Ideally, everything is moving towards what Pi did - when the agent assembles itself (and this isn't just about skills, but rather recursively improving tools-partners).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5slcqoj5644qlk7hu4sn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5slcqoj5644qlk7hu4sn.png" alt=" " width="784" height="1168"&gt;&lt;/a&gt;&lt;br&gt;
_image for gradual transformation from drawing to realistic _&lt;/p&gt;

&lt;p&gt;in my opinion, there's a sense that a new product and a new operating system will emerge within which the next round of development will take place (as seen with mobile phones - Blackberry / Symbian -&amp;gt; iOS / Android (I don't include Windows/Linux - there wasn't mass adoption) -&amp;gt; Aluminium OS / Google Books? with local models?). &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frkm68o7cnengl50359xn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frkm68o7cnengl50359xn.png" alt=" " width="784" height="1168"&gt;&lt;/a&gt;&lt;br&gt;
_image for gradual transformation from drawing to realistic _&lt;/p&gt;

&lt;p&gt;I think mass adoption will happen precisely when locally run models can do the same as remote models (as it was shown in Google IO with audio glasses) - because why need a browser and apps in OS in which developers needs to embed an agent, if you can install an agent (harness + llm) instead of an app and a browser, and it will already draw the interface and show / help manage the data accordingly to provided interface guidelines, design systems and user flows (it feels like design - in Excel VBA we’ve designed boxes with strict sizes, but since web we started defining constraints instead of fixed - so it may happen with how agents represent or manage information - we will define constraints (design / data / tool systems) - agents will adapt it for user)&lt;/p&gt;

&lt;p&gt;It's also very interesting what will be possible in terms of creative content - games, assets, etc. Because AI is not just generation - the more I worked with models, the more possible to do, it feels just like 3D/ digitalization moment  - instead of drawing everything, we can define 3D models and then do. iterations with it&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv0nplomgl4g0ygemlb4h.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv0nplomgl4g0ygemlb4h.jpg" alt=" " width="784" height="1168"&gt;&lt;/a&gt;&lt;br&gt;
_image for gradual transformation from drawing to realistic _&lt;/p&gt;

&lt;p&gt;disclaimer: &lt;br&gt;
image cover is generated by ChatGPT image 2 in Leonardo &lt;br&gt;
images in text - grok imagine&lt;br&gt;
text is autotranslated from my manual writing and rewritten manually again with many more details:)&lt;/p&gt;

</description>
      <category>ai</category>
      <category>software</category>
      <category>agents</category>
      <category>observation</category>
    </item>
    <item>
      <title>Flutter MCP Toolkit v3</title>
      <dc:creator>Anton Malofeev</dc:creator>
      <pubDate>Thu, 21 May 2026 14:29:05 +0000</pubDate>
      <link>https://dev.to/arenukvern/flutter-mcp-toolkit-v3-b27</link>
      <guid>https://dev.to/arenukvern/flutter-mcp-toolkit-v3-b27</guid>
      <description>&lt;p&gt;After a couple of months I finally released v3 of Flutter MCP Toolkit (which complimentary for official Dart / Flutter MCP server) + CLI tools to work.&lt;/p&gt;

&lt;p&gt;With new release my goal was to support  semantic understanding of layout and give ai agents tools to work with flutter apps and games as human would do (the same experience as playwright has with web): scroll, tap, get widgets etc.. - everything adapted for complete work via agent side by side.&lt;/p&gt;

&lt;p&gt;All tools mostly baked by client side tools (this way agent / developer can control whats written, add new tools and resources - the same mechanism from v2 (made with dynamic registry - &lt;a href="https://docs.page/arenukvern/mcp_flutter/guides/creating_dynamic_tools" rel="noopener noreferrer"&gt;here is a link to docs &lt;/a&gt;)), some tools are not safe to use with production data (the same way as playwright do with js execute)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;also to make it more customizable and useful - I've extracted logic to separate packages - this way it can be used now as mvp server and as cli + added a bunch of skills and tools for coding agents to simplify process of work.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also docs now has new website baked by docs.page - &lt;a href="https://docs.page/arenukvern/mcp_flutter" rel="noopener noreferrer"&gt;https://docs.page/arenukvern/mcp_flutter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since there a lot of changes, there can be challenges and bugs, but I hopefully will fix everything as fast as it would be possible.&lt;/p&gt;

&lt;p&gt;I will try to add more resources and tutorials soon during month:)&lt;/p&gt;

&lt;p&gt;Huge thank you for contributors who inspired to make more (like web support) or contributed to the project in previous version!&lt;/p&gt;

&lt;p&gt;Will be glad for any feedback and have a great day!:)&lt;/p&gt;

&lt;p&gt;The video is an experiment made with hyperframes and kokoro onnyx as tts :) &lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/Arenukvern/mcp_flutter" rel="noopener noreferrer"&gt;https://github.com/Arenukvern/mcp_flutter&lt;/a&gt;&lt;br&gt;
website with docs for AI Agents and Humans: &lt;a href="https://docs.page/arenukvern/mcp_flutter" rel="noopener noreferrer"&gt;https://docs.page/arenukvern/mcp_flutter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>mcp</category>
      <category>cli</category>
      <category>ai</category>
    </item>
    <item>
      <title>Thoughts about tooling | progress on semantic intents</title>
      <dc:creator>Anton Malofeev</dc:creator>
      <pubDate>Tue, 17 Feb 2026 15:54:21 +0000</pubDate>
      <link>https://dev.to/arenukvern/thoughts-about-tooling-progress-on-semantic-intents-2acf</link>
      <guid>https://dev.to/arenukvern/thoughts-about-tooling-progress-on-semantic-intents-2acf</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Ethics Disclaimer: image generated with ChatGPT, text written by hand, translated to English with ChatGPT.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;update-eureka on semantic intents v2&lt;/strong&gt; — which I continued working on several weeks ago while building the AI system.&lt;/p&gt;

&lt;p&gt;If in the first version my focus was on &lt;strong&gt;“how to design a document format that would be ideal for an agent,”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;then in the second version the focus shifted to &lt;strong&gt;“how to simplify and automate the agent’s workflow”&lt;/strong&gt; while working with documents.&lt;/p&gt;

&lt;p&gt;In simple terms, I started creating tools (scripts, Python, Bash) specifically to automate the agent’s work — for example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;validating task execution&lt;/li&gt;
&lt;li&gt;automatically gathering context&lt;/li&gt;
&lt;li&gt;analyzing code&lt;/li&gt;
&lt;li&gt;analyzing business logic&lt;/li&gt;
&lt;li&gt;etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As a result, the role of the agent has changed.&lt;/p&gt;

&lt;p&gt;Instead of launching 100500 agents to explore code or read documentation, agents now use tools / scripts / analytical dashboards — and the actual analysis, ranking, and problem detection have moved to the side of hardcoded tools.&lt;/p&gt;

&lt;p&gt;In essence, if we use an analogy:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Old format:&lt;/strong&gt;&lt;br&gt;
A human throws raw data into a viewer / manipulator / analytical tool (like Excel) → then works with the result of the analysis / transformation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;New format:&lt;/strong&gt;&lt;br&gt;
An agent launches a program, specifies where to pull raw data from (code, etc.), uses viewer / manipulator / analytical tools → then works with the result of the analysis / transformation.&lt;/p&gt;

&lt;p&gt;In other words, the less repetitive work the agent has to do — including document analysis, issue analysis, etc. — the better.&lt;/p&gt;

&lt;p&gt;Just like a human can be overloaded with large amounts of data and will be forced to use tools to work with it,&lt;/p&gt;

&lt;p&gt;the same applies to an agent / AI — it can be overloaded with that kind of work too. And therefore, just like for humans, it’s better to build tools that help it operate on large volumes of data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;original idea: &lt;a href="https://github.com/fluent-meaning-symbiotic/sip_whitepaper" rel="noopener noreferrer"&gt;https://github.com/fluent-meaning-symbiotic/sip_whitepaper&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Agentic Executables - partial implementation of the idea: &lt;a href="https://github.com/fluent-meaning-symbiotic/agentic_executables" rel="noopener noreferrer"&gt;https://github.com/fluent-meaning-symbiotic/agentic_executables&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>contextengineering</category>
      <category>vibecoding</category>
    </item>
    <item>
      <title>code is a "translation" | after 1.5 years of "vibe-coding" adventures thoughts</title>
      <dc:creator>Anton Malofeev</dc:creator>
      <pubDate>Sun, 25 Jan 2026 18:01:45 +0000</pubDate>
      <link>https://dev.to/arenukvern/code-is-a-translation-after-15-years-of-vibe-coding-adventures-thoughts-2hbn</link>
      <guid>https://dev.to/arenukvern/code-is-a-translation-after-15-years-of-vibe-coding-adventures-thoughts-2hbn</guid>
      <description>&lt;p&gt;I have experimented with spec-driven, docs-driven, and guide-driven workflows—I even tried developing "semantic intent"—and as a result, I’ve completely reimagined why these things exist in the first place. &lt;/p&gt;

&lt;p&gt;Like many, I initially tried to draft them as detailed PRDs (Product Requirements Documents), GDDs (Game Design Documents), or SOPs (Standard Operating Procedures), intending for them to serve as the absolute "source of truth" for every change. &lt;/p&gt;

&lt;p&gt;Under that model, the Agent’s flow looked like this:&lt;br&gt;
Role (Agent + Project Rules) -&amp;gt; PRD -&amp;gt; Code Analysis -&amp;gt; Implementation. &lt;/p&gt;

&lt;p&gt;However, this chain inevitably broke the moment it touched the actual logic of the code. &lt;/p&gt;

&lt;p&gt;That led to my first "Eureka" moment: The ideal PRD is working code. &lt;/p&gt;

&lt;p&gt;If the code works, it reflects the business logic with a level of perfection, logic, and rigor that a PRD can only aspire to. &lt;/p&gt;

&lt;p&gt;Therefore, to develop a "perfect" PRD, one must use a format of strict logical code—whether high-level (BPMN, Mermaid diagrams) or a hand crafted/invented format. &lt;/p&gt;

&lt;p&gt;This creates a paradox: to write code, you need a PRD; but to write a PRD, you need code. &lt;/p&gt;

&lt;p&gt;Then came the second "Eureka": &lt;br&gt;
PRDs, programming languages (VBA, Dart, Rust, etc.), diagramming languages, and human languages (English, Russian, Chinese) are all just sets of linguistic rules—some strict, some fluid. &lt;/p&gt;

&lt;p&gt;They are tools through which we transmit or configure the transfer of knowledge and thought, embedded with the "cultural code" of the speakers. In other words, they are all just different forms of interpretation. &lt;/p&gt;

&lt;p&gt;Think of it through these associations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Film = an interpretation of a book/script.&lt;/li&gt;
&lt;li&gt;Audio = an interpretation of emotion.&lt;/li&gt;
&lt;li&gt;Excel sheet = an interpretation of a data group.&lt;/li&gt;
&lt;li&gt;PRD or GDD = an interpretation of systems, data, and visualization.&lt;/li&gt;
&lt;li&gt;Design = a visual interpretation of logic and data.&lt;/li&gt;
&lt;li&gt;Code = an interpretation of logic and data. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Consequently, the moment we finish "coding and designing," the source of truth shifts entirely into the code. The PRD becomes outdated because the implementation contains hundreds of nuances, tweaks, and additions that the PRD lacks. &lt;/p&gt;

&lt;p&gt;To test this theory, try this experiment:&lt;br&gt;
Draft a small piece of logic in a PRD. Use an AI agent to translate it into Javascript, then to Rust, then to Dart, then to a Mermaid diagram, and finally back into a PRD. &lt;/p&gt;

&lt;p&gt;What we can conclude from this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The PRD becomes redundant; it can be deleted.&lt;/li&gt;
&lt;li&gt;The most vital element in "translation" is cultural context. Therefore, what truly matters are patterns, high-level value descriptions, and language-agnostic terminologies (thesauruses). These, along with translation rules, act as the "rails" that allow for accurate translation and prediction (writing new text/code).&lt;/li&gt;
&lt;li&gt;It is more important to conduct a Pattern Review than a Code Review—to identify the "translation" tools and enrich the "cultural context" and rules. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ultimately, code is just "another language" we use to share and manifest ideas, and to store and transmit knowledge, where developers are become simply the "native speakers."&lt;/p&gt;

&lt;p&gt;Thank you so much for taking time to read:) Share what do you think in comments!/)&lt;/p&gt;

&lt;p&gt;Anton&lt;/p&gt;

&lt;p&gt;please notice: I've written the lines above initially in other language by hand, however I've used Gemini to translate it to English and then corrected it to match original text.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>vibecoding</category>
      <category>ai</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
