Skip to main content

Module child_class

Module child_class 

Source
Expand description

The classes of Git step a commit starts for itself, with the bound and the notice grace of each. What: The two kinds of Git step a commit starts for itself, and the quiet window and the notice grace of each. A step is ended only when it has shown no sign of work for its window (child_watch.rs); elapsed time alone never ends one (owner, 2026-11-03: “Stop only on no progress”; pick 4 of doc/planning/cli-git-shipped-limits-audit.md, the coordinator’s under the owner’s delegation and open to the owner’s veto). Why: One window for every step had to be long enough for the slowest, so a stalled rev-parse held a commit for as long as a stalled pack-objects, and the first notice came after one second for steps that only needed a moment. The classes follow what a step touches, measured on the repository this crate lives in (doc/planning/cli-git-commit-timeouts.md): a query reads refs, commits and trees and ends in milliseconds whatever the worktree holds, while a step that writes objects, or that compares the index with the worktree, costs time in proportion to the bytes it reads (reset, update-index --refresh and ls-files --modified took 2.9 s on a stat-dirty 20 000-file index against 0.03 s on a clean one, and a cold disk multiplies that). The user’s own git commit with its hooks is not a class: its runtime belongs to the user and it is never bounded.

In TS you’d write (pseudocode):

const limit = QUERY_SUBCOMMANDS.includes(subcommandOf(args)) ? QUERY_LIMIT_MS : BULK_LIMIT_MS;

Enums§

ChildClass
What: The kind of a Git step, which decides its quiet window and when its first notice comes. Why: The two kinds differ by orders of magnitude in how long a healthy step takes, and so in how long it may be quiet.

Constants§

CHILD_WAIT_VARIABLE
Environment variable that sets, in whole seconds, how long any Git step the wrapper starts for itself may show no sign of work before it is ended, whatever its class.
OBJECT_NOTICE_GRACE
How long a bulk step runs before the first notice.
OBJECT_QUIET_WINDOW
How long a bulk step may show no sign of work before it is ended. Citation: none, and unmeasured as a quiet window, for the reason given at PLUMBING_QUIET_WINDOW.
PLUMBING_NOTICE_GRACE
How long a query step runs before the first notice.
PLUMBING_QUIET_WINDOW
How long a query step may show no sign of work before it is ended. Citation: none, and unmeasured as a quiet window. The figure was the wall-clock bound of a query step, derived from elapsed times (doc/planning/cli-git-commit-timeouts.md), which measure a different thing from a quiet gap. No log held a quiet gap before quiet_ledger.rs; the timing records now carry the longest gap of each step, and the audit records what the existing logs bound (doc/planning/cli-git-shipped-limits-audit.md, “Time limits on Git child steps of a commit”). The number stays until a measured interval replaces it.
PLUMBING_SUBCOMMANDS
Subcommands that only read refs, commits and trees, or write one ref or one tree from the index as it is: they end in milliseconds whatever the worktree holds. Every other subcommand, named or not, is a bulk step and gets the longer window instead of an early stop: pack-objects, index-pack, add, hash-object and maintenance move bytes, and reset, read-tree, update-index, ls-files, diff, diff-index, show and ls-remote refresh the index, compare it with the worktree or talk to a remote.

Functions§

class_of
What: The class of the Git step a request runs. Why: A step is a query only when its subcommand is named in PLUMBING_SUBCOMMANDS; every other step, a request with no subcommand included, gets the longer bound.