tools/git issue-* wrappers: tea-routed verification produces false-negative exits, hard breakage, and silent capability downgrades (3 instances) #1222
Open
opened 2026-08-13 22:20:46 +00:00 by mos-dt-0
·
0 comments
No Branch/Tag Specified
main
docs/1216-trunk-parameterization
next
docs/ia-merge-current
fix/869-lease-probe-timeout
feat/workspace-hygiene-tool-enforcement
feat/1080-pr-edit
fix/1182-fail-closed-launch
fix/1179-required-security-di
feat/p3-slice0-task5-chat-runtime-router-shaggy
feat/p3-slice0-task5-chat-runtime-router
feat/wf1-composition
feat/p3-slice0-task4-web-catalog-selection
feat/lease-promotion-and-harness-isolation
ci/provision-pi-runtime
feat/p3-slice0-task3-catalog-selection
feat/p3-slice0-task2-harness-registry
adopt/965-mos-ste-writing-standard
fix/991-comment-url-scheme-normalise
feat/wf2-bundle-migration
feat/wf4-plugin-acquisition
feat/wf5-refresh-safety
fix/1145-coord-di-compiled-boot
feat/p3-slice0-task1-harness-contracts
docs/webui-phase-p-structure
feat/1150-pi-goal-extension
feat/webui-p3-chat
fix/1146-ci-queue-purpose
fix/1138-conditional-federation
feat/webui-p2-data-auth
fix/gateway-runner-image
feat/webui-p1-vite-skeleton
fix/break-c-hooks-and-web-image
docs/webui-fleet-claude-bridge-plan
fix/wizard-gateway-failure
fix/ci-queue-wait-no-status
fix/next-node-gate
fix/mosaic-init-rce
greenfield/fomo-lin
fix/1099-pipefail-wake
fix/1099-pipefail-tests
fix/1099-pipefail-sweep
fix/framework-shell-portability
fix/1043-pane-git-identity
fix/1081-issue-close-silent-comment-failure
fix/1090-enrollment-wallclock-tolerance
feat/1082-tea-stale-token-diagnostic
fix/detect-platform-silent-128-outside-repo
feat/1050-install-state-machine-red-fixture
fix/pr-merge-message-field
feat/1051-mosaic-brain-installer
feat/1045-mosaic-cred
remediation/state
fix/1056-upgrade-rollback-control-race
fix/1019-ci-queue-timeout-harness
feat/rm-02-gate-registry
fix/rm-01-reproducible-checkout
remediation/mission-setup
fix/hygiene-inert-format-gate
fix/1019-queue-guard-stdin
feat/mos-ste-writing-standard
fix/1007-suite-hermeticity
feat/push-guard-null-case-verification
mos-comms-live
docs/heartbeat-framework-layering-ms-lead
feat/869-c4-version-coupling
feat/869-c2-install-ordering-guard
feat/869-c5-doctor-activation-check
feat/per-agent-gitea-identity
fix/875-belongs-case-insensitive-slug
fix/ci-queue-wait-404-branch-absent
feat/869-c1-activation-probe
feat/869-c3-broker-supervisor
fix/865-tea-cli-comment-invocation
feat/glpi-skills
fix/860-deflake-mutator-lease-gate
fix/850-detect-platform-port-normalization
fix/856-worktree-deps-preflight
fix/835-pr-review-approve-reject-comment-flag
fix/848-truthful-evidence
fix/812-pr-review-comment
fix/849-recovery-runtime-fixture-race
docs/758-ledger-m5-001-sync
feat/834-tc-server-side-doc
feat/833-constrained-recovery-command
feat/827-gate0-probe
governance/gate0-probe3-amendment
fix/795-codex-pr-diff
fix/795-ci-base-jq
fix/795-ci-base-git
feat/791-pr3-fleet-regen
feat/791-pr2-snapshot-restore
fix/807-glpi-206
fix/808-agent-send-false-sender
feat/791-upgrade-config-protection
feat/790-mosaic-yolo-claudex-pr2
feat/790-mosaic-yolo-claudex
feat/758-v1-v2-migrator
fix/766-exact-fleet-comms
test/758-reconciler-lifecycle-gates
docs/771-kbn101-db-role-split
test/758-example-profile-dispositions
feat/758-shared-role-resolution
feat/mos-logical-identity-fencing
feat/769-kbn100-unified-schema
docs/753-kbn010-threat-gate
feat/758-roster-v2-compiler
feat/756-official-discord-plugin
docs/758-fleet-config-management
fix/mos-option2-qualification-format
docs/issue-758-m0
docs/mos-option2-qualification
mos-comms
feat/tess-interaction-agent
fix/tess-docs-format
draft/mosaic-platform-prd
fix/installer-provider-gate-and-local-gateway-redis
release/mosaic-cli-0.0.37
feat/framework-constitution-alpha
fix/git-wrapper-repo-detection
fix/woodpecker-wrapper-legacy-mosaic
fix/t-a292e96f-gitea-pr-metadata
fix/gitea-pr-metadata-login-t-a292e96f
fix/t_a292e96f-pr-metadata-gitea
fix/t_3a368a52-gitea-usc-login
fix/bootstrap-hotfix
fix/populate-known-packages-list
fix/idempotent-init
v0.0.39-alpha
mosaic-v0.0.31
fed-v0.2.0-m2
fed-v0.1.0-m1
mosaic-v0.0.29
mosaic-v0.0.28
mosaic-v0.0.27
mosaic-v0.0.26
mosaic-v0.0.25
mosaic-v0.0.24
v0.2.0
v0.1.0
v0.0.8
v0.0.7
v0.0.6
v0.0.5
v0.0.4
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: mosaicstack/stack#1222
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The
tools/git/issue-*.shwrappers verify their writes throughtea.tea's auth and repo assumptions break per-host, and when they do the wrapper does not report "I degraded, here is what I dropped" — it reports a wrong exit code, or silently ships a downgraded write. Three instances hit two different agents on 2026-08-13, on two different hosts and two different providers.Instance 1 —
issue-comment.shfalse-negative exit 1 (fred, sb-it-1-dt, git.mosaicstack.dev).Posting a closing comment to
mosaic/stack#1216printed:and exited 1. The comment had in fact posted — id 22382, correct issue, correct body. The write succeeded and the wrapper's own read-back verification produced the false negative. This is the dangerous one: the documented, obvious response to "comment failed" is to retry, and a retry here posts a duplicate. The verification exists to close #865 (tea silently no-ops and exits 0), which is the right goal — but a verifier that fails closed on successful writes trades a silent no-op for a silent duplicate.
Instance 2 —
issue-close.shcannot run at all (fred, same host).issue-close.sh -i 1216from~/src/mosaic-stack:tea refuses any repo using the
worktreeconfigextension — which any checkout with worktree-scoped config has, and worktree-scoped config is exactly what we use to give per-agent identities their own principal. The close had to go through the raw API underMOSAIC_WRAPPER_OVERRIDE=1.Instance 3 —
issue-create.shsilent capability downgrade (mos-claude, web1, git.uscllc.com).Fails tea's authenticated-user validation, falls back to the raw API, and the fallback path drops labels and milestone. The issue is created, exit code is 0, and nothing anywhere says the issue landed under-tagged.
Why one issue and not three. The instances differ but the root is shared: verification and capability are both routed through a tool whose per-host failure modes are not enumerated, and the wrappers have no contract for degradation. A caller today cannot distinguish "write failed" from "write succeeded, verification failed" from "write succeeded with capabilities silently dropped" — and those three demand opposite responses (retry / do not retry / repair the record).
What would fix the family, not the instances:
worktreeconfigat minimum — so an unusable wrapper says so before attempting the write rather than after.Reported by fred (sb-it-1-dt) and mos-claude (web1). Instance 1's evidence is comment 22382 on #1216, which is live and can be inspected.