Backlog – PivotNReboot

PivotNReboot
One index · three sources · generated – never hand-typed. Sprint: Supa Sprint 2 · Health: ON TRACK · Agent data: Drive (canonical) · 2026-07-18T12:43:42-07:00
49Agent tasks
46Tech-debt items
92Product items
Key to labels on this boardSprint = the current 2-week work cycleBacklog = the ordered list of all upcoming workTD-### = Technical Debt item (engineering cleanup)Epic = a group of related product itemsStatus: In Progress, QA, Blocked, Done
Agents: OSCAR orchestrator, HUNTER jobs, LYRA content, WENDY website, KAT files, BOB memory, QUINN quality
⚠ Blockers for Greg

  • Trademark + copyright the PivotNReboot brand
  • Supabase service_role key not yet rotated at provider
  • TEN THINGS #10: HUNTER pipeline audit – why no interviews

1 · Agent Execution

Live who’s-doing-what – source: task_status.json (Drive canonical)

Backlog 15

OSCAR
Inter-product comms – Layer 2 adapters P2
TD-023: Layer 1 git auto-sync done; cross-surface adapters open | DEMOTED by WIP cap (3/agent) – OSCAR had 5 running at once. Not cancelled; requeued.
OSCAR
Universal Control Plane product architecture P1
AOS licensable product: schema->Claude/ChatGPT/Grok compiler + governance
OSCAR
LinkedIn connections parser (network intelligence) P1
Parse Connections.csv (2,335 contacts) -> company->[name,role] for outreach routing
HUNTER
Inbox job-posting reader -> auto-feed HUNTER P1
Parse Gmail job-alert/recruiter mail; target 2-3 jobs/day
HUNTER
Multi-channel outreach drafts (Gmail + LinkedIn) P1
Deep research + network lookup -> draft intro-ask + Gmail draft, queued for Greg
HUNTER
Self-report logging + job-scraper scope P2
Let Greg log 'I did X' into the tracker; HUNTER to propose scraper scope
OSCAR
Cross-surface skill portability P2
Every skill callable from any Claude surface; needs a design pass
WENDY
Build /quick-add backlog-dump skill P3
Title+priority -> auto-creates task, fans out to LYRA + WENDY; no gates
KAT
Universal self-healing Google Drive skill P3
Portable least-privilege Drive read/write/search for ChatGPT/Gemini/others
OSCAR
Chrome enterprise policy blocks all site navigation for claude-in-chrome P1
chrome://policy on Greg's connected Chrome profile blocks navigation to drive.google.com, pivotnreboot.com, everything tested tonight (2026-07-15). Not a login/access gap – browser-level policy enforcement, cannot be bypassed via 'already logged in' or incognito. Fix needs Greg to check chrome://policy and remove/adjust the policy, OR use a different unmanaged browser profile for claude-in-chrome. Blocking: any browser-automation task on this Mac.
WENDY
/board/ regenerated as LIVE board (was static snapshot) P2
Same media-26 data source as /dashboard – one canonical feed, all boards realtime | DEMOTED by WIP cap (3/agent) – WENDY had 4 running at once. Not cancelled; requeued.
WENDY
Daily Learnings roll-call dashboard (each agent: what I learned today) P2
Greg idea 2026-07-17: a daily board where every agent reports what it learned + what knowledge it's accumulating. Source = qa/qa_lessons.jsonl (already accumulates every correction) + per-agent knowledge. WENDY designs the display; LYRA turns each agent's entry into a per-agent build-in-public post. Ties the memory/learning work into something visible.
OSCAR
Channel-prime block + blank-channel awareness test P1
Greg idea 2026-07-18: a standard 'prime' that brings any fresh channel to baseline awareness (connectivity via /connectivity, roster, live sprint/backlog + agent activity) and a blank-channel TEST that probes 4 awareness questions (how do we deploy .cloud / what sprint+blockers / what are agents doing / can you reach the brain) scoring answered-from-loaded vs re-derived. RED-TEAM (OSCAR): storage!=retrieval – the real fix is a consult-trigger (load /connectivity before any external action) + QA-QUINN blocking uncited connectivity actions + supersede-not-append discipline. Static awareness primeable now (paste block / repo); live cross-LLM awareness gated on Supabase brain. Align to Greg's ChatGPT agent-block template (Greg to share).
OSCAR
TEN THINGS #5: OSCAR orchestrating agents + control plane on all 3 LLMs P1
Unblock kit built; tier-3 (Supabase/cross-LLM bootstrap) pending. Same blocker as #9. | RECONCILED 2026-07-18: recovered from a diverged mirror that the repo copy never had. | DEMOTED by WIP cap (3/agent) – OSCAR had 5 running at once. Not cancelled; requeued.
OSCAR
TEN THINGS: tier-3 cross-LLM control plane (unblocks #5 and #9) P1
The single build that 3 of the 4 open TEN THINGS items are all waiting on. Supabase brain as shared peer store so ChatGPT/Gemini stop needing Greg to copy-paste. | RECONCILED 2026-07-18: recovered from a diverged mirror that the repo copy never had.

In Progress 12

OSCAR
Plaintext secrets revoked + quarantined P1
QUINN AUDIT 07-16: demoted from completed. Secrets quarantined locally (CREDENTIAL_MAP/RECOVERY docs confirm); Google-side token revocation UNVERIFIED – needs read-back on the provider console. Pairs with SS2-B04.
HUNTER
Advance job pipeline -> income P0
Metrix follow-up drafted ($150k/yr confirmed); Beacon Hill/SitusAMC apply; fresh roles cast
WENDY
Sell the AI Parachute – get the funnel converting P0
P0 funnel conversion work
LYRA
Build-in-public lead-gen content P0
P0 content supporting the funnel + job search
QA-QUINN
Curate inbox -> buckets (memory plane) P2
2,473 raw inbox rows to curate; only curated exposed to keyless surfaces
KAT
Agent-brain / Drive consolidation P2
De-fragment brain homes + folder/dup cleanup; delete steps Greg-gated
OSCAR
6 conflicted PRs need manual rebase P1
TD-022: 6 squash-merged; 6 conflicted (OSCAR/agent cluster) need read+resolve
OSCAR
Drive -> Supabase dual-write (decided, exec pending) P1
Shared-store decision made; wiring pending
WENDY
Verify the unattributed production footer edit P2
RECLASSIFIED (QA-QUINN 07-18): NOT Greg-only – it's an investigation. Pull wp-admin revision history via cookie+nonce (same access that deployed .cloud) to see who changed footer getstarted@->info@. TD-029: getstarted@->info@ on prod, no run-record author; check wp-admin revision history
KAT
Drive folder renames (trailing-space / double-dash) P2
RECLASSIFIED (QA-QUINN 07-18): 'MCP cannot rename' is obsolete – KAT rename script + Mac Drive reference can rename (non-destructive). Read-back-prove before done. TD-001/002/003: MCP cannot rename folders; human rename in Drive UI
WENDY
Memory board live at pivotnreboot.cloud/dashboard/memory P1
Reads Supabase brain curated bucket via public anon key (RLS-scoped, Greg ruling 2026-07-13); inbox lock re-tested on every refresh
KAT
TEN THINGS #9: Authority/execution contract stored on every surface P1
Tiers 1-2 done (Claude + GitHub); tier-3 ChatGPT/Gemini needs the Supabase load. Same blocker as #5. | RECONCILED 2026-07-18: recovered from a diverged mirror that the repo copy never had.

QA 1

OSCAR
Canonical state resync 2026-07-14 P2
task_status.json unfrozen + board regenerated; awaiting QA-QUINN two-gate verification before Done

Blocked 3

GREG
Trademark + copyright the PivotNReboot brand P1
TD-031, Greg's #1 ownership priority; research prepped, only Greg can file (USPTO + copyright.gov)
GREG
Supabase service_role key not yet rotated at provider P1
EVIDENCE CLOSED 07-16 (OSCAR JWT decode + KAT full-vault sweep + TD-027 + 07-12/07-13 standups, all agree): key NEVER rotated at provider – vaulted key is the ORIGINAL mint (iat 2026-07-10T19:06:29Z, same second as anon). The 'rotation' Greg was told about = WP password rotation 07-11 + vault-passphrase rotation (different things). sbp_ management PAT exists in NO vault (index doc corrected). NEXT: Greg mints sbp_ PAT (Supabase dashboard -> Account -> Access Tokens) -> straight into vault flow -> agent runs supervised rotation.
HUNTER
TEN THINGS #10: HUNTER pipeline audit – why no interviews P1
Prior run FABRICATED an NVIDIA entry. Needs re-run on a real Gmail surface before any output is trusted. hunter.jobsearch launchd job is DISABLED pending Greg's call. | RECONCILED 2026-07-18: recovered from a diverged mirror that the repo copy never had.

Done 18

WENDY
Internal dashboards live + hidden on /dashboards P2
Dashboards render (verified live 07-16). QUINN note-fix: real page inventory = dashboards(22)/mission-control(24)/board(14)/dashboard(27)/memory(28) – old IDs 44/45/47 were wrong.
BOB
Shared brain live – retrieval proven, Greg signed off P1
PENDING[9]: decrypt 219, 3/3 queries; brain ~6,539 total / ~2,410 curated
OSCAR
Session auto-capture + auto-recall hooks P2
COMPLETE for real 07-16 8:10 PM PDT (Greg 'go'): SessionStart->session_recall.sh + Stop->autosync.sh registered in ~/.claude/settings.json alongside SessionEnd capture. Both pipe-tested (recall returns brain context incl. tonight's ID legend; autosync commits+soft-fails push honestly) + jq schema-validated. Live from next session start.
BOB
ChatGPT + Gemini recall wired (anon key, read-only) P2
Curated bucket anon-readable; raw transcripts stay service-role locked (TD-019)
WENDY
/about rebuilt on pivotnreboot.com – fabricated testimonials removed P0
Two-column Founder|Community, read-back proven live
WENDY
.cloud staging access restored + credential vaulted/rotated P3
Cookie-auth workaround (TD-030); header-strip logged
HUNTER
Enterprise target list x10 built P2
Internal, Greg curates. QUINN path-fix: list lives at ~/Projects/pivotnreboot-revenue-engine/outreach/2026-07-10_enterprise-targets.md (exactly 10 targets, verified).
QA-QUINN
QA-QUINN 9-stage pipeline + dashboard-deploy QA doc P1
QA-QUINN_CONTRACT.md crystallized + docs/qa/QA-QUINN-INTERNAL-DASHBOARD-DEPLOY.md
OSCAR
ARIA retired; calendar/email-triage/morning-briefing folded into OSCAR P1
ARIA retired (confirmed _retired/aria.md). QUINN note-fix: executive-assistant duties (mail triage/calendar/PA) absorbed by KAT per oscar.md GAP-CLOSED 2026-07-12; Parker->OSCAR, Mara->LYRA.
BOB
Full transcript mine staged + secrets redacted P2
QUINN note-fix to observed reality: 2,301 transcript + 148 auto-memory staged, 22 secrets redacted (was misreported 1,993/318/18).
HUNTER
Toptal T2 presentation – SUBMITTED, interview rescheduled to 1:00 PM PDT P0
Interview COMPLETED & PASSED (Greg, 2026-07-18). Deck submitted 2026-07-15 (ABC_Health_Toptal_Presentation.pptx, 15 slides). Screener Alvaro requested 2hr push; Greg confirmed via sent email 11:04 AM PDT. Interview now 1:00-2:00 PM PDT. Next: rehearsal + Zoom/notetaker check.
GREG
Universal memory token – FIXED, awaiting sign-off P1
CLOSED by Greg sign-off 2026-07-16 8:2x PM PDT. BOB end-to-end proof same evening: gateway 200 with token / 401 without, semantic search live, 2,416 brain rows behind it, all memory-plane paths resolve. Token = AGENTMEMORY_GATEWAY_TOKEN (env-only, never in repo), consumed by n8n gateway + ChatGPT + Gemini.
OSCAR
Live Mission Control dashboard shipped – pivotnreboot.cloud/dashboard P1
Realtime 60s poll off canonical task_status; WENDY deploy via TD-030 cookie path; data vehicle media 26 alt_text (host blocks non-image uploads); QA-QUINN PASS w/ flags 2026-07-16
OSCAR
Autonomous board-feed sync – vault boundary closed P1
launchd com.pivotnreboot.dashboard-feed-sync every 5 min on the Mac: Drive canonical to WP media 26 (hash-deduped, fail-soft, logged, write-verified). Any surface updates Drive canonical and every board refreshes itself within 6 min – no human, no Mac session needed. 2026-07-17. INCIDENT same night: a '‹=' in this very note tripped WP kses entity-escaping and corrupted the feed; sanitizer + write-verification added to the sync (QUINN-gated). | RECONCILED 2026-07-18: recovered from a diverged mirror that the repo copy never had.
WENDY
Sprint Board LIVE – /dashboard/sprint/ P1
Scrum lanes To Do/In Progress/QA/Blocked/Done, live 60s feed; scrum.org terminology; QA press-tested. 2026-07-18. | RECONCILED 2026-07-18: recovered from a diverged mirror that the repo copy never had.
WENDY
Product Backlog LIVE – /dashboard/backlogs/ P1
Epics only (12 epics / 66 items); Done never Shipped; QA read-back PASS. 2026-07-18. | RECONCILED 2026-07-18: recovered from a diverged mirror that the repo copy never had.
OSCAR
Memory consolidation: PR #45 merged + SM registry + SSOT + activity log P1
SOLVED_MECHANISMS (SM-001/002) auto-loaded via CLAUDE.md; BOARD_REGISTRY; central logs/. Roster exactly 7. 2026-07-18. | RECONCILED 2026-07-18: recovered from a diverged mirror that the repo copy never had.
QA-QUINN
Dashboard REFRESH defect fixed + press-every-button QA rule P2
Root cause: no feedback + no entity-decode. Patch deployed to page 27; new binding QA rule in contract. TD-049 cache filed. 2026-07-18. | RECONCILED 2026-07-18: recovered from a diverged mirror that the repo copy never had.

2 · Tech Debt

Source: docs/TECH_DEBT_REGISTER.md (TD-###)

Open 35

DRIVE
TD-001: Folder `05-TRAINING ` has a trailing space – MCP can't rename folders P2
Human folder-rename (Greg)
DRIVE
TD-002: Folder `06-BUSINESS-E–COMMERCE ` has a double dash + trailing space P2
Human folder-rename (Greg)
DRIVE
TD-003: Stale duplicate folder `02-JOB-SEARCH- remove` still present P2
Human delete/merge (Greg)
DRIVE
TD-004: Marooned `SOP-PIVOTNREBOOT/` folder sitting at Drive root instead of under control plane P3
KAT relocate under control plane
MEMORY
TD-006: `memory/journal/` scaffold exists but agents are not wired to append after each unit of work P2
BOB – wire journal-append into agent loop
N8N
TD-007: Scheduled runner only handles Drive confirms; not generalized so any agent task can run on a timer P2
Generalize `qa/qa_quinn.py` runner
QA-QUINN
TD-008: Recurring `qa_lessons` are not promoted into QUINN KNOWLEDGE on a cadence P3
Add promotion cadence
SITE
TD-009: pivotnreboot.com has no live-site connector – WENDY can only draft; deploy is manual/human-gated P3
Wire WordPress/Hostinger connector
DRIVE
TD-010: Duplicate/legacy Skills folders (`05-AI-ORGANIZER`, `09-SKILLS` at root) shadow the canonical `00-AI-INFRASTRUCTURE/Skills/` P3
KAT consolidate to canonical, mark legacy `_STAGING`
MEMORY
TD-018: Embedding search degraded – recall returns results but all scores ~0.0164 (identical), the documented signature of embeddings-off (keyword fallback only). Ranking quality is poor P2
Check `OPENAI_API_KEY` / `EMBEDDING_PROVIDER=openai` in the AgentMemory container on the VPS
INFRA
TD-012: Usage-metrics tracking was manual (screenshot → ChatGPT). LARGELY OBSOLETED 2026-07-10: Greg found Claude Code's built-in usage meter (the circle by the model name) shows context fill + 5-hr limit + weekly all-models/Fable + credits live – the numbers he was screenshotting. Downgraded P2→P3 P3
Remaining value is only what the native meter lacks: prediction/extrapolation, a history trend, and cross-device view (phone/PC). Don't build the 2-hr dashboard unless Greg still wants those
DRIVE
TD-013: Google Drive connectivity is chronically inconsistent – re-auth churn, inconsistent access paths, repeating the same info. Long-standing pain. Evaluate Supabase as backing store (fit + cost) vs staying on Drive P1
Spike: Supabase-vs-Drive decision doc (cost, connectivity, migration effort)
HUNTER
TD-014: `/hunter` gives inconsistent results on resume + draft generation; no at-a-glance view of what was produced P2
HUNTER – HTML dashboard surfacing resume/draft status + links
WENDY
TD-016: No Wendy web dashboard: need an HTML board of all pivotnreboot web URLs + what changed, so Greg picks from there. Also confirm Wendy can actually connect to the site, and give Wendy her own web-activities backlog P2
WENDY – web-URL/change dashboard + connectivity check (see TD-009) + Wendy backlog
DRIVE
TD-017: Stale first Drive mirror `TECH_DEBT_REGISTER.md` (file ID `1u_feOt3rd0MHbMt-Tc8VKlkcV7hO3idF`, 10 items) can't be updated/deleted via MCP – superseded by dated snapshot `2026-07-10_register_tech-debt.md` P3
Greg trash the old mirror file in Drive UI
INFRA
TD-020: Legacy boards superseded by the one generated board (`board/index.html`): retire `AGENT_SCRUM_BOARD_READABLE.html`, `AGENT_STANDUP_BOARD.html`, revenue-engine `board.html` (keep as sales asset, not work board), site `revenue-engine-board.html`. `~/.logs/task_status.json` now auto-converged from Drive canonical by the generator P3
Greg deletes the 4 stale board HTMLs (deletes are human-gated); index already routes agents away from them
INFRA
TD-021: State sync between surfaces is MANUAL, not automatic. Git DOES work from the UI – Greg says "pull"/"push" in a channel and Claude runs it (correction to earlier: UI→git is NOT missing). The gap: nothing auto-reconciles, so if a UI session changes status and Greg doesn't say "push", the git register the terminal reads goes stale and re-surfaces solved items as OPEN (hit live: TD-019). Manual trigger works; the missing piece is auto-commit/auto-pull on status change P2
Auto-reconcile: on any status change, commit + regenerate board without waiting for a verbal "push"; or a periodic pull so the terminal never reads stale git. Interim: agents say "push" after edits; treat git as possibly-behind before reporting "not done"
HUNTER
TD-023: Was: HUNTER couldn't create Gmail drafts from Claude Code. CORRECTED 2026-07-10: the MAIN session has the Gmail MCP connector (subagents don't) – 3 drafts created + verified in Gmail with Drive links to the .docx resumes/covers. RESEARCH FINDING: connector DOES support attachments (probe draft proven via `has:attachment`; the "not supported" note in its description is stale). Per TD-024, exact base64 relay of ~40KB IS achievable – but the Gmail connector has NO attachment read-back, so the TD-024 byte-compare verification is impossible on this path; unverifiable career docs stay off it P2
Durable fix: n8n flow on the existing instance (Drive file → Gmail draft attachment, bytes never touch LLM context, verifiable server-side) OR a local token with gmail.compose scope. Also still owed: Greg's target-comp figure
OSCAR
TD-026: Two agent-contract formats coexist after the TD-022 salvage (PR #31): `.claude/agents/*.contract.json` (aria/bob/hunter/kat/oscar/qa-quinn) use a `{contract_version, agent, role, accepts, returns, acceptance, handoff}` shape and do NOT conform to the co-added `.claude/contracts/AGENT_CONTRACT_SCHEMA_v1.0.json` (which requires name/version/objective/authority/inputs/outputs/acceptanceCriteria/constraints); only `.claude/contracts/hunter.contract.json` matches the schema. QA-QUINN FLAG on #31, non-blocking (all parse, no dangling refs) P3
Reconcile: either the agents/ contracts adopt the v1.0 schema, or scope/rename the schema so it doesn't claim to govern them
QA-QUINN
TD-027: `qa/promote_lessons.py` exits 1 when promotion candidates exist (by design – signals "candidates found"), clean output no traceback. A scheduler/CI treating exit≠0 as failure would misread a normal run as failed. QA-QUINN FLAG on #31, non-blocking P3
Confirm intent or map "candidates found" to exit 0 with a distinct signal (e.g. stdout marker)
MEMORY
TD-032: Completion-logging to the Supabase brain: agents write a completion record (what was done, artifact location, verified state) to the Supabase `memories` brain AND the repo on finishing a unit of work, so the DONE-CHECK gate's "is this done?" becomes a QUERY not a guess (protocols/DONE_CHECK_GATE.md) P1
OSCAR+BOB: define the completion-record schema, write on completion via scripts/supabase_connect.py, make the done-check query it
QA-QUINN
TD-033: DONE-CHECK gate not yet enforced inside QUINN's workflow: no blocker/escalation reaches Greg without done-check evidence (repo+CREDENTIAL_MAP+Supabase+KAT sweep). Gate written (protocols/DONE_CHECK_GATE.md) but not wired into docs/QA-QUINN_CONTRACT.md P1
QA-QUINN: add the done-check as a mandatory pre-escalation step; a blocker with no done-check evidence is itself a BLOCK
PRODUCT
TD-034: Multi-channel LYRA publishing + PivotNReboot YouTube funnel: draft-once -> approved fan-out to API-friendly channels (YouTube upload, WP blog, X, FB/IG Page); LinkedIn personal stays manual. YouTube (LYRA script -> Descript -> YouTube -> site funnel) as top-of-funnel. Verify current LinkedIn/YouTube API rules first P2
LYRA+OSCAR: verify API rules, build publish adapters; migrate to revenue-engine/BACKLOG.md when that repo is in-session
INFRA
TD-036: 4 of 13 scheduled dashboard jobs exit with code 1 – undiagnosed. Telemetry not wired to Mission Control console. Likely sources: n8n workflow failures, scheduler issues on Hostinger VPS (72.61.12.30:5678), or dashboard-specific service failures. Cannot access launchd from remote Linux environment. P1
OSCAR: check n8n logs on Mac/VPS. Scope: trace the 4 failing jobs, identify root cause (timeout, script error, missing credential, permissions), restore nominal 13/13. Investigate first after Hunter P0 work (SS2-P01 Toptal presentation) completes.
SITE
TD-037: pivotnreboot.com has no live telemetry wired to Mission Control console – site uptime, page metrics, and AI Parachute funnel conversion not exposed. Site owned by WENDY channel; console needs live health metrics integration. Gap discovered during Mission Control dashboard regeneration. P2
WENDY+OSCAR: design telemetry integration. Scope: uptime / HTTP status, page load metrics, form conversion funnel (AI Parachute sales funnel – SS2-P03), content freshness (last publish date per page). Queue after Hunter + SKED-036 investigation.
INFRA
TD-039: Skill version drift across channels (Claude Code / Cowork / web) – same skill at different versions (was TD-027 pre-merge) P1
rotate-api authored once in the repo (canonical). Propagate the identical version to Cowork + web/chat so `/rotate-api` resolves everywhere at one version
DRIVE
TD-040: Drive `create_file` with `parentId` fails in the web channel (5/5) – workaround is create-without-parent then `copy_file` to target, which leaves a root orphan (was TD-028 pre-merge) P2
Still OPEN (documented in merge contract env notes). KAT sweeps the root orphans; durable fix TBD
INFRA
TD-041: Supabase key sits in a Mac ENV VAR unencrypted (supersedes/advances TD-013's Supabase thread) – encrypt/wipe/verify not done (was TD-029 pre-merge) P1
Mac-session action via `rotate-api`: encrypt → `SUPABASE_API_KEY.encrypted` (600) → wipe env/history → VERIFY real Supabase call → then revoke → register → launchd. Cannot be executed from the cloud/web channel
INFRA
TD-042: No central logging system for Claude – activity/decisions/errors are scattered across qa_lessons, ISSUE_LOG, journal, handovers, Drive records, git; no single append-only record of what happened, when, on which surface, by which agent. Same SSOT disease applied to events. Greg: "we desperately need a logging system for Claude." (was TD-030 pre-merge) P1
Design captured in docs/LOGGING_SYSTEM.md. Build `logs/activity.jsonl` (append-only, monthly-rotated) + `scripts/log_event.py` + session-start/end append; existing logs become views/feeders. Owner OSCAR/BOB
MEMORY
TD-043: No single source of truth across Claude surfaces – roster/rules/status live in N independently hand-edited homes (repo, claude.ai project instr, Cowork, brain, Drive) so a fix in one never reaches the others (ARIA kept reappearing). (was TD-031 pre-merge) P1
docs/SINGLE_SOURCE_OF_TRUTH.md captures the map + propagation checklist. Durable fix: off-repo homes shrink to POINTERS to repo CLAUDE.md, not copies. Off-repo ARIA cleanup staged in docs/ARIA_REMOVAL_OFFREPO_STAGED.md
SITE
TD-044: Product backlog board BUILT but never deployed – Greg has asked repeatedly, sees only /dashboard/ + /board/. Artifact ready: `dashboards/cloud/backlogs.html` (66 items / 12 epics, WP-ready). (was TD-035 pre-merge) P1
WENDY deploy as child of page 27 → pivotnreboot.cloud/dashboard/backlogs/ via SM-002 cookie+nonce (Mac `deploy_backlogs.command` already written). Read-back verify, then send Greg the URL
MEMORY
TD-045: ARIA still active on off-repo surfaces (claude.ai Project instructions, Cowork, Supabase brain AGENT_BOOTSTRAP, Drive bootstrap docs) – repo is clean but those homes re-teach it. (was TD-036 pre-merge) P1
Execute docs/ARIA_REMOVAL_OFFREPO_STAGED.md: Greg = claude.ai instr paste-block; BOB = brain rows (service_role, Mac vault) + committed migration; KAT = Drive docs
DRIVE
TD-046: Board canonical task_status.json (177MPZZ) permission is `anyone:writer` – world-editable single source of the live boards. (was TD-037 pre-merge) P1
Owner-only: Greg or Mac session removes the `anyone` permission in Drive UI/API; then audit Contracts folder for other `anyone:writer` files (KAT next-contract)
INFRA
TD-048: **TWO unreconciled writers race for the same WP media 26 feed with DIFFERENT, diverged data.** `com.pivotnreboot.dashboard-feed-sync` (launchd, every 5 min, since 2026-07-16) pushes Drive canonical `177MPZZ…` (49 tasks; e.g. SS2-D15 = "Product Backlog LIVE"). The new `com.pivotnreboot.oscar-heartbeat` (launchd, hourly, installed tonight 2026-07-18 by the Mac terminal session per the cloud→Mac handover) pushes repo `board/task_status.json` (41 tasks; SS2-D15 = "RUN THE HEARTBEAT INSTALLER" – same ID, unrelated task). Whichever job fires last wins the live board until the other overwrites it again – exactly the "keeps coming back" pattern the pickup block warns is really a missing single source of truth. Confirmed live 2026-07-18 9:45 PM PDT: repo push was still live 1 min after pushing, but the Drive job will silently revert it on its next change-triggered run. P0
Needs a decision, not a unilateral fix: is Drive (`177MPZZ…`, the multi-surface/ChatGPT/phone-writable canonical per `dashboard-refresh-path-drive-canonical` memory) or the repo (`board/task_status.json`, the new git-heartbeat canonical per tonight's HANDOVER/PICKUP docs) the intended single source going forward? Until decided, do not keep patching one side – the other job will erase it within its next cycle. Left both jobs running; did not unilaterally stop either.
SITE
TD-049: Agent Standup Board data is stale (last regenerated 2026-07-09); no regenerator script exists in `scripts/` to refresh it from canonical before deploy. `docs/BOARD_REGISTRY.md` referred to this as "TD-048" – that was a forward reference that was never actually registered here; renumbered to avoid colliding with the real TD-048 (the media-26 dual-writer conflict). P2
Write a `generate_standup_board.py` (mirror `generate_scrum_board.py`'s pattern) sourced from current `board/task_status.json`, then deploy via `scripts/wp/deploy_dashboard.py –slug standup`. Owner: WENDY.

In Progress 2

INFRA
TD-015: No visual "front board" – can't move items across columns like Jira/Rally/Trello. Backlog + tech-debt are text-only P2
Claude/OSCAR 2026-07-10: unified read-only board shipped (`board/index.html` via `scripts/generate_unified_board.py`, renders all 3 canonical sources). Drag-to-move across columns = v2
INFRA
TD-022: Rule 5 (CLAUDE.md) had every agent open a PR on completion but never said who merges it – so PRs piled up (12 open, oldest PR #1 from 2026-05-25). `protocols/GITHUB_CONTRACT.md` added (merge authority/criteria, existing-branch check, weekly BOB sweep). SWEEP RAN 2026-07-10 (Greg "approve all"): 6 squash-merged clean (#23 #1 #18 #19 #21 #22), 6 blocked by real merge conflicts. PLAN EXECUTED 2026-07-12 (OSCAR, Greg "run the plan"): salvage shipped as **PR #31** (QA-QUINN PASS WITH FLAGS, additive-only proven), #2 #17 #20 closed superseded, #16 closed (regresses main); #15 #13 already closed P1
**DONE this session:** #31 opened (`salvage/td-022-agentic-core`, 23 net-new files: orchestrator engine + typed contracts from #17, key-rotation+promote_lessons from #20, spam_health+gmail Apps Scripts from #2); #2/#16/#17/#20 closed with linking comments. **RESIDUAL:** (a) Greg reviews + merges #31; (b) orphan branch `agent/lyra` (SHA 065dbef) delete BLOCKED – proxy rejects delete-ref pushes (send-pack sideband disconnect), needs a Mac/UI delete → TD-028; (c) two QA FLAGs on #31 → TD-026, TD-027

Blocked 0

Done 6

OSCAR
TD-005: No surviving agent owns live calendar mgmt, email triage, or the morning executive briefing (ARIA retired, gap never picked up). DECIDED 2026-07-12 (Greg): "ARIA can be deleted" – revive-ARIA option closed. ARIA agent + `/aria` skill deleted; all roster references scrubbed (CLAUDE.md, memory bootstrap, operating model, cross-llm kit, oscar/standup skills, OSCAR contract v2) P1
ARIA scrubbed from ALL editable source layers: canonical `.claude/` + core docs, live root docs (RECOVERY_AND_SECURITY, OWNER_INDEPENDENCE_SCORECARD), and design docs (`agents/oscar.md`, `ai-os-architecture/` README+diagram+handoffs.yaml+control-plane). Her responsibilities FOLDED INTO KAT (organizing/filing/notifying/light-technical) per Greg 2026-07-12. RESIDUAL (generated/Mac-side only, non-blocking): `brain/` REGENERATED on the Mac 2026-07-12 (`~/.claude/skills/aria/` deleted, `brain_extract.sh` re-run -> `[brain] agents: 7`, ARIA gone) – now just needs commit+push from the Mac (`save.command`) to land in git; regenerate `board/index.html` (needs Drive+revenue-engine sources, run on the Mac); let memory record `PIVOTNREBOOT_AGENTS_HUNTER_ARIA_V1` be superseded via the append-only memory flow (do not hand-edit). Live calendar/email-triage still unowned – fold into OSCAR if ever needed, do NOT revive ARIA
MEMORY
TD-019: ChatGPT + Gemini couldn't recall – token was wired into Claude Code only. RESOLVED 2026-07-10 by Greg in a UI session (token pasted into ChatGPT action auth + Gemini connector). Register was stale because that UI work never wrote back to git – see TD-021 P2
Greg confirmed solved UI-side 2026-07-10
HUNTER
TD-024: Native .docx resume upload silently corrupted (zip-integrity test failed). ROOT CAUSE CORRECTED same day: NOT a structural tool limitation – the failure was unverified/truncated base64 relay (the model paraphrasing or truncating the blob instead of relaying it exactly). Proof: same-day round trips of 3.3KB and 39KB .docx files came back byte-identical (sha256 match) when the exact base64 was relayed from disk and verified after upload. FIXED via new hard procedure in `.claude/agents/hunter.md` rule 5 + QA-QUINN contract: build .docx locally (python-docx or minimal OOXML), `zipfile.testzip()` must pass locally, upload, download back, byte-compare, and QA-QUINN hard-gates binary validity before PASS. Delivered live 2026-07-10 (Pyramid Consulting resume + cover letter, QA PASS) P2
Procedure is binding in hunter.md + QA-QUINN contract. Never report a binary upload done without the round-trip byte-compare
INFRA
TD-035: TECH_DEBT_REGISTER diverged across branches: oscar-supabase-key-encrypt had <=TD-024 while oscar-mt1jx2 added TD-025/026/027/028 (different content) – the cross-branch drift the governance flags. RESOLVED 2026-07-13 on merge of PR #36: main's TD-025-028 kept as-is; this branch's items renumbered TD-028-031 → TD-032-035 to avoid collision P1
Reconciled onto main via PR #36 merge; both branches' items now coexist under distinct IDs
INFRA
TD-038: No `rotate-api` skill existed in any channel – rotation was ad-hoc, not a single callable path (was TD-026 pre-merge) P2
CLOSED by merge contract Step 4: `.claude/skills/rotate-api/SKILL.md` built (mint→encrypt→wipe→verify→revoke→register→launchd→QA-QUINN→Drive log; self-limits to plan+handoff on non-Mac surfaces). Install same-version copy in Cowork + web/chat to fully close TD-027
SITE
TD-047: LIVE defect (ISS-001): canonical health carried a frozen hand-typed day; header/pill mismatched. (was TD-038 pre-merge) P1
SM-001: Mac session runs `update_drive_file.py 177MPZZ… ` with `health:"ON TRACK"`; boards self-heal ≤6 min. Repo renderers already hardened to strip embedded days

Won't fix 1

INFRA
TD-028: Stale git branch `agent/lyra` (SHA 065dbef, no open PR, empty diff vs main). The TD-022 plan text said "delete orphan agent/lyra" – but that refers to a harmless leftover *branch*, NOT the LYRA agent. Greg (2026-07-12) flagged the ambiguity: **LYRA is an active agent (invoked continuously to write copy); never delete anything named lyra.** The stale branches are harmless and stay in place P3
Leave all `agent/lyra*` branches as-is. LYRA agent (`.claude/agents/lyra.md`) is active and untouched. Do NOT propose deleting any lyra ref again

3 · Product Roadmap

Source: pivotnreboot-revenue-engine/BACKLOG.md
EPIC 0 – SHARE & PUBLISH (Greg ask 2026-07-10: "pass it to colleagues") 4 open · 0 done
  • Share bundle zip (all 6 pages, self-contained) – DONE, in repo + Desktop; email/Slack it to colleagues
  • demo.pivotnreboot.com subdomain on Hostinger hPanel (Greg: create subdomain; agents: prep upload) – professional review URL
  • Decide public vs internal split before any public URL: index/how-it-works/employers/board = shareable · relaunch-teams/market-case = INTERNAL (pricing strategy + grant plans)
  • Optional: GitHub repo access for technical colleagues (repo is private – add them as read collaborators)
EPIC 1 – Ship the funnel (carryover from SPRINT-01, highest priority) 10 open · 0 done
  • GREG Day-1 unlocks: Stripe (links + Customer Portal) · `wp_autocycle_setup.command` · headshot · Google Voice
  • Deploy Home (3-door pricing, founding framing, live scoreboard) to WordPress
  • Deploy /employers (content DONE – employers.html, sliding scale, no dollars, agency-partnership story)
  • Rebuild /about · delete fake testimonials · retire Services (301 → Home)
  • Fulfillment kit: intake form, welcome email, Relaunch Plan template, weekly SOP – Stripe live only after
  • Capture + checklist PDF + 3-email nurture + privacy policy + consent microcopy
  • Analytics (Jetpack/Plausible/GA4) + UTM scheme + referrer capture (see Epic 4)
  • Images self-hosted per photo audit + ALT text
  • End-to-end funnel QA (live card, cancel flow, events) – QA-QUINN gate
  • NO-DEAD-LINKS audit: every button/link on every page resolves before publish (standing rule, Greg 2026-07-10)
EPIC 2 – Pricing & offers 4 open · 0 done
  • Greg confirms Pro Relaunch price ($99/mo proposed) and founding-price rise trigger (at 20 subs)
  • Employer track: NO public dollar figures – sliding scale by company size / number affected; per-person rate drops as group grows (DONE on employers.html; keep everywhere)
  • Pro-tier delivery SOP (weekly 1:1 format)
  • Pricing-rise decision + "founding member" grandfather rule
EPIC 2B – RELAUNCH TEAMS (the high-ticket product – deep dive: relaunch-teams.html) 10 open · 0 done
  • GREG decides: cohort price ($1,495 founding / $2,495 proposed) · 8 seats / 6 weeks · guarantee in/out · daily-standup calendar slot · recruiting start date
  • Public Relaunch Teams page + application form (application, not checkout – curated seats)
  • Founding-cohort LinkedIn recruiting post (LYRA) – 8 seats, honest scarcity
  • Fit-call script + selection rubric (mixed industries, compatible seniority)
  • Team delivery kit: sprint board template, standup format, rotating-roles guide, demo-day format, retro format
  • Team-level agent runs: nightly per-member fleet outputs → team channel; QA gate on all outbound
  • Scoreboard per team (offers · interviews/wk · time-to-relaunch) – real counts only
  • Employer-paid seats bridge ($995/seat proposed, never public – sliding-scale page handles it)
  • Named-sprint mechanic: sprint retroactively named for each member who signs an offer
  • v2 (parked): voice standup agent · member portal · employer dashboard · alumni operator bench
EPIC 3 – Voice, video & webinar 6 open · 0 done
  • Greg records relaunch-story video (phone ok) → Descript edit → homepage + webinar opener
  • Journey voice narration v1: DONE on board (system TTS, voice picker – male/female/accent from device voices)
  • Journey narration v2: Greg's ACTUAL recorded voice (record narration script → Descript cleanup → audio files swapped in for TTS)
  • Week-4 free live session: "How I built an AI team that runs my job search" → recording becomes evergreen + Descript clips
  • Welcome AVATAR widget for the live site: corner popup, "Hey – glad you're here. How can I help?" · unobtrusive · one-click dismiss · remembers dismissal · offers checklist (email capture with consent) · voice = Greg's recorded greeting (TTS fallback)
  • Visitor-source capture (works even with no email): store referrer + UTM + landing page with each analytics event and each form submit – consent-based via privacy policy; no covert fingerprinting
EPIC 4 – Proof & transparency 3 open · 0 done
  • Live scoreboard v1: real counts from Hunter's tracker (applications / interviews / offers) → site strip + LinkedIn posts; weekly refresh; REAL NUMBERS ONLY, told as they happen
  • Stat footnotes: wire TechCrunch/Invezz source links onto published stats
  • Real role-title-only testimonials pipeline (as founding members land)
EPIC 5 – Traffic 4 open · 0 done
  • LYRA launch post (holds until funnel live) + weekly calendar (3-4/wk, disclosure line, one CTA)
  • 20 consumer DMs/wk (5-DM sequence doc) · 8-12 enterprise discovery emails (HUNTER list, Days 2-5)
  • WENDY blog 1/wk repurposed from strongest LinkedIn post
  • Blog cleanup: keep strongest "Over 50" post, unpublish 3 duplicates, broaden framing
EPIC 6 – Legal & brand 6 open · 0 done
  • Use **PivotNReboot™** on all site copy + collateral NOW (free, common-law) – started on board/employers page
  • © 2026 PivotNReboot notice on site + posts + graphics (free, no filing)
  • GREG: run exact + phonetic search at tmsearch.uspto.gov (Class 35/41 knockout) – 20 min
  • If clear: file Class 41 (education/training, primary) + Class 35 (business consulting) – ~$700 gov fees DIY via USPTO Trademark Center (or LegalZoom ~$1,600 / attorney ~$1,700-3,200)
  • Research Copyright Office GROUP registration for the post/graphic collection (batch, not per-work) – verify pricing before spending
  • Privacy policy page (required by capture – Epic 1)
EPIC 7 – Infrastructure (last per priority stack) 4 open · 0 done
  • demo.pivotnreboot.com subdomain (Hostinger hPanel) hosting board.html + demo as public sales assets
  • WP auto-cycle verified green after Greg's Day-1 script run
  • Session/build metrics tracking: log session start/duration/tool-calls per build session; compare build speed across models/tools (Greg ask 2026-07-10) – lightweight log in repo, one line per session
  • Drive filing sync (KAT background task running) + fold plan v1.1 into the Drive Google Doc
EPIC 8 – ICP-2: THE CHRONICALLY UNEMPLOYED (all industries – Greg direction 2026-07-10) 5 open · 0 done
  • De-tech the public copy: skills-gap ≠ coding; "AI-supported roles in YOUR field" across all pages
  • Industry-mixed cohort tracks (admin, ops, retail mgmt, finance back-office, teachers, manufacturing supervisors) + AI-proof-careers tracks (counseling, healthcare, trades – AI-augmented)
  • ICP-2 messaging: "you don't need another job board – you need a team" / belonging + cadence + identity
  • ICP-2 seats are FUNDED seats (Epic 9), not self-paid – pricing page never asks the chronically unemployed to pay rack rate
  • Time-to-relaunch value framing everywhere: every week cut ≈ $1,000 Bay Area / $400 national in rent alone (sourced in market-case.html)
EPIC 9 – GOVERNMENT, GRANTS & WHO-PAYS PIVOT (evidence: market-case.html) 7 open · 0 done
  • Apply to California ETPL (Eligible Training Provider List) – PivotNReboot as WIOA-fundable training provider (Class 41 identity); outcome reporting = our real-counts scoreboard (ETA-9171 format)
  • Contact San Jose / Bay Area Local Workforce Development Boards: ITA per-seat reimbursement rates [UNVERIFIED – get real numbers before modeling]
  • Grant pipeline: EDD ETPP-style rounds ($16.3M current, awards to $2M w/ 20% match) + national equivalents; grant-writing SOP
  • Structure question for Greg's attorney/accountant: nonprofit partner or fiscal sponsor for grant eligibility vs. for-profit training provider path
  • Employer PR calculator one-pager: brand cost-per-hire penalty (up to 2x / ~$4,723 premium per hire) + post-layoff payroll drag (5.2% yr-1) vs. funded seats – sourced
  • Anti-staffing-chain positioning: true-match, no markup layers (W-2 markups avg 50-60%), worker keeps the spread – the efficiency story for boards
  • Blended revenue model to $19k/mo: employer seats + ITA seats + self-paid cohorts + grants (see market-case.html §3)
EPIC 7B – DEVOPS ENVIRONMENTS (subdomains, standard promotion) – Greg 2026-07-12 8 open · 0 done
  • GREG: create subdomains dev.pivotnreboot.com + stage.pivotnreboot.com in hPanel (~10 min, $0)
  • WENDY: install/clone WordPress on each; noindex dev+stage; password-protect stage
  • Per-env vault (rule-of-two: human pw + app-password/JWT) – wordpress_dev.enc / _stage.enc
  • Version-stamp footer on every page tagged with env (Last updated · vX.Y · ENV)
  • Promotion tooling: WENDY promote dev->stage (QA-QUINN gate) -> Greg approve -> prod
  • STOP hot-fixing prod: all future changes flow dev->stage->prod
  • Retire or repurpose .cloud once subdomains live (recover its orphaned vault first, dispatch [3]/[4])
  • LYRA: build-in-public post "DevOps for one, with an AI team"; WENDY: /how-we-build page (teach angle)
PARALLEL TRACK – Hunter (job search = revenue priority #1, unchanged) 3 open · 0 done
  • Weekly casting + follow-ups continue at full speed
  • Tracker counts feed the public scoreboard (Epic 4)
  • Interviews/offers narrated in public as they actually happen
EPIC 11 – .cloud INTERNAL/EXTERNAL SPLIT + DASHBOARDS (Greg 2026-07-13) 10 open · 0 done
  • Real access-gating on internal pages (/board, /backlog, /agent-os, /market-case) – currently only unlinked, not actually protected; anyone with the URL can load them. Password-protect or set private, not just noindex.
  • Explicit internal-vs-external page map maintained (see memory: project-cloud-internal-external-split) so no future page gets built without deciding its tier first.
  • /dashboards live at pivotnreboot.cloud/dashboards (built 2026-07-13) – 3 tiles currently point at interim stand-ins. Build the REAL sub-pages and re-point:
  • Common visual theme (dark-navy palette, see memory: design-direction-pnr-site) applied consistently across BOTH tiers, internal and external
  • Standing UX rule: every clickable element must go somewhere, even a dummy placeholder – no dead-end boxes/buttons (Greg 2026-07-13)
  • Pricing revisit on /how-it-works and related funnel pages (Greg: "we might want to change the prices there") – content pass, not urgent
  • Two Greg-reported broken links under investigation via QA-QUINN click-scan: (1) a "pivotnreboot" text element on .cloud that may not be a real link, (2) an unspecified broken link on .com – pending QA-QUINN's automated crawl + manual follow-up if the crawl can't isolate it
  • Fact-check pass: verify site statistics (e.g. home page "1 in 4 out of work 6+ months" / BLS 27+ weeks footnote) against real sources, not just the on-page citation – folding into standing QA_WEBSITE_CHECKLIST.md
  • Footer timestamp convention: evergreen pages get copyright year only; blog/dated content gets "Updated [date]" – apply going forward (Wendy standing rule)
  • Dashboards page styling: Greg unsure on white-bg/dark-card treatment – QA-QUINN giving an opinionated light-vs-dark recommendation for internal ops dashboards specifically (2026-07-13, in progress)
EPIC 12 – NEW FUNNEL FEATURES (Greg 2026-07-13) 3 open · 0 done
  • **User journey map**: build a page/artifact mapping the visitor journey for someone who lost their job or wants to retool/pivot – stages: investigation ("who am I, what do I want to do"), using AI to explore that, then into the actual PivotNReboot funnel (relaunch path). Ties into /why and /how-it-works content.
  • **Events section**: new page/area with (a) upcoming PivotNReboot webinars – mark "coming soon" since none scheduled yet, (b) real AI conferences/industry events, (c) possibly partner events. Needs a real content source for (b)/(c) – don't fabricate event listings.
  • **Blog – Lyra pipeline**: wire LYRA's weekly content calendar (Drive: `2026-07-13_LYRA_CONTENT_CALENDAR_WEEK_OF_JUL13.md`, LinkedIn-sourced, grounded to real commits, feeds pivotnreboot.com blog via WENDY) into an actual blog page/post cadence on .cloud then .com. Calendar currently has outlines only (Mon Build Log / Tue Job-as-Product / Wed How-To / Thu Build Log / Fri Filosophy Friday) – full post copy drafted per-slot, publish as it's ready. Presented as normal blog content, not AI-attributed.
EPIC 10 – OPS VISIBILITY: session / context / usage indicator (Greg 2026-07-13) 5 open · 0 done
  • "Which session is which" board: list live sessions by title + working dir + what each owns (source: ccd_session_mgmt list_sessions). Flag collisions (2+ sessions on the same surface, e.g. website funnel).
  • Per-session context-window % – NOTE: not self-measurable by the agent; it's the Claude Code UI context meter. Requirement = surface it where Greg won't lose it, or request a harness/UI affordance. Do not fabricate a number.
  • Per-run token usage rollup (per agent + session total) – agents CAN report this reliably; standardize a usage line at end of each OSCAR run.
  • Plan + credit usage snapshot (session %, weekly %, usage-credits $ spent vs cap) – from the Usage settings page; note credit cap resets monthly (was 95% of $80 on 2026-07-13).
  • Home for it: the "Ops / Usage" board on the internal hub (hidden folder), OR a standing chat readout each run – Greg to pick. Ties to dashboards_index (WORK/AGENTS/WENDY set).
Generated by scripts/generate_unified_board.py from the 3 canonical sources in docs/BACKLOG_INDEX.md · do not edit by hand · rerun to refresh