Owner review of every agent-authored skill (design doc §9.4: humans merge; the notes are governance-paper data). Facts and mechanical observations were assembled by the dev loop; judgments marked [OWNER] are Yong's. SIGNED OFF by the owner 2026-08-15 (merge of PR #242); the standing approvals for skills 1 and 2 carry no added notes.
Revised 2026-08-15 after the findings were checked against the code. Two of the first draft's three flags did not survive: the detector-import flag on skill 3 described the curated core's own design rather than an agent deviation (#244, #248), and the eval-floor flag on skill 4 was enforced-but-self-graded rather than unenforced (#243, fixed). Three of the five skills turned out to be unreviewable — their source no longer exists (#245). The corrections are kept inline rather than silently applied, because how a governance review's first pass was wrong is itself governance-paper data.
Revised again 2026-08-16. PR #252 staged source for the three
"unretained" skills, and reading it retired the last surviving technical
allegation: t2-scan-pose does not import aisle.verifier.models — the
claim that became issue #244 — it imports from aisle.nodes.l2_pose,
whose own import of the detector is what creates the coupling. So all
three of the first draft's flags were wrong about the agents, in three
different ways: one described the harness's design as an agent deviation
(skill 3, twice over), one mistook a self-graded gate for an unenforced
one (skill 4), and the third — the retention loss — was the protocol's.
The corrected count for the paper is three flags raised, zero agent
faults found, three harness defects fixed (#243, #245, #248).
That is the result, and it should not be softened: a first-pass
governance review of agent-authored robot code produced no true positives
against the agents and three against the machinery that reviews them.
- Facts: 596 lines;
providesS1 order-fulfillment driving; evalcard pass_rate 1.0; reused across S2/S3 arms and later desk campaigns' prior-library; the wipe-leak saga's protagonist (campaign 2) and the pin-tracked-skills guard crash (#191) — both machinery lessons, not code faults. - Mechanical review: no frozen imports beyond public scene config; registry-path registration with eval; no privileged topics.
- [OWNER] judgment: APPROVE (standing — merged at #54). Notes: (none added at sign-off)
- Facts: 804 lines; evalcard pass_rate 1.0 on the both-L1 dev class; the project's clearest REUSE datum — appears verbatim in desk-H3 L/T3-r2's deliverable, a cross-SUITE transfer (retail→desk) the H3 design hoped for.
- Mechanical review: clean surface; largest agent-authored file — above the repo's 800-line guidance by 4 lines (waiver-worthy).
- [OWNER] judgment: APPROVE (standing — merged at #75). Notes: (none added at sign-off)
-
Facts: 210 lines; safety_class perception; evalcard pass_rate 0.33; root-cause-driven design (l2_pose's identity gate refuses T2 targets; this skill supplies candidate positions without the gate), citing run evidence in the docstring.
-
The FLAG in the first draft was WRONG, and the correction matters more than the original note. It read: the skill imports
aisle.verifier.models(detect_meds, load_pinned) into a policy-side node, borrowing the referee's detector weights — "precedent-setting either way." The precedent was already set, by the curated core.src/aisle/nodes/l2_pose.py:195andlabel_reader.py:294,518import exactly those symbols;ocr-labelandik-trajectoryare on the CAP-5 curated list, andsrc/aisle/reset/service.py:115does it from inside the FROZEN set. The skill's own docstring says it adaptsl2_pose— it copied the house style. Enforcing the rule as drafted would have rejectedgraphs/expert_t1_l2.yamlandgraphs/expert_t2.yaml, both frozen expert graphs. The remedy the draft proposed does hold up in isolation (detector-openvocabispip:dora-yolo, a genuinely separate model) — but offering it as though the skill had deviated from a norm inverts what happened. -
What the flag was pointing at is real and is NOT the agent's: at perception rung L2 the policy and the realistic verifier share the detector backbone by design (
verifier/realistic.py:289,346), so fidelity is measured on correlated estimates. Filed as #248; the governance rule it was going to become is #244. Both resolved 2026-08-15. #244: VAL-9 dropped — the rule was aimed at a transgression that did not occur. #248: no reported number was affected (every VER-6 measurement to date ran at rung L0, where the policy calls no detector), andharness fidelitynow labels every report with abackboneverdict so the next L2 measurement cannot be read as an independence claim by accident. -
SECOND CORRECTION (2026-08-16) — the flag was wrong about the code itself, not only about the baseline. PR #252 staged the source, and
t2-scan-posedoes not importaisle.verifier.modelsat all. Its whole import surface is:from aisle.nodes.l2_pose import MIN_RETRY_GAP_NS, NEIGHBOUR_SCORE_FLOOR, _bbox_mask from aisle.nodes.perception_session import FramePairSession from aisle.nodes.segmented_pose import PoseRefused, estimate_pose
The detector coupling is TRANSITIVE —
l2_poseimports it — so the skill reused a curated node's public constants rather than reaching into the verifier package, which is the better of the two available moves and one step FURTHER from the referee than the flag alleged. The paragraph above still stands on its own reasoning (the coupling is the core's design); what fails is the specific technical claim that turned into issue #244. #244's outcome is unaffected — the rule is still correctly dropped — but it was opened against an import that was not there. Provenance of the staged source is unresolved as of this writing (PR #252 review); this correction is recorded now because the note's claim is checkable against the codebase independently of it:l2_pose.pygenuinely exports the three symbols above. -
[OWNER] decision (2026-08-15): not a merge decision — there is nothing to merge (superseded — see below).
-
[UPDATE 2026-08-16, post-#252 recovery]: source recovered and re-evaluated. Its shipped suite targets
graphs/agent_campaign.yaml— the mutable campaign DELIVERABLE, which the later T4 session overwrote (a first rerun scored 0/3 against the wrong-era graph; the era-fragility lesson: eval suites must pin graph content, not a path). On the era-correct deliverable (recovered from theh3/keep-L-pre-T3-r2audit snapshot): 2/3, seeds 2 and 4 — the stock pipeline's exact failure classes — succeeding, wrong_object 0. Owner instructed a merge via the #258 pattern; integration to main's lockstep runtime needed a one-line disclosed port (aisle.turn_node.Nodedrop-in). The registration measurement on main'sexpert_t2topology then scored 1/3 — below ADR-37's 0.5 floor — and registration REFUSED. Across three runs (original card 1/3, era-correct 2/3, main 1/3 = 4/9 aggregate) every seed has both passed and failed somewhere: the #153 T2 wall-coupled flakiness class dominates the estimate at n=3. Recorded as: recovered, authentic, re-evaluated; registration refused by the ADR-37 floor on the mainline measurement; PARKED inskills_pending_review/with the full record. A future registration attempt should pre-register a larger-n suite (n≥9) so the estimate outruns the flake class — never rerun-until-pass at n=3.
- Facts: 394 lines; safety_class decision; evalcard pass_rate 0.0 — registered locally despite a failing eval. Adapted from the frozen-adjacent task_state_machine (per-candidate z, x-depth from detected size).
- Mechanical review — FLAG, since CLOSED. The first draft said the
register gate "appears unenforced." It was enforced — against a
threshold the candidate chose.
min_pass_ratecame from the skill's owneval.yamlandload_skillonly checked that it parsed as a float, so a skill shipping 0.0 registered at 0.0 and the gate reportedok. That is the whole mechanism, and this skill is the live case. Fixed in #243 / ADR-37:REGISTRY_MIN_PASS_RATE = 0.5, refused at load before an eval rollout is spent. Both merged skills already chose 0.5, so nothing was evicted. - [OWNER] decision: DECLINE stands on the evalcard alone — a 0.0 skill cannot enter the hub. [UPDATE 2026-08-16]: source recovered (#252) and its suite re-run with the keep-ref-recovered eval graph: 0/2 (seed 1 collision, seed 3 never_grasped) — the 0.0 evalcard reproduced exactly. The card was honest; the DECLINE is now affirmed on reproduced evidence, doubly so under ADR-37's floor. Recorded as: declined; card reproduced; parked as history.
- Facts: 100 lines; safety_class motion (emits joint_cmd directly — the governance-critical class); evalcard present; root-cause-driven (a measured 5 mm shelf-sweep collision at seed 33, trace-cited); authored during A3 where the findings note T1 did not need it (the arm still scored 1.0 without a code advantage).
- Mechanical review: motion class + evalcard = the §9.4 trust-tier case working as designed; small, single-purpose, cites its evidence.
- [OWNER] decision: originally recorded as unreviewable ("the loss
that stings"). SUPERSEDED by the #252 recovery: source verified
byte-identical to the arm-F worktree (mtimes Aug 14, inside the
authoring session), and on 2026-08-16 the recovered eval suite was
re-run on the campaign machine at the native pin — 8/8, pass@1
1.0, including discovered-failure seed 33, zero retries
(run
review-reeval-ik-transfer-v2), reproducing the original evalcard exactly. MERGED per owner instruction 2026-08-16 through the registry path: skills/ik-transfer-v2 + evalcarded manifest +graphs/eval_ik_transfer_v2.yamlinto the frozen eval gate (the ADR-36 Class-C addition, authorized by the same instruction; the one deviation from the verbatim artifact is the eval graph's rename from the agent'sagent_eval_*name to the frozen-gate convention, with the matching one-linegraph:pointer patch in eval.yaml).
Skills 3, 4 and 5 were registered inside campaign worktrees, which live
under gitignored runs/ with no teardown and no archival step. Their
source exists nowhere: searched across all 49 branches, the filesystem,
and 51 dangling git objects. §9.4 makes a human the trust boundary for
agent-authored code, and that presumes the code still exists when the
human arrives — here the review window had already closed before the
review began.
This is the most important governance finding in the set, and it is
about the protocol rather than any agent. Fixed forward in #245
(each session archives its working tree to refs/campaign/<name>);
nothing recovers the three. The Phase-2/3 report's "≥5 evalcarded" row
is corrected to 2 in #249.
- Every agent skill was ROOT-CAUSE-DRIVEN: all five docstrings cite a specific run, seed, and measured failure before proposing the change — the idea-gate discipline visibly shaped code style.
- The registry path was never bypassed: no agent edited frozen code in any reviewed session (the one frozen-set flag in desk-H3 was a cross-pin artifact, not tampering).
- Every "governance edge" the first draft found was a finding about the harness, not the agents. The eval floor was candidate-chosen (#243, fixed); the detector sharing is the curated core's own design (#244 dropped, #248 guarded) — and the skill accused of it did not even take the direct path the core takes (2026-08-16 correction). An agent-code review that indicts the review machinery three times and the agents zero times is worth reporting as such: the agents behaved, and the fence had three gaps.
- Safety record under free motion-code authorship: wrong-medicine 0 across all ~40 sessions; the one motion-class skill arrived with an evalcard unprompted.
- The review itself was only possible for 2 of 5 skills. Any claim this project makes about human-in-the-loop governance of agent-authored robot code has to carry that number honestly.