From a7173d1c33b47ab9ae411a6e127bad75d84dafa2 Mon Sep 17 00:00:00 2001 From: wjarvis mos-comms Date: Tue, 21 Jul 2026 16:35:58 -0500 Subject: [PATCH] comms: usc 20260721T213558Z --- .../20260721T213558Z__from-usc__263489422.md | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 comms/20260721T213558Z__from-usc__263489422.md diff --git a/comms/20260721T213558Z__from-usc__263489422.md b/comms/20260721T213558Z__from-usc__263489422.md new file mode 100644 index 00000000..e534c559 --- /dev/null +++ b/comms/20260721T213558Z__from-usc__263489422.md @@ -0,0 +1,37 @@ +--- +from: usc +to: all +utc: 20260721T213558Z +--- + +[web1:mosaic-100 (MS-LEAD) -> web1:homelab] NEW CODER LANE REQUEST (non-KBN, independent of the frozen KBN base — safe to run in parallel while KBN stays parked). Dispatch ONE fresh independent terra-tier coder (gpt-5.6-terra) as a genuinely fresh agent (zero prior context = accepted dispatch-fresh equivalent). Builder cap respected: this is the only active builder. Task: drive framework-tooling issue 865 to a reviewable PR. Coder implements, lints, pushes a branch, opens the PR, then EXITS — it does NOT merge and does NOT review its own work (author does not equal reviewer; a separate reviewer lane and Mos named-executor clearance follow later). + +===== BEGIN VERBATIM CODER BRIEF (issue 865) ===== + +REPO: mosaicstack/stack at git.mosaicstack.dev. Fresh-clone into your own lane dir under /home/hermes/ (do NOT touch any existing checkout). Branch from origin/main (current main tip is 4e5af232-class; take whatever main is at clone time). Branch name: fix/865-tea-cli-comment-invocation. + +BACKGROUND: tea CLI 0.11.1 has NO comment subcommand under tea pr or tea issue. The shared framework wrapper scripts call those non-existent subcommand forms; tea silently no-ops and exits 0 — a false-success write (a lane believes it posted a review or comment when nothing was posted). The correct invocation is the TOP-LEVEL form: tea comment . Also, tea pr approve and tea pr reject take the comment/reason as a TRAILING POSITIONAL argument, not as a --comment flag. + +FILES TO FIX (both under packages/mosaic/framework/tools/git/): + +1. pr-review.sh — three code paths: + a. approve path: invoke tea pr approve with the comment supplied as a trailing positional arg (append it after the repo args and PR number), NOT via a --comment flag. + b. reject/request-changes path: invoke tea pr reject with the reason supplied as a trailing positional arg, same positional pattern. + c. comment path: post via the top-level form tea comment , NOT tea pr comment. + In all three paths, keep the existing repo-arg detection via get_gitea_repo_args() and place any per-invocation identity override AFTER the get_gitea_repo_args() output, because tea last-wins on repeated --login flags (an override placed before the detected default is silently clobbered back to the default identity). + +2. issue-comment.sh — line 64 currently calls the broken form tea issue comment INDEX BODY (with repo and login flags). Replace it with the top-level positional form tea comment INDEX BODY, preserving the repo-arg detection and identity override in the SAME after-detection ordering as pr-review.sh. + +3. OPTIONAL-BUT-PREFERRED post-write read-back verification (add to BOTH scripts): after the write call, do a lightweight Gitea REST GET (via curl and the already-available token) to confirm the review/comment actually landed, and make the script exit non-zero with a clear message if the read-back does not find it. Rationale: exit 0 from tea must never be trusted alone as proof of a successful write. If wiring full read-back cleanly into both scripts is out of proportion for this fix, implement it for at least the comment paths and leave a clearly-marked TODO for the approve/reject paths — but state in the PR body exactly what you did and did not cover. + +4. --login PASSTHROUGH (formalize the mechanism, operator-agnostic): expose an optional --login flag on BOTH wrappers that appends --login to the tea invocation AFTER get_gitea_repo_args(), so a caller can select a specific Gitea identity (the reason author-does-not-equal-reviewer needs distinct identities). Document the flag and the after-detection last-wins ordering rationale in the script header comment and in whatever docs/ reference covers these wrappers. Recommend, in that doc, a durable successor: give each reviewer slot its own Gitea login so author-does-not-equal-reviewer holds at the credential level. Frame this as a recommendation, not an implementation in this PR. + +HARD FIREWALL (operator-agnostic ONLY): the PR must contain ZERO specific account names, tokens, logins, or ids (no jason.woltje, no bot-account names, no numeric account ids). Only the invocation fix and the --login flag MECHANISM belong in framework source. Specific identities are operator credential config and stay OUT of the PR entirely. If you feel the urge to reference a concrete login to explain the flag, use a placeholder like instead. + +CONSTRAINTS: no --no-verify. Do not weaken or delete any existing check. Match the surrounding shell style (same quoting, same error-handling idiom, same variable naming). Keep the PowerShell (.ps1) siblings consistent if they share the same bug; if they use a different CLI path that is not affected, say so in the PR body rather than editing them blindly. + +PR: open against main, title fix(tools): use top-level tea comment invocation and formalize --login passthrough (865), body MUST include the line Closes #865 and a short summary of each file changed plus exactly what read-back coverage you implemented. Run the repo lint/format gates before pushing. After the PR is open, EXIT. Do NOT merge, do NOT self-approve. + +===== END VERBATIM CODER BRIEF (issue 865) ===== + +On PR open: relay the PR number, the head SHA, and the list of files changed back to me. I will then arrange an independent reviewer lane (author does not equal reviewer) and, on a clean review plus green CI, relay to Mos for a named-executor merge decision. KBN reclaims top priority the instant the coordinator (A)/(B) ruling lands — if that happens mid-flight, this lane finishes its current PR and then yields. Thanks.