Story: Hotfix: Valgrind flags compute host ram_mb/credit_total read uninitialized

Table of Contents

This page documents a story in Sprint 25. It captures the goal, current status, acceptance criteria, and the tasks that compose it.

1. Goal

Default-constructed compute host domain objects must not hold indeterminate values in their non-nullable numeric members.

2. Status

Field Value
State DONE
Parent sprint Sprint 25
Now Nothing.
Waiting on Nothing.
Next Nothing.
Last touched 2026-09-07

3. Acceptance

  • The host entity org declares :default_value: 0 for ram_mb and credit_total, alongside their :default: 0.
  • Regenerated host.hpp and host_entity.hpp emit = 0 initializers for both members; no other file changes.
  • The compute-cpp drift check is clean.
  • The host eventing integration test runs under valgrind with zero errors; the full preset build and ctest suite are green.

4. Tasks

Task State Start End Description
Declare C++ default values for the compute host ram_mb and credit_total members DONE 2026-09-07 2026-09-07 Add :default_value: 0 to the ram_mb and credit_total member property blocks in the compute host entity org, regenerate compute-cpp so both domain headers emit member initializers, and prove the valgrind DA defect is gone.

5. Decisions

  • :default_value: is the codegen member-initializer key; :default: is SQL-side semantics. Non-bool/int members with a SQL default need an explicit :default_value: or the generated C++ member stays indeterminate.

6. Out of scope

  • The systemic codegen gap: core.py synthesizes a C++ member initializer only for bool and int cpp_types, so any int64_t/double non-nullable member without an explicit :default_value: silently stays indeterminate — the very configuration this hotfix fixes by hand for two members. Closing the gap (synthesizing = 0= for all arithmetic types, or failing codegen on a non-nullable arithmetic member without :default_value:) is a separate codegen task, deliberately not part of this hotfix.

Emacs 29.3 (Org mode 9.6.15)