Skip to content

perf(storage): make optional lifecycle diagnostics opt-in #1655

Closed

Description

@DecisionNerd

Native implementation slice of canonical #1617, limited to its existing opt-in observability requirement. The checksum format/retirement foundation is #1637. This is an independently reviewable part of the remaining XL policy change; #1617 remains the close gate.

Scope

Make optional lifecycle I/O, construction I/O and storage attribution collection opt-in on default read/query/export/publish paths. Without an explicit collector, optional counters, inventories and diagnostic clocks do no bookkeeping. Preserve explicit captures across workers and keep mandatory receipt identities, allocation ownership/resource limits, persisted recovery authority, cache release and durability barriers unchanged. Do not present disabled measurements as measured zero.

Acceptance criteria

  • Deterministic tests show ordinary operations do not allocate/update optional collectors or start diagnostic clocks; explicitly captured operations still produce real nonzero evidence.
  • Capture lifetime/worker propagation is isolated and safe under concurrent operations; existing explicit attribution tests continue to measure actual work.
  • Mandatory publication/receipt/recovery/resource outcomes and error ordering are unchanged; relevant existing tests pass.
  • The nearest linked development topic explains how to opt into diagnostics and distinguishes measurement from required contract accounting.

Boundaries

No payload/checksum format change, digest algorithm replacement, identity caching or durability migration. #1617's default-read and publish/export digest slices own those. Existing #1623/#1632 ingest measurements are preserved; this slice changes when optional bookkeeping is active, not their measurement contracts.

Activity

  1. DecisionNerd commented on Sep 30, 2026

    @DecisionNerd
    ContributorAuthor

    Read-only implementation handoff for the existing #1617/#1618 owner: /tmp/graphforge-1655-opt-in-plan-13cc28af.md, with frozen method/input manifest /tmp/graphforge-1655-plan-13cc28af/method-input-digests.json. This session will review/integrate only and creates no competing branch. Refresh against merged #1637 before implementation.

    Verified optional costs include lifecycle_io fallback table/snapshot allocations, legacy RegionScope unconditional clocks/proc sampling, construction Scope starting clocks before the enabled check, and inactive test-support row-family allocation. Preserve IoCounter bytes used by construction encoded-artifact receipts (lanes.rs:334; encoding.rs:2248), persisted phase reconciliation, allocation/resource ownership, recovery and cache-release facts. Absent optional observations must be unavailable/None/null; requested qualified evidence must still reject missing data.

    The handoff maps existing explicit capture/attribution contexts and producer activation before graph open, plus nested/worker/concurrent routing tests. #1652 process-wide hash/CPU observations are separate and must not be claimed as operation-isolated evidence. This is a plan, not completed implementation or validation.

  2. DecisionNerd commented on Sep 30, 2026

    @DecisionNerd
    ContributorAuthor

    Merged in PR #1677, commit a151855 on main. All acceptance outcomes are implemented: optional diagnostics require an explicit operation-owned capture; CLI activation is --json --diagnostics; worker propagation and inactive/nested/concurrent contexts are directly covered; mandatory admission, budgets, cache accounting, progress and receipts remain.

    Final-head local verification: 16 selected nextest cases passed, workspace Clippy with -D warnings, formatting and make pre-push-fast passed. Both independently verified GitHub review findings were corrected and their threads resolved. Exact-head CI run 36749219524 passed; merge-queue run 36753224903 passed, including native durability and binding/API contracts. The squash commit and issue closure were verified on main.

    CI: https://github.com/CurateLabs/graphforge/actions/runs/36749219524
    Queue: https://github.com/CurateLabs/graphforge/actions/runs/36753224903

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions