Skill Overhaul — Close-Out (30 Oct 2026)
Compiled 30 Oct 2026 from the audit register and the containment run. This is a summary of record, not a re-audit: no skills were re-read, no model calls were made, no benchmarks were run.
The one-paragraph version
The structural overhaul is closed and verified. Operational validation is partial. 108 skills load with no duplicate names (112 − 5 merged + 1 new). The 29 Oct eval tree that had leaked into the curated workspace — 326 MB, 31,451 entries and 24k git-tracked paths — has been moved out, byte-verified, and put under its own off-site backup source. Ownership repair covered 88 root-owned nodes, including descendants hidden by unreadable drill directories. The fixtures were implicated in rsync and scan failures; their role in the B2 timeout was not proved. What has not been shown is that the 108 skills each work in production.
What is closed
- 5 source merges, 1 new skill (
devops/service-broken-triage), 3 broken-link repairs, 4 condensed main files, 5 absorbed references present and linked — all structurally verified (links, hashes, word counts). - DOCX replace-loop hang: reproduced (180 s, no return), root-caused to a Pass-2 loop re-matching its own output, fixed, 8 dependency-free regression tests.
- Date-role routing: 94 deterministic checks (30 date-role + 25 router-memory + 39 tracker-sweep), exit 0, exercising real tracker code.
- Credential contract: the approval escape hatch and the Playwright/
vault-credtyping route are removed. No credential was read, rotated or migrated. - P9 bounded report route: two successful bounded compositions (TS-01, TS-03), one sweep plus one tool-free model call each, zero tool calls — the composer demonstrably cannot open a file.
What is limited, and how to read the numbers
- Evidence tiers are register labels, not measurements.
task_tested: 3/architecture_mapped: 105describe what the register recorded at a point in time. The register is incomplete — some “architecture-mapped” skills do carry tests. Treat it as “no recorded task evidence”, never “never tested”. review≠ accepted. 98 of 113 population rows sit inreviewbecause nobody has adjudicated them. Nothing was mass-marked accepted.- P9 was three provider attempts, not two. The first TS-03 attempt returned
zero answer characters at
max_tokens=2500(finish_reason: length); the budget was raised to 6000 and the composition was re-run once. That third call was a retry after a budget failure. - The guard is mock-tested only. Five mocked cases pass. The rejection earlier described as a “93-character partial” actually fired on exit code 93; the two fixture bodies are 30 and 14 characters. Logic proven, model behaviour not.
- Performance is not a controlled comparison. P2 vs P9 differ in architecture; 38.47 s vs 9.39 s is not a speed-up measurement.
todo-summary’s failed baseline is history, not a current verdict. The P9 bounded route supersedes it for that case.
Containment (applied 30 Oct)
The eval tree is now at ~/.hermes/backups/audit-evidence/skill-audit — outside
the scan roots of wiki-lint.py, wiki-graph.py, wiki-backlinks.py,
system-validate.py, git, the beetroot rsync and the B2 workspace source. It
is its own SOURCES entry in system-b2-backup.py, mirroring to
immich-crypt:system-backups/audit-evidence.
Verified rather than assumed: the rename preserved the entry manifest and the readable-content digest exactly; 88 root-owned nodes were normalised to the host uid with no mode change and no content loss (40 files became newly readable); wiki-lint now reports 0 broken links across 127 notes; a read-only rsync dry run exits 0 with no permission errors.
Two protections were added because the dry runs showed the risk: the standby
rsync would have pruned its 31,451-object copy of the tree (now hold-excluded),
and the B2 workspace source would have pruned the old workspace/skill-audit
prefix (now excluded without --delete-excluded). Nothing was deleted.
Stabilisation follow-through (30 Oct 2026)
The report-semantics gap is now closed at the deliverable boundary, not by
claiming the model was complete. The one live answer remains preserved
verbatim at ~/.hermes/backups/audit-evidence/stabilisation-20261030/K-final-report/model-answer.md.
Its deterministic, same-collection appendix now contains every beyond-horizon
row and the exact 31-row count. The report’s 120-day normal horizon remains
intact, and all 12 health-observation rows remain exclusions rather than events.
The complete final deliverable is ~/.hermes/backups/audit-evidence/stabilisation-20261030/K-final-report/report.md; its
verification.json records the exact set/count check. The calendar partition
check now compares the bucket row counts to the sweep’s declared counts and
checks cross-bucket disjointness. It retains same-bucket duplicate observations
as rows, explaining 12 excluded rows across 10 distinct date/source keys.
Eight bounded-report tests pass, including new full-appendix, duplicate-retention and bucket-overlap regressions. Syntax compilation passes. The earlier 94-check historical run recorded 92 passes and two render mismatches already present in its preimage. The dedicated 30-check test source is no longer present in the evidence tree, so those two cases could not be re-run or repaired safely; the actual failure strings and preimage reproduction remain in the H evidence. Do not describe the model answer alone as accepted or complete.
The new one-shot stabilisation-b2-verify job was read back as enabled,
script-only/no-agent, Telegram-delivered, due 31 Oct 2026 at 05:30 UTC. Its six
self-tests pass. The live verifier correctly reports pending because the
post-cutover natural producer cycle has not yet run. The general tracker Cron
Reminders table was regenerated from the full tracker via
weekly-housekeeping.sync_cron_reminders; tracker normalisation and
system-validate.py now exit 0. Wiki lint exits 0 with no findings. No backup
was forced. Historical evidence in H remains unchanged; current verified state
is in K.
Still open
- Observe the post-cutover natural backup cycle and complete the scheduled read-only B2 verifier, then evaluate remote hash read-back evidence. The verifier job is scheduled for 31 Oct 2026 at 05:30 UTC; no backup was forced.
- Adjudicate three pending skills (therapy KEEP-HOLD,
box,competitor-news-monitor). - Approve or decline removal of the exact 7,670
skill-audit/pages in GBrain sourcedefault. Exhaustive pagination reconciled 7,788 total pages, including 118 non-audit pages. All 7,670 backlink queries succeeded and reported no incoming links from non-audit pages. The identifiers are frozen in the private I-brain-complete manifest. No pages were deleted; bulk deletion still requires Joe’s explicit approval. - Decide the retained standby and B2 audit copies (both deliberately held).
- D16 deliberately not applied;
integrations/credential-migrationstays loadable.
Where the evidence lives
The audit tree is private evidence and deliberately outside this workspace; it is
not part of the wiki and is not linked with a wikilink. Path (textual, not a
link): ~/.hermes/backups/audit-evidence/skill-audit — entry points
consolidation/checkpoint/CHECKPOINT.md, consolidation/DECISIONS.md,
effectiveness/outcomes.json, reports/improvement-batch-03.md.
Apply manifests, preimages and read-back logs for the containment run:
~/.hermes/backups/skill-overhaul-closeout-20261030/apply/.
Related
- OKF — the conformance rules this note follows
- KNOWLEDGE-GRAPH — how the link layer and lint work
- RESTORE — disaster recovery, including where backups land