From 543768728db90bb1284f87b549cbe7bee97532cc Mon Sep 17 00:00:00 2001 From: Joe Fabisevich Date: Tue, 4 Aug 2026 12:49:47 -0400 Subject: [PATCH] chore: update platform repo paths and stale org name test-pilot-server is merging into Pursuit-Org/platform as server/, and the Pursuit-Assets org was renamed to Pursuit-Org. - 11 scripts load_dotenv() from a sibling test-pilot-server checkout; the paths now point at platform/server. These are absolute paths on one developer's machine, so they need checking against a real checkout. - account-dedupe-and-mirror-plan.md describes the repo layout. - Pursuit-Assets -> Pursuit-Org in JOBS_QUICKSTART, BRANCH_PROTECTION and two task docs. Co-Authored-By: Claude Opus 5 --- .github/BRANCH_PROTECTION.md | 2 +- financial_forecasting/JOBS_QUICKSTART.md | 8 ++++---- financial_forecasting/scripts/absorb_old_outreach.py | 2 +- financial_forecasting/scripts/apply_jobs_roles_v2.py | 2 +- financial_forecasting/scripts/apply_sql.py | 2 +- financial_forecasting/scripts/contacts_merge_analysis.py | 2 +- financial_forecasting/scripts/contacts_merge_execute.py | 2 +- financial_forecasting/scripts/data_audit_jobs.py | 2 +- financial_forecasting/scripts/import_airtable_contacts.py | 2 +- .../scripts/import_airtable_contacts_guarded.py | 2 +- financial_forecasting/scripts/network_dedupe_merge.py | 2 +- financial_forecasting/scripts/repair_outreach_links.py | 2 +- .../scripts/repair_rotated_linkedin_urls.py | 2 +- .../tasks/account-dedupe-and-mirror-plan.md | 4 ++-- tasks/jac-running-notes.md | 6 +++--- tasks/objects-production-readiness-plan.md | 2 +- 16 files changed, 22 insertions(+), 22 deletions(-) diff --git a/.github/BRANCH_PROTECTION.md b/.github/BRANCH_PROTECTION.md index 41c47d34..7811cc2d 100644 --- a/.github/BRANCH_PROTECTION.md +++ b/.github/BRANCH_PROTECTION.md @@ -11,7 +11,7 @@ file — it's a Settings-page click-through. Follow the steps below for ## Steps -1. Go to https://github.com/Pursuit-Assets/bedrock/settings/branches +1. Go to https://github.com/Pursuit-Org/bedrock/settings/branches 2. Click **Add branch ruleset** (or **Add rule** in the legacy UI). 3. **Ruleset name**: `protect-main` (or `protect-dev`). 4. **Enforcement status**: Active. diff --git a/financial_forecasting/JOBS_QUICKSTART.md b/financial_forecasting/JOBS_QUICKSTART.md index 2a560706..8df57ccd 100644 --- a/financial_forecasting/JOBS_QUICKSTART.md +++ b/financial_forecasting/JOBS_QUICKSTART.md @@ -7,8 +7,8 @@ sent — this is the in-repo copy. Once you're running, read `JOBS_ONBOARDING.md ## Get these from Jac first -1. You're added to the GitHub repo `Pursuit-Assets/bedrock` (confirm you can see it - at github.com/Pursuit-Assets/bedrock). +1. You're added to the GitHub repo `Pursuit-Org/bedrock` (confirm you can see it + at github.com/Pursuit-Org/bedrock). 2. Your laptop's IP is whitelisted on the database — run `curl ifconfig.me` in a terminal and send Jac the result. 3. The `DATABASE_URL` value for your `.env` — Jac sends it securely. @@ -34,10 +34,10 @@ learn, and verify each step works before moving to the next. 1. Check whether I have git, node (v20+), python3, and the GitHub CLI (gh). Install anything missing using Homebrew (install Homebrew first if I don't have it). 2. Log me into GitHub: run `gh auth login` and walk me through the browser steps - (I already have access to the Pursuit-Assets/bedrock repo). + (I already have access to the Pursuit-Org/bedrock repo). 3. Make a projects folder and clone the repo into it: mkdir -p ~/dev && cd ~/dev - git clone https://github.com/Pursuit-Assets/bedrock.git + git clone https://github.com/Pursuit-Org/bedrock.git cd bedrock 4. Switch to the branch we work on (NOT main): git checkout feat/jobs-pipeline && git pull diff --git a/financial_forecasting/scripts/absorb_old_outreach.py b/financial_forecasting/scripts/absorb_old_outreach.py index 6ed5116b..153363fe 100644 --- a/financial_forecasting/scripts/absorb_old_outreach.py +++ b/financial_forecasting/scripts/absorb_old_outreach.py @@ -17,7 +17,7 @@ load_dotenv(os.path.join(HERE, ".env")) # public.outreach/contacts writes need the postgres superuser (same as # contacts_merge_execute.py) — bedrock_user only owns the bedrock schema. -load_dotenv("/Users/jacquelinereverand/dev/build/test-pilot-server/.env", override=False) +load_dotenv("/Users/jacquelinereverand/dev/build/platform/server/.env", override=False) def _su_url(): diff --git a/financial_forecasting/scripts/apply_jobs_roles_v2.py b/financial_forecasting/scripts/apply_jobs_roles_v2.py index 37def164..ddbf9c05 100644 --- a/financial_forecasting/scripts/apply_jobs_roles_v2.py +++ b/financial_forecasting/scripts/apply_jobs_roles_v2.py @@ -8,7 +8,7 @@ Reads PG_USER/PG_PASSWORD/PG_HOST/PG_PORT/PG_DATABASE from the environment or a .env. If they're not in this app's .env, point at the one that has them, e.g.: - python -m scripts.apply_jobs_roles_v2 --env ../test-pilot-server/.env + python -m scripts.apply_jobs_roles_v2 --env ../platform/server/.env """ import argparse import asyncio diff --git a/financial_forecasting/scripts/apply_sql.py b/financial_forecasting/scripts/apply_sql.py index 3b455012..91fceddd 100644 --- a/financial_forecasting/scripts/apply_sql.py +++ b/financial_forecasting/scripts/apply_sql.py @@ -7,7 +7,7 @@ Reads PG_USER/PG_PASSWORD/PG_HOST/PG_PORT/PG_DATABASE from the environment or a .env. If they live in another service's .env, point at it: - python -m scripts.apply_sql db/migrations/2026-06-18-jobs-parent-account.sql --env ../test-pilot-server/.env + python -m scripts.apply_sql db/migrations/2026-06-18-jobs-parent-account.sql --env ../platform/server/.env """ import argparse import asyncio diff --git a/financial_forecasting/scripts/contacts_merge_analysis.py b/financial_forecasting/scripts/contacts_merge_analysis.py index 03dc8172..7b694b1c 100644 --- a/financial_forecasting/scripts/contacts_merge_analysis.py +++ b/financial_forecasting/scripts/contacts_merge_analysis.py @@ -7,7 +7,7 @@ sys.path.insert(0, '/Users/jacquelinereverand/dev/build/bedrock/financial_forecasting') from dotenv import load_dotenv load_dotenv('/Users/jacquelinereverand/dev/build/bedrock/financial_forecasting/.env') -load_dotenv('/Users/jacquelinereverand/dev/build/test-pilot-server/.env', override=False) +load_dotenv('/Users/jacquelinereverand/dev/build/platform/server/.env', override=False) import asyncpg def _su_url(): diff --git a/financial_forecasting/scripts/contacts_merge_execute.py b/financial_forecasting/scripts/contacts_merge_execute.py index 077a3cb2..f28cda33 100644 --- a/financial_forecasting/scripts/contacts_merge_execute.py +++ b/financial_forecasting/scripts/contacts_merge_execute.py @@ -6,7 +6,7 @@ sys.path.insert(0, '/Users/jacquelinereverand/dev/build/bedrock/financial_forecasting') from dotenv import load_dotenv load_dotenv('/Users/jacquelinereverand/dev/build/bedrock/financial_forecasting/.env') -load_dotenv('/Users/jacquelinereverand/dev/build/test-pilot-server/.env', override=False) +load_dotenv('/Users/jacquelinereverand/dev/build/platform/server/.env', override=False) import asyncpg def _su_url(): diff --git a/financial_forecasting/scripts/data_audit_jobs.py b/financial_forecasting/scripts/data_audit_jobs.py index 41f03368..ed1ce5f2 100644 --- a/financial_forecasting/scripts/data_audit_jobs.py +++ b/financial_forecasting/scripts/data_audit_jobs.py @@ -2,7 +2,7 @@ sys.path.insert(0, '/Users/jacquelinereverand/dev/build/bedrock/financial_forecasting') from dotenv import load_dotenv load_dotenv('/Users/jacquelinereverand/dev/build/bedrock/financial_forecasting/.env') -load_dotenv('/Users/jacquelinereverand/dev/build/test-pilot-server/.env', override=False) +load_dotenv('/Users/jacquelinereverand/dev/build/platform/server/.env', override=False) import asyncpg def _su_url(): diff --git a/financial_forecasting/scripts/import_airtable_contacts.py b/financial_forecasting/scripts/import_airtable_contacts.py index b2e33926..abd561d1 100644 --- a/financial_forecasting/scripts/import_airtable_contacts.py +++ b/financial_forecasting/scripts/import_airtable_contacts.py @@ -7,7 +7,7 @@ sys.path.insert(0, '/Users/jacquelinereverand/dev/build/bedrock/financial_forecasting') from dotenv import load_dotenv load_dotenv('/Users/jacquelinereverand/dev/build/bedrock/financial_forecasting/.env') -load_dotenv('/Users/jacquelinereverand/dev/build/test-pilot-server/.env', override=False) +load_dotenv('/Users/jacquelinereverand/dev/build/platform/server/.env', override=False) import asyncpg BASE_ID = "appU97D9wOfq6eidF" diff --git a/financial_forecasting/scripts/import_airtable_contacts_guarded.py b/financial_forecasting/scripts/import_airtable_contacts_guarded.py index b018a644..094484fb 100644 --- a/financial_forecasting/scripts/import_airtable_contacts_guarded.py +++ b/financial_forecasting/scripts/import_airtable_contacts_guarded.py @@ -28,7 +28,7 @@ sys.path.insert(0, '/Users/jacquelinereverand/dev/build/bedrock/financial_forecasting') from dotenv import load_dotenv load_dotenv('/Users/jacquelinereverand/dev/build/bedrock/financial_forecasting/.env') -load_dotenv('/Users/jacquelinereverand/dev/build/test-pilot-server/.env', override=False) +load_dotenv('/Users/jacquelinereverand/dev/build/platform/server/.env', override=False) import asyncpg BASE_ID = "appU97D9wOfq6eidF" diff --git a/financial_forecasting/scripts/network_dedupe_merge.py b/financial_forecasting/scripts/network_dedupe_merge.py index b9e0b779..39cbdcb9 100644 --- a/financial_forecasting/scripts/network_dedupe_merge.py +++ b/financial_forecasting/scripts/network_dedupe_merge.py @@ -19,7 +19,7 @@ HERE = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) load_dotenv(os.path.join(HERE, ".env")) -load_dotenv("/Users/jacquelinereverand/dev/build/test-pilot-server/.env", override=False) +load_dotenv("/Users/jacquelinereverand/dev/build/platform/server/.env", override=False) REASON = "network dedupe: same staff + same name, cross-batch linkedin reimport (job change)" diff --git a/financial_forecasting/scripts/repair_outreach_links.py b/financial_forecasting/scripts/repair_outreach_links.py index 928f7283..58e51a9e 100644 --- a/financial_forecasting/scripts/repair_outreach_links.py +++ b/financial_forecasting/scripts/repair_outreach_links.py @@ -21,7 +21,7 @@ HERE = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) load_dotenv(os.path.join(HERE, ".env")) -load_dotenv("/Users/jacquelinereverand/dev/build/test-pilot-server/.env", override=False) +load_dotenv("/Users/jacquelinereverand/dev/build/platform/server/.env", override=False) STAGE_MAP = { "Initial Outreach": "initial_outreach", "Active Lead": "active", diff --git a/financial_forecasting/scripts/repair_rotated_linkedin_urls.py b/financial_forecasting/scripts/repair_rotated_linkedin_urls.py index ec0aeab0..e4313cd0 100644 --- a/financial_forecasting/scripts/repair_rotated_linkedin_urls.py +++ b/financial_forecasting/scripts/repair_rotated_linkedin_urls.py @@ -20,7 +20,7 @@ HERE = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) load_dotenv(os.path.join(HERE, ".env")) -load_dotenv("/Users/jacquelinereverand/dev/build/test-pilot-server/.env", override=False) +load_dotenv("/Users/jacquelinereverand/dev/build/platform/server/.env", override=False) def _su_url(): diff --git a/financial_forecasting/tasks/account-dedupe-and-mirror-plan.md b/financial_forecasting/tasks/account-dedupe-and-mirror-plan.md index dfe26161..429cb3ca 100644 --- a/financial_forecasting/tasks/account-dedupe-and-mirror-plan.md +++ b/financial_forecasting/tasks/account-dedupe-and-mirror-plan.md @@ -21,9 +21,9 @@ Key CORRECTED facts (I got these wrong earlier, now verified in code): - So axes: (1) person status global, (2) jobs pipeline membership = flag+funnel+owner+reason, (3) warmth derived, (4) staff-edge strength+disposition. Opportunity/account stages separate/calculated. ## VERIFIED cross-product + scraping impact (code sweeps, 2026-07-08) -Repos: platform FRONTEND pilot-client = /Users/jacquelinereverand (src/); platform BACKEND test-pilot-server = "/Users/jacquelinereverand/old platform folder/test-pilot-server" (current despite name). bedrock app = scratchpad/bedrock-live/financial_forecasting. +Repos: platform monorepo (Pursuit-Org/platform) — FRONTEND client/ = /Users/jacquelinereverand (src/); BACKEND server/ = "/Users/jacquelinereverand/old platform folder/test-pilot-server" (local checkout of the pre-merge backend). bedrock app = scratchpad/bedrock-live/financial_forecasting. - PLATFORM never refs contacts.is_jobs_contact or contacts.contact_stage → dropping/splitting them is PLATFORM-SAFE (bedrock-only). Never refs sf_contact_link/sf_account_company_map → bedrock-only to retire. -- PLATFORM "Employment Engine" (test-pilot-server/controllers/employmentEngineController.js) = builder-facing network+intros on the SHARED tables: reads contacts.current_company (string) AND contacts.company_id (FK→companies) [already mid string→FK migration], contacts.dedup_key, and gates builder intros on staff_contact_relationships.is_visible_to_builders (load-bearing). companies = platform-owned full CRUD (queries/companies.js). PathfinderNetwork.jsx/BuilderInsights.jsx read current_company string. +- PLATFORM "Employment Engine" (server/controllers/employmentEngineController.js) = builder-facing network+intros on the SHARED tables: reads contacts.current_company (string) AND contacts.company_id (FK→companies) [already mid string→FK migration], contacts.dedup_key, and gates builder intros on staff_contact_relationships.is_visible_to_builders (load-bearing). companies = platform-owned full CRUD (queries/companies.js). PathfinderNetwork.jsx/BuilderInsights.jsx read current_company string. - employment_records.company_name = platform reads as display/sort only (adminDashboard.js), never joins to companies → adding company_id + keeping company_name as cache is SAFE. job_applications/job_postings.company_name = Pathfinder matches by NAME STRING (company_id FK exists but unused) → FK migration is a SEPARATE Pathfinder task, not required for jobs. - CORRECTION: do NOT physically merge staff_contact_relationships + connection_status (platform Employment Engine depends on staff_contact_relationships.is_visible_to_builders). Keep staff_contact_relationships (shared/platform); connection_status = separate bedrock disposition satellite; "one edge" is read-layer only. - SCRAPING (bedrock nightly): candidate_pipeline/builder_match/jobs_activity_link tightly coupled to is_jobs_contact+contact_stage with SILENT failure modes (0-row UPDATE WHERE contact_stage='candidate' "succeeds"). Step 3 must migrate the whole pipeline + bedrock.merge_contacts() fn ATOMICALLY. GOTCHA: bedrock.activity.account_id/contact_ids hold SALESFORCE ids (via sf_contact_link/account_email_domain); participant_public_contact_id is the public link. sf_contact_link→contacts.sf_id consolidation must preserve contact→SF-account path (via account.sf_id) or activity.account_id silently changes meaning. diff --git a/tasks/jac-running-notes.md b/tasks/jac-running-notes.md index 7ed922a8..2dca4d5b 100644 --- a/tasks/jac-running-notes.md +++ b/tasks/jac-running-notes.md @@ -20,9 +20,9 @@ Original target Wed 2026-04-22 is deferred. JP: *"We have time to do this correc | Bug / Item | Priority | Status | Ref | Pending Jac action? | |---|---|---|---|---| -| **Objects production-readiness plan** | P0 | ✅ Merged to dev ([PR #147](https://github.com/Pursuit-Assets/bedrock/pull/147)) | [plan](objects-production-readiness-plan.md) | — | -| **B1** targets not saving to shared DB | P0 | ✅ Merged to dev | [#142](https://github.com/Pursuit-Assets/bedrock/pull/142) | ⏳ Run migration + confirm deployed `DATABASE_URL` (see below) | -| **B2** opp `Type` field missing on view | P0 | ✅ Merged to dev | [#144](https://github.com/Pursuit-Assets/bedrock/pull/144) | — | +| **Objects production-readiness plan** | P0 | ✅ Merged to dev ([PR #147](https://github.com/Pursuit-Org/bedrock/pull/147)) | [plan](objects-production-readiness-plan.md) | — | +| **B1** targets not saving to shared DB | P0 | ✅ Merged to dev | [#142](https://github.com/Pursuit-Org/bedrock/pull/142) | ⏳ Run migration + confirm deployed `DATABASE_URL` (see below) | +| **B2** opp `Type` field missing on view | P0 | ✅ Merged to dev | [#144](https://github.com/Pursuit-Org/bedrock/pull/144) | — | | **B3** Reports + Contacts 500-row cap | P1 | 📘 Absorbed — PRs #149-#151 | [plan](objects-production-readiness-plan.md) | — | | **B4** task create/edit/delete bugs | P1 | 📘 Absorbed — PRs #161-#165 | [plan](objects-production-readiness-plan.md) | — | | **B5** inline-edit lock too strict on Amount + Probability | P1 | 📘 Absorbed — PR #166 | [plan](objects-production-readiness-plan.md) | — | diff --git a/tasks/objects-production-readiness-plan.md b/tasks/objects-production-readiness-plan.md index 1dd54de1..a9a47558 100644 --- a/tasks/objects-production-readiness-plan.md +++ b/tasks/objects-production-readiness-plan.md @@ -117,7 +117,7 @@ This table is the source of truth for per-PR status. Each PR that ships updates | # | Slug | Ships what | Size | Status | |---|---|---|---|---| -| [#147](https://github.com/Pursuit-Assets/bedrock/pull/147) | `pr-planning` | This plan doc + doc updates across existing task files | docs-only | ✅ merged | +| [#147](https://github.com/Pursuit-Org/bedrock/pull/147) | `pr-planning` | This plan doc + doc updates across existing task files | docs-only | ✅ merged | | #148 | `pr-page-rename-cleanup` | Rename `MyDashboard.tsx` → `Priorities.tsx` and `Overview.tsx` → `Progress.tsx` to align file/component names with sidebar labels | S | 👀 in review | | #149 (= actual #155) | `pr-contacts-accounts-pagination` | Backend: Contacts + Accounts + opp-tasks → `query_all()`; my-tasks default+cap bumped; defensive test suite; FE comment trim | S-M | 👀 in review | | #150 | `pr-rowcount-caption-reports-tabs` | `` component + apply to Opportunities (migrate) / Accounts / Contacts / Tasks | M | ⏳ Queued |