--- id: "bug-1593" status: "fixed" status_updated: "2026-09-24" status_note: "" component: "scheduler" severity: "unknown" timestamp: "2026-08-19T08:00:00Z" last_seen: "2026-09-19T09:00:00Z" occurrences: 1 files: ["src/scheduler/src/repl_info.c (repl_info_resource_one", "repl_info_resource)"] tags: ["scheduler", "repl", "resource", "shared-resource", "host-based", "metadata", "display-bug"] related: ["bug-1590"] legacy: true --- # bug-1593: User-reported (live REPL testing): `info resource all` and `info resource ` aggregate every… ## Description User-reported (live REPL testing): `info resource all` and `info resource ` aggregate every worker's per-host resource values (total=sum(available), available=sum) for EVERY resource, including host-based ones like cpus/mem -- a fabricated, meaningless number for a per-host consumable already correctly shown by `info worker `. User asked that `info resource` instead show resource metadata and be restricted to globally-shared resources only. ## Environment _Not recorded (migrated from buglog.json)._ ## Reproduction _Not recorded (migrated from buglog.json)._ ## Root cause xce_resource_t (xce/types.h) carries a `flags` bitmask (XCE_RESF_BUILTIN/DYNAMIC/GLOBAL/SHARED/EXTERNAL/RELEASE/DEFAULT_HOST/CONSUMABLE/LIMIT) that distinguishes a genuinely cluster-wide resource (GLOBAL/SHARED, stored once in core->sharedInst, indexed by r->idx -- the same pool RESVALS_FULL/RESVALS_DELTA event handling and snapshot save/load already treat as the defining store) from a host-based/per-worker-distributed resource (stored per-worker in w->resvals/w->resInUse, already correctly surfaced by repl_info_worker_one()). repl_info_resource_one() never consulted r->flags or core->sharedInst at all -- it iterated sim->core.workers unconditionally for every resource regardless of kind, summing w->resvals[r->idx] across the whole cluster. For a host-based resource (the common case -- cpus, mem, etc.) this total/available is not a meaningful quantity (no single cluster-wide capacity exists for a per-host resource); for a genuinely shared resource it also happened to work by accident (since a shared resource's value is typically replicated identically into every worker's resvals array too), but even then never reported the resource's own metadata (desc, valtype, flags, interval) the user asked for. ## Fix Fixed as part of task 12.5 (scheduler-core spec, Requirement 5 AC 22 amendment). repl_info_resource_one() rewritten to print resource DEFINITION metadata (name, desc, valtype, human-readable flags list, interval) plus, only for a resource flagged XCE_RESF_GLOBAL or XCE_RESF_SHARED, its current value read directly from core->sharedInst[r->idx] (never aggregated across workers). A host-based resource's metadata is still printed but with an explicit note directing the operator to `info worker ` for its actual per-host values -- no fabricated total/available. repl_info_resource() (`info resource all`) now skips any resource whose flags do not include GLOBAL or SHARED, per the user's explicit request to keep this command scoped to cluster-wide resources. New tests in test_repl_breakpoints_inspection.c construct a real GLOBAL/SHARED resource via xce_core_push_events() and a plain host-based one, asserting the metadata line and shared value appear for the former, the host-based one is excluded from `info resource all`, and both appear correctly for `info resource ` with the host-based one omitting a fabricated total/available pair. ## Verification _Not recorded (migrated from buglog.json)._ ## References - Related: bug-1590