Skip to content

v0.16.0 - Generic delete tool

Choose a tag to compare

@github-actions github-actions released this 01 Sep 07:54
· 50 commits to dev since this release

Added

  • Generic delete(id, type) MCP tool in general/tools/: the
    type-dispatched hard-delete for the eleven whole-body domains (type is
    one of req/uc/tsk/qa/prb/gol/rsk/dec/sop/feat/vcr;
    adr is not supported). Resolves the document by id under the
    domain's own per-id lock and removes it — the single *.md file for the
    ten flat domains, or the entire <base>/<id>/ folder for feat
    returning the deleted path as a string. An invalid id (path-injection
    attempt or wrong format) is a ValueError raised before any file access;
    a missing document is the domain's own XNotFoundError; an I/O failure
    during the delete is a DeleteError (an OSError subclass). This is
    the sole delete entry point: every current and future domain implements
    a delete adapter in the generic tool, never a per-domain delete_<d>
    tool.
  • A reusable, doc-type-agnostic path-safety module
    general/tools/_path_safety.py: assert_no_traversal, assert_uuid,
    assert_feat_id, validate_id, and assert_within — pure, no-I/O
    guards preventing path-injection through type/id inputs and confining
    resolved paths to their base directory. Wired into the new delete tool
    now; designed so the get_<d>, update, and set_status tools can
    adopt it later with zero rework (they are not modified in this change).

Changed

  • The release SOP (now active — its status was draft until the first
    release executed under it succeeded end to end, v0.15.0) was clarified:
    tool prerequisites and the stage-to-step execution map up front in
    Scope, the fast-forward-only merge mechanism the script actually uses
    (pre- and post-merge SHA assertions around the plain merge method,
    replacing the description of a nonexistent gh pr merge --ff-only),
    the publication workflow's name ("Publish to PyPI") vs. file
    (.github/workflows/publish.yml) distinction, and a dedicated
    precaution about the old gh 2.4.0 the script targets.

Removed

  • BREAKING (0.x): the eleven per-domain delete_<d> stub MCP tools are
    deleted outright (no deprecated wrappers): delete_req, delete_uc,
    delete_tsk, delete_qa, delete_prb, delete_gol, delete_rsk,
    delete_dec, delete_sop, delete_feat, delete_vcr — each was a
    registered stub that always raised NotImplementedError. The eleven
    per-domain delete_<d>.py modules, their __init__.py registrations,
    and their stub tests are gone with them. Callers must switch from
    tools/call --tool-name delete_<d> to tools/call --tool-name delete
    with the explicit type parameter (see "Added" above).

Fixed

  • scripts/release.sh: the pr-merge, publish-wait, status, and
    release-notes stages no longer rely on gh CLI features that do not
    exist in this environment's gh 2.4.0 — a nonexistent --ff-only
    merge flag, gh run list --commit, gh run view --json jobs, and
    gh release view --json/gh release edit. Fast-forward-only merging
    is now enforced by pre-merge and post-merge SHA assertions around the
    plain merge method; the publication run is located by workflow name
    ("Publish to PyPI") plus the tag's commit SHA (filtered with jq);
    the GitHub Release is read and its notes set through gh api.