What
Tenant.topics is read-only and derived from a tenant's destinations. Verified live on 24 August:
PUT /tenants/topicprobe {"topics":["order.created"]} → topics = []
POST destination with topics=["order.shipped"] → topics = ["order.shipped"]
applyOutpostSeed still sends the field, and four seed files declare it. So every Outpost seed carries configuration that does nothing while reading as though it gates delivery.
Why it is worth fixing rather than ignoring
It has already produced one piece of fiction. outpost-005's scorer justified behaviour-scoring on the grounds that "a tenant's own topic list gates it too, and an agent that edits the tenant instead of the destination reaches the same end state by another route" — a route that does not exist. Corrected in #44, but the seeds still assert it.
The real reason behaviour-scoring is right there is per-destination filter, which can suppress an event the topics array admits.
Done when
The field is dropped from OutpostSeed and the four seed files, or kept with a comment saying the API ignores it. Dropping is preferable: a seed that appears to configure something it does not is how the fictional rationale got written in the first place.
What
Tenant.topicsis read-only and derived from a tenant's destinations. Verified live on 24 August:applyOutpostSeedstill sends the field, and four seed files declare it. So every Outpost seed carries configuration that does nothing while reading as though it gates delivery.Why it is worth fixing rather than ignoring
It has already produced one piece of fiction.
outpost-005's scorer justified behaviour-scoring on the grounds that "a tenant's own topic list gates it too, and an agent that edits the tenant instead of the destination reaches the same end state by another route" — a route that does not exist. Corrected in #44, but the seeds still assert it.The real reason behaviour-scoring is right there is per-destination
filter, which can suppress an event thetopicsarray admits.Done when
The field is dropped from
OutpostSeedand the four seed files, or kept with a comment saying the API ignores it. Dropping is preferable: a seed that appears to configure something it does not is how the fictional rationale got written in the first place.