diff --git a/config/portfolio-catalog.yaml b/config/portfolio-catalog.yaml index 01a1283..b28d166 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 e9c4f7a..3d66167 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/docs/demo-proof/2026-06-07/README.md b/docs/demo-proof/2026-06-07/README.md index 57f9477..616cbd9 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 a512092..c846d5f 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 a701bf5..89de800 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 +cd ~/Projects/GithubRepoAuditor python -m github_repo_auditor.codex_restart_packet --workspace-root "$HOME/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 0623933..995cf8a 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 b2d7b22..d4a7242 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 d8b5345..d57c412 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 c41e3a0..c81bb35 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-full-2026-05-30.log b/output/doc-truth-up-full-2026-05-30.log index 5495057..1310588 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-review-2026-05-30.md b/output/doc-truth-up-review-2026-05-30.md index 6c0d169..6705d25 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`. diff --git a/output/doc-truth-up-run-2026-05-30.json b/output/doc-truth-up-run-2026-05-30.json index 1a1fab3..4842106 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 d4c89d0..aad977a 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/github_repo_auditor/codex_restart_packet.py b/src/github_repo_auditor/codex_restart_packet.py index 8e05440..3f31d5a 100644 --- a/src/github_repo_auditor/codex_restart_packet.py +++ b/src/github_repo_auditor/codex_restart_packet.py @@ -294,8 +294,8 @@ def build_restart_packet( ], "next_commands": [ 'python -m github_repo_auditor.codex_restart_packet --workspace-root "$HOME/Projects"', - "git -C /Users/d/.local/share/personal-ops status --short --branch", - "git -C /Users/d/.codex/codexkit status --short --branch", + 'git -C "$HOME/.local/share/personal-ops" status --short --branch', + 'git -C "$HOME/.codex/codexkit" status --short --branch', "audit report saagpatel --portfolio-truth --portfolio-truth-include-security", ], } diff --git a/src/github_repo_auditor/portfolio_context_recovery.py b/src/github_repo_auditor/portfolio_context_recovery.py index bc81398..0dea0cb 100644 --- a/src/github_repo_auditor/portfolio_context_recovery.py +++ b/src/github_repo_auditor/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/github_repo_auditor/project_registry.py b/src/github_repo_auditor/project_registry.py index 057dcd0..d70594c 100644 --- a/src/github_repo_auditor/project_registry.py +++ b/src/github_repo_auditor/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 5564e1d..fb4efb7 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(