docs: OpenWolf pointer cleanup + redirect-hint checklist item (bug-1700 lesson)
CLAUDE.md: replace the stale @.wolf/OPENWOLF.md import with a pointer to the openwolf skill / rules file, matching how the project's OpenWolf setup actually resolves the protocol now. api-standards.md: add checklist item 6 for new primary-only opcodes -- confirm ha_dispatch_gate's -XCE_ERR_STANDBY rejection actually populates a redirect via fill_redirect_reply(), not just that the client has a generic redirect-follower. Directly informed by bug-1700, where the identical gap was independently rediscovered for OPCode_schedAdmin after already being documented once for OPCode_upgradeConfig. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AgYRU3zDTqNGV5Jk8aiKLg
This commit is contained in:
parent
cfd7db8cd1
commit
13246a89c8
2 changed files with 3 additions and 2 deletions
|
|
@ -142,3 +142,4 @@ int xce_decode(io_packet_t *pkt, xce_request_t *req);
|
||||||
3. Rebuild capnp schemas (automatic via meson)
|
3. Rebuild capnp schemas (automatic via meson)
|
||||||
4. Add a `case OPCode_...:` in the `switch (request.opcode)` dispatch inside `myreq_handler()` in `cluster.c` (this runs after `ha_dispatch_gate`, which only applies a role-based allow/deny filter, not per-opcode handler logic)
|
4. Add a `case OPCode_...:` in the `switch (request.opcode)` dispatch inside `myreq_handler()` in `cluster.c` (this runs after `ha_dispatch_gate`, which only applies a role-based allow/deny filter, not per-opcode handler logic)
|
||||||
5. Add encode/decode paths in `src/lib/request.c` if using raw payloads
|
5. Add encode/decode paths in `src/lib/request.c` if using raw payloads
|
||||||
|
6. **If the new opcode is primary-only** (absent from `ha_dispatch_gate`'s `CTRL_STANDBY` allow-list), confirm its rejection reply reaches a client that can actually recover — `myreq_handler`'s generic gate-rejection path (`cluster.c`, right after the `ha_dispatch_gate()` call) must populate the redirect fields via `fill_redirect_reply()` (`join.c`) when rejecting for `-XCE_ERR_STANDBY`, mirroring `OPCode_join`'s handler. Every client-side redirect-follower in this codebase (`xceadmin.discovery.follow_redirects()`, libxce's own failover path) is already generic/opcode-agnostic and works automatically the moment the server supplies a redirect — don't assume "the client should just retry" is a client-side gap without first checking whether the server ever gave it anything to retry against (bug-1700: the identical gap was independently found and documented for `OPCode_upgradeConfig` first — `test_e2e_live_ha_push.py`'s module docstring — then shipped again under `OPCode_schedAdmin` before either was actually fixed).
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
# OpenWolf
|
# OpenWolf
|
||||||
|
|
||||||
@.wolf/OPENWOLF.md
|
This project uses OpenWolf for context management. The always-on rules live in `.claude/rules/openwolf.md`; the hooks handle bookkeeping (anatomy index, memory log, read tracking) automatically.
|
||||||
|
|
||||||
This project uses OpenWolf for context management. Read and follow .wolf/OPENWOLF.md every session. Check .wolf/cerebrum.md before generating code. Check .wolf/anatomy.md before reading files.
|
For the full operating protocol (session handoff, memory discipline, bug logging), load the `openwolf` skill, or read `.wolf/OPENWOLF.md`. Regenerate the session handoff with `/handoff`.
|
||||||
|
|
||||||
|
|
||||||
# XCE Cluster Management System
|
# XCE Cluster Management System
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue