#!/usr/bin/env bash # Everything after a build, identically for every app: tokens, live suite, # Astra review, one fix round, re-review, a security-only round if the # re-review still finds security problems (then a final review, record # only), and Fable's blind readability score. # builders/post-build.sh set -uo pipefail slug=$1 repo=$(cd "$(dirname "$0")/.." && pwd) cd "$repo" app="$repo/.worktrees/$slug/apps/$slug" status=$(head -1 "$app/STATUS.md" 2>/dev/null || echo "BLOCKED no STATUS.md written") bakeoff tokens --slug "$slug" --phase build lang=$(cd harness && go run ./cmd/language "$slug") case $status in LIVE*) ;; *) bakeoff record --slug "$slug" --language "$lang" --status "$status"; echo "$slug: $status"; exit 0 ;; esac read -r _ url version <<<"$status" bakeoff record --slug "$slug" --language "$lang" --status LIVE --app-url "$url" --version "$version" suite() { scripts/test-app.sh "$url" "$TMPDIR/$slug-suite.json" >/dev/null 2>&1; bakeoff behaviour --slug "$slug" --file "$TMPDIR/$slug-suite.json"; rm -f "$TMPDIR/$slug-suite.json"; } suite builders/run-review.sh "$slug" 1 if [ "$(tr -d '[:space:]' < "builders/reviews/$slug.1.md")" != "Nofindings." ]; then builders/run-fix.sh "$slug" fix "builders/reviews/$slug.1.md" bakeoff tokens --slug "$slug" --phase fix fi builders/run-review.sh "$slug" 2 last=2 if ! bakeoff findings --slug "$slug" --file "builders/reviews/$slug.2.md"; then builders/security-findings.py "builders/reviews/$slug.2.md" > "$TMPDIR/$slug.security.md" [ -s "$TMPDIR/$slug.security.md" ] || { echo "$slug: could not extract security findings" >&2; exit 1; } builders/run-fix.sh "$slug" security "$TMPDIR/$slug.security.md" rm -f "$TMPDIR/$slug.security.md" bakeoff tokens --slug "$slug" --phase security builders/run-review.sh "$slug" 3 last=3 bakeoff findings --slug "$slug" --file "builders/reviews/$slug.3.md" fi bakeoff tokens --slug "$slug" --phase review status=$(head -1 "$app/STATUS.md") read -r _ url version <<<"$status" bakeoff record --slug "$slug" --version "$version" suite APP_DIR="$app" builders/run-readability.sh "$slug" echo "$slug: post-build done (reviews: $last)"