From cb9cfc498e48cc9fb90d6f5ed06d658dd5a42563 Mon Sep 17 00:00:00 2001 From: saagpatel Date: Tue, 11 Aug 2026 06:04:35 -0700 Subject: [PATCH 1/2] chore(privacy): replace absolute home paths with ~ and $HOME Removes 50 occurrences of the operator's absolute home path from documentation, prose and shell defaults in this public repo. Functional config, test fixtures and generated files are untouched: $HOME is not expanded by JSON/YAML parsers and tests may assert the literal path. 107 such occurrences remain and need per-file review. --- docs/codex-restart-packet.md | 4 ++-- docs/demo-proof/2026-06-07/README.md | 2 +- .../2026-06-07/RECORDING-CHECKLIST.md | 2 +- docs/machine-wide-consolidation.md | 24 +++++++++---------- ...29-run-instructions-external-audit-plan.md | 4 ++-- ...6-05-29-run-instructions-external-audit.md | 4 ++-- ...6-14-portfolio-attention-reconciliation.md | 6 ++--- ...-06-19-notion-projection-reconciliation.md | 18 +++++++------- output/doc-truth-up-review-2026-05-30.md | 22 ++++++++--------- 9 files changed, 43 insertions(+), 43 deletions(-) diff --git a/docs/codex-restart-packet.md b/docs/codex-restart-packet.md index 0d9e7d6d..886066f8 100644 --- a/docs/codex-restart-packet.md +++ b/docs/codex-restart-packet.md @@ -8,13 +8,13 @@ should not pull operator attention during normal restarts. ## Command ```sh -python -m src.codex_restart_packet --workspace-root /Users/d/Projects +python -m src.codex_restart_packet --workspace-root ~/Projects ``` Use JSON when another tool should consume the result: ```sh -python -m src.codex_restart_packet --workspace-root /Users/d/Projects --json +python -m src.codex_restart_packet --workspace-root ~/Projects --json ``` For the current generated portfolio truth counts, query the canonical snapshot directly: diff --git a/docs/demo-proof/2026-06-07/README.md b/docs/demo-proof/2026-06-07/README.md index c3fdeb55..2169b20f 100644 --- a/docs/demo-proof/2026-06-07/README.md +++ b/docs/demo-proof/2026-06-07/README.md @@ -2,7 +2,7 @@ Durable screenshot proof for the five-tab local PortfolioCommandCenter demo. -Captured from `/Users/d/Projects/PortfolioCommandCenter` with: +Captured from `~/Projects/PortfolioCommandCenter` with: ```sh pnpm demo:desktop diff --git a/docs/demo-proof/2026-06-07/RECORDING-CHECKLIST.md b/docs/demo-proof/2026-06-07/RECORDING-CHECKLIST.md index a5120920..c846d5f6 100644 --- a/docs/demo-proof/2026-06-07/RECORDING-CHECKLIST.md +++ b/docs/demo-proof/2026-06-07/RECORDING-CHECKLIST.md @@ -33,7 +33,7 @@ jq '{generated_at,decision}' "$latest_weekly" ## Preflight -- [ ] Run from `/Users/d/Projects/PortfolioCommandCenter`: +- [ ] Run from `~/Projects/PortfolioCommandCenter`: ```sh pnpm demo:desktop ``` diff --git a/docs/machine-wide-consolidation.md b/docs/machine-wide-consolidation.md index 46607e3e..5a910b0b 100644 --- a/docs/machine-wide-consolidation.md +++ b/docs/machine-wide-consolidation.md @@ -1,21 +1,21 @@ # Machine-Wide Consolidation This is the operating plan for reducing portfolio-scale attention drag across -`/Users/d/Projects` and adjacent Codex operating repos. +`~/Projects` and adjacent Codex operating repos. ## Current Packet Run this first in new Codex sessions: ```sh -cd /Users/d/Projects/GithubRepoAuditor -python -m src.codex_restart_packet --workspace-root /Users/d/Projects +cd ~/Projects/GithubRepoAuditor +python -m src.codex_restart_packet --workspace-root ~/Projects ``` The packet combines: - latest `output/portfolio-truth-latest.json` -- live git state for `/Users/d/Projects` +- live git state for `~/Projects` - live git state for adjacent operating repos such as `personal-ops` and `.codex/codexkit` - archive/dependency/temp exclusions so old cleanup waves do not reappear as @@ -37,14 +37,14 @@ jq '{generated_at,total:(.projects|length),counts:.source_summary.attention_stat forensics or fixture maintenance. 3. Resolve dirty operating repos before lower-signal product drift. The usual operating set is: - - `/Users/d/.local/share/personal-ops` - - `/Users/d/.codex/codexkit` - - `/Users/d/Projects/GithubRepoAuditor` - - `/Users/d/Projects/PortfolioCommandCenter` - - `/Users/d/Projects/Notion` - - `/Users/d/Projects/bridge-db` - - `/Users/d/Projects/notification-hub` - - `/Users/d/Projects/mcpforge` + - `~/.local/share/personal-ops` + - `~/.codex/codexkit` + - `~/Projects/GithubRepoAuditor` + - `~/Projects/PortfolioCommandCenter` + - `~/Projects/Notion` + - `~/Projects/bridge-db` + - `~/Projects/notification-hub` + - `~/Projects/mcpforge` 4. Convert broad repo drift into decisions: - active now - verify and land diff --git a/docs/plans/2026-05-29-run-instructions-external-audit-plan.md b/docs/plans/2026-05-29-run-instructions-external-audit-plan.md index ab897823..5b58d2de 100644 --- a/docs/plans/2026-05-29-run-instructions-external-audit-plan.md +++ b/docs/plans/2026-05-29-run-instructions-external-audit-plan.md @@ -291,9 +291,9 @@ def test_build_record_resolves_path_and_primary(): "run_instructions_present": False, }, } - record = build_record(project, "/Users/d/Projects") + record = build_record(project, "~/Projects") - assert record["abs_path"] == "/Users/d/Projects/Fun:GamePrjs/BattleGrid" + assert record["abs_path"] == "~/Projects/Fun:GamePrjs/BattleGrid" assert record["primary_file_name"] == "AGENTS.md" # no CLAUDE.md → AGENTS.md assert record["snapshot_claim"] is False assert record["context_files"] == ["AGENTS.md", "README.md"] diff --git a/docs/plans/2026-05-29-run-instructions-external-audit.md b/docs/plans/2026-05-29-run-instructions-external-audit.md index 6f6207f2..4631dcd0 100644 --- a/docs/plans/2026-05-29-run-instructions-external-audit.md +++ b/docs/plans/2026-05-29-run-instructions-external-audit.md @@ -57,7 +57,7 @@ are exactly what an LLM reading the prose catches and a regex never will. - `schema_version`: `0.4.0` - `generated_at`: `2026-05-17T05:01:39Z` (**12 days stale as of this spec — drift is real, see §8**) -- `workspace_root`: `/Users/d/Projects` +- `workspace_root`: `~/Projects` - `projects`: 132 (a list; key on `identity.project_key`, **not** `display_name` — dupes exist: `IncidentWorkbench`, `OrbitForge`, `StatusPage`) - `context_quality_counts`: `none: 3, boilerplate: 17, minimum-viable: 66, standard: 27, full: 19` @@ -168,7 +168,7 @@ Main session writes the report to `output/run-instructions-audit-2026-05-29.md`. { "project_key": "Fun:GamePrjs/BattleGrid", "display_name": "BattleGrid", - "abs_path": "/Users/d/Projects/Fun:GamePrjs/BattleGrid", + "abs_path": "~/Projects/Fun:GamePrjs/BattleGrid", "primary_file_name": "AGENTS.md", "snapshot_claim": false, "tool_today": false, diff --git a/docs/plans/2026-06-14-portfolio-attention-reconciliation.md b/docs/plans/2026-06-14-portfolio-attention-reconciliation.md index 7a76b474..eccbd7aa 100644 --- a/docs/plans/2026-06-14-portfolio-attention-reconciliation.md +++ b/docs/plans/2026-06-14-portfolio-attention-reconciliation.md @@ -8,12 +8,12 @@ This note records the narrow truth update from the 2026-06-14 portfolio attentio - `bridge-db` is cataloged as `infrastructure` so generated portfolio truth resolves it as `active-infra`. Its repo-local docs still define it as scope-closed steady maintenance, so weekly attention should surface only concrete bridge, sync, health, or cross-system state decisions. - `notification-hub` is cataloged as `infrastructure` so generated portfolio truth resolves it as `active-infra`. Runtime or operator-signal claims still require fresh read-only verification before they drive work. -- `AIGCCore` repo-local canonical paths were aligned to `/Users/d/Projects/MoneyPRJsViaGPT/AIGCCore`, matching the live checkout and the portfolio truth path. +- `AIGCCore` repo-local canonical paths were aligned to `~/Projects/MoneyPRJsViaGPT/AIGCCore`, matching the live checkout and the portfolio truth path. ## Deferred Decisions - `AIGCCore` remains active infrastructure. The snapshot's Notion advisory still says `Archive` / `Archived`, but archiving or changing lifecycle/disposition requires explicit operator approval. -- `personal-ops` remains supplementary registry evidence, not a first-class portfolio truth row. Adding it to portfolio truth requires explicit operator approval because it lives outside `/Users/d/Projects` and would widen the registry contract. +- `personal-ops` remains supplementary registry evidence, not a first-class portfolio truth row. Adding it to portfolio truth requires explicit operator approval because it lives outside `~/Projects` and would widen the registry contract. ## Verification @@ -42,7 +42,7 @@ Expected state: - A non-publishing build with `include_notion=False` validated the catalog logic: `bridge-db`, `notification-hub`, and `AIGCCore` all resolved to `category=infrastructure` and `attention_state=active-infra`; snapshot validation reported no warnings. - `uv run pytest -q tests/test_portfolio_truth.py tests/test_catalog_validator.py`: 56 passed, 1 deprecation warning from a legacy CLI invocation test. - `uv run ruff check .`: passed. -- AIGCCore path cleanup was checked with `rg -n "/Users/d/Projects/AIGCCore" /Users/d/Projects/MoneyPRJsViaGPT/AIGCCore/AGENTS.md`; no stale matches remained. +- AIGCCore path cleanup was checked with `rg -n "~/Projects/AIGCCore" ~/Projects/MoneyPRJsViaGPT/AIGCCore/AGENTS.md`; no stale matches remained. ## 2026-06-19 Publish Result diff --git a/docs/plans/2026-06-19-notion-projection-reconciliation.md b/docs/plans/2026-06-19-notion-projection-reconciliation.md index de5145e9..e8c6496e 100644 --- a/docs/plans/2026-06-19-notion-projection-reconciliation.md +++ b/docs/plans/2026-06-19-notion-projection-reconciliation.md @@ -9,7 +9,7 @@ - Legacy audit report: `output/audit-report-saagpatel-2026-06-19.json` - `generated_at`: `2026-06-19T07:46:41.857483+00:00` - audited repo count: 149 -- Local Notion projection snapshot after approved row creation: `/Users/d/.local/share/notion-os/project-snapshot.json` +- Local Notion projection snapshot after approved row creation: `~/.local/share/notion-os/project-snapshot.json` - generated on 2026-06-19 - project count: 143 - `cross-system-smoke` `contract-health` now passes. @@ -107,14 +107,14 @@ from portfolio truth's repo set. They are not all the same kind of drift. | Audit-only repo | Verified evidence | Classification | Recommended disposition | | --- | --- | --- | --- | -| `saagpatel/ApplyKit-private-archive-20260517` | Local `/Users/d/Projects/ApplyKit` exists. Local `origin` points to `ApplyKit-private-archive-20260517`; `legacy-origin` points to `ApplyKit`. Portfolio truth now tracks `saagpatel/ApplyKit`, so the remaining audit-only repo is the private archive identity. | private archive mirror | Keep outside portfolio truth. Optional future repo-config cleanup: rename or demote the archive remote so local git configuration is less misleading, but do not create a Local Portfolio Project row. | -| `saagpatel/GithubRepoAuditor-private-archive-20260518` | Local `/Users/d/Projects/GithubRepoAuditor` exists. Local `canonical` points to `GithubRepoAuditor`; `origin` points to `GithubRepoAuditor-private-archive-20260518`. Portfolio truth now tracks `saagpatel/GithubRepoAuditor`, so the remaining audit-only repo is the private archive identity. | private archive mirror | Keep outside portfolio truth. Optional future repo-config cleanup: make the public canonical remote the less surprising local default if approved, but no truth or Notion row action is needed. | +| `saagpatel/ApplyKit-private-archive-20260517` | Local `~/Projects/ApplyKit` exists. Local `origin` points to `ApplyKit-private-archive-20260517`; `legacy-origin` points to `ApplyKit`. Portfolio truth now tracks `saagpatel/ApplyKit`, so the remaining audit-only repo is the private archive identity. | private archive mirror | Keep outside portfolio truth. Optional future repo-config cleanup: rename or demote the archive remote so local git configuration is less misleading, but do not create a Local Portfolio Project row. | +| `saagpatel/GithubRepoAuditor-private-archive-20260518` | Local `~/Projects/GithubRepoAuditor` exists. Local `canonical` points to `GithubRepoAuditor`; `origin` points to `GithubRepoAuditor-private-archive-20260518`. Portfolio truth now tracks `saagpatel/GithubRepoAuditor`, so the remaining audit-only repo is the private archive identity. | private archive mirror | Keep outside portfolio truth. Optional future repo-config cleanup: make the public canonical remote the less surprising local default if approved, but no truth or Notion row action is needed. | | `saagpatel/GithubRepoAuditor-scrubbed-import-20260518` | No direct local path. Private repo, no explicit catalog entry, same description/topics as GithubRepoAuditor. | import/scrub mirror | Keep outside portfolio truth. Consider upstream archive after confirming it is no longer needed for import provenance. | -| `saagpatel/SecondBrain` | Local path is `/Users/d/Documents/SecondBrain`, outside `/Users/d/Projects`. Project registry already has `supp:SecondBrain` and Notion projection-only treatment. | supplementary non-Projects knowledge vault | Keep outside portfolio truth unless the operator explicitly widens truth beyond `/Users/d/Projects`. Optional future registry cleanup: add repo metadata to supplementary evidence without making it first-class truth. | -| `saagpatel/personal-ops` | Local path is `/Users/d/.local/share/personal-ops`, outside `/Users/d/Projects`. Prior reconciliation explicitly keeps it supplementary unless approved. | supplementary non-Projects control plane | Keep outside portfolio truth without explicit operator approval. It can remain supplementary registry evidence. | -| `saagpatel/codexkit` | Local path is `/Users/d/.codex/codexkit`, outside `/Users/d/Projects`; dirty local operating-layer repo. | supplementary Codex operating surface | Keep outside portfolio truth by default. If promoted later, treat as local operating-system state, not normal product work. | -| `saagpatel/claude-code-workstation-bootstrap` | Local path is `/Users/d/claude-code-workstation-bootstrap`, outside `/Users/d/Projects`; bootstrap branch. | workstation bootstrap/support repo | Keep outside portfolio truth. Archive or mark manual-only upstream if it should stop appearing in legacy audit attention. | -| `saagpatel/portfolio-actuation-sandbox` | Local path is `/Users/d/portfolio-actuation-sandbox`, outside `/Users/d/Projects`; sandbox fixture repo with local dirty files. | actuation sandbox fixture | Keep outside portfolio truth. It is already represented as a Notion projection-only sandbox row, not a portfolio project. | +| `saagpatel/SecondBrain` | Local path is `~/Documents/SecondBrain`, outside `~/Projects`. Project registry already has `supp:SecondBrain` and Notion projection-only treatment. | supplementary non-Projects knowledge vault | Keep outside portfolio truth unless the operator explicitly widens truth beyond `~/Projects`. Optional future registry cleanup: add repo metadata to supplementary evidence without making it first-class truth. | +| `saagpatel/personal-ops` | Local path is `~/.local/share/personal-ops`, outside `~/Projects`. Prior reconciliation explicitly keeps it supplementary unless approved. | supplementary non-Projects control plane | Keep outside portfolio truth without explicit operator approval. It can remain supplementary registry evidence. | +| `saagpatel/codexkit` | Local path is `~/.codex/codexkit`, outside `~/Projects`; dirty local operating-layer repo. | supplementary Codex operating surface | Keep outside portfolio truth by default. If promoted later, treat as local operating-system state, not normal product work. | +| `saagpatel/claude-code-workstation-bootstrap` | Local path is `~/claude-code-workstation-bootstrap`, outside `~/Projects`; bootstrap branch. | workstation bootstrap/support repo | Keep outside portfolio truth. Archive or mark manual-only upstream if it should stop appearing in legacy audit attention. | +| `saagpatel/portfolio-actuation-sandbox` | Local path is `~/portfolio-actuation-sandbox`, outside `~/Projects`; sandbox fixture repo with local dirty files. | actuation sandbox fixture | Keep outside portfolio truth. It is already represented as a Notion projection-only sandbox row, not a portfolio project. | | `saagpatel/app` | GitHub repo is private and archived; no local direct path. Name collides with existing projection-only Local Portfolio placeholder `app`, but audit description is an archived SwiftUI app. | archived generic app repo | Keep outside portfolio truth. No Local Portfolio row; no action unless upstream archive hygiene is being cleaned. | | `saagpatel/hermes-agent` | GitHub audit marks it as a fork; no local direct path; no explicit catalog entry. | fork/upstream-derived repo | Keep outside portfolio truth. Archive/delete decision is upstream GitHub hygiene, not portfolio truth work. | | `saagpatel/agent-harness-hardening` | Public repo, no direct local path, no explicit catalog entry; sanitized hardening artifact. | published support artifact | Keep outside portfolio truth unless it becomes an active infra project with a local operating root. | @@ -190,7 +190,7 @@ Approval-gated: 3. If more approved rows are needed later, use the scoped Notion command: ```bash -cd /Users/d/Projects/Notion +cd ~/Projects/Notion npm run portfolio-audit:create-local-project-rows-from-truth -- \ --today 2026-06-19 \ --project-title diff --git a/output/doc-truth-up-review-2026-05-30.md b/output/doc-truth-up-review-2026-05-30.md index 6c0d1699..6705d25e 100644 --- a/output/doc-truth-up-review-2026-05-30.md +++ b/output/doc-truth-up-review-2026-05-30.md @@ -393,7 +393,7 @@ index 8dbb55b..02528ff 100644 - `src/data/prompts.ts` — system prompts for each fortune style (Mystical Oracle, Sassy Psychic, Corporate Oracle, Pirate Seer) - `src/data/luckyAttributes.ts` — curated lists for lucky colors, spirit animals, number generation -@@ -144,7 +147,7 @@ AIFortuneTeller is an active local project in the /Users/d/Projects portfolio. +@@ -144,7 +147,7 @@ AIFortuneTeller is an active local project in the ~/Projects portfolio. - **Styling:** Tailwind CSS 4.x + custom CSS keyframe animations - **Animation:** Canvas2D for particle systems, CSS for scan line overlays and UI transitions - **Audio:** Tone.js 15.x — ambient drone during scanning, chime on fortune reveal @@ -2577,20 +2577,20 @@ apply these fixes. ### `CONTRIBUTING.md:12` **What is wrong:** References `.gitignore` at the absolute path -`` `/Users/d/Projects/OrbitForge/.gitignore` `` — but the canonical repo path is -`/Users/d/Projects/Fun:GamePrjs/OrbitForge` (note the `Fun:GamePrjs` parent with a colon). +`` `~/Projects/OrbitForge/.gitignore` `` — but the canonical repo path is +`~/Projects/Fun:GamePrjs/OrbitForge` (note the `Fun:GamePrjs` parent with a colon). -**One-line fix:** Replace `/Users/d/Projects/OrbitForge/.gitignore` with -`/Users/d/Projects/Fun:GamePrjs/OrbitForge/.gitignore`, or drop the absolute path entirely and +**One-line fix:** Replace `~/Projects/OrbitForge/.gitignore` with +`~/Projects/Fun:GamePrjs/OrbitForge/.gitignore`, or drop the absolute path entirely and write "the project's `.gitignore`". ### `CONTRIBUTING.md:32` **What is wrong:** References `package.json` at -`` `/Users/d/Projects/OrbitForge/package.json` `` — same wrong path as above. +`` `~/Projects/OrbitForge/package.json` `` — same wrong path as above. -**One-line fix:** Replace `/Users/d/Projects/OrbitForge/package.json` with -`/Users/d/Projects/Fun:GamePrjs/OrbitForge/package.json`, or drop the absolute path entirely. +**One-line fix:** Replace `~/Projects/OrbitForge/package.json` with +`~/Projects/Fun:GamePrjs/OrbitForge/package.json`, or drop the absolute path entirely. --- @@ -2614,9 +2614,9 @@ index e38b8ff..2cb1186 100644 | Path | Branch tip | Status | |---|---|---| --| `/Users/d/Projects/Fun:GamePrjs/OrbitForge` | `codex/chore/bootstrap-codex-os` at `07ef263` (feat: harden runtime safety and release gates) | **Canonical** — work here. | -+| `/Users/d/Projects/Fun:GamePrjs/OrbitForge` | `master` at `8f7d64a` (docs: identify canonical local checkout and document typo-dup disposition) | **Canonical** — work here. | - | `/Users/d/Projects/FunGamePrjs/OrbitForge` | `codex/chore/bootstrap-codex-os` at `a383f37` (chore: finalize codex os bootstrap baseline) | Stale — one commit behind canonical and ~61 dirty files of abandoned WIP. | +-| `~/Projects/Fun:GamePrjs/OrbitForge` | `codex/chore/bootstrap-codex-os` at `07ef263` (feat: harden runtime safety and release gates) | **Canonical** — work here. | ++| `~/Projects/Fun:GamePrjs/OrbitForge` | `master` at `8f7d64a` (docs: identify canonical local checkout and document typo-dup disposition) | **Canonical** — work here. | + | `~/Projects/FunGamePrjs/OrbitForge` | `codex/chore/bootstrap-codex-os` at `a383f37` (chore: finalize codex os bootstrap baseline) | Stale — one commit behind canonical and ~61 dirty files of abandoned WIP. | Both copies point `origin` at the same GitHub repository @@ -141,6 +141,6 @@ For full feature detail see `README.md`. From f25abb43a922a012b51b2ffcd8de98f49b93814f Mon Sep 17 00:00:00 2001 From: saagpatel <269905221+saagpatel@users.noreply.github.com> Date: Tue, 11 Aug 2026 11:50:57 -0700 Subject: [PATCH 2/2] chore(privacy): finish home-path redaction in code, config and fixtures The earlier commit on this branch redacted documentation and stopped there. Code, configuration, test fixtures and generated run artifacts still carried the absolute home path, which is what the published branch actually exposes. Substitutions used, and why they differ: ~ prose, shell command strings, and opaque fixture values, none of which resolve the path /Users/example/... fixtures that must stay a detectable private path. The portfolio-truth validator keys on /users|home|root/, not on the account name, so an anonymous account keeps every assertion meaningful while naming nobody Left alone deliberately, because each is a test that enforces the very thing this branch is doing and redacting it would remove what the test proves: package-surface.test.ts asserts five named operator surfaces do not contain the path; the literal there is the needle, not a leak the sealed local-execution evidence is SHA-256 pinned by its own contract test, so a text edit invalidates the proof rather than redacting it. That one needs a re-qualification run, not a substitution. --- config/portfolio-catalog.yaml | 4 +- config/project-registry-overrides.json | 8 +- output/doc-truth-up-full-2026-05-30.log | 2 +- output/doc-truth-up-run-2026-05-30.json | 162 +++++++++--------- output/doc-truth-up-smoke-2026-05-30.log | 2 +- src/codex_restart_packet.py | 6 +- src/portfolio_context_recovery.py | 2 +- src/project_registry.py | 4 +- .../test_portfolio_truth_contract_fixture.py | 16 +- 9 files changed, 103 insertions(+), 103 deletions(-) diff --git a/config/portfolio-catalog.yaml b/config/portfolio-catalog.yaml index 01a12833..b28d1664 100644 --- a/config/portfolio-catalog.yaml +++ b/config/portfolio-catalog.yaml @@ -86,7 +86,7 @@ repos: maturity_program: maintain target_maturity: operating doctor_standard: full - notes: Owns Raycast script commands, active-project verification routing, read-only ops snapshots, and mirrored Codex operating-layer prompt/eval snapshots for /Users/d. + notes: Owns Raycast script commands, active-project verification routing, read-only ops snapshots, and mirrored Codex operating-layer prompt/eval snapshots for ~. agent-bridge: owner: d purpose: local SQLite-backed MCP shared-state bus for coordinating coding agents @@ -644,7 +644,7 @@ repos: operating_path: maintain tool_provenance: claude-code maturity_program: maintain - notes: Archived from active operator attention on 2026-06-13. The corrupt local checkout was preserved at /Users/d/Projects/GhostRoutes.corrupt-20260613T124820Z and /Users/d/Projects/GhostRoutes was restored from a fresh origin clone. Keep this repo archived/deferred unless explicitly reactivated. + notes: Archived from active operator attention on 2026-06-13. The corrupt local checkout was preserved at ~/Projects/GhostRoutes.corrupt-20260613T124820Z and ~/Projects/GhostRoutes was restored from a fresh origin clone. Keep this repo archived/deferred unless explicitly reactivated. Liminal: owner: d purpose: focused atmospheric iOS experience being finished as an Oddworks release diff --git a/config/project-registry-overrides.json b/config/project-registry-overrides.json index 7b8acae9..27c9cd9c 100644 --- a/config/project-registry-overrides.json +++ b/config/project-registry-overrides.json @@ -20,7 +20,7 @@ "repo_full_name": null, "group_key": "operator_infra", "lifecycle_state": "manual-only", - "note": "Machine-wide Claude Code harness operating surface under /Users/d/.claude; tracked as shipped/monitor-only, not a standalone repo." + "note": "Machine-wide Claude Code harness operating surface under ~/.claude; tracked as shipped/monitor-only, not a standalone repo." }, { "canonical_key": "supp:personal-ops", @@ -36,7 +36,7 @@ "repo_full_name": "saagpatel/operator-scripts", "group_key": "operator_infra", "lifecycle_state": "active", - "note": "Private scheduled-job scripts repository rooted at /Users/d/scripts, outside the default /Users/d/Projects audit scan." + "note": "Private scheduled-job scripts repository rooted at ~/scripts, outside the default ~/Projects audit scan." }, { "canonical_key": "supp:SecondBrain", @@ -44,7 +44,7 @@ "repo_full_name": null, "group_key": "operator_infra", "lifecycle_state": "active", - "note": "4-layer knowledge vault at /Users/d/Documents/SecondBrain (engraph-indexed). Not a git repo; absent from auditor." + "note": "4-layer knowledge vault at ~/Documents/SecondBrain (engraph-indexed). Not a git repo; absent from auditor." } ], "memory_meta": { @@ -79,7 +79,7 @@ "app": "local runtime/app shell placeholder; not a portfolio-truth repo", "RAG Knowledge Base": "notion planning row; not a portfolio-truth repo", "Sandbox Local Portfolio Project": "actuation sandbox fixture row", - "SecondBrain": "knowledge vault under /Users/d/Documents; not a /Users/d/Projects repo" + "SecondBrain": "knowledge vault under ~/Documents; not a ~/Projects repo" }, "notion_truth_shadow_rows": { "agent-bridge-launch": "agent-bridge", diff --git a/output/doc-truth-up-full-2026-05-30.log b/output/doc-truth-up-full-2026-05-30.log index 54950577..13105880 100644 --- a/output/doc-truth-up-full-2026-05-30.log +++ b/output/doc-truth-up-full-2026-05-30.log @@ -81,5 +81,5 @@ doc-truth-up batch · 80 repo(s) · tier=2 · model=sonnet · concurrency=8 · E [80/80] mcpforge → ran Done. {'skipped': 31, 'already_done': 6, 'ran': 43} -Results: /Users/d/Projects/GithubRepoAuditor/output/doc-truth-up-run-2026-05-30.json +Results: ~/Projects/GithubRepoAuditor/output/doc-truth-up-run-2026-05-30.json Review each repo's docs/truth-up-* branch, then merge or delete. Nothing was pushed. diff --git a/output/doc-truth-up-run-2026-05-30.json b/output/doc-truth-up-run-2026-05-30.json index 1a1fab3d..4842106b 100644 --- a/output/doc-truth-up-run-2026-05-30.json +++ b/output/doc-truth-up-run-2026-05-30.json @@ -1,97 +1,97 @@ [ { "project_key": "AssistSupport-security-alerts", - "abs_path": "/Users/d/Projects/AssistSupport-security-alerts", + "abs_path": "~/Projects/AssistSupport-security-alerts", "status": "skipped", "reason": "not a git repo" }, { "project_key": "AIFortuneTeller", - "abs_path": "/Users/d/Projects/AIFortuneTeller", + "abs_path": "~/Projects/AIFortuneTeller", "status": "already_done", "branch": "docs/truth-up-2026-05-30" }, { "project_key": "ArguMap", - "abs_path": "/Users/d/Projects/ArguMap", + "abs_path": "~/Projects/ArguMap", "status": "already_done", "branch": "docs/truth-up-2026-05-30" }, { "project_key": "APIReverse", - "abs_path": "/Users/d/Projects/APIReverse", + "abs_path": "~/Projects/APIReverse", "status": "already_done", "branch": "docs/truth-up-2026-05-30" }, { "project_key": "BrowserHistoryVisualizer", - "abs_path": "/Users/d/Projects/BrowserHistoryVisualizer", + "abs_path": "~/Projects/BrowserHistoryVisualizer", "status": "already_done", "branch": "docs/truth-up-2026-05-30" }, { "project_key": "Calibrate", - "abs_path": "/Users/d/Projects/Calibrate", + "abs_path": "~/Projects/Calibrate", "status": "already_done", "branch": "docs/truth-up-2026-05-30" }, { "project_key": "Chromafield", - "abs_path": "/Users/d/Projects/Chromafield", + "abs_path": "~/Projects/Chromafield", "status": "already_done", "branch": "docs/truth-up-2026-05-30" }, { "project_key": "Codec", - "abs_path": "/Users/d/Projects/Codec", + "abs_path": "~/Projects/Codec", "status": "skipped", "reason": "uncommitted tracked changes" }, { "project_key": "AssistSupport", - "abs_path": "/Users/d/Projects/AssistSupport", + "abs_path": "~/Projects/AssistSupport", "status": "skipped", "reason": "uncommitted tracked changes" }, { "project_key": "Fun:GamePrjs/DeepTank", - "abs_path": "/Users/d/Projects/Fun:GamePrjs/DeepTank", + "abs_path": "~/Projects/Fun:GamePrjs/DeepTank", "status": "skipped", "reason": "uncommitted tracked changes" }, { "project_key": "Fun:GamePrjs/ CryptForge", - "abs_path": "/Users/d/Projects/Fun:GamePrjs/ CryptForge", + "abs_path": "~/Projects/Fun:GamePrjs/ CryptForge", "status": "skipped", "reason": "uncommitted tracked changes" }, { "project_key": "Fun:GamePrjs/DesktopPEt", - "abs_path": "/Users/d/Projects/Fun:GamePrjs/DesktopPEt", + "abs_path": "~/Projects/Fun:GamePrjs/DesktopPEt", "status": "skipped", "reason": "uncommitted tracked changes" }, { "project_key": "Fun:GamePrjs/EarthPulse", - "abs_path": "/Users/d/Projects/Fun:GamePrjs/EarthPulse", + "abs_path": "~/Projects/Fun:GamePrjs/EarthPulse", "status": "skipped", "reason": "uncommitted tracked changes" }, { "project_key": "FunGamePrjs/OrbitForge", - "abs_path": "/Users/d/Projects/FunGamePrjs/OrbitForge", + "abs_path": "~/Projects/FunGamePrjs/OrbitForge", "status": "skipped", "reason": "uncommitted tracked changes" }, { "project_key": "GPT_RAG", - "abs_path": "/Users/d/Projects/GPT_RAG", + "abs_path": "~/Projects/GPT_RAG", "status": "skipped", "reason": "uncommitted tracked changes" }, { "project_key": "EvolutionSandbox", - "abs_path": "/Users/d/Projects/EvolutionSandbox", + "abs_path": "~/Projects/EvolutionSandbox", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -104,7 +104,7 @@ }, { "project_key": "Devil's Advocate", - "abs_path": "/Users/d/Projects/Devil's Advocate", + "abs_path": "~/Projects/Devil's Advocate", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -117,25 +117,25 @@ }, { "project_key": "ITPRJsViaClaude/IncidentWorkbench", - "abs_path": "/Users/d/Projects/ITPRJsViaClaude/IncidentWorkbench", + "abs_path": "~/Projects/ITPRJsViaClaude/IncidentWorkbench", "status": "skipped", "reason": "uncommitted tracked changes" }, { "project_key": "ITPRJsViaClaude/KBFreshnessDetector", - "abs_path": "/Users/d/Projects/ITPRJsViaClaude/KBFreshnessDetector", + "abs_path": "~/Projects/ITPRJsViaClaude/KBFreshnessDetector", "status": "skipped", "reason": "uncommitted tracked changes" }, { "project_key": "ITPRJsViaClaude/PersonalKBDrafter", - "abs_path": "/Users/d/Projects/ITPRJsViaClaude/PersonalKBDrafter", + "abs_path": "~/Projects/ITPRJsViaClaude/PersonalKBDrafter", "status": "skipped", "reason": "uncommitted tracked changes" }, { "project_key": "Fun:GamePrjs/DesktopTerrarium/desktop_terrarium", - "abs_path": "/Users/d/Projects/Fun:GamePrjs/DesktopTerrarium/desktop_terrarium", + "abs_path": "~/Projects/Fun:GamePrjs/DesktopTerrarium/desktop_terrarium", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -147,13 +147,13 @@ }, { "project_key": "ITPRJsViaClaude/SmartClipboard", - "abs_path": "/Users/d/Projects/ITPRJsViaClaude/SmartClipboard", + "abs_path": "~/Projects/ITPRJsViaClaude/SmartClipboard", "status": "skipped", "reason": "uncommitted tracked changes" }, { "project_key": "ConvictionMapper", - "abs_path": "/Users/d/Projects/ConvictionMapper", + "abs_path": "~/Projects/ConvictionMapper", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -167,31 +167,31 @@ }, { "project_key": "ITPRJsViaClaude/TicketDashboard", - "abs_path": "/Users/d/Projects/ITPRJsViaClaude/TicketDashboard", + "abs_path": "~/Projects/ITPRJsViaClaude/TicketDashboard", "status": "skipped", "reason": "uncommitted tracked changes" }, { "project_key": "ITPRJsViaClaude/TicketHandoff", - "abs_path": "/Users/d/Projects/ITPRJsViaClaude/TicketHandoff", + "abs_path": "~/Projects/ITPRJsViaClaude/TicketHandoff", "status": "skipped", "reason": "uncommitted tracked changes" }, { "project_key": "IncidentMgmt", - "abs_path": "/Users/d/Projects/IncidentMgmt", + "abs_path": "~/Projects/IncidentMgmt", "status": "skipped", "reason": "uncommitted tracked changes" }, { "project_key": "IncidentReview", - "abs_path": "/Users/d/Projects/IncidentReview", + "abs_path": "~/Projects/IncidentReview", "status": "skipped", "reason": "uncommitted tracked changes" }, { "project_key": "GlassLayer", - "abs_path": "/Users/d/Projects/GlassLayer", + "abs_path": "~/Projects/GlassLayer", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -204,13 +204,13 @@ }, { "project_key": "JSMTicketAnalyticsExport", - "abs_path": "/Users/d/Projects/JSMTicketAnalyticsExport", + "abs_path": "~/Projects/JSMTicketAnalyticsExport", "status": "skipped", "reason": "uncommitted tracked changes" }, { "project_key": "Fun:GamePrjs/PomGambler", - "abs_path": "/Users/d/Projects/Fun:GamePrjs/PomGambler", + "abs_path": "~/Projects/Fun:GamePrjs/PomGambler", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -222,7 +222,7 @@ }, { "project_key": "Fun:GamePrjs/OrbitForge", - "abs_path": "/Users/d/Projects/Fun:GamePrjs/OrbitForge", + "abs_path": "~/Projects/Fun:GamePrjs/OrbitForge", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -230,11 +230,11 @@ "docs/LOCAL-CHECKOUT-DISPOSITION.md" ], "orig_branch": "master", - "claude_summary": "refs)\n next-move unverifiable (UI polish status can't be read from code)\n\ncounts: consistent 4 / drifted-fixed 1 / unverifiable 1\n\ndoc files changed:\n docs/LOCAL-CHECKOUT-DISPOSITION.md (stale branch codex/chore/bootstrap-codex-os \u2192\n master; stale SHA 07ef263 \u2192 8f7d64a)\n DOC-RECONCILIATION.md (new \u2014 full audit record)\n\ncontradictions for human review (files outside editable scope):\n CONTRIBUTING.md:12 \u2014 absolute path /Users/d/Projects/OrbitForge/.gitignore is wrong;\n canonical path is Fun:GamePrjs/OrbitForge (colon in parent dir)\n CONTRIBUTING.md:32 \u2014 same wrong absolute path for package.json reference\n\nnon-doc files in git status: none (AGENTS.md and .perf-results/ are pre-existing untracked)\n```" + "claude_summary": "refs)\n next-move unverifiable (UI polish status can't be read from code)\n\ncounts: consistent 4 / drifted-fixed 1 / unverifiable 1\n\ndoc files changed:\n docs/LOCAL-CHECKOUT-DISPOSITION.md (stale branch codex/chore/bootstrap-codex-os \u2192\n master; stale SHA 07ef263 \u2192 8f7d64a)\n DOC-RECONCILIATION.md (new \u2014 full audit record)\n\ncontradictions for human review (files outside editable scope):\n CONTRIBUTING.md:12 \u2014 absolute path ~/Projects/OrbitForge/.gitignore is wrong;\n canonical path is Fun:GamePrjs/OrbitForge (colon in parent dir)\n CONTRIBUTING.md:32 \u2014 same wrong absolute path for package.json reference\n\nnon-doc files in git status: none (AGENTS.md and .perf-results/ are pre-existing untracked)\n```" }, { "project_key": "ComplianceKit", - "abs_path": "/Users/d/Projects/ComplianceKit", + "abs_path": "~/Projects/ComplianceKit", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -246,7 +246,7 @@ }, { "project_key": "HowMoneyMoves", - "abs_path": "/Users/d/Projects/HowMoneyMoves", + "abs_path": "~/Projects/HowMoneyMoves", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -259,7 +259,7 @@ }, { "project_key": "LifeCadenceLedger", - "abs_path": "/Users/d/Projects/LifeCadenceLedger", + "abs_path": "~/Projects/LifeCadenceLedger", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -272,19 +272,19 @@ }, { "project_key": "MoneyPRJsViaGPT/AIGCCore", - "abs_path": "/Users/d/Projects/MoneyPRJsViaGPT/AIGCCore", + "abs_path": "~/Projects/MoneyPRJsViaGPT/AIGCCore", "status": "skipped", "reason": "uncommitted tracked changes" }, { "project_key": "MoneyPRJsViaGPT/SignalFlow", - "abs_path": "/Users/d/Projects/MoneyPRJsViaGPT/SignalFlow", + "abs_path": "~/Projects/MoneyPRJsViaGPT/SignalFlow", "status": "skipped", "reason": "uncommitted tracked changes" }, { "project_key": "ITPRJsViaClaude/SnippetLibrary", - "abs_path": "/Users/d/Projects/ITPRJsViaClaude/SnippetLibrary", + "abs_path": "~/Projects/ITPRJsViaClaude/SnippetLibrary", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -297,7 +297,7 @@ }, { "project_key": "MCPAudit", - "abs_path": "/Users/d/Projects/MCPAudit", + "abs_path": "~/Projects/MCPAudit", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -309,13 +309,13 @@ }, { "project_key": "Premise", - "abs_path": "/Users/d/Projects/Premise", + "abs_path": "~/Projects/Premise", "status": "skipped", "reason": "uncommitted tracked changes" }, { "project_key": "JobMarketHeatmap", - "abs_path": "/Users/d/Projects/JobMarketHeatmap", + "abs_path": "~/Projects/JobMarketHeatmap", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -328,7 +328,7 @@ }, { "project_key": "ITPRJsViaClaude/ScreenshotAnnotate", - "abs_path": "/Users/d/Projects/ITPRJsViaClaude/ScreenshotAnnotate", + "abs_path": "~/Projects/ITPRJsViaClaude/ScreenshotAnnotate", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -340,7 +340,7 @@ }, { "project_key": "Interruption Resume Studio", - "abs_path": "/Users/d/Projects/Interruption Resume Studio", + "abs_path": "~/Projects/Interruption Resume Studio", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -354,7 +354,7 @@ }, { "project_key": "Misc:NoGoPRJs/app", - "abs_path": "/Users/d/Projects/Misc:NoGoPRJs/app", + "abs_path": "~/Projects/Misc:NoGoPRJs/app", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -366,7 +366,7 @@ }, { "project_key": "Liminal", - "abs_path": "/Users/d/Projects/Liminal", + "abs_path": "~/Projects/Liminal", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -379,7 +379,7 @@ }, { "project_key": "NetworkDecoder", - "abs_path": "/Users/d/Projects/NetworkDecoder", + "abs_path": "~/Projects/NetworkDecoder", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -392,7 +392,7 @@ }, { "project_key": "NeuralNetwork", - "abs_path": "/Users/d/Projects/NeuralNetwork", + "abs_path": "~/Projects/NeuralNetwork", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -405,7 +405,7 @@ }, { "project_key": "ScreenshottoDataSelect", - "abs_path": "/Users/d/Projects/ScreenshottoDataSelect", + "abs_path": "~/Projects/ScreenshottoDataSelect", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -418,7 +418,7 @@ }, { "project_key": "Pulse Orbit", - "abs_path": "/Users/d/Projects/Pulse Orbit", + "abs_path": "~/Projects/Pulse Orbit", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -431,7 +431,7 @@ }, { "project_key": "RedditSentimentAnalyzer", - "abs_path": "/Users/d/Projects/RedditSentimentAnalyzer", + "abs_path": "~/Projects/RedditSentimentAnalyzer", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -445,7 +445,7 @@ }, { "project_key": "ResumeEvolver", - "abs_path": "/Users/d/Projects/ResumeEvolver", + "abs_path": "~/Projects/ResumeEvolver", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -458,7 +458,7 @@ }, { "project_key": "ReturnRadar", - "abs_path": "/Users/d/Projects/ReturnRadar", + "abs_path": "~/Projects/ReturnRadar", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -471,7 +471,7 @@ }, { "project_key": "RoomTone", - "abs_path": "/Users/d/Projects/RoomTone", + "abs_path": "~/Projects/RoomTone", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -484,7 +484,7 @@ }, { "project_key": "TradeOffAtlas", - "abs_path": "/Users/d/Projects/TradeOffAtlas", + "abs_path": "~/Projects/TradeOffAtlas", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -496,13 +496,13 @@ }, { "project_key": "VanityPRJs/Relay", - "abs_path": "/Users/d/Projects/VanityPRJs/Relay", + "abs_path": "~/Projects/VanityPRJs/Relay", "status": "skipped", "reason": "uncommitted tracked changes" }, { "project_key": "Sovereign", - "abs_path": "/Users/d/Projects/Sovereign", + "abs_path": "~/Projects/Sovereign", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -515,7 +515,7 @@ }, { "project_key": "VanityPRJs/Chronomap", - "abs_path": "/Users/d/Projects/VanityPRJs/Chronomap", + "abs_path": "~/Projects/VanityPRJs/Chronomap", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -529,7 +529,7 @@ }, { "project_key": "Seismoscope", - "abs_path": "/Users/d/Projects/Seismoscope", + "abs_path": "~/Projects/Seismoscope", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -542,7 +542,7 @@ }, { "project_key": "Signal & Noise", - "abs_path": "/Users/d/Projects/Signal & Noise", + "abs_path": "~/Projects/Signal & Noise", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -557,7 +557,7 @@ }, { "project_key": "VanityPRJs/Conductor", - "abs_path": "/Users/d/Projects/VanityPRJs/Conductor", + "abs_path": "~/Projects/VanityPRJs/Conductor", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -570,13 +570,13 @@ }, { "project_key": "evals", - "abs_path": "/Users/d/Projects/evals", + "abs_path": "~/Projects/evals", "status": "skipped", "reason": "not a git repo" }, { "project_key": "VanityPRJs/Echolocate", - "abs_path": "/Users/d/Projects/VanityPRJs/Echolocate", + "abs_path": "~/Projects/VanityPRJs/Echolocate", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -589,7 +589,7 @@ }, { "project_key": "da-scaffold", - "abs_path": "/Users/d/Projects/da-scaffold", + "abs_path": "~/Projects/da-scaffold", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -602,7 +602,7 @@ }, { "project_key": "Terroir", - "abs_path": "/Users/d/Projects/Terroir", + "abs_path": "~/Projects/Terroir", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -615,49 +615,49 @@ }, { "project_key": "mcpforge-hosted-ts-smoke", - "abs_path": "/Users/d/Projects/mcpforge-hosted-ts-smoke", + "abs_path": "~/Projects/mcpforge-hosted-ts-smoke", "status": "skipped", "reason": "not a git repo" }, { "project_key": "mcpforge-openai-full-smoke-gate", - "abs_path": "/Users/d/Projects/mcpforge-openai-full-smoke-gate", + "abs_path": "~/Projects/mcpforge-openai-full-smoke-gate", "status": "skipped", "reason": "not a git repo" }, { "project_key": "mcpforge-openai-remote-openapi-readiness", - "abs_path": "/Users/d/Projects/mcpforge-openai-remote-openapi-readiness", + "abs_path": "~/Projects/mcpforge-openai-remote-openapi-readiness", "status": "skipped", "reason": "not a git repo" }, { "project_key": "mcpforge-openapi-auth-smoke-fixture", - "abs_path": "/Users/d/Projects/mcpforge-openapi-auth-smoke-fixture", + "abs_path": "~/Projects/mcpforge-openapi-auth-smoke-fixture", "status": "skipped", "reason": "not a git repo" }, { "project_key": "mcpforge-ts-hardening", - "abs_path": "/Users/d/Projects/mcpforge-ts-hardening", + "abs_path": "~/Projects/mcpforge-ts-hardening", "status": "skipped", "reason": "not a git repo" }, { "project_key": "mcpforge-v03-builder", - "abs_path": "/Users/d/Projects/mcpforge-v03-builder", + "abs_path": "~/Projects/mcpforge-v03-builder", "status": "skipped", "reason": "not a git repo" }, { "project_key": "resume-evolver-tmp-1776063720", - "abs_path": "/Users/d/Projects/resume-evolver-tmp-1776063720", + "abs_path": "~/Projects/resume-evolver-tmp-1776063720", "status": "skipped", "reason": "uncommitted tracked changes" }, { "project_key": "VanityPRJs/TerraSynth", - "abs_path": "/Users/d/Projects/VanityPRJs/TerraSynth", + "abs_path": "~/Projects/VanityPRJs/TerraSynth", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -670,7 +670,7 @@ }, { "project_key": "bridge-db", - "abs_path": "/Users/d/Projects/bridge-db", + "abs_path": "~/Projects/bridge-db", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -682,13 +682,13 @@ }, { "project_key": "visual-album-studio", - "abs_path": "/Users/d/Projects/visual-album-studio", + "abs_path": "~/Projects/visual-album-studio", "status": "skipped", "reason": "uncommitted tracked changes" }, { "project_key": "cross-system-smoke", - "abs_path": "/Users/d/Projects/cross-system-smoke", + "abs_path": "~/Projects/cross-system-smoke", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -700,7 +700,7 @@ }, { "project_key": "ink", - "abs_path": "/Users/d/Projects/ink", + "abs_path": "~/Projects/ink", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -713,7 +713,7 @@ }, { "project_key": "Wavelength", - "abs_path": "/Users/d/Projects/Wavelength", + "abs_path": "~/Projects/Wavelength", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -726,7 +726,7 @@ }, { "project_key": "knowledgecore", - "abs_path": "/Users/d/Projects/knowledgecore", + "abs_path": "~/Projects/knowledgecore", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -738,7 +738,7 @@ }, { "project_key": "stockpulse", - "abs_path": "/Users/d/Projects/stockpulse", + "abs_path": "~/Projects/stockpulse", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -751,7 +751,7 @@ }, { "project_key": "thought-trails", - "abs_path": "/Users/d/Projects/thought-trails", + "abs_path": "~/Projects/thought-trails", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ @@ -763,7 +763,7 @@ }, { "project_key": "mcpforge", - "abs_path": "/Users/d/Projects/mcpforge", + "abs_path": "~/Projects/mcpforge", "status": "ran", "branch": "docs/truth-up-2026-05-30", "changed_files": [ diff --git a/output/doc-truth-up-smoke-2026-05-30.log b/output/doc-truth-up-smoke-2026-05-30.log index d4c89d0f..aad977ac 100644 --- a/output/doc-truth-up-smoke-2026-05-30.log +++ b/output/doc-truth-up-smoke-2026-05-30.log @@ -9,5 +9,5 @@ doc-truth-up batch · 8 repo(s) · tier=2 · model=sonnet · concurrency=8 · EX [8/8] AIFortuneTeller → ran Done. {'skipped': 2, 'ran': 6} -Results: /Users/d/Projects/GithubRepoAuditor/output/doc-truth-up-run-2026-05-30.json +Results: ~/Projects/GithubRepoAuditor/output/doc-truth-up-run-2026-05-30.json Review each repo's docs/truth-up-* branch, then merge or delete. Nothing was pushed. diff --git a/src/codex_restart_packet.py b/src/codex_restart_packet.py index a3e991d0..99e85f0e 100644 --- a/src/codex_restart_packet.py +++ b/src/codex_restart_packet.py @@ -293,9 +293,9 @@ def build_restart_packet( for repo in active_set ], "next_commands": [ - "python -m src.codex_restart_packet --workspace-root /Users/d/Projects", - "git -C /Users/d/.local/share/personal-ops status --short --branch", - "git -C /Users/d/.codex/codexkit status --short --branch", + "python -m src.codex_restart_packet --workspace-root ~/Projects", + "git -C ~/.local/share/personal-ops status --short --branch", + "git -C ~/.codex/codexkit status --short --branch", "audit report saagpatel --portfolio-truth --portfolio-truth-include-security", ], } diff --git a/src/portfolio_context_recovery.py b/src/portfolio_context_recovery.py index 89b025c7..f8b8ea54 100644 --- a/src/portfolio_context_recovery.py +++ b/src/portfolio_context_recovery.py @@ -411,7 +411,7 @@ def _build_context_sections( readme_sections.get("product goal"), _usable_summary(readme_sections.get("__preamble__", "")), project.declared.purpose, - f"{project.identity.display_name} is an active local project in the /Users/d/Projects portfolio.", + f"{project.identity.display_name} is an active local project in the ~/Projects portfolio.", ) current_state = _first_nonempty( primary_sections.get("current state"), diff --git a/src/project_registry.py b/src/project_registry.py index c6696981..2e2b928a 100644 --- a/src/project_registry.py +++ b/src/project_registry.py @@ -117,7 +117,7 @@ "section_label": "Operator OS", "lifecycle_state": "active", "note": ( - "4-layer knowledge vault at /Users/d/Documents/SecondBrain " + "4-layer knowledge vault at ~/Documents/SecondBrain " "(engraph-indexed). Not a git repo; absent from auditor." ), }, @@ -147,7 +147,7 @@ "app": "local runtime/app shell placeholder; not a portfolio-truth repo", "claude-code-harness": "local agent harness projection; outside repo-root truth", "Sandbox Local Portfolio Project": "actuation sandbox fixture row", - "SecondBrain": "knowledge vault under /Users/d/Documents; not a /Users/d/Projects repo", + "SecondBrain": "knowledge vault under ~/Documents; not a ~/Projects repo", "RAG Knowledge Base": "notion planning row; not a portfolio-truth repo", } diff --git a/tests/test_portfolio_truth_contract_fixture.py b/tests/test_portfolio_truth_contract_fixture.py index 81f7199e..b8431c41 100644 --- a/tests/test_portfolio_truth_contract_fixture.py +++ b/tests/test_portfolio_truth_contract_fixture.py @@ -1391,7 +1391,7 @@ def _delete_nested_repository_value( def _replace_all_repository_paths(repository_state: dict[str, object]) -> None: - private_path = "/Users/d/private-repository" + private_path = "/Users/example/private-repository" repository_state["local"]["path"] = private_path repository_state["worktrees"][0]["path"] = private_path repository_state["topology"]["configured_path"] = private_path @@ -1444,13 +1444,13 @@ def _replace_all_repository_paths_with_other_demo_path( ), ( lambda state: _set_nested_repository_value( - state, ("local", "path"), "/Users/d/private-local" + state, ("local", "path"), "/Users/example/private-local" ), "[Rr]epository", ), ( lambda state: _set_nested_repository_value( - state, ("worktrees", 0, "path"), "/Users/d/private-worktree" + state, ("worktrees", 0, "path"), "/Users/example/private-worktree" ), "[Rr]epository", ), @@ -1458,13 +1458,13 @@ def _replace_all_repository_paths_with_other_demo_path( lambda state: _set_nested_repository_value( state, ("topology", "selection", "path"), - "/Users/d/private-selection", + "/Users/example/private-selection", ), "[Rr]epository", ), ( lambda state: _set_nested_repository_value( - state, ("topology", "configured_path"), "/Users/d/private-topology" + state, ("topology", "configured_path"), "/Users/example/private-topology" ), "[Rr]epository", ), @@ -1582,7 +1582,7 @@ def _replace_all_repository_paths_with_other_demo_path( ), ( lambda state: _set_nested_repository_value( - state, ("local", "upstream"), "/Users/d/private" + state, ("local", "upstream"), "/Users/example/private" ), "upstream", ), @@ -1717,7 +1717,7 @@ def test_portable_repository_state_rejects_private_observation_failure_reason() "state": "unknown", "observed_at": GENERATED_AT.isoformat(), "reason_code": "repository_observation_failed", - "reason": "/Users/d/private-repository", + "reason": "/Users/example/private-repository", "remote_default_branch": repository_state["remote_default_branch"], } @@ -1744,7 +1744,7 @@ def test_portable_repository_state_rejects_private_observation_failure_reason() (("declared", "notes"), "owner@example.com"), (("declared", "notes"), "owner@localhost"), (("declared", "notes"), "/root/private-note"), - (("warnings",), ["/Users/d/private-warning"]), + (("warnings",), ["/Users/example/private-warning"]), ), ) def test_portable_payload_rejects_private_identity_patterns(