Release beta 1.0.0 baseline
check / local-gate (push) Failing after 1m35s

This commit is contained in:
JWeBot Contributors
2026-10-16 01:07:07 +08:00
parent bf4f28f48e
commit afc71e63a7
28 changed files with 872 additions and 110 deletions
+593 -15
View File
@@ -1,5 +1,20 @@
# Changelog
## beta 1.0.0.1016 - 2026-10-16
- Promote JWeBot from alpha to beta after the local, staging, privacy, and
production deployment gates stabilized.
- Consolidate the current reviewed local command set, including virtual coin
transfer, loans, repayment, group leaderboard, multiplayer lottery,
blackjack, Steam queries, and CS Major autochess.
- Externalize CS Major autochess game content into package JSON data files for
cards, coaches, narratives, draft/shop/economy rules, match formats, and
MR15/overtime settings.
- Add a maintained command catalog and keep debug session notes out of the
repository by default.
- Keep release validation on `tools/sync-local-extensions.py --check`,
`tools/check-local.sh`, and `tools/check-secrets.py --history`.
## alpha 0.6.11.1015
- Add `/大富翁榜`, `/金币排行`, `/金币排行榜`, and `/richlist` for a
@@ -117,7 +132,7 @@
deterministic local AI as seed four; it buys players, upgrades its coach,
swaps its strongest lineup, and selects a counter tactic without an online
model.
- Give Taffy a persistent host state machine: welcome and format briefing,
- Give the bot a persistent host state machine: welcome and format briefing,
rotating human preparation order, turn enforcement, explicit handoffs,
round introductions, matchup calls, overtime narration, advancement, and
championship presentation.
@@ -144,7 +159,7 @@
- Add per-game personal sequence numbers and `/游戏记录` (`/gamehistory`) for
prize draws, lottery rounds, and blackjack hands.
- Prefix game output with the configured player label and game number, such as
`Jacky #1:...`; aliases share the same counter and account.
`Player #1:...`; aliases share the same counter and account.
## alpha 0.6.2.1015
@@ -162,7 +177,7 @@
stand in a separate command. Combined forms return this workflow without
opening a game or deducting funds.
- Prefix blackjack hands, status and settlement replies with the current
group-scoped player's configured display label, such as `jacky:...`.
group-scoped player's configured display label, such as `player:...`.
## alpha 0.6.1.1015
@@ -213,18 +228,581 @@
backup; pre-public operational history remains only in protected local
archives.
## Pre-Public Milestones
## alpha 0.5.11.1015
Earlier alpha work established:
- Reduce the conservative follow-latest scroll burst from a fixed `25ms` to
`1ms` between each of the existing 30 wheel events.
- Reuse the XDamage producer's verified WeChat window identifier in the
adaptive ready-layout gate instead of rediscovering the same window before
each screenshot.
- Preserve the shared GUI lock, ready-window geometry gate, second screenshot,
and loaded-bottom visual confirmation.
- Add privacy-safe per-step capture telemetry and regression coverage for the
optimized slow path.
- adaptive OCR and XDamage capture;
- guarded GUI send with visual confirmation;
- durable ACK/final delivery ordering;
- privacy-safe latency telemetry;
- capability-limited SDK contracts;
- signed extension artifacts and isolated Host execution;
- reviewed command ownership and generated adapters;
- coordinated production backup, health gates, and rollback.
## alpha 0.5.10.1015
Private host, person, address, account, incident, and deployment details are
intentionally omitted from the public changelog.
- Prioritize queued fast acknowledgements and local-command replies over queued
final replies in the guarded GUI sender.
- Keep the active GUI send non-preemptive and preserve strict FIFO ordering
within each priority class through a monotonic sequence number.
- Raise the adaptive recorder CPU quota from `150%` to `250%` to reduce
screenshot subprocess stalls under OCR and GUI contention.
- Add deterministic coverage for ACK/local priority, final FIFO ordering,
single-sender serialization, and clean worker shutdown.
## alpha 0.5.9.1014
- Preserve both capture call contracts in the adaptive ready-window wrapper:
zero arguments for startup/polling and one verified window identifier for the
optimized XDamage producer.
- Fix the alpha 0.5.8 internal `CaptureProducerError` restart loop that began on
the first relevant XDamage event.
- Add direct regression tests for both ready-gated capture signatures.
## alpha 0.5.8.1014
- Recover one unseen bottom-most bot trigger when a viewport resync has no
visual overlap, instead of silently dropping the new command.
- Persist a bounded recent-trigger visual history so an old command is not
replayed by a later no-overlap resync; ordinary messages remain fail-closed.
- Seed that history from one startup baseline before enabling recovery, so a
service restart cannot replay a visible pre-existing command.
- Reuse the XDamage monitor's verified WeChat window identifier and the
maximize gate's geometry result, removing one redundant window lookup and
one redundant geometry subprocess from each changed-frame capture.
- Add regression coverage for unseen-trigger recovery, seen-trigger replay
suppression, signature migration, and the optimized capture path.
## alpha 0.5.7.1014
- Replace the single direct-request worker with two parallel generation workers
and one strictly ordered GUI delivery worker for ordinary chat and Steam
requests.
- Keep final replies in durable `created_at, event_id` order even when a newer
provider call completes first; failed acknowledgements and exhausted requests
remain terminal and do not block later replies.
- Separate generation and delivery retry counters so each phase retains its
complete retry budget.
- Wake generation and delivery workers immediately on enqueue, generation
completion, and acknowledgement instead of adding a one-second idle polling
delay to the normal path.
- Split direct-queue telemetry into `direct_generation` and `direct_delivery`
phases and add concurrency, ordering, ACK-race, retry, Steam, and duplicate
regression coverage.
## alpha 0.5.6.1014
- Preserve both pre-draft and post-draft group fingerprint gates while
capturing only the configured title region instead of decoding the complete
WeChat window twice per GUI send.
- Keep the previous full-window fingerprint path as a compatibility fallback
for older adaptive upstream modules.
- Add GUI sender coverage for the title-region primary path, full-window
fallback, and visual group-mismatch fail-closed handling.
## alpha 0.5.5.1014
- Accept incoming WeChat bubbles up to `900px` wide so long single-line bot
mentions are not discarded before OCR; preserve position, height, area, and
outgoing-bubble exclusion gates.
- Wait for adaptive OCR warmup and a first baseline capture from the current
service start before reporting `adaptive ready` or successful deployment.
- Fail and roll back deployment if the adaptive service exits or cannot
establish its recorder baseline within 90 seconds.
- Retry the WeChat ready-window gate for up to 30 seconds and discover the
exact `Weixin` window by both class and title before failing closed.
- Pin production privilege switching and X11 inspection to verified absolute
executable paths so a restricted root `PATH` cannot masquerade as a missing
WeChat window.
## alpha 0.5.4.1014
- Stabilize visible-message sequence alignment with thresholded binary
sender/body fingerprints while retaining exact RGB keys for OCR cache
invalidation.
- Reset 0.5.3 exact-visual recorder state to a safe no-reply baseline during
the signature migration.
- Prefix coordinated deploy phases with `[JWeBot]`, report explicit
`starting`, `ready`, and `active` states, and run user installation from the
target home to avoid inherited `/root` working-directory warnings.
## alpha 0.5.3.1014
- Align visible message sequences with existing exact bubble visual
fingerprints instead of OCR text, preventing scroll/resync OCR drift from
dropping a newly mentioned slash command.
- Reset legacy text-signature recorder state to a no-reply visual baseline on
startup, avoiding duplicate replay during the signature-scheme migration.
- Preserve repeated identical commands as separate visual occurrences.
## alpha 0.5.2.1014
- Print an ASCII pixel-art project signature only after the coordinated
production deployer passes every cutover gate and disables rollback.
## alpha 0.5.1.1014
- Exclude the static bottom-left input hint from the realtime text ROI so an
empty WeChat input box is not misclassified as dirty.
- Label the corrected ROI as `input_text_core_v2` in bridge telemetry, keeping
pre-fix and post-fix production evidence distinguishable.
## alpha 0.5.0.1014
- Move visible WeChat delivery onto a persistent in-process GUI sender queue
hosted by the adaptive recorder, avoiding per-message bridge subprocesses for
ACK, local-command replies, and final deliveries.
- Add a private AF_UNIX sender socket so Edge delivery helpers submit final
replies to the same serialized GUI queue instead of racing the input box.
- Combine clear, paste, ROI draft flag, post-draft group check, Enter send,
ROI clear confirmation, and send-button fallback into one bridge call.
- Confirm the input ROI is empty after Ctrl-A/Backspace before using it as the
paste baseline, preventing repeated `喵......` ACK drafts from being mistaken
for paste failures.
## alpha 0.4.15.1014
- Force adaptive recorder logging to INFO so GUI bridge timing telemetry is
visible on ACK and final delivery paths.
- Allow ROI, poll, pixel-threshold, flag, and coordinate fields through the
packaged runtime telemetry sanitizer.
## alpha 0.4.14.1014
- Replace full-input send confirmation with a left-side input-text ROI flag so
draft and send confirmation poll only the region that should visibly change.
- Restore the guarded send order to Enter first, then click the scaled send
button only as a fallback when ROI clearing is not visually confirmed.
- Emit ROI coordinates, flag state, flag wait time, confirmation source, and
bridge stderr tail diagnostics for GUI delivery failures.
## alpha 0.4.13.1014
- Emit detailed guarded GUI delivery timings for lock acquisition, pre/post
draft screenshots, group fingerprint checks, bridge subprocess duration,
draft paste confirmation polling, send-button confirmation polling, Enter
fallback, callback hooks, and total send time.
- Return per-step timing metadata from the adaptive GUI bridge so ACK and final
delivery reports can attribute fixed waits, screenshot confirmation, VNC
input, and fallback paths without logging message text.
## alpha 0.4.12.1014
- Optimize guarded WeChat GUI delivery by clicking the scaled send button first
and polling for visual confirmation instead of waiting on fixed sleeps.
- Preserve the Enter-key fallback when the button path is not visually
confirmed.
## alpha 0.4.11.1014
- Add explicit `edge.fast_ack.*` and `recorder.fast_ack.*` telemetry names
alongside the existing ACK metrics, making fast acknowledgement latency
independently filterable without breaking historical dashboards.
## alpha 0.4.10.1014
- Cache configured person-alias rows once per group and make configured
identity persistence idempotent, eliminating thousands of redundant
`FULL`-synchronous SQLite commits during Edge startup.
- Reduce measured production host systemd socket readiness on the production database
snapshot from more than 90 seconds to about one second.
## alpha 0.4.9.1014
- Wait up to 45 seconds for the newly started Edge socket and health response
before deciding that a production cutover failed, while still failing
immediately if systemd marks the service failed.
## alpha 0.4.8.1014
- Keep the adaptive OCR process alive while WeChat is absent or awaiting login,
then resume capture against the ready main window without a systemd restart
storm.
- Install the reviewed `wechat_local_ocr.py` beside the adaptive runtime instead
of importing an independently managed root copy.
- Add a root-coordinated production deploy that records both systemd
topologies, backs up root and user files plus SQLite, disables both legacy OCR
units, and rolls back all layers when a health gate fails.
- Require empty OCR queues, a ready WeChat window, Edge socket health, stable
adaptive restart counts, and SQLite integrity before accepting a production
cutover.
- Preserve incoming service state in legacy install and upgrade tools; legacy
OCR now remains disabled unless an operator explicitly opts in.
- Prevent Extension Host imports from writing bytecode into verified releases,
and exclude only standard interpreter cache files from source packaging.
- Add deployment contract tests and shell-aware syntax validation to the local
release gate.
## alpha 0.4.7.1014
- Prewarm RapidOCR recognition and detection paths before live capture.
- Cache successful bubble recognition by bounded exact visual fingerprint,
recognize only new or changed crops, and periodically revalidate the cache.
- Persist OCR command events through atomic file replacement plus file and
directory `fsync`, then immediately wake the in-process responder while
retaining the one-second recovery scan.
- Name the three execution paths explicitly as `local-command`, `deepseek`, and
`openclaw` in Edge responses and privacy-safe routing telemetry.
- Add signed plugin description/help metadata, validate it through Host health,
generate bundled `/功能列表` output automatically, and update plugin creation
tooling and author documentation.
## alpha 0.4.6.1014
- Add a repeatable local performance baseline for OCR preprocessing, sequence
alignment, durable ACK/queue state, and real signed Host process execution.
- Add a structured telemetry-log analyzer with p50, p95, maximum, status, and
event-count summaries.
- Measure queue waiting, capture-buffer age, ACK end-to-end latency, and final
Edge delivery latency without recording message content.
- Establish the bottleneck order from local measurements and existing runtime
evidence: RapidOCR, provider generation, polling wakeups, then one-shot Host
startup; SQLite and sequence work remain below 2 ms p95 locally.
- Document the evidence, measurement gaps, and optimization order for later
`0.4.x` iterations.
## alpha 0.4.5.1014
- Close the approved repository-only Extension Host migration scope.
- Treat an invalid installed signed release as a startup failure rather than a
preferred-mode fallback; only missing or startup-unhealthy Hosts may fall
back.
- Enforce the end-to-end Host deadline after Kernel service execution and
expand transport-error telemetry.
- Document completed local work, explicitly deferred external operations, and
the next measurement-led OCR/queue/ACK performance-analysis phase.
## alpha 0.4.4.1014
- Add privacy-safe structured telemetry for OCR, routing, ACK preparation and
confirmation, queues, providers, Host processes, service brokering, and final
GUI delivery.
- Hash event and group identifiers, reject message-body fields, and retain only
low-cardinality process-local counts and latency summaries.
- Expose telemetry summaries through Edge health without making telemetry part
of delivery correctness.
- Instrument OCR capture/recognition/queue stages and distinguish ACK GUI
delivery from Edge confirmation.
- Document ACK ordering and the measurement points needed for future OCR,
queue, Host-startup, and provider latency optimization.
## alpha 0.4.3.1014
- Require a signed release to pass isolated Host health before atomic
activation; failed new releases are removed without switching `current`.
- Add explicit local-only health bypass for packaging environments.
- Complete real-process parity coverage for all 12 reviewed plugins, including
memory CRUD, both stateful games, dice challenge, rankings, history, and
Steam fast-ACK final generation.
- Fix Host protocol writes so broker messages bypass redirected plugin stdout
without exposing plugin output to the parent protocol.
## alpha 0.4.2.1014
- Load installed signed plugin manifests into a deterministic startup catalog
and freeze command ownership before routing.
- Add `in-process`, `prefer-host`, and `host-only` Edge execution modes with
subprocess or AF_UNIX Host transports.
- Route signed healthy plugins through the isolated Host while preserving
Kernel-direct commands and Steam fast-ACK queueing.
- Permit startup fallback for missing or unhealthy preferred Hosts, but never
replay an active invocation after a possible stateful service call.
- Add real subprocess end-to-end coverage from Edge through the generated
adapter, Host protocol, Kernel service broker, and final reply.
## alpha 0.4.1.1014
- Add bounded bidirectional JSON-line service brokering between isolated
Extension Host processes and Kernel-owned service profiles.
- Enforce declared profile ownership, call IDs, call count, message size, and
end-to-end process/socket deadlines.
- Add Host health inventory responses and broker support to both subprocess and
AF_UNIX clients.
- Keep service errors generic across the isolation boundary.
## alpha 0.4.0.1014
- Start the approved `0.4.x` local extension-host migration and performance
instrumentation milestone.
- Keep signing-pipeline integration, key rotation, PR rehearsal, target-machine
provisioning, deployment, and Linux verification deferred.
## alpha 0.3.1.1014
- Add OpenSSH `sshsig` publisher signatures for canonical extension release
records.
- Bind the publisher principal, release filename, artifact metadata, source
digest, manifest author, and exact file list through one signed payload.
- Require trusted publisher verification for activation, Host loading, and
rollback; unsigned paths now require an explicit local-test override.
- Persist the canonical signature record with each installed release and
re-verify it before execution or rollback.
- Add signing support to package, verify, activate, rollback, and standalone
release-signing tools.
- Keep production host provisioning, deployment, and systemd validation deferred.
## alpha 0.3.0.1014
- Close the `0.2.x` complete-function migration after the corrected granular
plugin ownership model passed the full local gate.
- Start the approved `0.3.x` baseline with Kernel-direct operational commands,
official-owned person memory, and 11 project-owned plugins.
- Keep Linux deployment and systemd verification explicitly deferred.
## alpha 0.2.6.1014
- Replace grouped plugin domains with one plugin per independently
understandable function.
- Keep dice and dice challenge as one complete project-authored collection.
- Make person-memory the only official-authored command plugin.
- Move feature list, status, and balance to unconditional Kernel-direct
routing.
- Add required manifest author metadata and release-record schema version 2.
- Generate 11 project plugin packages under the reviewed local-extension namespace and keep only
person-memory under `extensions/official`.
- Rename the canonical rollback switch to
`JWEBOT_LOCAL_EXTENSIONS_ENABLED`, while accepting the old environment key
as a compatibility fallback.
## alpha 0.2.5.1014
- Move the complete Steam provider into `jwebot-official-extensions`.
- Migrate fixed roster, group aliases, mode filtering, single-person lookup,
cache, API batching, proxy enforcement, and error classification.
- Preserve the existing public `SteamClient`, `SteamUnavailable`, API base, and
Mihomo default exports through the packaged Edge runtime.
- Keep the no-direct-network-fallback regression tests passing.
## alpha 0.2.4.1014
- Add full official-adapter versus compatibility-path parity tests.
- Cover every stateless command family, all memory operations, every
dice-challenge phase, guess-number lifecycle, RPS lifecycle, status, balance,
Steam generation, and restart persistence.
- Make parity and persistence checks part of the permanent local/CI gate.
## alpha 0.2.3.1014
- Route all known local commands through generated official SDK adapters by
default.
- Execute stateful behavior through named in-process service brokers without
exposing raw Ledger or providers to adapters.
- Preserve the Steam fast-ACK asynchronous path through the official adapter.
- Add `JWEBOT_OFFICIAL_EXTENSIONS_ENABLED=0` as a compatibility rollback to
direct command-engine dispatch.
- Keep unknown slash-command errors on the compatibility path.
- Install generated adapter modules with the official package.
## alpha 0.2.2.1014
- Add reviewed `service_profiles` as a narrow SDK/manifest capability.
- Generate real Host-loadable packages for all seven official function domains.
- Register every existing alias through SDK command adapters.
- Delegate complex stateful behavior through named Kernel service profiles
instead of exposing raw Ledger or provider objects.
- Add synchronization checks so official manifests, adapters, docs, and command
ownership cannot drift.
- Validate, source-scan, and package every official extension in CI.
## alpha 0.2.1.1014
- Move the complete local command engine out of the Edge runtime into the
installable `jwebot-official-extensions` package.
- Preserve all command replies, persistence, deterministic seeds, game state
machines, memory operations, rankings, status, balance, and Steam behavior.
- Inject Ledger, Steam, balance, reply-cleaning, identity, and memory-policy
brokers from Kernel instead of importing Edge internals.
- Add a unique ownership map covering every current command kind and alias.
- Add an authoritative migration matrix documenting every command subfunction
and non-command Kernel responsibility.
## alpha 0.2.0.1014
- Start the approved `0.2` full-function migration milestone.
- Move the complete Edge runtime into `jwebot-kernel`.
- Keep `jwebot_edge.py` as a compatibility CLI and module alias so existing
imports and runtime monkeypatches continue to affect implementation globals.
- Update tests and the installer for the packaged runtime.
- Preserve all existing command, queue, ledger, model, memory, broadcast, and
delivery behavior.
- Do not deploy or validate on Linux in this stage.
## alpha 0.1.11.1014
- Add a bounded AF_UNIX client matching the systemd socket-activated Host
design.
- Send one canonical JSON request, half-close the write side, and read one
bounded response.
- Fail closed on socket timeout, unavailable socket, malformed response, and
Host error status.
- Keep the socket client disconnected from the current production Edge path.
## alpha 0.1.10.1014
- Add uninstalled systemd socket/service templates for the extension Host.
- Specify a fixed unprivileged identity, AF_UNIX-only private network,
read-only system/release paths, empty capabilities, syscall filtering, and
CPU/memory/process/runtime limits.
- Add static sandbox-policy checks and unit tests.
- Require explicit target-host provisioning and systemd verification before
any future enablement.
## alpha 0.1.9.1014
- Add the Kernel-side extension Host client with a minimal inherited
environment and isolated process group.
- Enforce parent wall-time deadlines and kill the entire Host process group on
timeout.
- Bound request, response, and stderr sizes and reject malformed protocol
responses.
- Limit plugin stdout/stderr inside the Host.
- Hash both plugin log messages and field-name sets instead of emitting plugin
text.
- Test timeout child-process cleanup and environment-secret exclusion.
- Keep the client disconnected from the production Edge path.
## alpha 0.1.8.1014
- Add an installable `jwebot-extension-host` package.
- Re-verify installed release content, manifest, and source policy before import.
- Enforce exact declared command registration and freeze it before invocation.
- Add a bounded single-request JSON stdin/stdout protocol.
- Scrub inherited environment values and redirect plugin stdout away from IPC.
- Keep storage, HTTP, and scheduling brokers fail-closed.
- Return generic plugin failure classes without exception text.
- Do not connect the Host to Edge or install it on production host.
## alpha 0.1.7.1014
- Add verified release installation under full source-digest directories.
- Add locked, atomic `current` and `previous` activation pointers.
- Re-verify installed release file lists, records, and source content before
reuse.
- Add explicit local activation and rollback tools with no default production
path.
- Test rollback, tampered artifacts, tampered installed content, unsafe
pointers, and private installed-file permissions.
- Do not execute extension code or modify production host.
## alpha 0.1.6.1014
- Add deterministic, content-addressed extension release artifacts.
- Add canonical source and artifact SHA-256 records.
- Verify artifacts without extraction and reject path traversal, non-regular
members, expansion limits, file-list drift, and content tampering.
- Refuse replacement of an existing digest-addressed artifact with different
bytes.
- Build and verify the example extension artifact in Gitea Actions.
- Explicitly defer publisher signing and production host activation to a later phase.
## alpha 0.1.5.1014
- Add a static extension source-policy preflight before packaging.
- Reject unapproved imports, file/process/socket access, dynamic execution
builtins, and dunder attribute traversal.
- Enforce source count, size, UTF-8, syntax, and symlink limits.
- Make `validate-plugin.py` validate both manifest and source policy.
- Document that static policy is a CI prefilter, not a replacement for OS
process isolation.
## alpha 0.1.4.1014
- Restrict extension command names to Unicode word characters, dots, and
hyphens.
- Reject quote/newline template injection before plugin skeleton files are
created.
- Add manifest and generator regression tests while preserving Chinese command
names.
## alpha 0.1.3.1014
- Add a safe command-extension generator that refuses invalid IDs, invalid
commands, path traversal, and overwriting existing extensions.
- Add official and friend extension namespaces.
- Add an author guide, SDK API reference, and reusable AI-author prompt.
- Include author tooling and required documentation in the repository gate.
## alpha 0.1.2.1014
- Add a deterministic extension catalog that accepts reviewed manifests only
during startup.
- Reject duplicate plugin IDs and case-insensitive command ownership conflicts.
- Freeze registration before runtime command resolution.
- Keep catalog views immutable and require explicit command-token boundaries.
## alpha 0.1.1.1014
- Make `jwebot-kernel` the authoritative pure routing implementation used by
the existing Edge compatibility entrypoint.
- Preserve the existing `jwebot_edge.py` public function shapes for current
callers and tests.
- Update the production host installer to deploy and roll back the SDK and Kernel package
directories together with the compatibility scripts.
- Do not deploy or restart any production service in this repository change.
## alpha 0.1.0.1014
- Start the approved `0.1` milestone with installable `jwebot-sdk` and
`jwebot-kernel` packages.
- Add versioned event, reply, fact, and extension-result contracts.
- Add capability-limited context protocols that expose no GUI, group selector,
raw ledger, environment, shell, or unrestricted network access.
- Add strict plugin manifest validation and pure local/chat/cloud routing
primitives.
- Add a minimal `/hello` command extension and package boundary tests.
- Keep all existing root runtime entrypoints unchanged for production host compatibility.
## alpha 0.0.7.1014
- Move unit tests into `tests/`.
- Update tests to load root compatibility entrypoints from the repository root.
- Update local verification commands to discover tests from `tests/`.
## alpha 0.0.6.1014
- Add repository-safe configuration templates under `config/examples/`.
- Add `docs/configuration-guide.md` for runtime configuration ownership and
deployment destinations.
- Add `tools/check-config.sh` and include it in the local migration gate.
- Keep real secrets and production host runtime files outside Git.
## alpha 0.0.5.1014
- Add a Gitea Actions workflow that runs the standard local migration gate on
push and pull request.
- Add `requirements-dev.txt` for local and CI test dependencies.
- Document dependency installation in `README.md`.
## alpha 0.0.4.1014
- Move home-backup operational material into `ops/home-backup/`.
- Move the TigerVNC config snippet into `deploy/config/`.
- Keep backup material in the repository for reference while separating it from
the bot runtime path.
## alpha 0.0.3.1014
- Add `tools/check-local.sh` as the standard local migration gate.
- Wire the gate to compile Python entrypoints, validate shell scripts, reject
active emergency debug hooks outside their archive docs, and run the full
unittest suite.
- Document the local check command in `README.md`.
## alpha 0.0.2.1014
- Remove temporary emergency HTTP debug hooks from production Python entrypoints.
- Preserve removed hook context in `docs/debug/emergency-hooks-archive.md`.
- Add `docs/configuration-inventory.md` to document hardcoded addresses, paths,
service names, dimensions, models, and their migration policy.
- Keep historical incident markdown unchanged for auditability.
## alpha 0.0.1.1014
- Establish the repository version baseline for the private alpha migration.
- Move operational docs into `docs/`.
- Move deployment scripts, defaults, and systemd units into `deploy/`.
- Move the cloud responder prompt workspace into `agents/wechat-responder/`.
- Move the old direct OpenClaw watcher into `legacy/`.
- Keep current Python runtime entrypoints at repository root to preserve test and
deployment compatibility during the first migration step.