chore: de-privatize for public release (stacked on #24)#25
Conversation
Carries operator WIP (AGENTS.md problem-log section + helper script) onto the deprivatize branch so the de-privatization scrub commits stay isolated. The home path and AI_notes references in this WIP are scrubbed/flagged in the following commits. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace real/non-neutral OS usernames in paths with neutral placeholders so the working tree carries no machine-layout fingerprints: - /Users/silver/AI_notes -> ~/AI_notes (AGENTS.md) - test-user/other_user/u/y/project/userton -> user/username (tests, docs) - /Users/Shared literal reworded in security bug-tracker note Usernames are irrelevant to all affected test assertions (verified); verify gate now passes with zero unambiguous PII/path leaks. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Per public-naming convention, remove individual + agent names and personal contact surfaces; collapse author attribution to the collective brand: - Cargo.toml authors (6 crates) + LICENSE licensor + README -> Vetcoders, drop personal email/domain (void@div0.space) - 'Created by M&K (c)2026 VetCoders' credit lines -> 'vetcoders (c)2026' (.semgrepignore, aicx_mcp.rs, redact.rs header, archive skill docs) - founder bios (archive/skills README+HTML, docs showcase) -> vetcoders line, drop personal URLs (div0.space, github/Gitlaudiusz) - operator github handle m-szymanska -> example-org in path-filter tests, store doc comment, intents fixture, retrieval-eval query - audit-author names in code comments dropped (Klaudiusz) - internal-doc prose names (Maciej) -> vetcoders Lib (793) + parser + touched integration tests green; org rename uses a non-colliding placeholder to preserve contrast assertions. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Delete deterministic doc-removal candidates that should not ship in a public repo: - demo/sessions/pivot-chwila.md — real operator session transcript (too realistic; reconstructs a private work session) - docs/BACKLOG.md — internal append-only TODO/backlog - reports/NOISE_FILTER_v0.6.3.md — internal rollout report (branches/SHAs) No code/test/build references these; remaining inbound links are confined to other internal dev docs (BUGFIXES.md, bug-tracker-pass-2/3) which are themselves flagged for operator-side removal as a set. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
void@div0.space -> hello@vetcoders.io in LICENSE, parser LICENSE, SECURITY.md (personal contact surface; the brand security/contact email is public). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Delete heavy internal planning/audit docs that should not ship publicly and that held the dangling links to the already-removed BACKLOG.md / NOISE_FILTER: - docs/BUGFIXES.md - docs/bug-tracker-aicx-followup-pass-2.md - docs/bug-tracker-aicx-followup-pass-3.md These contained ~/AI_notes and ~/.vibecrafted paths, PR/SHA detail, and domain knowledge. Only external inbound ref (docs/scope-overflow.md) reworded to drop the BUGFIXES.md pointer. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- memex (internal memory service) -> rust-memex (public crate) in docs, code comments, CHANGELOG history, and two low-risk fixtures/UI strings; archive/skills + removed-API guard needles left as needs_decision - tailscale: feature kept (public product), but scrub real machine fingerprints — sztudio CGNAT IP 100.75.30.90 -> 100.64.0.1 and tailnet host vetcoders-mbp.tail2c9f.ts.net -> host.example.ts.net (tests assert range/suffix, not the specific values) - AI_notes private notes dir -> ~/.aicx in problem-log path (AGENTS.md + tools/aicx_problem_log.sh) rmcp/lancedb untouched (public crates, allowlisted). Lib (793) + dashboard_filter tests green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Eliminate camelCase brand tokens (the brand is lowercase by default, Capital-first only as a proper noun): - VetCoders -> Vetcoders, CodeScribe -> Codescribe, ScreenScribe -> Screenscribe (uniform case-sensitive token replace -> identifiers + labels + fixtures stay self-consistent; compiles clean) - git/GitHub URLs lowercased to github.com/vetcoders/... per URL rule - org-from-URL test assertions updated to the now-lowercase org (store/tests) - archive/skills/** intentionally untouched (deferred as one needs_decision unit); CODESCRIBE_* env vars, com.vetcoders.codescribe, codescribe CLI/path left as-is (functional, already lowercase) Full test suite green (793 lib + all integration/parser). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Remove hardcoded founder names from shipped runtime matching (real leak in product logic, operator-approved generalization): - rank.rs: boilerplate footer/search matchers 'created by m&k' -> brand-neutral 'created by vetcoders'; drop 'monika' from operator speaker-hint set (generic 'user|human|operator' already covers it) - codescribe.rs: parse_markdown_speaker_heading no longer hardcodes maciej/monika — accepts the 'speaker' prefix or any colon-terminated '### <Name>:' heading - coupled fixtures (codescribe_ingest, sources/tests, operator_md_ingest) retargeted to neutral speakers (Operator/Engineer/Alex) + matching assertions Full lib (793) + codescribe_ingest + operator_md_ingest tests green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Code Review
This pull request performs a comprehensive casing and brand normalization across the repository, renaming 'VetCoders' to 'Vetcoders', 'CodeScribe' to 'Codescribe', and 'memex' to 'rust-memex' in documentation, comments, and tests. It also removes several legacy backlog files, updates speaker parsing logic to be less hardcoded, and introduces a new utility script tools/aicx_problem_log.sh for logging runtime issues. The review feedback highlights two key issues: a potential test flakiness risk in sanitize.rs if the active user's name is 'user', and a terminal hang issue in the new problem log script when run interactively without redirected input.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| #[test] | ||
| fn test_macos_other_user_path_rejected() { | ||
| let path = Path::new("/Users/other_user/Documents/secret.txt"); | ||
| let path = Path::new("/Users/user/Documents/secret.txt"); |
There was a problem hiding this comment.
In test_macos_other_user_path_rejected, changing the path from /Users/other_user/... to /Users/user/... introduces a risk of test failure. If the test is executed in an environment where the current username is user (which is a very common default username in many development and CI environments), is_under_allowed_base will resolve /Users/user as the active user's home directory and allow it. This will cause the assertion to fail, as it expects the path to be rejected. To ensure the test reliably asserts that other users' paths are rejected, use a username that is guaranteed to be different from the active user (e.g., other_user or some_other_user).
| let path = Path::new("/Users/user/Documents/secret.txt"); | |
| let path = Path::new("/Users/other_user/Documents/secret.txt"); |
| local timestamp | ||
| local details | ||
| timestamp="$(date -u '+%Y-%m-%d %H:%M UTC')" | ||
| details="$(cat || true)" |
There was a problem hiding this comment.
When running the script interactively in a terminal without redirecting standard input, details='$(cat || true)' will block indefinitely waiting for input. To prevent this usability issue, you can check if standard input is connected to a terminal (TTY) using [[ -t 0 ]] and default to empty details if so.
| details="$(cat || true)" | |
| if [[ -t 0 ]]; then | |
| details="" | |
| else | |
| details="$(cat || true)" | |
| fi |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3a9224e029
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| "# Vetcoders Global Agent Charter", | ||
| "# Vetcoders Agent Operating Guide", |
There was a problem hiding this comment.
Preserve legacy charter headings
For stores built before this rebrand, reingested AGENTS/CLAUDE blocks still start with # VetCoders Agent Operating Guide or # VetCoders Global Agent Charter. Replacing those markers instead of accepting both means is_reingested_charter_block no longer drops the whole historical charter block, so existing corpora can start surfacing agent-operating boilerplate as extracted intents until every stored chunk is rewritten. Keep the old headings alongside the new public ones.
Useful? React with 👍 / 👎.
| "add", | ||
| "origin", | ||
| "git@github.com:VetCoders/ai-contexters.git", | ||
| "git@github.com:vetcoders/ai-contexters.git", |
There was a problem hiding this comment.
Align lowercased remotes with assertions
With this lowercase origin, infer_tiered_identity_from_path reads git remote get-url origin before falling back to the known-layout path, and repo_identity_from_remote_path preserves the remote's casing. This test therefore produces vetcoders/ai-contexters while the assertion below still expects Vetcoders/...; the same lowercase-origin pattern later in this module will trip those assertions as well.
Useful? React with 👍 / 👎.
| home.join("hosted").join("Vetcoders").join(repo), | ||
| home.join("vc-workspace").join("Vetcoders").join(repo), |
There was a problem hiding this comment.
Keep old checkout casing in cwd fallback
When project_hint is a bare repo name, such as a single -p aicx fallback or a content-inferred Codescribe transcript, this branch now probes only ~/hosted/Vetcoders/<repo> and ~/vc-workspace/Vetcoders/<repo>. Existing pre-release checkouts under ~/hosted/VetCoders/<repo> stop resolving on case-sensitive filesystems; then extract_codescribe_from_home drops filtered transcript entries because they have no matching cwd. Probe both casings or discover the owner directory instead.
Useful? React with 👍 / 👎.
|
|
||
| /// Artifact organization bucket | ||
| #[arg(long, default_value = "VetCoders")] | ||
| #[arg(long, default_value = "Vetcoders")] |
There was a problem hiding this comment.
Keep reports default compatible with existing artifacts
Changing the default org makes bare aicx reports look under ~/.vibecrafted/artifacts/Vetcoders/<repo>, but existing artifact trees created before this rebrand are under VetCoders/<repo>. Because run_reports_extractor passes this value directly into build_reports_explorer, those users now get Artifacts repo not found unless they know to pass --org VetCoders. Add a fallback/alias or keep the old default for compatibility.
Useful? React with 👍 / 👎.
|
|
||
| - Use [GitHub Security Advisories](https://github.com/VetCoders/ai-contexters/security/advisories/new) to submit a private report. | ||
| - Alternatively, contact us directly at **void@div0.space**. | ||
| - Use [GitHub Security Advisories](https://github.com/vetcoders/ai-contexters/security/advisories/new) to submit a private report. |
There was a problem hiding this comment.
Point advisories at this repository
This security advisory link now points to vetcoders/ai-contexters, while the package metadata still advertises https://github.com/Loctree/aicx as the repository/homepage. In the public-release context, reporters following SECURITY.md may land on the wrong or nonexistent advisory form for this project; update the URL to the actual public repository that receives aicx advisories.
Useful? React with 👍 / 👎.
|
Superseded by #26 (merged): the entire chore/deprivatize branch (stacked on #24) was merged into fix/aicx-signals-revalidation (merge commit 4b164ef) and landed in develop via #26. Verified by containment: |
Pre-public-release de-privatization (stacked on #24)
Context-leak scrub (skill: vc-deprivatize). Stacked on
agent/aicx-search-mcp-closure(PR #24) because the de-priv work was built on top of it. Retarget to develop once #24 merges.Commits on top of #24
3a9224echore(deprivatize): generalize founder-name business logic1647ac3chore(deprivatize): remove camelCase brand per naming convention8e1e969chore(deprivatize): genericize internal infra references34e5eacchore(deprivatize): remove internal bug-tracker/bugfix doc clusterfa38519chore(deprivatize): replace personal contact email with brand email1ed58afchore(deprivatize): remove internal/stale docsc1c2cbfchore(deprivatize): collapse personal names/credits to vetcoders1ff00f4chore(deprivatize): scrub absolute home paths to neutral placeholdersef5aa96chore: preserve in-progress AICX problem-log tooling135 files changed, 837 insertions(+), 5346 deletions(-)
Notes
Gates
vc-deprivatize verify exit 0. Local green: cargo fmt --all --check, clippy -p aicx --all-targets -D warnings, cargo test --locked -p aicx --all-targets. Repo CI runs on this PR.
Do not merge automatically — depends on #24.
Generated with Claude Code