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.