feat(agents): three rules from the correction cluster, and the cap raise they need #1334

Merged
coilyco-ops merged 2 commits from aos/claude/eb77 into main 2026-08-28 03:37:35 +00:00
Owner

Refs #1333.

Three seats investigated the correction cluster Kai flagged. The evidence disconfirmed the framing she and I both started from, and what survived is a taxonomy with a different fix per mode. Full diagnosis, worked instances, and acceptance conditions are on #1333.

Two premises that did not survive

There was no disagreement. Six exchanges between the two seats, agreement every time, usually inside one message. Every correction was a self-correction the other accepted immediately.

Adding doctrine was the wrong instinct. For the instance that reached outward copy in Kai's first person, the rule already existed in three sources the seat had loaded, named both failure modes it hit, and did not fire. The reason is that every rule in that family carries an uncertainty precondition, and that instance had no felt uncertainty to trigger on.

So each rule here fires on a detectable property of the artifact rather than on the author's doubt. That is the property the existing rules lacked.

The three rules

  • A derived claim does not inherit its anchor's provenance. Trigger is the sentence: an elapsed duration, a rate, a trend, or a current state is a computed clause and needs its own source or hedge. Three verified instances across two seats. In one, reading an email thread carefully is exactly what made the wrong conclusion feel established.
  • A pointer whose target is absent is not a source. Trigger is objective: the skill names a path, the path is not on the host, the remote is reachable. Verified live, repo-lore is mounted in sessions where its checkout does not exist and all three of its links are broken.
  • The corrector notifies the consumers. Trigger is landing a correction. Public-safe counterpart of a rule that already exists in the private lore repo, moved into the base because the seat most exposed to the failure is the one without lore mounted.

The cap raise, called out for review

agents_md_max_chars goes 32500 to 33600, justified in place as that setting's own comment requires.

The file had 194 characters of headroom, so no rule of any size could land. That comment also records the cap being raised seven times until the file became unusable, and I am aware I am the eighth. The documented bar is a rule that binds every session and every role where no role source can hold it. All three meet it: any seat can write an elapsed duration, hold a pointer to an absent checkout, or land a correction. The third was already proven unreachable where it lived.

The line cap is untouched and the file sits two lines under it.

If the raise is the wrong call, this is the reviewable unit to reject. The rules and the raise are separable, and I would rather have the rules cut than the cap moved on my judgement alone.

Verification

pre-commit run --all-files clean, including documentation layout against the new cap.

Ownership

Specified and landed by the eval seat at Kai's explicit direction, after I flagged that roster doctrine is normally the platform seat's to write. Recording that here so a later reader knows the boundary was raised and overridden rather than missed. The acceptance conditions on #1333 are written so that whoever measures whether these bind is not the seat that wrote them.

Refs #1333. Three seats investigated the correction cluster Kai flagged. The evidence disconfirmed the framing she and I both started from, and what survived is a taxonomy with a different fix per mode. Full diagnosis, worked instances, and acceptance conditions are on #1333. ## Two premises that did not survive **There was no disagreement.** Six exchanges between the two seats, agreement every time, usually inside one message. Every correction was a self-correction the other accepted immediately. **Adding doctrine was the wrong instinct.** For the instance that reached outward copy in Kai's first person, the rule already existed in three sources the seat had loaded, named both failure modes it hit, and did not fire. The reason is that every rule in that family carries an uncertainty precondition, and that instance had no felt uncertainty to trigger on. So each rule here fires on a **detectable property of the artifact** rather than on the author's doubt. That is the property the existing rules lacked. ## The three rules * **A derived claim does not inherit its anchor's provenance.** Trigger is the sentence: an elapsed duration, a rate, a trend, or a current state is a computed clause and needs its own source or hedge. Three verified instances across two seats. In one, reading an email thread carefully is exactly what made the wrong conclusion feel established. * **A pointer whose target is absent is not a source.** Trigger is objective: the skill names a path, the path is not on the host, the remote is reachable. Verified live, `repo-lore` is mounted in sessions where its checkout does not exist and all three of its links are broken. * **The corrector notifies the consumers.** Trigger is landing a correction. Public-safe counterpart of a rule that already exists in the private lore repo, moved into the base because the seat most exposed to the failure is the one without lore mounted. ## The cap raise, called out for review `agents_md_max_chars` goes 32500 to 33600, justified in place as that setting's own comment requires. The file had **194 characters of headroom**, so no rule of any size could land. That comment also records the cap being raised seven times until the file became unusable, and I am aware I am the eighth. The documented bar is a rule that binds every session and every role where no role source can hold it. All three meet it: any seat can write an elapsed duration, hold a pointer to an absent checkout, or land a correction. The third was already proven unreachable where it lived. The line cap is untouched and the file sits two lines under it. **If the raise is the wrong call, this is the reviewable unit to reject.** The rules and the raise are separable, and I would rather have the rules cut than the cap moved on my judgement alone. ## Verification `pre-commit run --all-files` clean, including `documentation layout` against the new cap. ## Ownership Specified and landed by the eval seat at Kai's explicit direction, after I flagged that roster doctrine is normally the platform seat's to write. Recording that here so a later reader knows the boundary was raised and overridden rather than missed. The acceptance conditions on #1333 are written so that whoever measures whether these bind is not the seat that wrote them.
feat(agents): three rules from the correction cluster, and the cap raise they need (#1333)
All checks were successful
ci / aos-eval-tests (pull_request) Successful in 6s
ci / ward-doctor (pull_request) Successful in 5s
ci / aos-cli-tests (pull_request) Successful in 26s
ci / gate (pull_request) Successful in 47s
6a1822ea2e
Refs #1333. Three seats investigated a cluster of corrections Kai flagged, and
the evidence disconfirmed the framing she and I both started from. There was no
disagreement between the seats: six exchanges, agreement every time, every
correction a self-correction the other accepted. And adding doctrine was the
wrong instinct, because for the worst instance the rule already existed in three
sources the seat had loaded, named both failure modes it hit, and did not fire.

What survived is a taxonomy of three failure modes with a different fix each,
authored by the devrel seat against the tpm seat's derivation finding.

* **Unsourced derivation.** A checked input lends unearned provenance to a step
  nobody checked. Three instances across two seats. Diligence made one worse:
  reading the thread carefully is what made the wrong conclusion feel settled.
* **Known-absent source.** Reached, came up empty, flagged it in writing. The
  only mode mounting fixes, and the only one that did not reach outward copy.
* **Expired provenance.** Right source, real chain, expired 26 hours earlier
  with nothing marking it. No drafter-side check catches this, because the
  consumer of a correction is structurally the last to learn it happened.

Each rule fires on a detectable property of the artifact rather than on the
author's sense of doubt, which is the property the existing rules lacked and why
they did not fire.

## The cap raise

`agents_md_max_chars` 32500 to 33600, justified in place as that setting's own
comment requires. The file had 194 chars of headroom, so no rule could land at
all. All three meet the documented bar of binding every session and every role
with no role source able to hold them, and the third was already proven
unreachable where it lived: a seat without the private lore repo mounted shipped
the superseded claim into outward copy written in Kai's first person.

The line cap is untouched and the file sits 2 lines under it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Kai Siren <coilysiren@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Agent-Role: eval
Merge branch 'main' into aos/claude/eb77
All checks were successful
ci / aos-eval-tests (pull_request) Successful in 9s
ci / ward-doctor (pull_request) Successful in 8s
ci / aos-cli-tests (pull_request) Successful in 32s
ci / gate (pull_request) Successful in 50s
2305e26bd0
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-flight-deck/agentic-os!1334
No description provided.