Skip to content

v0.14.0: every relevant domain, and a triage that can compare them

Choose a tag to compare

@rodlunt rodlunt released this 15 Aug 10:39
· 81 commits to main since this release
e7c785e

One change to interrogate (#233), and it is the difference between a sampler and a triage.

The three-domain cap was arbitrary, and it compared things that were never comparable

v0.13.0 picked up to three relevant domains and asked from those. Two problems, and the second is
the real one.

A cap is a guess about the work. Some work genuinely touches twelve domains and some touches two,
and trimming to a number to keep the cost tidy drops questions on the floor without saying so.
interrogate now judges every one of the sixteen triggers against the work and runs every domain
that fires, with no cap. It prints the split first, Relevant: and Not relevant: with a reason
on each, says how many sub-agents that means, and asks once before spending anything. That is the
only point where the cost is knowable in advance, so it is the only fair place to ask.

The deeper problem was ranking. Each domain ranked its own questions and the parent took the top
of each, which silently assumes every domain's best question is worth the same. It is not. One
domain's third-best question can matter far more than another's first, and nothing in either
ranking says so.

Every derived question now carries reversibility (irreversible-once-shipped,
expensive-to-change, cheap-to-change) and blast_radius, naming in a few words what else has
to move if the answer turns out wrong. These exist so questions can be compared across domains at
all. The parent pools every question from every sub-agent and triages the three most impactful in
the entire set: everything irreversible first, widest blast radius first inside that, then
expensive-to-change. Three questions from one domain is the correct answer when that is where the
irreversible decisions are, and forcing a tidy spread buries a real question to make room for a
cosmetic one.

Saying how much was held back

The skill now states the arithmetic before the first question: how many questions came back, from
how many domains, and that three are being put now with the rest held. Three questions presented
without that sentence read as the whole interrogation, and the user calibrates their trust
accordingly.

The deep dive is then offered with the real number attached, and anything declined is recorded as
NOT ASKED and counted. Bail-out is unconditional: on stop, the record is written immediately, the
session is marked ended early, and the unasked count is given. A short session must never read as
a complete one.

Still BETA, and more so than v0.13.0 was

The cross-domain triage described above has never been run. Question derivation is proven on three
of sixteen domains; the pooling and ranking that this release is entirely about is new code paths
in a skill file that no full session has ever exercised. A question that reads as a generic quiz
rather than as being about the actual work is a defect to report, not something to work around.


SBOM attached, CycloneDX JSON, runtime dependencies only. It was generated by
tag-version-guard.yml when the tag landed but could not be attached at the time, because this
release did not exist yet.