Skip to content

archy AGENTS.md changelog

io.github.hslee16/archy

3 changes recorded. MCP Harbor re-reads this listing from the official registry every six hours and asks the live server what it exposes, and keeps what changed between one look and the next.

  • AGENTS.md +25 −2

    https://raw.githubusercontent.com/hslee16/archy/HEAD/AGENTS.md

    − `src/archy/cli.py`, and its tool's return model in `src/archy/mcp.py`. A fourth− the restore and make a clean tree report the mutated behaviour.+ uv run archy contracts .      # transitive forbid rules, derived from archy.yaml+ `src/archy/cli_render.py` (the command wiring stays in `src/archy/cli.py`), and its tool's return model in `src/archy/mcp_payloads.py` (the tool wiring stays in `src/archy/mcp.py` and the work behind each tool in `src/archy/mcp_runs.py`). A fourth+ **A name that matched nothing is a refusal, not an empty result.** `archy_dsm`+ with a mistyped `focus` returned `back_edge_count=0`, which a clean project also+ reports, and `simulate` printed `overall +0.000` for an edge it never applied+ (#625, #627). Raise, or put the unresolved state in the verdict itself+ (`coverage`, `nothing_resolved`), and name the near misses with+ `graph.suggest_modules`. It suggests and never accepts: resolving a bare `cli`+ to one of `archy.cli` and every `tests.*cli*` module would be a guess. Search for+ an existing ticket by the symptom ("empty", "exits 0"), not only the mechanism:+ #556 already described the dsm case and a mechanism-worded search missed it.+ **mcp 2.x used to drop a tool's `ValueError` text** (#636, fixed). Expected+ refusals (`ValueError` / `LookupError`) are re-raised as `ToolError` at the tool+ boundary so the reason reaches agents on both majors. Pin the exact message on+ the direct `mcp_runs.run_*` call and through `_call_tool`. Reproduce the+ `mcp 2.x compatibility` job locally with its own install (`uv venv`, then+ `uv pip install -e ".[contracts]" "mcp>=2,<3" pytest pytest-snapshot`) before+ pushing a change to a tool's error path.+ the restore and make a clean tree report the mutated behaviour. A third: **a+ mutation that did not apply is inert too.** A helper whose replacement string+ fails to match leaves the tree unmutated and the suite "survives"; make the+ helper exit non-zero when the match is missing, and read its "applied" line. That+ happened once in #633. In the same PR one test could never fail, though its+ mutation applied, because it named `os.path` as an external node when external+ nodes are top-level names (`os`, `requests`).

  • AGENTS.md +16 −7

    https://raw.githubusercontent.com/hslee16/archy/HEAD/AGENTS.md

    − Everything here was learned by getting it wrong. Each rule names the failure it− came from, so you can judge whether it applies to what you are doing rather than− following it blindly.− Two rules in [Git and GitHub](#git-and-github) are worth reading before you− touch anything, because both fail quietly: never push to `main` (branch and open− a PR instead), and use `gh api` REST, because `gh pr edit` and `--json` go− through GraphQL, which can fail while still exiting 0.+ ## Hard rules+ These are not situational. Follow them every time, whatever the task.+ 1. **Never push to `main`.** Branch and open a PR.+ 2. **Use `gh api` REST for GitHub.** `gh pr edit` and `--json` flags go through+    GraphQL, which can fail while still exiting 0.+ 3. **Run `uv run ruff check` with no path argument.** A per-file run passes+    while CI fails.+ 4. **Never hand-edit a derived header block.** Regenerate it with+    `uv run archy conventions . --emit-headers --write`.+ 5. **When CI fails, open the failing step's log, never the tally.**+ All five are equally binding. The first two lead because they go wrong+ quietly: a push to `main` skips review without any error, and a GraphQL call can+ exit 0 having changed nothing. The reasons for each are in the sections below.+ Everything else here was learned by getting it wrong. Each rule names the+ failure it came from, so you can judge whether it applies to what you are doing+ rather than following it blindly.

  • AGENTS.md +3 −2

    https://raw.githubusercontent.com/hslee16/archy/HEAD/AGENTS.md

    − `mv bench/cache /tmp/bench-cache-aside`, re-run the test, then move it back. Assert the invariant, not the message: a test that checks *which*− patterns are `pkg.**`, not `pkg`, which matches an exact dotted name.+ `mv bench/cache /tmp/bench-cache-aside`, re-run the test, then move it back.+ **Assert the invariant, not the message.** A test that checks *which*+ patterns are `pkg.**`; a bare `pkg` matches only an exact dotted name, not its submodules.