Recovered from a dead session: boundary-conformance skill, specgen pin, umbra repin #1369

Closed
coilyco-ops wants to merge 4 commits from aos/claude/sb46 into main
Owner

Recovered work, opened for review by a different session than the one that wrote it.

Where this came from

aos reported at launch that aos/claude/sb46 held four unpushed commits and "nothing will release them". The session that wrote them had died. The commits existed on no remote and none of the work had landed on main, and they were sitting in a temporary root that gets purged.

I pushed the branch to stop the work being lost, then opened this so it is not an unreviewed branch nobody is looking at.

What is in it

  • feat(skills): write down how a declared boundary fails to bind — a new tooling-boundary-conformance skill, 67 lines, cataloguing the ways a declared control passes silently instead of refusing.
  • fix(dev-base): move the specgen pin with the lock it is owned bydocker/dev-base/full/Dockerfile and .specgen/guardfiles/specverb.lock moving together.
  • chore(aosguard): repin the frozen umbra graph to v0.167.0
  • a merge of origin/main into the branch.

Why it wants a real review rather than a rubber stamp

I did not write this and cannot vouch for its completeness. A dead session leaves no statement of whether the author considered the work finished, so treat the branch as a checkpoint rather than a proposal. In particular the dev-base pin and the umbra repin are version moves whose correctness I have not verified, and the branch has not been rebased on current main since the roster rename in #1357.

Worth noting the skill is directly relevant to the day it was written on: three separate silent-pass defects landed today (#1346 the install-ref fallback, #1348 the kubectl guardfile invariant, #1351 the valueFlags trap), and this skill is a catalogue of exactly that failure class. That is a reason to want it reviewed rather than dropped.

Alternative

If the author's session is recoverable, or the work is superseded, close this and delete the branch. The commits are on the remote now either way, so nothing is lost by closing it.

Recovered work, opened for review by a different session than the one that wrote it. ## Where this came from `aos` reported at launch that `aos/claude/sb46` held four unpushed commits and "nothing will release them". The session that wrote them had died. The commits existed on **no remote** and none of the work had landed on main, and they were sitting in a temporary root that gets purged. I pushed the branch to stop the work being lost, then opened this so it is not an unreviewed branch nobody is looking at. ## What is in it * `feat(skills): write down how a declared boundary fails to bind` — a new `tooling-boundary-conformance` skill, 67 lines, cataloguing the ways a declared control passes silently instead of refusing. * `fix(dev-base): move the specgen pin with the lock it is owned by` — `docker/dev-base/full/Dockerfile` and `.specgen/guardfiles/specverb.lock` moving together. * `chore(aosguard): repin the frozen umbra graph to v0.167.0` * a merge of `origin/main` into the branch. ## Why it wants a real review rather than a rubber stamp **I did not write this and cannot vouch for its completeness.** A dead session leaves no statement of whether the author considered the work finished, so treat the branch as a checkpoint rather than a proposal. In particular the dev-base pin and the umbra repin are version moves whose correctness I have not verified, and the branch has not been rebased on current main since the roster rename in #1357. Worth noting the skill is directly relevant to the day it was written on: three separate silent-pass defects landed today (#1346 the install-ref fallback, #1348 the kubectl guardfile invariant, #1351 the valueFlags trap), and this skill is a catalogue of exactly that failure class. That is a reason to want it reviewed rather than dropped. ## Alternative If the author's session is recoverable, or the work is superseded, close this and delete the branch. The commits are on the remote now either way, so nothing is lost by closing it.
chore(aosguard): repin the frozen umbra graph to v0.167.0
Some checks failed
ci / aos-eval-tests (pull_request) Has been cancelled
ci / aos-cli-tests (pull_request) Has been cancelled
ci / ward-doctor (pull_request) Successful in 18m50s
ci / gate (pull_request) Failing after 22m12s
2d7fa3ee00
Carries umbra#315's untyped-array encoding fix into aosguard. An array
whose spec declares `items: {}` now emits a bare all-digits token as a
JSON number and anything else as a string, so `--labels 199` applies the
label instead of silently matching no name.

Verified against the reproduction on the issue:

    issue-label add  --labels 199          -> labels: [199]
    issue-label add  --labels priority/P2  -> labels: [priority/P2]
    issue-label set  --labels 199          -> labels: [199]

Before the repin `set --labels 199` sent `["199"]`, which Forgejo
resolves to no label, making PUT replace the whole label set with an
empty one. Exit 0, every existing label removed.

Closes coilyco-flight-deck/umbra#315
Refs coilysiren/inbox#426

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: platform
fix(dev-base): move the specgen pin with the lock it is owned by
Some checks failed
ci / aos-eval-tests (pull_request) Successful in 7s
ci / ward-doctor (pull_request) Successful in 8s
ci / aos-cli-tests (pull_request) Successful in 29s
ci / gate (pull_request) Successful in 59s
dev-base-pr / build (pull_request) Failing after 9m1s
1aafa5ef12
The repin bumped `specverb.lock` to umbra v0.167.0 and left
`ARG SPECGEN_VERSION` at 0.161.0, which
test_specgen_pin_is_owned_by_the_dependency_lock exists to catch. It caught it.

The invariant is that the lock owns the pin and the Dockerfile follows, so the
image is built against the umbra the guardfiles were locked against. Bumping one
and not the other would have shipped an image whose specgen predates the
untyped-array fix the lock claims.

Refs coilyco-flight-deck/umbra#315, coilysiren/inbox#426

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: platform
feat(skills): write down how a declared boundary fails to bind
Some checks failed
ci / aos-cli-tests (pull_request) Successful in 21s
ci / aos-eval-tests (pull_request) Successful in 6s
ci / ward-doctor (pull_request) Successful in 5s
ci / gate (pull_request) Successful in 50s
dev-base-pr / build (pull_request) Failing after 15m30s
d292a139e6
The reusable output of coilysiren/inbox#426, which is a sweep of fourteen places
across four products where a declared boundary neither binds nor refuses. It
passes quietly and reports success.

Derived from the ones already worked rather than designed up front, which was
the epic's own instruction: building the check first would encode a guess about
the failure taxonomy, and building it after encodes the observed one. The
observed one is richer than "it leaked".

Eight entries, each stated as an observation and the check that catches it. The
single highest-yield check is the negative control: supply a filter value that
cannot match and assert the result differs from the unfiltered one. That one
caught a dropped tool argument, an unresolvable label filter, and a partial view
reported as an absence, in three systems that share no code.

Two rules fall out of the whole set rather than any one entry. A surface is
stricter than the thing it guards, because a permissive default is what let most
of these through. And absence established through one search modality is not
absence.

A skill rather than a docs page, because it is a method an agent loads when
auditing a boundary rather than a page about this repository. docs/ is also at
its 40-page cap, which is its own problem and not this commit's to solve.

Refs coilysiren/inbox#426

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: platform
coilysiren closed this pull request 2026-08-29 02:33:46 +00:00
Some checks failed
ci / aos-cli-tests (pull_request) Successful in 21s
ci / aos-eval-tests (pull_request) Successful in 6s
ci / ward-doctor (pull_request) Successful in 5s
ci / gate (pull_request) Successful in 50s
dev-base-pr / build (pull_request) Failing after 15m30s

Pull request closed

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!1369
No description provided.