Add safe Ralph tick placeholder
Adds a minimal safe .ralph/tick.sh that fetches issues/PRs and logs counts to avoid missing-script errors during monitoring.\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Juan Manuel Servera committed
Jun 10, 2026 at 13:36 UTC
0961c46037d225c789f85ca00cbfaa77f6296aa6
3 files changed
+51
.ralph/tick.sh
new
+24
@@ -0,0 +1,24 @@
1
+#!/usr/bin/env bash
2
+# Minimal safe Ralph tick placeholder for SquadScope
3
+set -euo pipefail
4
+cd "$(dirname "$0")/.." || exit 1
5
+STATE_DIR=".ralph"
6
+mkdir -p "$STATE_DIR"
7
+LOG="$STATE_DIR/tick_run.log"
8
+NOW_ISO=$(date -u +%Y-%m-%dT%H:%M:%SZ)
9
+echo "[$NOW_ISO] Safe tick start" >> "$LOG"
10
+REPO="jmservera/SquadScope"
11
+# Fetch issues and PRs safely; if API returns empty, write empty JSON array
12
+if ! gh issue list --repo "$REPO" --state open --limit 200 --json number,title,labels,assignees,updatedAt,url > "$STATE_DIR/issues.json" 2>"$STATE_DIR/gh_issues_err.log"; then
13
+ echo "[]" > "$STATE_DIR/issues.json"
14
+fi
15
+if ! gh pr list --repo "$REPO" --state open --limit 200 --json number,title,files,labels,assignees,updatedAt,url,mergeable,mergeStateStatus,reviewDecision,author > "$STATE_DIR/prs.json" 2>"$STATE_DIR/gh_prs_err.log"; then
16
+ echo "[]" > "$STATE_DIR/prs.json"
17
+fi
18
+# Write a brief summary to tick log
19
+ISSUES_COUNT=$(jq 'length' "$STATE_DIR/issues.json" 2>/dev/null || echo 0)
20
+PRS_COUNT=$(jq 'length' "$STATE_DIR/prs.json" 2>/dev/null || echo 0)
21
+echo "[$NOW_ISO] Fetched issues: ${ISSUES_COUNT}, PRs: ${PRS_COUNT}" >> "$LOG"
22
+# No further actions here; the squad loop or coordinator will process these files.
23
+echo "[$NOW_ISO] Safe tick end" >> "$LOG"
24
+exit 0
.squad/decisions/inbox/coord-submission-checklist-2026-06-10T10-27-49Z.md
new
+14
@@ -0,0 +1,14 @@
1
+### 2026-06-10T10:27:49.647+00:00: Tick / Checklist
2
+**By:** squadscope (automated)
3
+**What:**
4
+- Verify Podcaster HTTP API contract (request fields, response schema: job_id, status, errors)
5
+- Confirm authentication header name and allowed secret storage (PODCASTER_API_KEY usage)
6
+- Document accepted status values and retry semantics for non-2xx responses
7
+- Normalize publish manifest field names (freshness_status vs freshness, artifact_url vs url)
8
+- Provide example request/response JSON and canonical endpoint URL(s)
9
+- Confirm dry_run semantics and non-blocking handoff behavior
10
+
11
+**Next steps:**
12
+1. Author or attach a concise API contract doc (podcaster-api.md) with request/response schemas and examples.
13
+2. Update pipeline docs to reference the API contract and required Actions secret names (PODCASTER_ENDPOINT, PODCASTER_API_KEY).
14
+3. Add integration smoke test instructions and an operator checklist for manual runs.
.squad/decisions/inbox/tick-2026-06-10T10-27-49Z-initial.md
new
+13
@@ -0,0 +1,13 @@
1
+### 2026-06-10T10:27:49.647+00:00: Tick / Checklist
2
+**By:** squadscope (automated)
3
+**What:**
4
+- Listed open PRs and inspected PR #314
5
+- Ran full test suite on main (696 passed)
6
+- Checked out PR #314 and ran its tests (9 passed)
7
+- Created podcaster submission checklist and opened PR #363
8
+- Verified ralph loop activity via ralph_squadscope.log
9
+
10
+**Next steps:**
11
+1. Monitor PR #314 review threads and surface unresolved threads.
12
+2. Request API contract doc from Podcaster (if missing) and attach to checklist PR.
13
+3. Run periodic ticks every 20 minutes and append summary.