<p><em>A warm note from the workshop, September 2026</em></p><p>There's a moment, a few months into building a thing, when it stops being a pile of features and starts having an opinion. Félagi has one, and this release is the clearest it has ever said it out loud: your machines are colleagues, and the honest thing to do is count them like colleagues.</p><p>That sounds like a slogan until you watch what it costs to actually mean it. So let me show you, with the things that shipped in 0.90.0.</p><h2>Why: the machines are in the number</h2><p>Most tools bolt AI on. There's the work, and then there's a robot you summon, and the two live in different worlds with a wire between them. The robot's effort shows up in an event log; your team's shows up in the reports.</p><p>Félagi doesn't have that wire, because it doesn't have the second world. Assignee, author, the actor in the audit log — a column that holds a person holds a machine, through the same API, on the same thread. Which means an agent has weekly hours, a success rate, a cost per issue, and a place in the capacity number — right beside the people.</p><p>Everything below is what falls out of that one decision.</p><h2>How: an idle machine is visible capacity</h2><p>Here's the headline of 0.90.0, and my favourite example of the opinion in action.</p><p>Your board has always had a pool of unassigned backlog. Your agents have always had weekly hours. Nobody had ever put the two together — so a machine with a free afternoon sat idle while three small issues nobody had picked up sat in the pool, and the person who could have connected them was looking at neither.</p><p>Now the dashboard does:</p><pre><code class="language-text">  Idle machines
  Freya has 1d free today
    ACME-12  Rotate the signing keys     2h   Hand over
    ACME-31  Drop the legacy webhook     45m  Hand over
</code></pre><p>Idle means three things at once: the runtime is online, the agent has no run in flight, and it has time left in its day — after what it already carries is subtracted. The offers are backlog sized to fit the free time, urgent first, narrowed to the projects that agent has finished work in. Never an epic, never an unsized issue (an unsized issue can't be said to fit anywhere — which is one more reason to size things).</p><p>And the part I'd underline: <strong>it suggests, you click.</strong> One click assigns the issue and queues the run. Whether this particular agent is the right pair of hands for this particular issue is a judgement about the work, and the arithmetic knows nothing about the work. An idle machine is visible idle capacity in a way an idle person never quite is — and surfacing it is useful precisely because it doesn't pretend to make the call for you.</p><h2>How: "when would this land, in each pair of hands?"</h2><p>Because the machines are in the capacity number, Félagi can answer a question no other tracker can. On any issue, open the assignee picker and ask <em>when would this land?</em></p><pre><code class="language-text">  Freya Lund   soonest   nothing in front of it                    8 Sep
  Arne Berg              3 issues in front · 1w 2d                 21 Sep
  Bragi                  nothing in front of it                    8 Sep
  Kari Vold              committed to standing work all week             —
</code></pre><p>It schedules each candidate's real queue — their leave, their standing work, their dependencies — and gives you the date, with the argument beside it. Give it to Arne and it's the 21st; give it to Freya and it's tomorrow. The assignment that decides the date used to be a guess from a dropdown. No other tool can do this, for the dull reason that no other tool has the machines in the number: an agent's queue of one is a queue of one, same as anyone's.</p><h2>How: where the time actually went</h2><p>Every tracker tells you how long work took. Almost none tell you how much of that was <em>work</em> — because almost none keep the status history to answer it. Félagi's Flow report does, and 0.90.0 taught it a third word:</p><pre><code class="language-text">  Lead time 15.5d   Working 47%   Stalled 12%   Waiting 41%
</code></pre><p><strong>Waiting</strong> is time in a queue — somebody else's problem. <strong>Stalled</strong> is the new one, and it comes out of working, not waiting: a started status nobody has touched for days, that claimed work was happening when nothing was. That's the assignee's problem, and it used to be invisible because "in progress, untouched" and "in progress, on fire" looked identical on every screen. Now the board card wears an <code>untouched 6d</code> badge, the standup counts it per person, and Flow reads it apart. <em>Eleven days, of which three were worked</em> is a very different conversation from <em>eleven days</em> — and it's the only one that points anywhere.</p><h2>The quiet part: it refuses to lie to you</h2><p>The thing that's genuinely hard to copy isn't any single feature. It's a posture toward being wrong.</p><ul><li><p><strong>Stalled comes out of working, not waiting</strong>, because the whole point is that the status said work was happening. Filing it under waiting would have been the comfortable lie.</p></li><li><p><strong>The dashboard counted this week's closed issues by </strong><code>updated_at</code> — so an issue finished in March and retitled on Monday counted as closed this week. Fixed to <code>closed_at</code>. That's the third place this release cycle we've pulled out that same trap; it's becoming a signature rather than a coincidence.</p></li><li><p><strong>0.90.0 also added a small, almost impertinent number:</strong> how round your recalled hours are. <em>"80% of recalled entries land on a half-hour; 10% of observed ones do."</em> Memory writes <code>2h</code>; a stopwatch never does. It's a measurement of recall bias your timesheet always contained and nobody ever read out — and it's deliberately descriptive. It tells you how much of a report rests on remembered figures. It does not correct them, because a corrected recollection is a guess with a decimal point.</p></li></ul><p>None of those makes a demo sparkle. All of them are the difference between a number you act on and a number that quietly misleads you. A wrong answer that draws a confident, working screen is worse than the honest blank it replaced.</p><h2>A few more sums nobody was adding up</h2><p>This release found four of them:</p><ul><li><p><strong>What a standing meeting costs, and produced.</strong> <code>Weekly platform sync · 14 held · 21h · 6 action items, 2 done</code>. Forty half-forgotten hours that came to three action items, one done — every part of that was already recorded; nothing added it up.</p></li><li><p><strong>Carried three times is a decision, not a delay.</strong> Past three cycles, the carry count stops describing lateness and starts describing a choice nobody has made. So the cycle page says it plainly: these are not going to happen by being carried again — close them, or make one next.</p></li><li><p><strong>What a finished issue costs</strong> — split person against machine, side by side, not adjusted for the size of the work (because a machine handed the small tasks looks cheap for a reason that has nothing to do with the machine).</p></li></ul><h2>Come build the honest one</h2><p>Félagi is a tracker that employs machines as if they were staff, reports on them as if they were staff, and tells you — in plain words on the page — the ways its own answers have been wrong. It's self-hostable, it's live rather than polled, and it opens its books on itself more readily than most tools open theirs on you.</p><p>If a tool where your people and your machines share one set of columns sounds like the way it should always have worked, we'd love to have you along early. The founding-partners programme is open at <a target="_blank" rel="noopener noreferrer nofollow" href="mailto:felagi@elyracode.com">felagi@elyracode.com</a>.</p><p><em>Bring the work you keep meaning to size.</em></p>