Uh oh!
There was an error while loading. Please reload this page.
os-dev contract: probe-first dedup route, never-drop findings, and the edited gate script's own pin suite - #12402
Merged
Conversation
…e edited gate script's own pin suite Two measured contract updates to the dev-agent definition, plus the sibling finding's two dispositions folded into the same dedup clause: - Dedup route: probe the channel in-container first (one repo-scoped REST read); where REST works the standing REST-list + local-grep route stays; where it 403s (measured dev-container shape: whole repo-scoped class 403, gh absent, MCP working) use ONE targeted MCP search_issues and declare the reroute in the report. The GraphQL-pool prohibition survives as "no broad list sweeps on any channel". Hand-over to the PM with the reason a finding could not be filed is first-class; filing blind and silent dropping are both named forbidden — a finding never disappears because the channel broke. - Local verification scope gains step 5: when the diff edits a gate/tooling script, that script's OWN pin/test suite (sibling *.test.ts naming it, plus same-package test grep hits on its filename) is a non-optional step beside the derived families — derivation answers "which gates read your files", never "which tests test this script". Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JANH3y7qe3MD8aLaLXci8N
os-steve
marked this pull request as ready for review
August 26, 2026 01:51
Uh oh!
There was an error while loading. Please reload this page.
This was referenced Aug 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes#12367
Governed surface (
.claude/agents/os-dev.mdonly): draft PR, human merge — never queued, never armed, never flipped ready (triage constraint on the card).Update 1 — the dedup route, brought to measured reality
The old clause prescribed "REST list endpoints + local grep, never MCP
list_issues/search_issues". Measured 2026-08-25 on three dev containers: every repo-scoped REST endpoint 403s andghis absent, while the MCP tools work. Measured again on THIS container (2026-08-26, dispatched dev seat): repo-scoped REST reads return 200 andghis absent — so the channel varies per container, not per role. The new text therefore codifies probe-first rather than a role-based rule:rest-channel.mdpointer is kept, its checkmarks noted as per-seat measurements);ghabsent, MCP working), use one targeted MCPsearch_issuesand declare the reroute in the report;Folded into the same clause, per the sibling finding's two dispositions (PM-directed, same clause, no surface widening — the sibling card remains open for the PM to judge against this text):
Update 2 — the edited gate script's own pin suite
"Run the derived gate families" is structurally blind to a gate script's own test files: derivation answers "which gates read your changed files", never "which tests test this script". Measured: a gate-script edit ran the full derived battery green while the script's own vitest pin suite never executed, and CI caught three hijacked pins. New step 5 in the local-verification scope: when the diff edits a gate/tooling script, running that script's own pin/test suite (sibling
*.test.tsnaming it, plus same-package test-treegit grephits on the script's filename) is an explicit, non-optional step alongside the derived families.Budget and constraints
CEILINGS['.claude/agents/os-dev.md'] = 470inscripts/pm/check-skill-line-ratchet.mjs); the prompt said none does. The diff lands at 468 lines (headroom 2) — verdict line:check-skill-line-ratchet: .claude/agents/os-dev.md is 468 lines (ceiling 470; headroom 2).check-skill-id-lint: 22 file(s) clean)..claude/-only diff: no changeset;skip-changesetlabel applied via the additive endpoint and read back.Verification (all at head
759f6d3e, after the final commit)Derived via
node scripts/pm/dispatch-gates.mjs(no paths; derivation banner named this repo atcdbd920): 10 families matched. Run underos-verify-lock, exit captured before any pipe:check:agent-model-declared—1 agent definition(s) under .claude/agents/ all declare a modelcheck:agent-test-spelling—0 violations — 386 file(s)check:doc-authoring—390 files clean — no bare metadata literalscheck:doc-formula-expressions—22 record-scoped formula example(s) across 422 files / 1449 TS blocks judged clean(prerequisite@objectstack/formula+@objectstack/lintbuilt first)check:nul-bytes—OK (scanned 6868 text file(s) …)check:pm-governed-merges— self-test 159 assertions +live: the real generator declared 9 output(s) and certified this treecheck:pm-skill-id-lint—22 file(s) clean (pattern /#[0-9]{3,}/g)check:pm-skill-ratchet— os-dev.md468 lines (ceiling 470; headroom 2), widest table row pin greencheck:skill-frame-sync—4 copies of the decision frame are structurally isomorphic across 3 filescheck-governed-queue-guard.mjs— NOT MEASURED locally (readsGITHUB_EVENT_PATH; CI-event-only guard), exercised in CINo package source touched, so no vitest suite or package typecheck applies to this diff.
Generated by Claude Code