CodeIssuesDiscussionsWikiPull RequestsProjectsCommitsActionsReleasesContributorsPulse● GatesSecuritySettingsDeploymentsPipelineInsightsAgents✨ Explain✨ Ask AI✨ Workspace✨ Spec✨ Tests▓ Debt Map✨ NL Search🏛 Archaeology
Blame · Line-by-line history
STATUS.md
Each line is annotated with the commit that last touched it. Click any SHA to jump to that commit and see the surrounding change.
| f0d13f9 | 1 | # Gluecron Status — 2026-07-17 |
| 2 | ||
| 3 | Single current source of truth for "what's actually shipped, what's actually | |
| 4 | open, what to read next." Supersedes `ROADMAP.md`, `CHANGELOG.md`, and the | |
| 5 | `AUDIT-2026-*.md` chain — those are now redirect stubs pointing here. Update | |
| 6 | this file, not those, when state changes. | |
| 7 | ||
| 8 | `BUILD_BIBLE.md` §4 (LOCKED BLOCKS) remains the authoritative owner-sign-off | |
| 9 | gate on renaming/altering shipped code — that mechanism isn't moved here. | |
| 10 | Its *content* (the actual locked-file list) is last known to be a full | |
| 11 | audit pass behind current `main` (see "Known documentation debt" below) — | |
| 12 | treat any specific file:line claim in it as unverified until re-audited, | |
| 13 | not as settled fact. | |
| 14 | ||
| 15 | ## What changed this session (2026-07-16/17) | |
| 16 | ||
| 17 | All items below are merged to `main` and pushed to the canonical remote | |
| 18 | (`gluecron.com/ccantynz/Gluecron.com.git`), verified per their own | |
| 19 | inline test/build evidence — not just written. | |
| 20 | ||
| 21 | 1. **Push-time secret scanning, CODEOWNERS merge enforcement, PR-workflow | |
| 22 | sync wiring, autorepair/branch-protection fixes** — 5-piece hardening | |
| 23 | batch, 29 dedicated tests green. | |
| 24 | 2. **`agent-journey.ts` self-healing** — orphaned probe-repo cleanup now | |
| 25 | sweeps stale `journey-*` repos at the start of every run, so a killed | |
| 26 | process no longer leaves permanent leftovers. | |
| 27 | 3. **Repo-settings and account-settings navigation** — `RepoNav` was | |
| 28 | missing its "Settings" tab entirely (type union had it, no `<a>` | |
| 29 | rendered it), orphaning the whole settings tree (mirrors, dep updater, | |
| 30 | webhooks, collaborators, environments, pages, workflow secrets, | |
| 31 | protected tags, rulesets, automation, audit log) behind the Cmd-K | |
| 32 | palette. Fixed, plus two adjacent bugs found during the fix: | |
| 33 | `dep-updater.tsx` was rendering the wrong nav component entirely | |
| 34 | (`IssueNav` instead of `RepoNav`), and the `/settings` index page | |
| 35 | itself had no top nav. Account settings had the identical shape — | |
| 36 | `SettingsSubnav` only listed 4 of 11 pages; extended to cover | |
| 37 | 2FA/passkeys/signing-keys/sessions/integrations. | |
| 38 | 4. **`fireWebhooks()` wired into 19 real call sites** (was 0) — the | |
| 39 | webhook feature was fully built (retry/dead-letter queue, live | |
| 40 | "last delivery" UI) but no push/issue/PR/star event anywhere in the | |
| 41 | codebase ever called it, on either the web routes *or* the 8 MCP | |
| 42 | write tools (`gluecron_create_pr`, `gluecron_merge_pr`, etc., which | |
| 43 | have their own independent implementations). Verified live end-to-end | |
| 44 | against production via `scripts/agent-journey.ts` — a probe webhook | |
| 45 | pointed at `/healthz` now records a real delivery attempt after a | |
| 46 | real MCP-driven PR create + merge. | |
| 47 | 5. **AI security gate no longer silently reports "clean" on a provider | |
| 48 | error** — `aiSecurityScan()` returned `[]` on any Anthropic API error | |
| 49 | (timeout, rate limit, unparseable response), identical to a genuine | |
| 50 | zero-finding scan; `gate.ts` then reported "No security issues found" | |
| 51 | either way. Added `aiSecurityScanSafe()` distinguishing the two states, | |
| 52 | mirroring the `runGateTestScan` skip-not-silently-pass precedent | |
| 53 | (commit `6930df0`) already established for the GateTest gate. | |
| 54 | 6. **Dead webhook deliveries now alert the owner** — a delivery that | |
| 55 | exhausts all retries (or is blocked by the SSRF guard) previously only | |
| 56 | logged to `console.error`. Now sends an in-app notification | |
| 57 | (`integration_dead` kind) linking back to the webhook's settings page. | |
| 58 | ||
| 4fc7860 | 59 | ## Production certification (2026-07-17) |
| 60 | ||
| 61 | 1. **Full authenticated `doctor.ts` sweep is ALL GREEN** — ran sections | |
| 62 | a–e in `--full` mode against `https://gluecron.com` with a real admin | |
| 63 | PAT. The sweep found and fixed one real bug in the read-only tool matrix: | |
| 64 | `gluecron_pr_status_summary` was called with only `{owner,repo}`, but it | |
| 65 | summarizes one specific PR and requires a PR number. The doctor now | |
| 66 | resolves a live PR number through `gluecron_list_prs` first and skips | |
| 67 | gracefully when no PR exists. | |
| 68 | 2. **Full `agent-journey.ts` write-path certification is GREEN with one | |
| 69 | warning** — push, branch, PR, comment, merge, webhook delivery, and | |
| 70 | cleanup all passed against production. No AI-review comment appeared on | |
| 71 | the test PR within 90 seconds; per the script, this means AI review may | |
| 72 | legitimately be disabled or `ANTHROPIC_API_KEY` may be unset. Human | |
| 73 | confirmation is still required (see the top open item below). | |
| 74 | ||
| f0d13f9 | 75 | ## Known open items (not closed this session) |
| 76 | ||
| 4fc7860 | 77 | - **TOP PRIORITY — confirm production AI-review configuration** — the |
| 78 | full write-path certification produced its sole WARN because no AI-review | |
| 79 | comment appeared within 90 seconds. Check `/admin/env-health` or the | |
| 80 | production box's `.env` directly to establish whether AI review is | |
| 81 | intentionally disabled or `ANTHROPIC_API_KEY` is unset. The old, now- | |
| 82 | archived `ROADMAP.md` called out this exact environment variable as a | |
| 83 | blocker back in May; this remains open until a human confirms the live | |
| 84 | configuration. | |
| f0d13f9 | 85 | - **Offsite backup not armed** — daily Neon dump + weekly restore drill |
| 86 | run fine on the VPS, but dumps only live on the box itself | |
| 87 | (`BACKUP_SCP_TARGET` unset). Gates Cutover Runbook Phase 4. | |
| 88 | - **GateTest defaults off for new repos** (migration `0112`) — a | |
| 89 | deliberate, documented decision (commit `6930df0`: "hasn't proven | |
| 90 | reliable enough to be a required-by-default external dependency yet"), | |
| 91 | not a bug. Revisit once a concrete reliability bar is defined and met. | |
| 92 | - **Legal pages** (`legal/TERMS.md`, `PRIVACY.md`, `AUP.md`, `DPA.md`) | |
| 93 | drafted but awaiting attorney sign-off; DMCA agent placeholder unfilled. | |
| 94 | - **Penetration test** — not started, intentionally on hold pending a | |
| 95 | signed Rules-of-Engagement / authorization document (attorney-gated, | |
| 96 | separate from the legal-pages thread above). | |
| 97 | ||
| 98 | ## Known documentation debt | |
| 99 | ||
| 100 | `BUILD_BIBLE.md` claims (as of its last real update, 2026-06-13) that | |
| 101 | Blocks A–M are all shipped, including the last month's actual work — | |
| 102 | it wasn't touched during that month despite real commits landing. Its | |
| 103 | §4 locked-blocks list should be treated as stale evidence, not settled | |
| 104 | fact, until someone re-audits it against current `main`. That re-audit | |
| 105 | is a bigger job than this pass and is explicitly not done here — flagged, | |
| 106 | not fixed. | |
| 107 | ||
| 108 | ## Where to look | |
| 109 | ||
| 110 | - **This file** — current state, updated as things ship. | |
| 111 | - **`BUILD_BIBLE.md`** — locked-file sign-off gate (mechanism still | |
| 112 | authoritative; content stale, see above) and historical block plan. | |
| 113 | - **`scripts/doctor.ts` / `scripts/agent-journey.ts`** — the actual | |
| 114 | live-verification tools. Run them against `https://gluecron.com` with | |
| 115 | a fresh `GLUECRON_PAT` (from `/settings/tokens`) rather than trusting | |
| 116 | any document's claim about production behavior. |