Adds a Fetching Sessions and Transcripts section: sessions CLI first, then
the per-agent SQLite data plane (session_nodes lookup from chat URL
fragments, transcript_events shape, __openclaw sender provenance,
session_transcript_fts, media://inbound mapping) and a dependency-free
node:sqlite read-only recipe for hosts without sqlite3. Read-only-against-
live-gateway rule stated inline.
- Rename openclaw-test-audit skill to test-audit; add an authoring-gate mode
invoked whenever tests are written, not only during sweeps.
- Repair Doctrine: capture the failing repro before editing; regression tests
must fail on pre-fix code. Bug fixes default to net <=0 production LOC via
the refactor that absorbs the fix, not a bolted-on guard.
- ClawSweeper policy: production-vs-test LOC reviewMetrics entry is now
unconditional for code PRs, counted with judgment; net-positive bug-fix
deltas become risks findings with bestSolution naming the absorbing refactor.
Merge openclaw-small-bugfix-sweep, openclaw-landable-bug-sweep, and
openclaw-autonomous-issue-sweep into one openclaw-repair-sweep skill with
scope/batch_size/workers inputs and sensible defaults. Fold in the
transferable doctrine from the retired personal super-orchestrator runbook:
broken-main repair as standing sweep work, mandatory follow-up refactor
pass, defect-class batching with one canonical helper, ancestry-based merge
verification, and push-then-escalate for maintainer decisions. Update the
auto-qa companion reference.
* docs: point openclaw-refactor-docs at technical-documentation
The openclaw-docs skill was removed in 0dabb7010b,
which replaced it with technical-documentation. openclaw-refactor-docs was not
updated and still told the agent to read ../openclaw-docs/SKILL.md first, so the
read returned nothing and the refactor proceeded without the style and page-type
rules it was supposed to apply.
* docs: use a workspace-relative path for the technical-documentation read
OpenClaw resolves relative read paths from the session workspace cwd
(resolveReadPath -> resolveToCwd -> resolvePath(cwd, path) in
src/agents/sessions/tools/path-utils.ts), not from the directory holding
the skill file. ../technical-documentation/SKILL.md therefore resolved
outside the workspace and the read still failed.
Use .agents/skills/technical-documentation/SKILL.md, which is the path
that exists from the workspace root.
* docs: resolve technical-documentation support files via {baseDir}
The skill names ten support files relatively (six references/*.md and four
agents/*.md). read resolves relative paths from the session workspace cwd,
so none of them resolved: they exist only under the skill directory.
{baseDir} is the documented mechanism for exactly this and resolves against
the skill own directory, so it works regardless of where the skill is
installed. CONTRIBUTING.md is left alone: it is a workspace-root file and
already resolves.
* Revert the {baseDir} rewrite: it was cleanup, not a fix
The skills catalog prompt already instructs the model to resolve a relative
reference against the skill directory and use the resulting absolute path
(src/skills/loading/skill-contract.ts). These ten references were therefore
never broken, and rewriting them does not belong in a rename follow-up.
Restores this file to its state on main.
* Restore the sibling-relative read path
The skills catalog prompt resolves a relative reference against the skill
directory, so ../technical-documentation/SKILL.md resolves to
.agents/skills/technical-documentation/SKILL.md and was already correct.
Rewriting it workspace-relative was churn on a line whose only defect was
the retired skill name.
This leaves the PR as what it claimed to be: three references to a skill
that was renamed in 0dabb70.
* build(deps): remove npm shrinkwrap; mirror pnpm lock into transient package locks
npm 12 removed shrinkwrap (command + tarball/root loading). Delete all 82
committed npm-shrinkwrap.json files and stop publishing lockfiles; keep
pnpm-lock.yaml as the single reviewed dependency boundary. The generator
becomes scripts/generate-npm-package-lock.mjs and feeds plugin bundling via
a transient package-lock.json + npm ci (works on npm 11 and 12). Tarball
validation treats the published 2026.7.2 beta train as a shrinkwrap
transition; self-update npm detection now uses install topology instead of
the shipped shrinkwrap.
* fix(deps): repair lint, deadcode, and test-type lanes for the npm 12 migration
- sort integrity comparisons with an explicit comparator (oxlint)
- keep resolveBunGlobalNodeModules module-local (knip unused-export gate)
- model npm pack --json as npm<=11 array / npm 12 name-keyed object
- default calver destructuring in the tarball test fixture