From 978cab7c25bd40b730a27b320cecbfe6c1ac49c1 Mon Sep 17 00:00:00 2001 From: Nestor Colt Date: Mon, 4 May 2026 18:10:52 +0200 Subject: [PATCH 1/3] chore: rename org the-cloud-clock-work -> the-cloud-clockwork --- .github/FUNDING.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/sonar-scan.yml | 2 +- README.md | 30 +++++++++++++++--------------- _config.yml | 10 +++++----- pyproject.toml | 6 +++--- scripts/install.py | 4 ++-- tests/test_memory_mirror_sync.py | 4 ++-- 8 files changed, 30 insertions(+), 30 deletions(-) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 2bf3899..8d88b6e 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1 +1 @@ -github: [The-Cloud-Clock-Work] +github: [The-Cloud-Clockwork] diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f936cba..3dfa2ab 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,7 +15,7 @@ permissions: jobs: release: - uses: The-Cloud-Clock-Work/.github/.github/workflows/release-reusable.yml@main + uses: The-Cloud-Clockwork/.github/.github/workflows/release-reusable.yml@main with: bump: ${{ inputs.bump }} downstream_workflows: "publish-pypi.yml" diff --git a/.github/workflows/sonar-scan.yml b/.github/workflows/sonar-scan.yml index 47c8b03..9ef8483 100644 --- a/.github/workflows/sonar-scan.yml +++ b/.github/workflows/sonar-scan.yml @@ -9,7 +9,7 @@ on: jobs: sonar: - uses: The-Cloud-Clock-Work/.github/.github/workflows/sonar-reusable.yml@main + uses: The-Cloud-Clockwork/.github/.github/workflows/sonar-reusable.yml@main with: python_version: "3.12" install_command: pip install -e ".[dev,all]" diff --git a/README.md b/README.md index 57b51ed..092f4a1 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,14 @@ # agentihooks -[![Standalone](https://img.shields.io/badge/runs-standalone-brightgreen)](https://the-cloud-clock-work.github.io/agentihooks/) -[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/The-Cloud-Clock-Work/agentihooks/blob/main/LICENSE) -[![CI](https://github.com/The-Cloud-Clock-Work/agentihooks/actions/workflows/ci.yml/badge.svg)](https://github.com/The-Cloud-Clock-Work/agentihooks/actions/workflows/ci.yml) +[![Standalone](https://img.shields.io/badge/runs-standalone-brightgreen)](https://the-cloud-clockwork.github.io/agentihooks/) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/The-Cloud-Clockwork/agentihooks/blob/main/LICENSE) +[![CI](https://github.com/The-Cloud-Clockwork/agentihooks/actions/workflows/ci.yml/badge.svg)](https://github.com/The-Cloud-Clockwork/agentihooks/actions/workflows/ci.yml) [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue.svg)](https://python.org) -[![Docs](https://img.shields.io/badge/docs-GitHub%20Pages-blue)](https://the-cloud-clock-work.github.io/agentihooks/) +[![Docs](https://img.shields.io/badge/docs-GitHub%20Pages-blue)](https://the-cloud-clockwork.github.io/agentihooks/) The production harness for [Claude Code](https://docs.anthropic.com/en/docs/claude-code). Turn Claude Code into a managed fleet — with smart profiles that shift mid-session, guardrails, context intelligence, and real-time broadcast messaging across every active session. -> **Full documentation:** [the-cloud-clock-work.github.io/agentihooks](https://the-cloud-clock-work.github.io/agentihooks/) +> **Full documentation:** [the-cloud-clockwork.github.io/agentihooks](https://the-cloud-clockwork.github.io/agentihooks/) --- @@ -38,7 +38,7 @@ agentihooks init --local --profile infra # per-repo identity - **Built-in profiles:** `default` (auto mode), `coding` (acceptEdits), `admin` (bypassPermissions) - **Live rule refresh** — `agentihooks refresh-rules` pushes rule updates into every running Claude session without restart. One-shot per session, session-snapshotted so new sessions don't re-consume. -[Full docs: Identity](https://the-cloud-clock-work.github.io/agentihooks/docs/pillars/identity/) +[Full docs: Identity](https://the-cloud-clockwork.github.io/agentihooks/docs/pillars/identity/) ### Pillar 2: Guardrails — *What keeps them safe* @@ -58,7 +58,7 @@ agentihooks init --local --profile infra # per-repo identity | **Bash output filter** | Truncates verbose output to save tokens | | **File read dedup** | Blocks redundant re-reads of unchanged files | -[Full docs: Guardrails](https://the-cloud-clock-work.github.io/agentihooks/docs/pillars/guardrails/) +[Full docs: Guardrails](https://the-cloud-clockwork.github.io/agentihooks/docs/pillars/guardrails/) ### Pillar 3: Context Intelligence — *What keeps them sharp* @@ -77,7 +77,7 @@ CONTEXT_REFRESH_COMPRESSION=standard # default CONTEXT_COMPRESSION_SCOPE=all # compress all injections ``` -[Full docs: Context Intelligence](https://the-cloud-clock-work.github.io/agentihooks/docs/pillars/context/) +[Full docs: Context Intelligence](https://the-cloud-clockwork.github.io/agentihooks/docs/pillars/context/) ### Pillar 4: Fleet Command — *Talk to your entire fleet* @@ -101,7 +101,7 @@ agentihooks broadcast emit "clear all broadcasts" `emit` is sandboxed: Claude Haiku can **only** run `agentihooks broadcast` commands — all other tools are disallowed. -[Full docs: Fleet Command](https://the-cloud-clock-work.github.io/agentihooks/docs/pillars/fleet-command/) +[Full docs: Fleet Command](https://the-cloud-clockwork.github.io/agentihooks/docs/pillars/fleet-command/) --- @@ -110,7 +110,7 @@ agentihooks broadcast emit "clear all broadcasts" **Requirement:** [uv](https://docs.astral.sh/uv/getting-started/installation/) must be installed. ```bash -git clone https://github.com/The-Cloud-Clock-Work/agentihooks +git clone https://github.com/The-Cloud-Clockwork/agentihooks cd agentihooks # 1. Create the dedicated venv and install everything @@ -284,7 +284,7 @@ agent calls → overlay_remove("patch-mode") Back to `anton`. Full autonomy. Image rebuild in parallel. Zero session restart, zero context loss. The base profile's `allowedOverlays` field controls which overlays agents can activate — no escalation to profiles they weren't designed for. -This is a **smart profile system** — agents don't just have identities, they shift between complementary modes like a musician moving between tension and release. [Full docs: Runtime Overlays](https://the-cloud-clock-work.github.io/agentihooks/docs/pillars/overlays/) +This is a **smart profile system** — agents don't just have identities, they shift between complementary modes like a musician moving between tension and release. [Full docs: Runtime Overlays](https://the-cloud-clockwork.github.io/agentihooks/docs/pillars/overlays/) **Settings profiles (two-axis model):** Control settings independently from persona: @@ -335,7 +335,7 @@ All configuration in `.env` files in `~/.agentihooks/`. Key variables: | `AMYGDALA_ENABLED` | `false` | Active-signal injection (uses `BRAIN_URL` `/signal`). | | `BRAIN_WRITER_ENABLED` | `false` | POST `/marker` on Stop / SubagentStop. | -Complete table: [Configuration Reference](https://the-cloud-clock-work.github.io/agentihooks/docs/reference/configuration/) +Complete table: [Configuration Reference](https://the-cloud-clockwork.github.io/agentihooks/docs/reference/configuration/) ### Remote brain quickstart @@ -390,7 +390,7 @@ machine A machine B ``` Every machine still writes to its **own** `gitfoam//main` branch via -[gitfoam](https://github.com/The-Cloud-Clock-Work/gitfoam) (Rust daemon, 500ms +[gitfoam](https://github.com/The-Cloud-Clockwork/gitfoam) (Rust daemon, 500ms force-push, built-in secrets scanning). **Consumers read `origin/main` only.** Promotion from a machine branch to `main` is a PR — `agentihooks memory-sync propose` opens it via `gh pr create` and optionally auto-merges when clean. @@ -480,8 +480,8 @@ agentihooks init | Project | Description | |---------|-------------| -| [agenticore](https://github.com/The-Cloud-Clock-Work/agenticore) | Claude Code runner and orchestrator | -| [agentibridge](https://github.com/The-Cloud-Clock-Work/agentibridge) | MCP server for session persistence and remote control | +| [agenticore](https://github.com/The-Cloud-Clockwork/agenticore) | Claude Code runner and orchestrator | +| [agentibridge](https://github.com/The-Cloud-Clockwork/agentibridge) | MCP server for session persistence and remote control | ## License diff --git a/_config.yml b/_config.yml index d316672..b0cf601 100644 --- a/_config.yml +++ b/_config.yml @@ -4,7 +4,7 @@ title: AgentiHooks description: >- Hook system and MCP tool server for Claude Code agents. Event-driven hooks, 26 MCP tools across 8 categories, profile-based configuration. -url: "https://the-cloud-clock-work.github.io" +url: "https://the-cloud-clockwork.github.io" baseurl: "/agentihooks" remote_theme: just-the-docs/just-the-docs@v0.10.0 @@ -21,19 +21,19 @@ mermaid: version: "11" aux_links: - GitHub: "https://github.com/The-Cloud-Clock-Work/agentihooks" + GitHub: "https://github.com/The-Cloud-Clockwork/agentihooks" aux_links_new_tab: true gh_edit_link: true gh_edit_link_text: "Edit this page on GitHub" -gh_edit_repository: "https://github.com/The-Cloud-Clock-Work/agentihooks" +gh_edit_repository: "https://github.com/The-Cloud-Clockwork/agentihooks" gh_edit_branch: "main" gh_edit_view_mode: "edit" footer_content: >- AgentiHooks is open source under the - MIT License. - Maintained by The Cloud Clockwork. + MIT License. + Maintained by The Cloud Clockwork. back_to_top: true back_to_top_text: "Back to top" diff --git a/pyproject.toml b/pyproject.toml index 9725bf9..328e9bc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -70,9 +70,9 @@ include = ["hooks*", "scripts*", "profiles*"] "profiles.coding" = ["*.yml", "*.json", ".claude/*.json", ".claude/CLAUDE.md"] [project.urls] -Homepage = "https://github.com/The-Cloud-Clock-Work/agentihooks" -Repository = "https://github.com/The-Cloud-Clock-Work/agentihooks" -Issues = "https://github.com/The-Cloud-Clock-Work/agentihooks/issues" +Homepage = "https://github.com/The-Cloud-Clockwork/agentihooks" +Repository = "https://github.com/The-Cloud-Clockwork/agentihooks" +Issues = "https://github.com/The-Cloud-Clockwork/agentihooks/issues" [tool.pytest.ini_options] testpaths = ["tests"] diff --git a/scripts/install.py b/scripts/install.py index cec982d..4253e9d 100755 --- a/scripts/install.py +++ b/scripts/install.py @@ -5392,7 +5392,7 @@ def _require_gitfoam() -> str: ) print( " curl -fsSL https://raw.githubusercontent.com/" - "The-Cloud-Clock-Work/gitfoam/main/install.sh | sh", + "The-Cloud-Clockwork/gitfoam/main/install.sh | sh", file=sys.stderr, ) print( @@ -5400,7 +5400,7 @@ def _require_gitfoam() -> str: file=sys.stderr, ) print( - " git clone git@github.com:The-Cloud-Clock-Work/gitfoam.git ~/dev/gitfoam", + " git clone git@github.com:The-Cloud-Clockwork/gitfoam.git ~/dev/gitfoam", file=sys.stderr, ) print( diff --git a/tests/test_memory_mirror_sync.py b/tests/test_memory_mirror_sync.py index fe108f5..713f309 100644 --- a/tests/test_memory_mirror_sync.py +++ b/tests/test_memory_mirror_sync.py @@ -511,9 +511,9 @@ def test_remote_slug_ssh(monkeypatch): monkeypatch.setattr( mm.config, "MEMORY_MIRROR_REMOTE", - "git@github.com:The-Cloud-Clock-Work/anton-memory-mirror.git", + "git@github.com:The-Cloud-Clockwork/anton-memory-mirror.git", ) - assert mm._remote_slug() == "The-Cloud-Clock-Work/anton-memory-mirror" + assert mm._remote_slug() == "The-Cloud-Clockwork/anton-memory-mirror" def test_remote_slug_https(monkeypatch): From cf7c3c1515041818dcfb5e709a88071fc7513155 Mon Sep 17 00:00:00 2001 From: Nestor Colt Date: Mon, 4 May 2026 18:16:40 +0200 Subject: [PATCH 2/3] chore: rename org the-cloud-clock-work -> the-cloud-clockwork --- CONTRIBUTING.md | 2 +- docs/bundles.md | 2 +- docs/getting-started/installation.md | 2 +- docs/getting-started/memory-mirror.md | 2 +- docs/getting-started/portability.md | 2 +- docs/reference/cli-commands.md | 2 +- index.md | 14 +++++++------- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 04703cc..45af4b3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -57,4 +57,4 @@ This project follows the [Contributor Covenant](CODE_OF_CONDUCT.md). Please be r ## Questions? -Open a [GitHub Discussion](https://github.com/The-Cloud-Clock-Work/agentihooks/discussions) or file an issue. +Open a [GitHub Discussion](https://github.com/The-Cloud-Clockwork/agentihooks/discussions) or file an issue. diff --git a/docs/bundles.md b/docs/bundles.md index 504ec5c..be6211f 100644 --- a/docs/bundles.md +++ b/docs/bundles.md @@ -108,7 +108,7 @@ Evaluation order: **deny > ask > allow** (first match wins). ```bash # 1. Install agentihooks -git clone https://github.com/The-Cloud-Clock-Work/agentihooks +git clone https://github.com/The-Cloud-Clockwork/agentihooks cd agentihooks uv venv ~/.agentihooks/.venv uv pip install --python ~/.agentihooks/.venv/bin/python -e ".[all]" diff --git a/docs/getting-started/installation.md b/docs/getting-started/installation.md index 397c92a..653af37 100644 --- a/docs/getting-started/installation.md +++ b/docs/getting-started/installation.md @@ -33,7 +33,7 @@ uv --version ## 2. Clone the repository ```bash -git clone https://github.com/The-Cloud-Clock-Work/agentihooks +git clone https://github.com/The-Cloud-Clockwork/agentihooks cd agentihooks ``` diff --git a/docs/getting-started/memory-mirror.md b/docs/getting-started/memory-mirror.md index 226b64f..53a450a 100644 --- a/docs/getting-started/memory-mirror.md +++ b/docs/getting-started/memory-mirror.md @@ -2,7 +2,7 @@ Claude Code's native auto-memory lives at `~/.claude/projects//memory/` and is machine-local. The **memory mirror** feature syncs only those `memory/` -subtrees across your fleet using [gitfoam](https://github.com/The-Cloud-Clock-Work/gitfoam) +subtrees across your fleet using [gitfoam](https://github.com/The-Cloud-Clockwork/gitfoam) for push (~500ms latency per machine) and a lightweight main-only consumer on the sync daemon tick for pull (~60s). diff --git a/docs/getting-started/portability.md b/docs/getting-started/portability.md index 3987312..26e135e 100644 --- a/docs/getting-started/portability.md +++ b/docs/getting-started/portability.md @@ -196,7 +196,7 @@ Companion env files are auto-sourced by: curl -LsSf https://astral.sh/uv/install.sh | sh # 2. Clone the repo -git clone https://github.com/The-Cloud-Clock-Work/agentihooks +git clone https://github.com/The-Cloud-Clockwork/agentihooks cd agentihooks # 3. Create the venv and install diff --git a/docs/reference/cli-commands.md b/docs/reference/cli-commands.md index 1a5dd75..3af9700 100644 --- a/docs/reference/cli-commands.md +++ b/docs/reference/cli-commands.md @@ -412,7 +412,7 @@ Registered targets are stored in `~/.agentihooks/state.json` under the `targets` Cross-machine auto-memory sync with PR-gated fleet propagation. Mirrors **only** `~/.claude/projects/*/memory/` to a private git remote via -[gitfoam](https://github.com/The-Cloud-Clock-Work/gitfoam); each machine +[gitfoam](https://github.com/The-Cloud-Clockwork/gitfoam); each machine pushes to its own `gitfoam//main` branch, consumers merge from `origin/main` only, and promotion is a GitHub PR. diff --git a/index.md b/index.md index 6320695..9457ffb 100644 --- a/index.md +++ b/index.md @@ -15,11 +15,11 @@ The definitive Claude Code harness — built on four pillars that make your agen -[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/The-Cloud-Clock-Work/agentihooks/blob/main/LICENSE) -[![CI](https://github.com/The-Cloud-Clock-Work/agentihooks/actions/workflows/ci.yml/badge.svg)](https://github.com/The-Cloud-Clock-Work/agentihooks/actions/workflows/ci.yml) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/The-Cloud-Clockwork/agentihooks/blob/main/LICENSE) +[![CI](https://github.com/The-Cloud-Clockwork/agentihooks/actions/workflows/ci.yml/badge.svg)](https://github.com/The-Cloud-Clockwork/agentihooks/actions/workflows/ci.yml) [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue.svg)](https://python.org) {: .text-center .mb-8 } @@ -339,12 +339,12 @@ rm -rf ~/.agentihooks | Project | Description | |---------|-------------| -| [agenticore](https://github.com/The-Cloud-Clock-Work/agenticore) | Claude Code runner and orchestrator (uses agentihooks) | -| [agentibridge](https://github.com/The-Cloud-Clock-Work/agentibridge) | MCP server for session persistence and remote control | +| [agenticore](https://github.com/The-Cloud-Clockwork/agenticore) | Claude Code runner and orchestrator (uses agentihooks) | +| [agentibridge](https://github.com/The-Cloud-Clockwork/agentibridge) | MCP server for session persistence and remote control | ---

- Built by The Cloud Clockwork · - MIT License + Built by The Cloud Clockwork · + MIT License

From 65f0ffe0229938c3e78216322ad54f1f314c269a Mon Sep 17 00:00:00 2001 From: Nestor Colt Date: Mon, 4 May 2026 19:55:52 +0200 Subject: [PATCH 3/3] chore: rename tccw -> tcc across files --- .env.example | 2 +- README.md | 4 ++-- hooks/config.py | 8 ++++---- hooks/context/ci_manifesto.py | 2 +- scripts/memory_mirror_sync.py | 2 +- tests/test_memory_mirror_sync.py | 6 +++--- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.env.example b/.env.example index 310fe81..83081e6 100644 --- a/.env.example +++ b/.env.example @@ -165,4 +165,4 @@ # MEMORY_MIRROR_CLAUDE_PROJECTS=~/.claude/projects # GITFOAM_BINARY=~/.cargo/bin/gitfoam # Local dev path to gitfoam repo (used if the binary is missing and you want to cargo-install from source) -# GITFOAM_LOCAL_SOURCE=/home/iamroot/dev/tccw-ecosystem/gitfoam +# GITFOAM_LOCAL_SOURCE=/home/iamroot/dev/tcc-ecosystem/gitfoam diff --git a/README.md b/README.md index 092f4a1..a174255 100644 --- a/README.md +++ b/README.md @@ -403,10 +403,10 @@ resolver reverse-walks each `~/.claude/projects//` dir to find the package or agent boundary (`agent.yml` > `pyproject.toml`/`Cargo.toml`/`package.json`/`go.mod` > `.git`) and uses its basename as the key. So: -- Laptop `/home/iamroot/dev/tccw-ecosystem/agenticore` → key `agenticore` +- Laptop `/home/iamroot/dev/tcc-ecosystem/agenticore` → key `agenticore` - Fleet pod `/app/agenticore` → key `agenticore` (same key, memory pools!) - Agent `.../agentihub/agents/finops/package` → key `finops` (skips past `package/`) -- Hyphenated repos like `tccw-toolbelt` stay intact (the resolver reads the real FS, not the encoded name) +- Hyphenated repos like `tcc-toolbelt` stay intact (the resolver reads the real FS, not the encoded name) - Unresolvable paths fall back to `_unmapped//` so nothing is lost. **Enable (three commands)** diff --git a/hooks/config.py b/hooks/config.py index 748d1a4..2e1ae83 100644 --- a/hooks/config.py +++ b/hooks/config.py @@ -408,8 +408,8 @@ def _env_bool(key: str, default: str = "false") -> bool: # 1. $CI_MANIFESTO_PATH explicit env override # 2. $MANIFESTOS_DIR/.md (multi-manifesto bundle pattern) # 3. $AGENTIHOOKS_BUNDLE_ROOT/manifestos/ANTON-CORE-CI-MANIFESTO.md -# 4. ~/dev/tccw-ecosystem/agentihooks-bundle/manifestos/ANTON-CORE-CI-MANIFESTO.md (default) -# 5. legacy fallback ~/dev/tccw-ecosystem/documents/anton/ANTON-CORE-CI-MANIFESTO.md +# 4. ~/dev/tcc-ecosystem/agentihooks-bundle/manifestos/ANTON-CORE-CI-MANIFESTO.md (default) +# 5. legacy fallback ~/dev/tcc-ecosystem/documents/anton/ANTON-CORE-CI-MANIFESTO.md def _resolve_manifesto_path() -> str: explicit = os.getenv("CI_MANIFESTO_PATH") if explicit: @@ -425,10 +425,10 @@ def _resolve_manifesto_path() -> str: candidate = Path(bundle_root).expanduser() / "manifestos" / f"{name}.md" if candidate.exists(): return str(candidate) - default = Path.home() / "dev" / "tccw-ecosystem" / "agentihooks-bundle" / "manifestos" / f"{name}.md" + default = Path.home() / "dev" / "tcc-ecosystem" / "agentihooks-bundle" / "manifestos" / f"{name}.md" if default.exists(): return str(default) - legacy = Path.home() / "dev" / "tccw-ecosystem" / "documents" / "anton" / f"{name}.md" + legacy = Path.home() / "dev" / "tcc-ecosystem" / "documents" / "anton" / f"{name}.md" return str(legacy) diff --git a/hooks/context/ci_manifesto.py b/hooks/context/ci_manifesto.py index 6ff2944..14ba138 100644 --- a/hooks/context/ci_manifesto.py +++ b/hooks/context/ci_manifesto.py @@ -10,7 +10,7 @@ Config (env vars via hooks.config): CI_MANIFESTO_ENABLED (bool, default True) - CI_MANIFESTO_PATH (str, default $HOME/dev/tccw-ecosystem/documents/anton/ANTON-CORE-CI-MANIFESTO.md) + CI_MANIFESTO_PATH (str, default $HOME/dev/tcc-ecosystem/documents/anton/ANTON-CORE-CI-MANIFESTO.md) CI_MANIFESTO_REFRESH_EVERY (int, default 8 turns) Public API: diff --git a/scripts/memory_mirror_sync.py b/scripts/memory_mirror_sync.py index cc4473f..ea9c3c5 100644 --- a/scripts/memory_mirror_sync.py +++ b/scripts/memory_mirror_sync.py @@ -190,7 +190,7 @@ def _decode_encoded_path(encoded: str, root: Path = Path("/")) -> Path | None: Claude project directory name. The encoding replaces every ``/`` with ``-``. Directory names may - themselves contain ``-`` (``tccw-ecosystem``, ``tccw-toolbelt``), so we + themselves contain ``-`` (``tcc-ecosystem``, ``tcc-toolbelt``), so we try to consume 1 segment, then 2, then 3, etc. at each level, matching against what actually exists on disk. Backtracks on dead ends. Returns ``None`` if the encoded path cannot be resolved. diff --git a/tests/test_memory_mirror_sync.py b/tests/test_memory_mirror_sync.py index 713f309..dbf9418 100644 --- a/tests/test_memory_mirror_sync.py +++ b/tests/test_memory_mirror_sync.py @@ -35,9 +35,9 @@ def test_decode_roundtrips_simple_path(tmp_path): def test_decode_handles_hyphenated_segment(tmp_path): - _make_fs(tmp_path, {"home": {"alice": {"dev": {"tccw-ecosystem": {"tccw-toolbelt": {}}}}}}) - encoded = "-home-alice-dev-tccw-ecosystem-tccw-toolbelt" - assert mm._decode_encoded_path(encoded, root=tmp_path) == (tmp_path / "home/alice/dev/tccw-ecosystem/tccw-toolbelt") + _make_fs(tmp_path, {"home": {"alice": {"dev": {"tcc-ecosystem": {"tcc-toolbelt": {}}}}}}) + encoded = "-home-alice-dev-tcc-ecosystem-tcc-toolbelt" + assert mm._decode_encoded_path(encoded, root=tmp_path) == (tmp_path / "home/alice/dev/tcc-ecosystem/tcc-toolbelt") def test_decode_returns_none_when_path_missing(tmp_path):