Bind a Release Range in DocsFab
Ground a documentation job on the named tags, commits, and changelog evidence of a release range.
Prerequisites
Keep the selected release tags or commits available in the repository. Identify the release range and the documentation change it supports.
Bind a Release Range
Use --change release:<base>..<head> to ground a run on a whole release. The
run binds each first-parent commit on head since base as its own change
(a merge, a squash-merged commit, or a direct commit), plus one units index
that lists every unit:
Replace BASE_TAG and TARGET_TAG with release tags from the target repository.
These tags identify that repository’s releases, not the DocsFab version.
A plain --change BASE_TAG..TARGET_TAG binds the release as one diff instead, which
refuses on most real releases at changeSources.changedFilesMax or
changeSources.diffMaxBytes. The release: prefix never names a ref, so a
calendar-versioned tag such as 2026.09 is read as a tag. The following rules apply to each release unit:
The following rules apply to the release walk:
- Each unit diffs against its first parent: a merge shows what it brought onto the release line, and the index lists the commits it brought in.
- A unit over
changeSources.diffMaxBytesorchangeSources.changedFilesMax, or whose diff or manifest does not extract whole withinsources.extractionMaxSpansorsources.extractionMaxDerivativeBytes, stays listed in the index without its diff, and the run’s status output names it, the limit, and its size. The rest of the release still binds. - A base that is not on the head’s first-parent line, such as a tag on a
release branch, is labelled
base-off-first-parent-line: the walk can list changes the base release already carried. - Units carry no merge or pull request link: a local checkout records no forge identity.
A release longer than changeSourcesRelease.unitsPerRunMax units binds its
first page. The status output lists every later unit and prints the selector
for the next page, release:<last bound unit>..<head>.
The units index is the one part of the release a writing step must read, and
it must fit whole in one step’s source-read budget for the model the run
binds. On a smaller model window the page is shorter than
changeSourcesRelease.unitsPerRunMax, and the status output says so with the
budget. Each unit’s record and diff are bound and readable, but not required.
The run record cites the release in two fields. changeSources holds one
entry for each unit record the page bound, in index order; an omitted unit
has no record and no entry. changeSourceRelease cites the units index:
base, head, the index digest and observation id, and the page it fixed,
with the units on the page, how many were omitted, how many remain, and the
continuation selector.
The following conditions stop the run before any model call, each with its own code:
release:since-lastandrelease:dates:...refuse withchange-source-release-form-unsupported, as does any otherrelease:form.- A tampered annotated tag, unit commit, or tree refuses with
change-source-integrity-mismatch. - A head that is base or base’s ancestor refuses with
change-source-release-no-units, orchange-source-empty-rangewhen the two are the same commit. - More units than
changeSourcesRelease.unitsMaxrefuses withchange-source-release-units-boundand the count. - One source binding holds at most 256 observations: the units index, two
observations for each bound unit, and the
--sourcefiles. Exceeding that limit refuses withchange-source-release-observations-exceeded. LowerDOCSFAB_CHANGE_SOURCES_RELEASE_UNITS_PER_RUN_MAXor pass fewer files. - A units index that does not fit one step’s source-read budget even with a
one-unit page refuses with
change-source-release-index-over-read-budget. Name a shorter range, use a model with a larger input window, or raiseDOCSFAB_SOURCES_READ_RESPONSE_CEILING_BYTESwhen the ceiling set the budget. - Every other refusal a local range makes inside one unit refuses the whole
release: a configured credential, a tampered object, an encoding failure,
a grafts file, a failed git read, missing shallow history, an original over
sources.extractionMaxOriginalBytes, or an extraction that runs pastsources.extractionMaxMs.
The following table lists the release unit limits.
--change release: keeps every combination rule of a local range.
docsfab do --change release:<base>..<head> binds, cites, and refuses the
release exactly as docsfab run does after the sentence routes to
create-documentation or update-documentation.