Repository navigation
Description
Daily Fro Bot Report — 2026-11-15 (UTC)
Run Summary
| Category | Status | Notes |
|---|---|---|
| Errored PRs | ✅ | From the remediation handoff for run 43690899321: no open PRs. Re-read in this run: still 0 open PRs; main head ca4aabe has a green Main CI 43691516798. |
| Security | Handoff: 0 Dependabot alerts, override-floor gate exits 0 on 9be739e. The 5 long-standing Scorecard posture alerts remain open (re-read here). No security PR to repair. |
|
| Control-Plane Integrity | ✅ | Handoff: every action SHA-pinned, top-level permissions: everywhere, strip-only lint passes, no guard changed. |
| Code Quality | Handoff: bootstrap, types and lint pass on 9be739e; local bun run test showed 15 failures that the handoff attributes to the isolate-agent sandbox, while Main CI is green on the same SHA. Treat the local test signal from isolated runs as unusable until the sandbox git-trust gap is fixed (item 5). |
|
| Oversight | All 41 confirmed-public repos re-scanned at ~07:50 UTC, no listing failures. 161 open PRs (138 aging, 87 stale), 95 stale issues, 4 unassigned bugs. Merge Data Branch is still blocked by its promotion leak gate. Gateway tracker drift unchanged: 3 claims behind live evidence. |
|
| Cross-Project Intelligence | ✅ | All 32 confirmed-public tracked repos re-scanned for .github/ and AGENTS.md changes since 06:00 UTC; coverage complete, nothing new to adopt. Earlier finding stands. |
| Progressive Improvement | ✅ | No tool more than a minor behind except TypeScript, held on purpose. 0 open learning proposals, 0 drafted-solutions PRs. CI complete. |
Attention: 5 items (2 awaiting you, 1 new today), no new tracking issues, nothing resolved. Remediation learnings: 1 staged for the wiki, 0 skipped.
Refreshed by dispatch run 43690899321 (branch
isolate-agent/opt-in, Remediate isolated). Supersedes the 06:02 content from scheduled run 43682281142. Updated in place instead of filing a second report for the same date.
Errored PRs
None. The remediation handoff found zero open PRs. Re-read in this run: 0 open PRs. Since the scheduled pass, main advanced to ca4aabe (#4250, docs only), and Main CI 43691516798 on it succeeded. No branch was repaired.
Security
- Dependabot: 0 open alerts.
bun scripts/check-override-floors.tsexits 0 on9be739e, per the handoff. - Code scanning: 5 open alerts, re-read in this run: 3 high, 1 medium, 1 low. All are Scorecard posture rules with no file location. Clearing them means changing settings or branch protection, which no automated fix may do.
- The katex (low) and minimatch (moderate) dev-only advisories noted this morning stay with Renovate; the handoff opened nothing for them.
- No security-update PR exists to repair.
Control-Plane Integrity
Per the handoff: 0 floating uses: refs across .github/workflows/*.yaml and .github/actions/**/action.yaml; every workflow declares top-level permissions: and none uses write-all; strip-only lint passes; wiki-authority, privacy gates and branch protection untouched. No PR opened.
Code Quality
Per the handoff, on a clean checkout of 9be739e: bun run bootstrap, check-types and lint pass. bun run test reported 15 failures in 5 files, all in git-subprocess or spawn-exit-code tests. Main CI 43681616030 is green on the same SHA, and the scheduled pass this morning (not isolated) reported 0 failures. I confirmed the git half of the mechanism in the agent's own source (see item 5); the exit-code half is the handoff's claim only. No code fix is warranted: the tests are right and must not be weakened.
Oversight
Scope and method
Listed the authenticated account's repositories (owner, collaborator, organization member; paginated) plus each organization's repositories, deduplicated, and checked each with gh repo view --json visibility. This report covers the 41 that returned PUBLIC. No listing call failed. Snapshot taken at about 07:50 UTC.
Definitions are unchanged: new issue = created in the last 24 hours; stale issue = open, no update for >30 days; aging PR = >7 days since creation; stale PR = >14 days since last update (updated_at covers commits, reviews, comments and state changes, and label edits too, so it can only undercount staleness); failing signal = latest default-branch run of an active workflow failed.
Totals: 21 new issues, 161 open PRs, 138 aging, 87 stale, 95 stale issues and 4 unassigned bugs. The stale-PR count rose from 80 because several Renovate PRs crossed the 14-day idle line since 05:53 (sparkle, tokentoilet, marcusrbrown.github.io, marcusrbrown.com).
Next step for every queue: triage new issues, clear the review or check gate on aging PRs, ask maintainers to refresh or close stale work, and assign and reproduce unassigned bugs. Routine dependency PRs belong to Renovate. Nothing was closed or labeled.
Top three hotspots
Score = distinct open findings: open PRs, new/stale/unassigned-bug issues, open alerts, failing signals. Ties broken by name.
| Rank | Repository | Findings | Linked finding / next step |
|---|---|---|---|
| 1 | marcusrbrown/extend-vscode | 120 | Start with the oldest critical/high alert (3 critical, 45 high). The Publish vulnerability gate is still the latest Publish run, failed 2026-11-14 16:20. Fix the dependency tree; don't bypass the gate. |
| 2 | marcusrbrown/sparkle | 120 | Start with the oldest critical/high alert. Then the 16 aging Renovate PRs, 15 now stale, which may already carry the fixes. |
| 3 | marcusrbrown/tokentoilet | 111 | Start with the oldest critical/high alert. 58 open PRs, 38 stale. Find the shared gate before reviewing them one by one. |
Issue and PR queues
Repos with no open PRs and no qualifying issues are left out.
| Repository | Open / aging PRs | Stale PRs >14d | New issues <24h | Stale issues >30d | Unassigned bugs |
|---|---|---|---|---|---|
bfra-me/.github |
None | None | None | 3 | None |
bfra-me/github-action |
3 open / 3 aging | #1463 (152d old / 151d idle), #1466 (151d old / 151d idle), #1467 (151d old / 142d idle) | None | 2 | None |
bfra-me/github-app |
4 open / 4 aging | #840 (152d old / 151d idle), #842 (151d old / 151d idle), #843 (151d old / 151d idle), #950 (67d old / 67d idle) | None | 2 | None |
bfra-me/ha-addon-repository |
5 open / 4 aging | None | None | 1 | #569 |
bfra-me/renovate-action |
2 open / 0 aging | None | #4081 | 2 | None |
bfra-me/renovate-config |
1 open / 1 aging | #1383 (248d old / 234d idle) | None | 2 | None |
bfra-me/works |
4 open / 3 aging | #5149 (30d old / 30d idle), #5245 (24d old / 24d idle) | #5501 | None | None |
fro-bot/.github |
None | None | #4249, #4242, #4236 | None | None |
fro-bot/agent |
None | None | #2214, #2211 | 1 | None |
fro-bot/dashboard |
6 open / 1 aging | None | #840 | 1 | None |
fro-bot/fro-bot.github.io |
None | None | None | 1 | None |
fro-bot/space-bus |
3 open / 2 aging | None | #253 | 2 | None |
fro-bot/systematic |
None | None | None | 2 | None |
marcusrbrown/.dotfiles |
None | None | #3181 | 2 | None |
marcusrbrown/.github |
None | None | None | 1 | None |
marcusrbrown/Presentations |
1 open / 1 aging | None | None | None | None |
marcusrbrown/containers |
3 open / 3 aging | #744 (92d old / 17d idle) | None | None | None |
marcusrbrown/dev-like |
None | None | None | 7 | None |
marcusrbrown/encode-2024-q3-grp14-jobseeker-ai |
2 open / 2 aging | #22 (761d old / 755d idle), #27 (756d old / 755d idle) | None | 1 | None |
marcusrbrown/esphome.life |
None | None | None | 2 | None |
marcusrbrown/extend-vscode |
None | None | None | 4 | None |
marcusrbrown/gala-chain-code |
3 open / 3 aging | #65 (990d old / 990d idle), #68 (990d old / 986d idle), #72 (985d old / 985d idle) | None | 1 | None |
marcusrbrown/gpt |
None | None | #2972 | 3 | #2907 |
marcusrbrown/ha-config |
2 open / 2 aging | None | None | None | None |
marcusrbrown/infra |
None | None | #1930 | None | None |
marcusrbrown/marcusrbrown |
5 open / 4 aging | #1095 (117d old / 110d idle), #1055 (130d old / 98d idle), #1100 (116d old / 69d idle), #1107 (113d old / 69d idle) | None | 4 | None |
marcusrbrown/marcusrbrown.com |
5 open / 5 aging | #608 (18d old / 18d idle), #606 (22d old / 14d idle) | None | 3 | #517, #465 |
marcusrbrown/marcusrbrown.github.io |
16 open / 16 aging | #454 (40d old / 40d idle), #456 (40d old / 40d idle), #440 (49d old / 21d idle), #460 (38d old / 21d idle), #486 (18d old / 18d idle), +1 more | #505 | 7 | None |
marcusrbrown/metacogs |
3 open / 1 aging | None | #104, #102 | None | None |
marcusrbrown/mothership |
4 open / 2 aging | None | #187 | 2 | None |
marcusrbrown/opencode-copilot-delegate |
5 open / 5 aging | #135 (183d old / 95d idle), #241 (145d old / 95d idle), #335 (105d old / 95d idle), #332 (106d old / 91d idle) | None | 1 | None |
marcusrbrown/panthea |
8 open / 7 aging | #256 (22d old / 22d idle), #257 (22d old / 22d idle) | #286 | None | None |
marcusrbrown/renovate-config |
None | None | None | 5 | None |
marcusrbrown/sparkle |
16 open / 16 aging | #2048 (66d old / 66d idle), #2069 (59d old / 57d idle), #2077 (55d old / 55d idle), #2082 (54d old / 54d idle), #2122 (40d old / 40d idle), +10 more | None | 5 | None |
marcusrbrown/systematic |
None | None | #1416, #1413 | None | None |
marcusrbrown/tokentoilet |
58 open / 51 aging | #1552 (46d old / 46d idle), #1559 (45d old / 45d idle), #1567 (44d old / 44d idle), #1573 (43d old / 43d idle), #1579 (42d old / 42d idle), +33 more | #1685 | 11 | None |
marcusrbrown/vbs |
2 open / 2 aging | None | #824 | 17 | None |
Security queues and source availability
Next step for every alert queue: confirm severity and reachability, reuse any existing security-update PR, and keep scanner guardrails on. Code-scanning counts can include Scorecard posture findings. "HTTP 404/403" or "not readable" means the source is not enabled or not readable with this token. That means unknown, not zero. No alert details are copied here.
Alert counts were re-read in this run for every public repo and match the 05:53 snapshot exactly.
Default-branch failure signals
- fro-bot/.github — Merge Data Branch: still the latest run, failed 2026-11-15 01:26 at step "Block private repo names in promotion diff". No run since. See Awaiting you, item 2.
- marcusrbrown/dev-like — Link Check: failed 2026-11-09. Next: read which links broke before retrying.
- marcusrbrown/extend-vscode — Publish: failed 2026-11-14 16:20 in its vulnerability scan. See hotspot 1.
- marcusrbrown/infra — Deploy Gateway (standalone): latest run failed 2026-11-07. Historical: the router delivered Gateway on 2026-11-14. Next: retire or repair the standalone route.
- marcusrbrown/marcusrbrown.github.io — Performance Testing: failed again 2026-11-15 03:40 (newer than the run cited this morning). Next: read the log before retrying.
- Router VPN job: infra job 132606204404 timed out on SSH at 2026-11-14 23:11, the third in a row. Later router runs are green because they deploy nothing. See Awaiting you, item 1.
- Cleared since this morning: fro-bot/agent — Auto Release now has a successful latest run (2026-11-15 05:20).
Program tracker: Gateway (review-only)
Tracker #3512 is unchanged since 2026-11-14 13:19 UTC; its latest tracker run 43598751886 succeeded and none has run since. Project 1 still shows 148 items (147 Done, 1 In Progress), matching the tracker's In Progress / blocked.
| Claim | Tracker / Project value | Latest evidence (re-read now) | Match |
|---|---|---|---|
| Agent release | latest v0.141.0, published, not promoted | v0.144.1, 2026-11-15 05:22 | ❌ three releases behind |
| Dashboard | 2026.11.19 via 43501317665 | 2026.11.20 deployed by 43675753397 (success) | ❌ deployed pair moved |
| Gateway | v0.138.0 rebuild via router 43503775217 | Newer router 43646739958 rebuilt and deployed Gateway; its VPN job failed | |
| Health contract | 1.15.0 | /operator/health returns 1.15.0 |
✅ |
| Latest successful router | 43595374194 | 43679688834 (05:07, deployed nothing) |
The dedicated tracker workflow owns the rewrite. I posted no tracker comment and edited no Project field.
Cross-Project Intelligence
Every entry in metadata/repos.yaml was checked: 32 confirmed-public tracked repos, each read for commits touching .github/ or AGENTS.md since 06:00 UTC (the scheduled pass covered the 24 hours before). No read failed; coverage is complete. No such commits landed, so there is nothing new to adopt.
The scheduled pass's finding stands: the upstream isolate-agent prerequisites (fro-bot/agent#2209, #2213, #2217) ship in the pinned v0.144.1. This dispatch adds first trial evidence: on isolate-agent/opt-in (37ea88f), Remediate ran isolated with persist-credentials: false on its checkout and the job succeeded. The cost showed up in its local test signal (item 5).
Progressive Improvement
- Tool versions in package.json, against the npm registry
latestdist-tag read in this run, major drift included:- ESLint 10.14.0 → 10.15.0: one minor, under the threshold.
- Prettier 3.10.0 → 3.10.1: patch.
- TypeScript 6.0.3 → 7.0.2: a major behind, held on purpose by the
<6.1.0hold.@typescript-eslint/parser8.72.2 still peerstypescript >=4.8.4 <6.1.0. Renovate owns lifting it. - Vitest 5.1.0: current.
- CI: main.yaml green on
ca4aabe. No required job missing or degraded. - Conventions: the handoff found no drift from
.github/copilot-instructions.md. - TODO/FIXME: nothing actionable. Only a synthetic fixture in check-private-leak.test.ts and this scan's own prompt text.
- Compounding: open
learning-proposalissues: 0. Opendocs/drafted-solutionsPRs: 0. #4250 merged three solution docs today. Nothing stalled; Improvement Metrics #3674 not used as evidence.
Remediation Learnings
Remediation learnings: 1 staged for the wiki, 0 skipped.
The one item (isolate-agent git trust in the sandbox) was checked against the agent's own v0.144.1 source rather than the run log: writeSandboxGitConfig writes safe.directory for the runner-owned checkout only into the fro-bot-sandbox account's own ~/.gitconfig. Staged on knowledge/wiki/repos/fro-bot--agent.md with a knowledge/log.md entry. The log-only details (exit codes, failure counts) were left out.
Needs Human Attention
Awaiting you
- Diagnose why the VPN deploy can't reach its host over SSH. Owner: you (@marcusrbrown). Observed. First seen 2026-11-13.
- Evidence, re-read: the router's
deploy-vpnjob timed out on SSH three times in a row, latest job 132606204404 (2026-11-14 23:11), after 132156186313 and 131612947330. infra#1906 is open. - Step: from an authorized workstation, confirm the instance is running, SSH reaches it, and the firewall/source allowlist admits the runner (
docs/runbooks/vpn-egress-box.mdin infra). Then re-dispatch and confirmdeploy-vpnpasses its WireGuard health gate. - Don't rotate keys, reprovision or change environment secrets without a separate decision.
- Evidence, re-read: the router's
key: marcusrbrown/infra#1906 — vpn-deploy-ssh-timeout
- Clear the promotion leak-gate block on
Merge Data Branch. Owner: you (@marcusrbrown). Observed. First seen 2026-11-15.- Evidence, re-read: run 43663083818 is still the latest; job
Merge data into mainfailed at "Block private repo names in promotion diff". The 2026-11-14 run 43543306120 passed. No promotion PR is open. - Step: open the failed step's log and note the matched file; resolve the redacted token locally with the lookup the gate prints; correct the entry on
datathrough the established writers (never hand-editmain); re-dispatchmerge-data.yaml. - Don't weaken or bypass the gate. Verify: the
--promotionstep reports no match and the promotion PR opens. - Also check which writer let the entry onto
data; the wiki-presence gate should have caught it first.
- Evidence, re-read: run 43663083818 is still the latest; job
key: fro-bot/.github/.github/workflows/merge-data.yaml — promotion-leak-gate-block
Other attention
- Escalated to #4226: exercise the survey page-conflict recovery path. Owner: @marcusrbrown. First seen 2026-11-12. No survey has run since 43681628468; the path is still unexercised.
key: fro-bot/.github/.github/workflows/survey-repo.yaml — survey-conflict-retry-validation
- Tracked in #4236, which you filed: hold
isolate-agentuntil the prerequisites land. Owner: @marcusrbrown. First seen 2026-11-13. Refreshed: the upstream prerequisites are in the pinned v0.144.1, and this dispatch trialed the flag on Remediate fromisolate-agent/opt-inwithpersist-credentials: falseon that checkout; the job succeeded. Onmain, both agent checkouts still persist credentials. Close condition is yours.
key: fro-bot/.github/.github/workflows/fro-bot.yaml — isolate-agent-adoption
- Make the sandbox's checkout trust survive a changed
HOME. Owner: @marcusrbrown (fro-bot/agent). Observed in source; impact inferred from the handoff. First seen 2026-11-15.- Root cause: in fro-bot/agent v0.144.1,
writeSandboxGitConfigaddssafe.directoryfor the runner-owned checkout to~/.gitconfigof thefro-bot-sandboxaccount only. Any git process the agent starts with its ownHOMEorGIT_CONFIG_GLOBAL(test suites that isolate git do exactly that) loses the entry and refuses the checkout as dubious ownership. The handoff reported 15 local test failures from this and a related spawn exit-code difference, with Main CI green on the same SHA. - Smallest safe fix (in fro-bot/agent, not here): add a
safe.directoryentry for exactly the workspace path at system level (git config --system, i.e./etc/gitconfig) during prepare, and remove it at take-back. Environment-based config (GIT_CONFIG_COUNT,GIT_CONFIG_SYSTEM) is not enough: tests that replace the environment wholesale drop it too. Separately, find why spawned commands exit 126 rather than 127 under the read-only mount view. - Don't weaken or skip the fro-bot/.github tests to suit the sandbox, and don't use
safe.directory=*. - Verify: run
bun run teston fro-bot/.githubmaininside an isolated step and expect 0 failures.
- Root cause: in fro-bot/agent v0.144.1,
key: fro-bot/agent — isolate-agent-sandbox-git-trust
Re-checked before publishing (~07:55 UTC):
- infra#1906 is open and the VPN job's latest attempt timed out.
Merge Data Branchhas no run newer than the failed one.- Exercise the survey page-conflict recovery path in production #4226 and Hold
isolate-agenton the scheduled agent jobs until the upstream rollout prerequisites land #4236 are open. - Escalation: items 1 and 2 are "Awaiting you"; item 3 is already Exercise the survey page-conflict recovery path in production #4226; item 4 is tracked by your Hold
isolate-agenton the scheduled agent jobs until the upstream rollout prerequisites land #4236; item 5 is new today. No tracking issue filed, none closed (Exercise the survey page-conflict recovery path in production #4226's path is still unexercised; #4164 was already closed).
I did not branch, commit, push, open a PR, change labels on existing issues, or edit metadata or the index. The working tree arrived already carrying data-branch wiki/metadata changes; I left those untouched and added only the fro-bot--agent.md section and one log entry.
Run 43690899321 · Earlier run today 43682281142 · Previous report #4227
Activity
fro-bot commentedon Nov 15, 2026
Remediation handoff — 2026-11-15 (UTC)
https://github.com/fro-bot/.github/actions/runs/43690899321
Nothing to heal today. No branches pushed and no PRs opened. Each category is below.
Errored PRs
None. There are zero open PRs in the repository, so no check runs or legacy commit statuses needed review.
Security
bun scripts/check-override-floors.tson a clean checkout ofmain(9be739e) exits 0, sofix/security-override-floorsis not needed.peter-murray/workflow-application-token-actionto v2 #7, Upliftsync-settingsworkflow #9). All are OpenSSF Scorecard posture findings (BranchProtection, CIIBestPractices, CodeReview, Fuzzing, Vulnerabilities) from 2024–2025 with no file location. None is a dependency advisory and none can be fixed with a code change.Control-plane integrity
uses:in.github/workflows/*.yamland.github/actions/**/action.yamlis pinned as@<sha> # vX.Y.Z. Found 0 floating refs.permissions:. The workflows that requestcontents: writeare the known writers for thedatabranch, releases and drafts. Nowrite-all.bun run lint(erasable-syntax rule) passes onmain.Code quality
On a clean checkout of
main(9be739e):bun run bootstrapbun run check-typesbun run lintbun run testmain.yamlis green on the same SHA.Needs Human Attention
isolate-agentsandbox makes localbun run testfail (relates to Holdisolate-agenton the scheduled agent jobs until the upstream rollout prerequisites land #4236). This run came fromisolate-agent/opt-in. The agent runs asfro-bot-sandbox, but the checkout is owned byrunner. As a result, 15 tests fail only inside the sandbox:packages/ci-checks/src/mutation-shard.test.ts,packages/knowledge/src/drafted-solutions-handoff-build.test.ts,packages/reports/src/improvement-metrics-detect.test.tsandscripts/worktree-exclusions.test.ts.packages/wiki-ops/src/route-stderr.test.ts, spawned commands exit 126 (permission denied) where the tests expect 127 (not found), and the tests that checkGITHUB_OUTPUTget empty output.The code is not at fault, and the tests must not be weakened to suit the sandbox. Smallest safe fix: in the sandbox setup in
fro-bot/agent, either give the sandbox user write access to the checkout, or setsafe.directoryin the system-level git config so it applies even when a test overrides HOME. Also let it exec workspace binaries. Until then, Remediate cannot use localbun run testas a signal underisolate-agent. Verify: runbun run testonmaininside the sandbox and expect 0 failures.Learnings for the wiki
isolate-agent, the agent runs asfro-bot-sandboxagainst a checkout owned byrunner. In that setup, git calls from tests with their own environment fail withdubious ownership, and spawned commands exit 126 (permission denied) instead of 127 (not found). That produces 15 false failures inbun run testwhilemain.yamlstays green on the same SHA. Evidence: https://github.com/fro-bot/.github/actions/runs/43690899321. Page:knowledge/wiki/repos/fro-bot--agent.md.fro-bot commentedon Nov 15, 2026
Observe pass for dispatch run 43690899321 is done. I rewrote the report body in place rather than opening a second report for the same date.
What changed since the 06:02 scheduled content:
isolate-agent/opt-inand the job succeeded. Its localbun run test, though, went red while Main CI stayed green. The git half of the cause is visible in fro-bot/agent v0.144.1: the sandbox trusts the runner-owned checkout only through its own~/.gitconfig, so any test that brings its ownHOMEloses that trust. New item 5,key: fro-bot/agent — isolate-agent-sandbox-git-trust.knowledge/wiki/repos/fro-bot--agent.mdplus oneknowledge/log.mdentry, waiting in the tree for trusted ingest.Merge Data Branchis still blocked by the leak gate. Gateway tracker drift is unchanged.No tracking issues filed or closed. No branches, commits, PRs, label edits, or metadata/index writes.