Files
hermes-ui/docs/harness
toor cc644c59f6 Phase 008: close the test and CI loop around the migration
Adds the checks that make the constraints from Phase 001-007 mechanical
instead of tribal knowledge, and clears the legacy brand text that was still
reachable at runtime.

New red-line tests:
  - no-legacy-brand mirrors the harness scan under vitest, and asserts its
    allow-list has not drifted from harness-check.mjs
  - hermes-db-readonly classifies every new DatabaseSync call site by
    following the path it opens, and fails if a state.db handle drops
    readOnly. It also pins the one legitimately writable database.
  - i18n-parity compares the raw zh/en locale objects both ways. The
    existing coverage test merged en into zh at import time, so a key
    missing from zh could never fail there.

harness:check gains the four missing gates from the phase brief - retired
package directories, retired package scripts, a single UI library, and the
required root files. Each was verified to fail by mutating the repo.

The online-update channel had hardcoded upstream URLs. It now reads
HERMES_WEB_UI_VERSION_MANIFEST_URL and friends and degrades with a named
error, because a reimplementation has nowhere to pull releases from.

The remaining legacy strings are deliberate and each carries a reason in the
allow-list: the global-agent relay address and the OpenRouter referer are
load-bearing, the socket role identifier is a wire contract, and the pre-rename
DB filenames would orphan existing deployments if changed. AGENTS.md now says
so explicitly, so a future agent does not "clean them up".

Also removes a dead electron mock alias, an i18n exemption that had stopped
exempting anything, and a teardown race in plugins-view.test.ts where a-spin
animation frames outlived the jsdom environment.

Verified self-contained: with reference_code/ moved aside, harness:check,
build, test and test:e2e all pass, so the directory can now be deleted.
2026-10-19 00:23:19 +08:00
..

Harness Overview

This harness turns recurring project knowledge into files and checks that an agent can discover without chat history.

Goals

  • Make repository context legible through short maps and deeper docs.
  • Keep architecture constraints close to the code they protect.
  • Give agents a deterministic validation path before opening or updating a PR.
  • Prefer mechanical checks over reminder text when a rule can be verified.

Entry Points

  • AGENTS.md is the root map for coding agents.
  • ARCHITECTURE.md documents package boundaries and state ownership.
  • DEVELOPMENT.md remains the contributor rules and command reference.
  • docs/harness/validation.md maps change types to checks.
  • docs/harness/worktree-runbook.md explains isolated worktree development.
  • docs/harness/pr-review.md provides a PR self-review checklist.
  • scripts/harness-check.mjs enforces baseline repository invariants.

Operating Model

  1. Read the root map and the specific doc for the task.
  2. Make the smallest scoped change.
  3. Add or update focused tests when behavior changes.
  4. Run npm run harness:check and the relevant validation commands.
  5. If a failure pattern repeats, improve this harness with docs, tests, scripts, or CI instead of relying on a longer prompt.

What Belongs In The Harness

  • Facts that future agents must know to work safely.
  • Checklists that prevent repeated PR review comments.
  • Scripts that fail fast on repository-wide invariants.
  • Runbooks for local, CI, and release flows.

Do not put long implementation notes in AGENTS.md. Add them under docs/ and link to them from the map.