docs(release): prepare documented release candidate

This commit is contained in:
sargatxet committed 2026-10-08 13:55:06 +02:00
1 parent 51b9d32007
commit 6629e6ffca
6 files changed
+125 -13

No files matched your search

+44
View File
@@ -0,0 +1,44 @@
# Pre-release security review
## Scope
Manual source review of the project installer, JSONC configuration edits, CLI,
and packaged content before the first release. The review focused on path
containment, symlink handling, file ownership, preserving user changes, and
partial failures. This is not an independent audit, a guarantee against local
filesystem attackers, or a review of provider/model behavior.
## Result
No release-blocking issue was identified for the documented project-local use
on a trusted filesystem. The installer resolves the project root, restricts
manifest paths to toolkit asset locations, rejects symlinked install paths and
non-regular files, refuses unmanaged collisions, and verifies hashes before
replacing or removing managed content. Configuration changes use JSONC edits
and preserve unrelated entries. Deterministic tests cover collisions, modified
files, symlinked install directories, and a tampered manifest.
## Limitations and operational guidance
- The installer does not defend against a concurrent process replacing a path
after it has been checked (a filesystem time-of-check/time-of-use race). Run it
only where another actor cannot concurrently manipulate the project tree.
- The ownership manifest is ordinary project-local JSON, not an authenticated
record. It protects against accidental overwrite/removal, not a malicious
project owner who can edit both the manifest and files.
- Uninstall removes managed files incrementally. If an I/O failure interrupts
it, the manifest is retained for recovery in normal mid-operation failures;
resolve the filesystem problem and rerun uninstall. Transactional rollback
for uninstall remains future work.
- Provider-backed agent delegation and skill invocation have not been reviewed
or verified. The runtime smoke test only covered plugin activation and the
read-only status tool with a local mock provider.
## Checks run
- `npm run typecheck` — passed.
- `npm test` — passed, 16 tests.
- `npm run test:coverage` — passed; 87.4% lines, 95.23% functions, and 81.86%
branches.
- `npm pack --dry-run` — passed; included runtime files, selected content,
licenses, notice, and README.