diff --git a/.gitea/workflows/scripts/build-activity-log.sh b/.gitea/workflows/scripts/build-activity-log.sh
index ef266a5..bd92c51 100755
--- a/.gitea/workflows/scripts/build-activity-log.sh
+++ b/.gitea/workflows/scripts/build-activity-log.sh
@@ -13,7 +13,13 @@ jq -r '
def trunc(n): if length > n then (.[0:n] + "ā¦") else . end;
select(.type=="tool_use" or .type=="text") |
if .type=="text" then
- "š¬ " + ((.part.text // "") | trunc(4000))
+ # Drop the PR-description block from the reasoning trail ā it is already published verbatim as
+ # the PR description, so repeating it here is redundant noise. Skip a text part that is nothing
+ # but that block (would otherwise be an empty "š¬ " entry).
+ ((.part.text // "")
+ | gsub("BEGIN_PR_DESCRIPTION.*?END_PR_DESCRIPTION"; ""; "m")
+ | gsub("\\A[[:space:]]+|[[:space:]]+\\z"; "")) as $t |
+ if $t == "" then empty else "š¬ " + ($t | trunc(4000)) end
else
(.part.tool // "?") as $t |
((.part.state.title // (.part.state.input | tojson | trunc(160)) // "")) as $title |
diff --git a/.gitea/workflows/scripts/publish.sh b/.gitea/workflows/scripts/publish.sh
index bc80037..ba3eca8 100755
--- a/.gitea/workflows/scripts/publish.sh
+++ b/.gitea/workflows/scripts/publish.sh
@@ -18,14 +18,25 @@ hdr=(-H "Authorization: token $TOK" -H "Content-Type: application/json")
post() { curl -sS -w 'comment -> HTTP %{http_code}\n' -X POST "${hdr[@]}" \
"$API/issues/$NUM/comments" -d "$(jq -nc --arg b "$1" '{body:$b}')"; }
-# drop machine-readable markers (DELEGATE / CLOSE_ISSUE / the BEGIN_SUBTASKS..END_SUBTASKS block)
+# drop machine-readable markers: DELEGATE / CLOSE_ISSUE, and the BEGIN_SUBTASKS..END_SUBTASKS and
+# BEGIN_PR_DESCRIPTION..END_PR_DESCRIPTION blocks (the PR description is published separately).
reply=$(awk '
/^[[:space:]]*BEGIN_SUBTASKS/{s=1}
+ /^[[:space:]]*BEGIN_PR_DESCRIPTION/{p=1}
/^[[:space:]]*DELEGATE:[[:space:]]*@/{next}
/^[[:space:]]*CLOSE_ISSUE[[:space:]]*$/{next}
s{ if(/^[[:space:]]*END_SUBTASKS/){s=0}; next }
+ p{ if(/^[[:space:]]*END_PR_DESCRIPTION/){p=0}; next }
{print}
' /tmp/agent_out.md 2>/dev/null)
+# Strip a leading self-header the model sometimes emits ("š¤ **@pm**" on its own line) so we don't
+# double it when we prepend our own. Removes a leading run of such header lines and blank lines.
+reply=$(printf '%s' "$reply" | awk '
+ BEGIN{s=1}
+ s && /^[^A-Za-z0-9]*\*\*@[A-Za-z]+\*\*[[:space:]]*$/ {next}
+ s && /^[[:space:]]*$/ {next}
+ {s=0; print}
+')
[ -z "$reply" ] && reply="_(Made changes without a text summary ā see the diff below.)_"
# Prefer the agent's clean delimited PR description; fall back to the whole reply.
prdesc=$(awk '/BEGIN_PR_DESCRIPTION/{f=1;next} /END_PR_DESCRIPTION/{f=0} f' /tmp/agent_out.md)
@@ -133,7 +144,7 @@ activity=""
if [ -s /tmp/activity_log.md ]; then
entries=$(wc -l < /tmp/activity_log.md 2>/dev/null || echo 0)
log=$(cat /tmp/activity_log.md)
- activity=$(printf '\n\n---\nš¤ **@%s** ā activity log (%s entries):\n\ntool calls & reasoning
\n\n%s\n\n ' "$NAME" "$entries" "$log")
+ activity=$(printf '\n\n\nš§ activity ā %s tool calls & reasoning
\n\n%s\n\n ' "$entries" "$log")
fi
# One PR per run: publish ONLY this run's own branch ($BRANCH), never sibling
@@ -175,6 +186,7 @@ prpost() {
if [ "$NEW" = "true" ]; then
prpost "$prnum" "$(printf 'š¤ **@%s** ā ā
PR ready for review ā @ffaerber please review & merge:\n- %s%s' "$NAME" "$url" "$activity")"
else
- # Resume (comment is on a PR thread): include the write-up here too.
- prpost "$prnum" "$(printf 'š¤ **@%s** ā updated branch/PR:\n- %s\n\n%s%s' "$NAME" "$url" "$prdesc" "$activity")"
+ # Resume: just link the PR ā its body and the diff already carry the description, so we don't
+ # repeat the full write-up in the comment (the reasoning trail below shows what this run did).
+ prpost "$prnum" "$(printf 'š¤ **@%s** ā pushed an update to the PR:\n- %s%s' "$NAME" "$url" "$activity")"
fi