<!-- GENERATED by tools/gen-md-twins.py from changelog.html. The HTML page is authoritative; if this file disagrees with it, this file is stale. -->
# Changelog — OneDroid

> What actually shipped, with dates. OneDroid product and platform changes, most recent first.

Canonical: https://onedroid.ai/changelog

OneDroid

Changelog

# What actually shipped.

We say we build in the open, which is a checkable claim. This is the check.
Most recent first.

2026-10-20

### OneDroid Argus 0.3.74: a check can listen on a message bus, and read the logs an environment already keeps

A chain of steps can now include a `bus` step. Before the chain's first step fires, the
executor subscribes to an AMQP exchange and routing key. Then it judges what arrived (how many
messages, how many carried the run's correlation id, and the first 20 of them) with the same
`body` claims as any other step. An instance can also read an environment's existing
shared Loki: it selects by cluster and namespace, and it parses plain-text log lines at query time
with a declared `log_regex`. The bus step is described in the
scenario-author skill
in the public runner.

The executor now sets its Go memory limit from its container, and it caps load-test results and
log answers held in memory, with an error that says so rather than a short read. A run whose
executor was restarted mid-run is now reported as failed, with the reason, instead of staying open.
`render-k8s` and `argus up` take `--executor-memory`.

The limits: the bus step reads JSON message bodies only and needs an executor at 0.3.74 or later.
An older executor refuses a check that uses it as an unknown step type. A bus subscription binding
every routing key (`#`) is refused. `log_regex` is read only for a shared
Loki, and it is Loki only.

2026-10-20

### The site now leads with what testing costs

Independent testing of AI-built software now costs about what the AI coding costs. In
one measured experiment, Claude
Code built a feature for $1.97 a run testing its own work; with OneDroid Argus as the
independent tester, the coding agent cost $1.01 a run and the tester one session of
about $5.30 for the feature, $1.77 a run over three runs. The home
page and the OneDroid Argus page now open with that. The site no
longer describes things that are not built: the one-line install command and the CI
action are gone from it.

2026-10-19

### OneDroid Argus 0.3.73: a report can leave out everything the system under test said

An author can now ask for a limited report of a run: the verdict, each check's outcome and the
status code or database error code a step got, without the fields that carry what the application
returned. The executor cuts those fields itself before anything leaves your environment. In every
report, the executor now sends only OneDroid Argus's own words when a run or a relayed command
fails, never the application's error text. Load-test errors reach the limited report and the results push only as a kind from a fixed list and a
count; the load tool's own messages stay in the full report, which only a Full-access author can read.

Also in this release: an `mcp` chain step can sign each call with an Ed25519 key that it
names by reference, never by value. A `bash` `## CLEANUP` block, which runs
under `sh -c`, gets a warning when the check is written and a line in the report. A
status claim listing two codes is refused instead of being read as one.

The limits: a limited report is a smaller view of the same run, not a different run. A check that
needs the response body to explain a failure needs a full report.

2026-10-13

### OneDroid Argus 0.3.72: a check can depend on what the environment has, and test an app behind Clerk

A check can declare a precondition, such as "network policies are enforced here". Before the checks
run, the executor probes it in its own namespace with throwaway pods and cleans up afterwards. If
the mechanism is present, the checks run. If it is absent, they end `not_applicable`,
with both observations recorded. If the probe itself fails, they end `errored`, never
`not_applicable`. A run where every check is `not_applicable` never reads as
passed. The results are bound into a new certificate format, v5. Formats v1 to v4 are unchanged,
and an older `argus certificate verify` refuses v5 by name.

For an application behind Clerk, `targets.auth` accepts `type: clerk_session`.
The executor mints a short-lived session for a test user for each run, refreshes it, and revokes it
at the end. The key and the token are never printed, stored or relayed. A production-looking target
or a live key is refused unless the config says so explicitly. An `mcp` chain step now
shows its claims as written, not with a value the application returned filled in.

The limits: an instance that uses preconditions must be re-rendered (`argus render-k8s`)
so its executor may create the probe's pods and policies. Until then an ingress precondition reads
`errored`. The Clerk session is checked per check, not per request, so a single check
that runs longer than the token lives sees 401s. Use a dedicated test user.

2026-10-13

### OneDroid Argus 0.3.71: the money guard can allow a clean-up, a UI drive or a fault, one by one

On an instance marked as handling money, OneDroid Argus refuses every write it cannot read off the
file until the operator lists it. The list now has three more entry kinds: a runnable
`## CLEANUP` block of one form (`sql` or `bash`), a UI drive of one
named spec, and `fault` steps, which `fault_allowed_targets` still bounds.
Each refusal now names the entry that would allow it.

Also fixed: a check the guard refuses no longer runs its clean-up. A check carrying two engine tags
is judged by the engine that actually runs it. A chain `http` step whose response is
over 1 MiB now reads `error` when it has a body claim, instead of being judged on the
first megabyte. A polled step is no longer cut off by the chain's own deadline.

The limits: an executor older than 0.3.71 refuses a config carrying the new entry kinds, by name,
when it loads. An instance set up with `render-k8s` gets no update offer from the control
plane. Move its executor image with `kubectl set image`, as `argus upgrade --help`
says.

2026-10-11

### OneDroid Argus 0.3.70: a check can read the database and the logs, and make the system fail

Three things a check could not do a week ago, each described in the
tester guide. A chain of
steps can read one row of the system's PostgreSQL database with a read-only
`SELECT`. It can ask the system's Loki whether a log line exists, does not
exist, or how many match. And, since 0.3.69, a `fault` step can stop, start
or scale a deployment, or delay, cut or truncate one connection, while the chain runs.

The limits: nothing can be made to fail unless an operator lists it under
`fault_allowed_targets`, and OneDroid Argus puts everything back. The
database step is one read-only query against a declared PostgreSQL target. The logs
step works with Loki only. The database and logs steps need an executor at 0.3.70 or
later, and a fault step one at 0.3.69 or later.

Also in this release: more claim forms on chain steps (a numeric comparison, a
tolerance such as `within 2% of`, a response-time claim), running counts
while a run is going, and reading a message from a broker without taking it from the
system's own consumer. The
OneDroid Argus page now describes release 0.3.70.

2026-10-09

### The OneDroid Argus runner is open source

github.com/OneDro1d/argus-runner
— MIT (its AMQP sampler keeps its own Apache-2.0 licence); the repository has been public since 7 October, announced today. It holds the runner that
executes sealed checks next to your system and the `argus` command line,
including `argus certificate verify`, which checks a certificate against the
chain without contacting us. The container image is published at
`ghcr.io/onedro1d/argus-runner`.

Not in it: the hosted control plane (registry, signing, anchoring, the web UI). A run
still needs an account there, available by request at the time (sign-up opened later; see /argus). The limit, stated in the repository
too: the control plane signs and anchors what the runner reports and does not re-run
the checks, so a certificate proves what the runner reported and when, not that the
runner was unmodified.

2026-09-10

### The site now leads with OneDroid Argus

The home page is about OneDroid Argus: blind acceptance
testing for software built by AI coding agents, with the same scenarios run
under load and on a schedule. The governed gateway has moved to its own page at
/synapse; nothing else was removed.

2026-08-04

### The Dark Factory method is now open source

github.com/OneDro1d/dark-factory
— Apache-2.0. The delivery method we use ourselves: stage skills, the control
loop, enforcement hooks, and the publish gate that keeps client material out
of public repositories.

It ships with a self-test that plants a known-positive canary for every scan
class and asserts the gate fails on each — written after we found
three separate checks that reported success while being unable to catch
anything. The commit history is honest about that.

2026-07-20

### Google OAuth application verification completed

The OneDroid application passed Google's OAuth verification, including the
branding and app-purpose review, for its Google Workspace connections. The
signed-out application page was reworked to state its purpose up front and to
render fully without JavaScript as part of that review (the application itself at
synapse.onedroid.ai needs JavaScript).

2026-07-19

### Privacy policy and terms of service published

/privacy and /terms, rewritten
after an adversarial review pass rather than pasted from a generator.

2026-07-19

### Crawlable: robots.txt and sitemap.xml

Explicit allowances for AI crawlers alongside conventional search engines,
and a sitemap covering every public page.

2026-07-18

### Bring-your-own-database for OneDroid Engram

Point OneDroid Engram at a Postgres you own. Documents, chunks, embeddings, revision
history and permissions become rows in your database — readable with SQL,
backed up with your own tooling, and yours if you leave.

2026-07-18

### onedroid.ai launched

OneDroid Synapse-first positioning, with pages for OneDroid Engram, the Dark Factory Toolkit,
enterprise deployment and pricing.

Entries are added when something ships, not when it is planned. If this page
goes quiet, that means we have been heads-down — ask us directly at
michal@onedroid.ai
rather than assuming.

## Watch it happen.

Follow on GitHub
Open Synapse
