chore(wolf): sync anatomy/cerebrum/memory/hooks/token-ledger bookkeeping
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AgYRU3zDTqNGV5Jk8aiKLg
This commit is contained in:
parent
d0e5f85aa8
commit
c83b388be2
5 changed files with 1330 additions and 37 deletions
|
|
@ -1,7 +1,7 @@
|
|||
# anatomy.md
|
||||
|
||||
> Auto-maintained by OpenWolf. Last scanned: 2026-08-25T12:14:35.422Z
|
||||
> Files: 737 tracked | Anatomy hits: 0 | Misses: 0
|
||||
> Auto-maintained by OpenWolf. Last scanned: 2026-08-25T13:04:51.029Z
|
||||
> Files: 738 tracked | Anatomy hits: 0 | Misses: 0
|
||||
|
||||
## ../../../../../../tmp/
|
||||
|
||||
|
|
@ -957,16 +957,16 @@
|
|||
- `ha_convergence.c` — Declares char (~8389 tok)
|
||||
- `ha.c` — define _GNU_SOURCE (~126128 tok)
|
||||
- `ha.h` — ifndef HA_H (~34172 tok)
|
||||
- `job.c` — include <assert.h> (~37152 tok)
|
||||
- `job.c` — include <assert.h> (~37749 tok)
|
||||
- `join.c` — include "config.h" (~2994 tok)
|
||||
- `main.c` — build-time-versioning task 3.2 (argp_program_version runtime-composed into static `version_buf[128]`, "My name is..." startup INFO reads that buffer) PLUS dirty-content-fingerprint task 3.2 (2026-08-21): new static `version_display_buf[128]` composed via `xce_compose_version_ex()` (adds `STR(VERSION_DIRTY_FINGERPRINT)`) feeds `argp_program_version` instead; `version_buf`'s composition + the startup INFO log are byte-identical/untouched (Req 3.2). Live-verified: `--version` -> `7ebcba6d-cdb7cc7d`, startup log -> `7ebcba6d-dirty` (~5346 tok)
|
||||
- `meson.build` (~3510 tok)
|
||||
- `meson.build` (~3521 tok)
|
||||
- `misc.c` — include <errno.h> (~1359 tok)
|
||||
- `myapp.c` — define _GNU_SOURCE (~6287 tok)
|
||||
- `myconf.c` — define _GNU_SOURCE (~1180 tok)
|
||||
- `opget.c` — include "config.h" (~1730 tok)
|
||||
- `opupd.c` — include "config.h" (~714 tok)
|
||||
- `persist.c` — define _GNU_SOURCE (~100668 tok)
|
||||
- `persist.c` — define _GNU_SOURCE (~103677 tok)
|
||||
- `queue.c` — include <errno.h> (~1554 tok)
|
||||
- `repl.c` — include <assert.h> (~9240 tok)
|
||||
- `reply.c` — include "config.h" (~590 tok)
|
||||
|
|
@ -989,7 +989,7 @@
|
|||
- `clean_failover_preservation.sh` — clean_failover_preservation.sh — ha-term-safety task 5.2 live integration test. (~5327 tok)
|
||||
- `configcompare.c` — define _GNU_SOURCE (~2273 tok)
|
||||
- `configcompare.h` — pragma once (~1186 tok)
|
||||
- `controller_test.c` — include <argp.h> (~2437 tok)
|
||||
- `controller_test.c` — include <argp.h> (~2459 tok)
|
||||
- `ctrlstatus_fmt.h` — ifndef _CTRLSTATUS_FMT_H_ (~631 tok)
|
||||
- `resval_typeresolve.c` — resval_resolve_type(): resource-name -> Value_u_which table lookup (14 known names unchanged) + task 2.1's numeric-default fallback / `-t` type_override for unrecognized names (~499 tok)
|
||||
- `resval_typeresolve.h` — declares resval_resolve_type()/RESVAL_TYPE_UNKNOWN; task 2.1 fallback now implemented (~676 tok)
|
||||
|
|
@ -1034,6 +1034,7 @@
|
|||
- `test_wal_job_ckpt_fact.c` — bug-1691 regression suite: WAL_JOB_CKPT restart-drop fix for job.ckptinfo (plain char*, xstring-backed via makeString()). 7 tests: apply_committed_entry unconditional-decode (no-state-change is the key test, since on_job_ckpt() never changes state — mirrors bug-1690's RUSAGE divergence) + forward-transition + backward-compat, apply_wal_entry adopt + backward-compat, direct-payload restart replay, and a real on_job_ckpt() production-path restart-replay test (needed `persist_init(..., &c)` not NULL, since CKPT is hook-driven like RUSAGE, not a direct call site like DISPATCH/START/FINISH — persist_start() only registers persist_job_hook_fun when p->cluster != NULL) (~7000 tok)
|
||||
- `test_wal_job_dispatch_fact.c` — Declares in (~5222 tok)
|
||||
- `test_wal_job_finish_fact.c` — Declares as (~6904 tok)
|
||||
- `test_wal_job_preason_fact.c` — bug-1692 regression suite: WAL_JOB_PREASON restart-drop fix for job.pend_reasons (xce_job_preason_t*: host+resource-based reasons, plain calloc/strdup-backed, NOT xstring/RTTI). 11 tests: apply_committed_entry unconditional-decode (no-state-change is key, since set_preason()/do_clr_preason() never change state) + forward-transition + backward-compat + CLEAR (presence-byte=0 must reset to NULL — the one divergence from bug-1690/1691's precedent, since pend_reasons has a real clear op) + decode-edge-case, apply_wal_entry mirrors of same, direct-payload restart replay (host+resource reasons), and real do_set_preason()/do_clr_preason() production-path restart-replay tests (needed a minimal zeroed endpoint_t since do_set_preason() calls xce_reply() before processing — mirrors test_commit_barrier_reply.c's fixture) proving both SET and CLEAR survive restart (~11300 tok)
|
||||
- `test_wal_job_rusage_fact.c` — bug-1690 regression suite: WAL_JOB_RUSAGE restart-drop fix for job.run_usage. 8 tests covering both apply seams, backward compat, restart replay via the real persist_job_hook_fun(), and (key test) a merge-safety proof using a real makeString()'d host_name to confirm the fix never frees a live/xstring-backed pointer (~9250 tok)
|
||||
- `test_wal_job_start_fact.c` — Declares as (~6378 tok)
|
||||
- `test.c` — include <argp.h>. jobid-%lu-to-fmt_jobid task (2026-08-21): all 10 remaining raw `%lu` jobid printfs (cmd_jobkill, cmd_jobckpt, run_task_local, handle_notify x3, handle_runtasks x2, check_run_jobs, check_run_tasks) converted to `fmt_jobid(buf, sizeof(buf) - 1, ...)` + `%s`, matching this file's existing convention (buf/jobidStr/wantStr precedents at ~1559/1980/2405-2422); no new #include needed. Loop-scoped buffers repopulated fresh per iteration where the jobid varies (check_run_jobs, check_run_tasks, handle_notify's per-case union fields); reused a single populate when the jobid is loop-invariant (handle_runtasks: same runmsg->jobid across the task loop) (~40184 tok)
|
||||
|
|
@ -1103,7 +1104,7 @@
|
|||
|
||||
- `persist.h` — pragma once; bug-1689: declares persist_submit_job_finish_fact() (~26004 tok)
|
||||
- `utils.h` — dirty-content-fingerprint task 3.1: new `xce_compose_version_ex()` extern decl (--version-only sibling of xce_compose_version(), adds optional `dirty_fingerprint` param); startup-log call sites keep calling the untouched xce_compose_version() (~2720 tok)
|
||||
- `wal_types.h` — pragma once (~3804 tok)
|
||||
- `wal_types.h` — pragma once (~4524 tok)
|
||||
|
||||
## src/include/xce/
|
||||
|
||||
|
|
|
|||
|
|
@ -125,6 +125,9 @@
|
|||
- **(2026-08-25, bug-1691) A shared-fixture footgun found copy-pasting a sibling WAL-fact test file's "drive the real production entry point through a real restart cycle" test: `persist_init(&c.persist, &cfg, NULL)` (the exact line every prior sibling test — bug-1687/1689's START/FINISH suites — uses) is WRONG for a hook-driven fact type, even though it is byte-identical to what those working sibling tests do.** `persist_start()` only registers `persist_job_hook_fun`/`persist_queue_hook_fun`/`persist_worker_hook_fun` on `p->cluster->hooksys` when `p->cluster != NULL` (persist.c). DISPATCH/START/FINISH's production functions call `persist_submit_job_*_fact()` DIRECTLY, bypassing the hook system entirely, so those sibling tests' `NULL` 3rd-arg is harmless. But CKPT (like bug-1690's RUSAGE) is HOOK-DRIVEN: `on_job_ckpt()` only ever calls `xce_run_hooks(..., HOOK_DETAIL_JOB_CKPT, ...)` and relies ENTIRELY on `persist_job_hook_fun` being a registered subscriber to reach the WAL at all. With `NULL` passed, the real-call test silently appends NOTHING (no crash — `xce_run_hooks` on an unregistered detail is simply a no-op), so the restart-replay assertion fails with "ckptinfo NULL" even though the fix code itself was already fully correct — a genuine RED-signal red herring that looks exactly like a fix defect. Diagnosed by noticing the 6 hand-built-payload tests all passed (proving the apply-seam decode/adopt logic itself was right) while ONLY the real-production-call test failed, then re-reading `persist_start()`'s actual gating condition rather than assuming the copied fixture was correct because it was copied from a passing sibling. **General rule: before copying a sibling WAL-fact test file's "drive the real production function" fixture, check whether YOUR fact type's producer calls `persist_submit_job_*_fact()` directly (safe to pass NULL) or is purely hook-driven via `xce_run_hooks()` (MUST pass a real `cluster_t*` to `persist_init()`'s 3rd arg so `persist_start()` registers the hook) — grep the producer function's own body, don't assume parity from a structurally-similar sibling test.**
|
||||
- **(2026-08-25, bug-1691) `controller_unit_test` (not just `xce_test`, extending the existing entry on this) also loses ALL buffered stdout (both PASS and FAIL lines) when run directly with output redirected to a file/pipe AND `ASAN_OPTIONS`'s default `detect_leaks=1` finds leaks** — LeakSanitizer's atexit-registered check appears to bypass libc's normal `exit()`-time stdio flush, so a process that ran 7/7 tests successfully to completion produced a log with ONE clean LeakSanitizer summary and ZERO printed PASS/FAIL text anywhere, first reading as "harness produced no output, something is badly wrong" before realizing it was a buffering artifact. `stdbuf -oL` does NOT fix it (worse: it breaks ASAN's LD_PRELOAD-ordering requirement, producing `ASan runtime does not come first in initial library list`) — the correct fix is `ASAN_OPTIONS=detect_leaks=0 ./controller_unit_test -t <group>` when reading stdout directly (matches meson's own test-harness invocation, which already sets this — the SAME binary run through `meson test` shows real PASS/FAIL text fine). The leaks themselves (spy-fixture jobs created via `makeJob()` into a `jobmgr` with no `.datakiller`, never individually torn down) are PRE-EXISTING and IDENTICAL across every sibling `test_wal_job_*_fact.c` suite (confirmed: `test_wal_job_rusage_fact` in isolation shows 78 leaked allocations too) — not a new leak introduced by any one fix, not worth chasing.
|
||||
|
||||
- **WAL field-parity fix family (bug-1678/1687/1689/1690/1691/1692, controller persist.c/job.c)**: when a hook-driven WAL fact (payload built inside `persist_job_hook_fun`, not a direct `persist_submit_job_*_fact()` call site) needs a new field added to survive replay: (1) check whether the field's own release function uses `FREEUP()`/`free()` (plain malloc/strdup/calloc — safe to free-and-replace, e.g. `JobAlloc`/`JobPIDInfo`/`JobPendReason`) vs `dereference()` (xstring/RTTI-backed, e.g. `ckptinfo`) vs "can be the SAME live object the apply pump re-applies moments later" (needs a MERGE, not free-and-replace — only `WAL_JOB_RUSAGE`'s `run_usage` needed this, because `update_host_runusage()` mutates it in place before the WAL fact is even appended); (2) check whether adoption must be gated on `JOB_TRANSITION_APPLIED` or unconditional — if the setter never changes `job.state` (true for CKPT/RUSAGE/PREASON, false for START/FINISH/DISPATCH), gating makes the fix dead code since every real replay hits `JOB_TRANSITION_NOOP_DUPLICATE`; (3) **check whether the field has a genuine CLEAR-to-NULL operation** (only `pend_reasons`/`do_clr_preason` in this family so far) — if so, "trailing bytes present or absent" (bug-1690/1691's convention) cannot distinguish a legitimate clear from an old-format payload; needs an explicit presence byte instead. Always re-verify (2) and (3) from the real setter code, never assume the newest precedent's shape applies unchanged.
|
||||
- **capnp-c's generated decode path does not validate content, only bounds via `capn_getp`/`capn_resolve`**: passing well-formed-length-but-semantically-garbage bytes to a `decode_X()`/`read_X()` pair (e.g. `decode_JobPendReason`) does NOT return NULL or error — it silently produces a zero-valued struct. A "decode failure returns NULL" defensive branch (`decode_X() == NULL`) is only reachable via allocation failure or an upstream length/bounds guard (e.g. `payload_len` too short to even attempt the read) — never via corrupt-but-present bytes. Don't write a regression test assuming garbadge bytes will fail decode; it will silently pass through and the test either false-passes or fails for a confusing, misleading reason (`Expected 4 Was 0` — the "corrupted" value decoded as an all-zero struct, not a NULL).
|
||||
|
||||
## Do-Not-Repeat
|
||||
- **When translating a `fp_ok`-tracked, per-step-gated failure-detection pattern (like `xce-build.sh`'s dirty-fingerprint computation) into a Make `$(shell sh -c '...')` one-liner, do NOT collapse two commands into `{ cmd1; cmd2; } >"$$fp_tmp"` and gate the whole group with one `if`** — a POSIX sequential group's exit status reflects only its LAST command, so `cmd1`'s failure is silently discarded whenever `cmd2` still succeeds (2026-08-21, bug-1612: `git diff HEAD` failing was swallowed because the trailing `git ls-files | sort | xargs cat` pipe still exited 0, producing a fabricated fingerprint instead of degrading to empty). Give each step its own explicit `if ! step; then fp_ok=0; fi` (or `&&`-chain), exactly mirroring the reference script's discipline, even inside a cramped one-liner. Caught by adversarial code review with a targeted failure-injection test (wrapper `git` on `PATH` that fails only the targeted subcommand) — that test pattern is the reusable way to verify this class of fix.
|
||||
- Don't run `clang-format -i` on whole existing files here — the repo isn't clang-format-clean at baseline, so a full reformat buries the real diff; recovering via `git checkout HEAD -- <file>` on a file with other uncommitted work destroys that work irrecoverably.
|
||||
|
|
|
|||
|
|
@ -118,8 +118,8 @@
|
|||
"first_read": "2026-08-25T07:27:17.276Z"
|
||||
},
|
||||
"/home/rshen/projects/xce/worktrees/scheduler-framework/src/controller/persist.c": {
|
||||
"count": 51,
|
||||
"tokens": 99861,
|
||||
"count": 57,
|
||||
"tokens": 103677,
|
||||
"first_read": "2026-08-25T07:27:27.677Z"
|
||||
},
|
||||
"/home/rshen/projects/xce/worktrees/scheduler-framework/src/controller/job.c": {
|
||||
|
|
@ -158,7 +158,7 @@
|
|||
"first_read": "2026-08-25T07:28:52.222Z"
|
||||
},
|
||||
"/home/rshen/projects/xce/worktrees/scheduler-framework/src/lib/request.c": {
|
||||
"count": 1,
|
||||
"count": 2,
|
||||
"tokens": 0,
|
||||
"first_read": "2026-08-25T07:29:10.899Z"
|
||||
},
|
||||
|
|
@ -208,8 +208,8 @@
|
|||
"first_read": "2026-08-25T07:41:57.960Z"
|
||||
},
|
||||
"/home/rshen/projects/xce/worktrees/scheduler-framework/src/include/wal_types.h": {
|
||||
"count": 5,
|
||||
"tokens": 3360,
|
||||
"count": 7,
|
||||
"tokens": 3804,
|
||||
"first_read": "2026-08-25T07:44:46.985Z"
|
||||
},
|
||||
"/home/rshen/projects/xce/worktrees/scheduler-framework/src/tools/xce-build.sh": {
|
||||
|
|
@ -258,12 +258,12 @@
|
|||
"first_read": "2026-08-25T07:58:23.880Z"
|
||||
},
|
||||
"/home/rshen/projects/xce/worktrees/scheduler-framework/src/include/persist.h": {
|
||||
"count": 6,
|
||||
"count": 7,
|
||||
"tokens": 26004,
|
||||
"first_read": "2026-08-25T07:59:46.203Z"
|
||||
},
|
||||
"/home/rshen/projects/xce/worktrees/scheduler-framework/src/include/typemap.h": {
|
||||
"count": 1,
|
||||
"count": 2,
|
||||
"tokens": 0,
|
||||
"first_read": "2026-08-25T08:01:12.594Z"
|
||||
},
|
||||
|
|
@ -308,7 +308,7 @@
|
|||
"first_read": "2026-08-25T08:29:24.263Z"
|
||||
},
|
||||
"/home/rshen/projects/xce/worktrees/scheduler-framework/src/controller/testsuite/test_commit_barrier_reply.c": {
|
||||
"count": 4,
|
||||
"count": 7,
|
||||
"tokens": 45624,
|
||||
"first_read": "2026-08-25T08:33:18.529Z"
|
||||
},
|
||||
|
|
@ -328,13 +328,13 @@
|
|||
"first_read": "2026-08-25T09:29:39.634Z"
|
||||
},
|
||||
"/home/rshen/projects/xce/worktrees/scheduler-framework/src/controller/meson.build": {
|
||||
"count": 4,
|
||||
"tokens": 3499,
|
||||
"count": 5,
|
||||
"tokens": 3510,
|
||||
"first_read": "2026-08-25T09:31:05.167Z"
|
||||
},
|
||||
"/home/rshen/projects/xce/worktrees/scheduler-framework/src/controller/testsuite/controller_test.c": {
|
||||
"count": 6,
|
||||
"tokens": 2417,
|
||||
"count": 8,
|
||||
"tokens": 2437,
|
||||
"first_read": "2026-08-25T09:35:28.617Z"
|
||||
},
|
||||
"/home/rshen/projects/xce/worktrees/scheduler-framework/src/schema/controller.capnp": {
|
||||
|
|
@ -393,9 +393,19 @@
|
|||
"first_read": "2026-08-25T11:03:55.850Z"
|
||||
},
|
||||
"/home/rshen/projects/xce/worktrees/scheduler-framework/src/controller/testsuite/test_wal_job_ckpt_fact.c": {
|
||||
"count": 2,
|
||||
"tokens": 6636,
|
||||
"count": 3,
|
||||
"tokens": 7000,
|
||||
"first_read": "2026-08-25T12:14:05.554Z"
|
||||
},
|
||||
"/tmp/claude-1000/-home-rshen-projects-xce-worktrees-scheduler-framework/1154007c-9056-440f-bb0e-c5649f2ee7b9/scratchpad/bugs_1690_1691.txt": {
|
||||
"count": 1,
|
||||
"tokens": 0,
|
||||
"first_read": "2026-08-25T12:30:42.865Z"
|
||||
},
|
||||
"/home/rshen/projects/xce/worktrees/scheduler-framework/src/lib/controller.capnp.c": {
|
||||
"count": 2,
|
||||
"tokens": 0,
|
||||
"first_read": "2026-08-25T12:33:06.428Z"
|
||||
}
|
||||
},
|
||||
"files_written": [
|
||||
|
|
@ -1214,6 +1224,96 @@
|
|||
"action": "edit",
|
||||
"tokens": 290,
|
||||
"at": "2026-08-25T12:14:35.432Z"
|
||||
},
|
||||
{
|
||||
"file": "/home/rshen/projects/xce/worktrees/scheduler-framework/src/controller/persist.c",
|
||||
"action": "edit",
|
||||
"tokens": 324,
|
||||
"at": "2026-08-25T12:47:11.217Z"
|
||||
},
|
||||
{
|
||||
"file": "/home/rshen/projects/xce/worktrees/scheduler-framework/src/controller/persist.c",
|
||||
"action": "edit",
|
||||
"tokens": 742,
|
||||
"at": "2026-08-25T12:47:43.377Z"
|
||||
},
|
||||
{
|
||||
"file": "/home/rshen/projects/xce/worktrees/scheduler-framework/src/controller/persist.c",
|
||||
"action": "edit",
|
||||
"tokens": 245,
|
||||
"at": "2026-08-25T12:47:57.711Z"
|
||||
},
|
||||
{
|
||||
"file": "/home/rshen/projects/xce/worktrees/scheduler-framework/src/controller/persist.c",
|
||||
"action": "edit",
|
||||
"tokens": 480,
|
||||
"at": "2026-08-25T12:48:15.707Z"
|
||||
},
|
||||
{
|
||||
"file": "/home/rshen/projects/xce/worktrees/scheduler-framework/src/controller/persist.c",
|
||||
"action": "edit",
|
||||
"tokens": 365,
|
||||
"at": "2026-08-25T12:48:32.428Z"
|
||||
},
|
||||
{
|
||||
"file": "/home/rshen/projects/xce/worktrees/scheduler-framework/src/controller/persist.c",
|
||||
"action": "edit",
|
||||
"tokens": 576,
|
||||
"at": "2026-08-25T12:48:47.695Z"
|
||||
},
|
||||
{
|
||||
"file": "/home/rshen/projects/xce/worktrees/scheduler-framework/src/controller/persist.c",
|
||||
"action": "edit",
|
||||
"tokens": 840,
|
||||
"at": "2026-08-25T12:49:05.599Z"
|
||||
},
|
||||
{
|
||||
"file": "/home/rshen/projects/xce/worktrees/scheduler-framework/src/controller/job.c",
|
||||
"action": "edit",
|
||||
"tokens": 735,
|
||||
"at": "2026-08-25T12:49:26.197Z"
|
||||
},
|
||||
{
|
||||
"file": "/home/rshen/projects/xce/worktrees/scheduler-framework/src/controller/persist.c",
|
||||
"action": "edit",
|
||||
"tokens": 387,
|
||||
"at": "2026-08-25T12:49:57.785Z"
|
||||
},
|
||||
{
|
||||
"file": "/home/rshen/projects/xce/worktrees/scheduler-framework/src/include/wal_types.h",
|
||||
"action": "edit",
|
||||
"tokens": 801,
|
||||
"at": "2026-08-25T12:50:16.053Z"
|
||||
},
|
||||
{
|
||||
"file": "/home/rshen/projects/xce/worktrees/scheduler-framework/src/controller/testsuite/test_wal_job_preason_fact.c",
|
||||
"action": "create",
|
||||
"tokens": 11943,
|
||||
"at": "2026-08-25T12:55:27.696Z"
|
||||
},
|
||||
{
|
||||
"file": "/home/rshen/projects/xce/worktrees/scheduler-framework/src/controller/meson.build",
|
||||
"action": "edit",
|
||||
"tokens": 24,
|
||||
"at": "2026-08-25T12:55:37.325Z"
|
||||
},
|
||||
{
|
||||
"file": "/home/rshen/projects/xce/worktrees/scheduler-framework/src/controller/testsuite/controller_test.c",
|
||||
"action": "edit",
|
||||
"tokens": 25,
|
||||
"at": "2026-08-25T12:55:42.257Z"
|
||||
},
|
||||
{
|
||||
"file": "/home/rshen/projects/xce/worktrees/scheduler-framework/src/controller/testsuite/controller_test.c",
|
||||
"action": "edit",
|
||||
"tokens": 20,
|
||||
"at": "2026-08-25T12:55:51.244Z"
|
||||
},
|
||||
{
|
||||
"file": "/home/rshen/projects/xce/worktrees/scheduler-framework/src/controller/testsuite/test_wal_job_preason_fact.c",
|
||||
"action": "edit",
|
||||
"tokens": 535,
|
||||
"at": "2026-08-25T13:04:51.036Z"
|
||||
}
|
||||
],
|
||||
"edit_counts": {
|
||||
|
|
@ -1236,12 +1336,12 @@
|
|||
"src/controller/testsuite/test_ha_durability.c": 3,
|
||||
"src/controller/CLAUDE.md": 1,
|
||||
"src/include/persist.h": 2,
|
||||
"src/include/wal_types.h": 5,
|
||||
"src/controller/persist.c": 28,
|
||||
"src/controller/job.c": 9,
|
||||
"src/include/wal_types.h": 6,
|
||||
"src/controller/persist.c": 36,
|
||||
"src/controller/job.c": 10,
|
||||
"src/controller/testsuite/test_wal_job_start_fact.c": 1,
|
||||
"src/controller/meson.build": 4,
|
||||
"src/controller/testsuite/controller_test.c": 8,
|
||||
"src/controller/meson.build": 5,
|
||||
"src/controller/testsuite/controller_test.c": 10,
|
||||
"src/scheduler/testsuite/test_limit_plugin.c": 2,
|
||||
"src/scheduler/testsuite/meson.build": 4,
|
||||
"src/scheduler/src/plugins/limit.c": 1,
|
||||
|
|
@ -1251,11 +1351,12 @@
|
|||
"src/controller/testsuite/test_wal_job_finish_fact.c": 1,
|
||||
"src/schema/controller.capnp": 1,
|
||||
"src/controller/testsuite/test_wal_job_rusage_fact.c": 4,
|
||||
"src/controller/testsuite/test_wal_job_ckpt_fact.c": 2
|
||||
"src/controller/testsuite/test_wal_job_ckpt_fact.c": 2,
|
||||
"src/controller/testsuite/test_wal_job_preason_fact.c": 2
|
||||
},
|
||||
"anatomy_hits": 49,
|
||||
"anatomy_misses": 30,
|
||||
"repeated_reads_warned": 207,
|
||||
"anatomy_misses": 32,
|
||||
"repeated_reads_warned": 226,
|
||||
"cerebrum_warnings": 0,
|
||||
"stop_count": 40
|
||||
"stop_count": 41
|
||||
}
|
||||
|
|
@ -4044,3 +4044,20 @@
|
|||
| 04:13 | Edited src/controller/testsuite/controller_test.c | 1→2 lines | ~19 |
|
||||
| 05:14 | Edited src/controller/testsuite/test_wal_job_ckpt_fact.c | expanded (+10 lines) | ~270 |
|
||||
| 12:27 | bug-1691 (WAL_JOB_CKPT loses job.ckptinfo on restart replay) fixed and verified | src/controller/job.c, src/controller/persist.c, src/include/wal_types.h, src/controller/testsuite/test_wal_job_ckpt_fact.c (new, 7 tests), src/controller/meson.build, src/controller/testsuite/controller_test.c, .wolf/buglog.json | RED (7 failures)->GREEN (0 new failures); full suite 1167 Tests 2 Failures (pre-existing bug-1561 only); also found+fixed 15,437 orphaned /tmp/xce_* scratch dirs (~658GB) blocking the build | ~large |
|
||||
| 05:30 | Session end: 136 writes across 34 files (persistence.md, SKILL.md, plugin.h, plugin.c, driver.c) | 79 reads | ~817696 tok |
|
||||
| 05:47 | Edited src/controller/persist.c | modified c() | ~303 |
|
||||
| 05:47 | Edited src/controller/persist.c | added 3 condition(s) | ~692 |
|
||||
| 05:47 | Edited src/controller/persist.c | modified switch() | ~229 |
|
||||
| 05:48 | Edited src/controller/persist.c | added 1 condition(s) | ~448 |
|
||||
| 05:48 | Edited src/controller/persist.c | added 3 condition(s) | ~341 |
|
||||
| 05:48 | Edited src/controller/persist.c | added 3 condition(s) | ~538 |
|
||||
| 05:49 | Edited src/controller/persist.c | added 4 condition(s) | ~784 |
|
||||
| 05:49 | Edited src/controller/job.c | added error handling | ~686 |
|
||||
| 05:49 | Edited src/controller/persist.c | added 1 condition(s) | ~361 |
|
||||
| 05:50 | Edited src/include/wal_types.h | expanded (+36 lines) | ~748 |
|
||||
| 05:55 | Created src/controller/testsuite/test_wal_job_preason_fact.c | — | ~11147 |
|
||||
| 05:55 | Edited src/controller/meson.build | 1→2 lines | ~22 |
|
||||
| 05:55 | Edited src/controller/testsuite/controller_test.c | 1→2 lines | ~23 |
|
||||
| 05:55 | Edited src/controller/testsuite/controller_test.c | 1→2 lines | ~19 |
|
||||
| 06:04 | Edited src/controller/testsuite/test_wal_job_preason_fact.c | modified test_wjp_apply_committed_entry_decode_failure_leaves_untouched() | ~499 |
|
||||
| 13:13 | bug-1692 FIXED: WAL_JOB_PREASON restart-drop of job.pend_reasons (last of 5 field-parity audit gaps) | src/controller/persist.c, src/controller/job.c, src/include/wal_types.h, src/controller/testsuite/test_wal_job_preason_fact.c | GREEN: 1178 Tests 2 Failures (only pre-existing bug-1561), 11/11 new tests pass, 0 ASAN findings | ~145000 |
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue