Webhook remediation update record fields
This page describes the fields in language_items[].update in the remediation plan included in the generic webhook payload.
See Remediation plan overview for the overall structure.
language_items[].update is included when there is a record of update processing or re-resolution through dependent packages, and omitted when no record is available.
It may be {} when processing stops during preparation, or contain only a record of a skipped re-resolution attempt.
Check update_executed and post_update_check_executed in Language package fields to see whether the update and post-update check ran in this cycle.
See Report fields for table conventions.
Update records
The fields in language_items[].update are listed below.
| Field | Type | Meaning | When there is no value |
|---|---|---|---|
steps |
array of objects | Records of executed operations. | omitted |
notes |
array of strings | Additional details, such as warnings during update processing. | omitted |
diff |
object | Dependency diff. | omitted |
runtime |
object | Record of the runtime for the update. | omitted |
tool |
object | Record of the tools for the update. | omitted |
deprecated_changed |
integer | Number of package name and version combinations with added, removed, or changed deprecation notes. | omitted when the count is 0 |
manifest_edits |
array of objects | Direct dependency version specification changes made before the update. | omitted |
chain |
object | Results of re-resolution through dependent packages. | omitted |
go |
object | Go update records. | omitted |
maven |
object | Maven update records. | omitted |
gradle |
object | Gradle update records. | omitted |
The following fields have additional notes.
deprecated_changed- The same name and version count once even when they appear in multiple lockfile entries
- Notes removed along with their package entries are not counted
The webhook includes the count of changed deprecation notes, but not the names of affected entries. The PR body lists those names and whether notes were added, removed, or changed.
The following example excerpts operation identifiers and exit results, the diff, and version specification changes from language_items[].update.
{
"steps": [
{
"id": "update",
"exit_code": 0,
"duration_ms": 0
}
],
"diff": {
"changed": [
"node_modules/minimist"
]
},
"manifest_edits": [
{
"file": "package.json",
"section": "dependencies",
"name": "lodash",
"from": "^4.17.15",
"to": "^5.0.0",
"major_change": true
}
]
}
Executed operations
The fields in each element of language_items[].update.steps[] are listed below.
| Field | Type | Meaning | When there is no value |
|---|---|---|---|
id |
string | Identifier indicating which stage of update processing the operation belongs to. | — |
op |
string | Type of operation executed. | — |
scratch |
boolean | true when the operation runs on a copy of the working files and its changes are not carried into subsequent operations. |
omitted when false |
exit_code |
integer | Operation exit code, with 0 indicating success. |
0 |
duration_ms |
integer | Operation execution time in milliseconds. | 0 |
The values of id are listed below.
| Value | Meaning |
|---|---|
baseline |
Check of the dependency files before the update. |
update |
Update of the dependency files. |
check |
Recheck of the dependency files after the update. |
The values of op are listed below.
| Value | Meaning |
|---|---|
npm.relock |
Regeneration of package-lock.json by npm. |
pnpm.frozen_check |
Consistency check by pnpm without changing the lockfile. |
pnpm.relock |
Regeneration of the lockfile by pnpm. |
uv.check |
Lockfile consistency check by uv. |
uv.upgrade |
Update of target packages by uv. |
uv.upgrade_chain |
Re-resolution including dependent packages by uv. |
pip.dry_run |
Dependency resolution check by pip without installation. |
go.get |
Update of target modules by Go. |
gradle.update_locks |
Lockfile update for target packages by Gradle. |
Do not treat id as a unique key within the array, because a stage may run again.
See Update methods by package manager for the scope of each operation.
Direct dependency version specification changes
The fields in each element of language_items[].update.manifest_edits[] are listed below.
| Field | Type | Meaning | When there is no value |
|---|---|---|---|
file |
string | Repository path of the file being changed. | — |
section |
string | Section declaring the direct dependency. | — |
name |
string | Name of the package whose version specification changed. | — |
from |
string | Version specification before the change. | — |
to |
string | Version specification after the change. | — |
major_change |
boolean | true when the version specification change constitutes a major-version change. |
omitted when false |
The values of section are listed below.
| Value | Meaning |
|---|---|
dependencies |
Regular dependencies in package.json. |
devDependencies |
Development dependencies in package.json. |
optionalDependencies |
Optional dependencies in package.json. |
project.dependencies |
Project dependencies in pyproject.toml. |
The following fields have additional notes.
fromandto- For npm and pnpm, these represent version specifications such as
^4.17.15 - For uv, these represent dependency declarations that include the package name, such as
urllib3==1.26.17
- For npm and pnpm, these represent version specifications such as
major_change- For
0.x, a minor-version change is treated as a major-version change
- For
See Direct dependency version specifications for the conditions under which changes are made.
Dependency diff
The fields in language_items[].update.diff are listed below.
| Field | Type | Meaning | When there is no value |
|---|---|---|---|
added |
array of strings | Identifiers of added dependency entries. | omitted |
changed |
array of strings | Identifiers of dependency entries whose contents changed. | omitted |
removed |
array of strings | Identifiers of removed dependency entries. | omitted |
truncated |
boolean | true when diff lists were truncated. |
omitted when false |
followed |
array of objects | Entries with changes only to dependency versions. | omitted |
The strings in added, changed, and removed identify the following units.
| Manager | What is identified | Example strings |
|---|---|---|
| npm | Package location in package-lock.json. | node_modules/minimist, node_modules/mkdirp/node_modules/minimist |
| pnpm | Key of an entry in pnpm-lock.yaml snapshots, normalized for comparison. | minimist@1.2.8, host@1.0.0(peer@2.0.0) |
| uv | Package name and version combination in uv.lock. | urllib3==1.26.18 |
| pip | Package name from the installation report, lowercased with consecutive -, _, and . characters replaced by a single -. |
urllib3, typing-extensions |
The following fields have additional notes.
added,changed, andremoved- For pnpm, peer dependency information related to update targets is removed from keys, so they may differ from the keys written in the lockfile
- For pnpm and uv, identifiers include versions, so a version update may be recorded as removal of the old entry and addition of a new one
changedalso includes entries whose own package version stays the same while contents such as dependencies change
truncated- Applies to
added,changed,removed, andfollowed, with each list limited to 100 entries when truncated - This 100-entry limit does not apply to
followed[].moves - If an update is rejected during diff validation, lists may be recorded before truncation, so receivers must not assume a fixed maximum length of 100
- Applies to
This diff compares lockfiles before and after the update for npm, pnpm, and uv, and installation reports before and after the update for pip. See the respective update records for Go, Maven, and Gradle changes.
Entries with changes only to dependency versions
The fields in each element of language_items[].update.diff.followed[] are listed below.
| Field | Type | Meaning | When there is no value |
|---|---|---|---|
entry |
string | Entry whose dependency versions changed, expressed as package-name@version. |
— |
moves |
array of objects | Version changes in dependencies referenced by that entry. | — |
followed records packages also used through paths separate from the update targets whose own versions stay the same while only their dependency versions change.
Before the lists are truncated, entries recorded in followed also appear in changed.
For example, suppose the project uses A and B directly, and both A and B depend on C.
If updating A leaves B's own version unchanged but changes the C version referenced by B from 1.0 to 1.1, B appears in followed.
For npm, pnpm, uv, and pip, entry uses the name@version format, which differs from the identifiers in added, changed, and removed.
The fields in each element of language_items[].update.diff.followed[].moves[] are listed below.
| Field | Type | Meaning | When there is no value |
|---|---|---|---|
name |
string | Name of the dependency whose referenced version changed. | — |
from |
string | Version referenced before the change. | — |
to |
string | Version referenced after the change. | — |
See Checking related changes for the conditions under which changes are allowed.
Runtime for the update
The fields in language_items[].update.runtime are listed below.
| Field | Type | Meaning | When there is no value |
|---|---|---|---|
id |
string | Identifier of the selected runtime. | — |
version |
string | Node.js, Python, Go, or Gradle version included in the runtime. | — |
pip |
string | pip version included in the Python image. | omitted |
image |
string | Work image reference pinned by repository name and image index digest. | omitted |
platform |
string | Execution platform of the work image. | omitted |
digest |
string | Image manifest digest for the execution platform. | omitted |
support |
string | Runtime support status. | omitted |
eol |
string | End-of-support date in YYYY-MM-DD format. |
omitted |
basis |
string | Runtime selection basis. | omitted |
declared |
array of objects | Version declarations used for selection. | omitted |
excluded |
array of objects | Records of lower series not selected. | omitted |
engines_floor |
string | Lowest Node.js version checked for dependency compatibility. | omitted |
The formats of id values are listed below.
| Value format | Meaning |
|---|---|
node<major> |
Node.js series, such as node22. |
python<major>.<minor> |
Python series, such as python3.13. |
golang<major>.<minor> |
Go series, such as golang1.26. |
gradle<version>-jdk<JDK-major> |
Gradle and JDK combination, such as gradle9.8.2-jdk17. |
See Supported runtimes for available series and Gradle/JDK combinations.
The values of platform are listed below.
| Value | Meaning |
|---|---|
linux/amd64 |
Linux AMD64 environment. |
linux/arm64 |
Linux ARM64 environment. |
The values of support are listed below.
| Value | Meaning |
|---|---|
lts |
Node.js long-term support period. |
maintenance |
Node.js maintenance period. |
security |
Python security-fix period. |
bugfix |
Python bug-fix period. |
supported |
Go support period. |
The values of basis are listed below.
| Value | Meaning |
|---|---|
declared_file |
Selection based on a version declaration in .node-version, .nvmrc, or .python-version. |
lowest_in_range |
Selection of the lowest series that satisfies the version ranges and execution requirements. |
default |
Default selection when no Node.js version is declared. |
go_lines |
Selection based on the versions required by go lines in the project and the target module versions. |
The following fields have additional notes.
imageanddigestimageuses a reference such asnode@sha256:…, anddigestuses thesha256:…format
supportandeol- Omitted for Gradle runtimes
engines_floor- Recorded when the lowest Node.js version allowed by the project's declarations differs from the Node.js version in the selected runtime
See Runtime selection for the selection method.
Version declarations used for selection
The fields in each element of language_items[].update.runtime.declared[] are listed below.
| Field | Type | Meaning | When there is no value |
|---|---|---|---|
source |
string | File name or configuration field from which the version declaration was read. | — |
value |
string | Value of the version declaration read. | — |
source contains values such as .nvmrc, engines.node, and requires-python.
Long value strings are truncated, so do not use them to reconstruct declarations or write configuration files back.
Series not selected
The fields in each element of language_items[].update.runtime.excluded[] are listed below.
| Field | Type | Meaning | When there is no value |
|---|---|---|---|
id |
string | Identifier of the runtime not selected. | — |
why |
string | Reason the series was not selected. | — |
eol |
string | End-of-support date in YYYY-MM-DD format. |
omitted |
manager |
string | Name of the package manager whose execution requirements were not met. | omitted |
manager_version |
string | Version of the package manager whose execution requirements were not met. | omitted |
engines |
string | Supported Node.js version range declared by the package manager. | omitted |
The values of why are listed below.
| Value | Meaning |
|---|---|
end_of_life |
Support has ended or no usable work image is available. |
manager_engines |
Does not satisfy the package manager's supported Node.js version range. |
declarations |
Does not satisfy the project's runtime or tool declarations. |
The values of manager are listed below.
| Value | Meaning |
|---|---|
npm |
npm |
pnpm |
pnpm |
The following fields have additional notes.
id- Uses the same format as
idin Runtime for the update, and also includes series whose support has ended, such asnode20andpython3.10
- Uses the same format as
eol- Recorded when
whyisend_of_lifeand the end date is known
- Recorded when
manager,manager_version, andengines- Recorded when
whyismanager_engines
- Recorded when
Tools for the update
The fields in language_items[].update.tool are listed below.
| Field | Type | Meaning | When there is no value |
|---|---|---|---|
name |
string | Package manager name. | — |
version |
string | Selected package manager version. | — |
source |
string | Tool version selection basis. | — |
format |
string | Format of the retrieved distribution. | omitted |
size |
integer | Distribution size in bytes. | omitted when 0 |
sha256 |
string | Distribution SHA-256 in hexadecimal. | — |
sha512 |
string | Distribution SHA-512 in hexadecimal. | omitted |
published_at |
string | Distribution publication time in RFC 3339 format. | "0001-01-01T00:00:00Z" |
registry_digest |
string | Distribution digest reported by the registry. | omitted |
spec_hash |
string | Hash used to verify the distribution against the project's declaration. | omitted |
The values of name are listed below.
| Value | Meaning |
|---|---|
npm |
npm |
pnpm |
pnpm |
uv |
uv |
The values of source are listed below.
| Value | Meaning |
|---|---|
declared |
Exact version declared by the project. |
default |
Default version when the project has no tool version declaration. |
default_in_range |
Default version within the version ranges declared by the project. |
The values of format are listed below.
| Value | Meaning |
|---|---|
npm-tgz |
Compressed archive in npm format. |
wheel |
Distribution in Python wheel format. |
The following fields have additional notes.
published_at- When the publication time is unset, the field is still included with the zero time
registry_digest- Preserves the notation reported by the registry, so its string format may differ from
sha256andsha512
- Preserves the notation reported by the registry, so its string format may differ from
spec_hash- Uses the algorithm name and hash value joined by
., such assha512.<hexadecimal>
- Uses the algorithm name and hash value joined by
pip, Go, and Gradle use tools included in the work image, so they do not emit this object. Maven updates do not emit this object either.
See Tool version selection for the selection method and Tool retrieval and verification for verification.
Results of re-resolution through dependent packages
In the example where mkdirp 0.5.1 requires minimist 0.0.8, blocked contains this requirement and tops contains mkdirp, whose version is selected again.
Check language_items[].update.chain.outcome for the re-resolution result.
The fields in language_items[].update.chain are listed below.
| Field | Type | Meaning | When there is no value |
|---|---|---|---|
outcome |
string | Re-resolution result. | — |
reason |
string | Reason code for the result. | omitted |
detail |
string | Additional details about the result or reason. | omitted |
source |
string | Re-resolution method, including skipped attempts. | — |
blocked |
array of objects | Version requirements blocking updates to fixed versions. | [] |
tops |
array of objects | Direct dependencies and related changes: direct dependencies whose versions are selected again. | [] |
moves |
array of objects | Direct dependencies and related changes: changes outside the update targets and direct dependencies. | omitted |
truncated |
boolean | true when the moves list is incomplete. |
omitted when false |
usage |
object | Processing usage, including normal updates and reruns. | — |
hints |
array of objects | Published release information for dependent packages when a fixed version cannot be reached. | omitted |
The values of outcome are listed below.
| Value | Meaning | Example |
|---|---|---|
adopted |
Adoption. | mkdirp updates to 0.5.6 and minimist to 1.2.8, and the checks pass. |
not_fixed |
Fixed version not reached, including when resolving again for the fixed version with uv found no solution. | Selecting dependent packages again does not bring the target to a fixed version. |
rejected |
Rejection or a stop after repeated waits. | The update introduces another vulnerability. |
failed |
Processing failure. | The package manager exits with an error. |
not_tried |
Skipped attempt. | More than five direct dependencies need their versions selected again. |
deferred |
Deferral. | A newly introduced version is less than 72 hours old. |
The values of source are listed below.
| Value | Meaning |
|---|---|
chain_job |
Re-resolution through an additional update, including attempts skipped before execution. |
first_run |
Reassessment of the initial uv update result, including attempts skipped before reassessment. |
Even when outcome is not_tried, the value is first_run if the initial uv update produced a lockfile for reassessment, and chain_job otherwise.
Skipping an attempt does not cause source to be omitted or set to an empty string.
The following fields have additional notes.
reason- When resolving again for the fixed version with uv finds no solution,
outcomeisnot_fixedandreasonisno_resolution
- When resolving again for the fixed version with uv finds no solution,
hints- Checked for npm, pnpm, and uv when
outcomeisnot_fixed,rejected, ornot_tried - Included when the dependent package blocking the update is known and information about its published releases is available to provide guidance
- Checked for npm, pnpm, and uv when
truncatedmovescontains at most 100 entries, and this flag istruewhen entries beyond that limit are omitted- Also
truewhen the underlyingupdate.diffwas truncated - For pnpm,
movesis omitted and this flag is set totruewhen diff identifiers cannot be matched to dependency relationships - Does not indicate omissions from
blocked,tops, orhints
tops- At most five direct dependencies can have their versions selected again; if the limit is exceeded, re-resolution is skipped rather than run with a truncated list
blocked- Not truncated based on the number of output entries
update.chain also includes skipped attempts, so its presence alone does not establish that re-resolution ran or that its result was adopted.
Check update_executed, post_update_check_executed, and retry_after in Language package fields for execution status and the date and time when the release waiting period ends.
During a waiting period, some cycles include retry_after without update.chain.
See Release waiting periods and retries for waiting and stopping conditions.
Version requirements blocking updates
The fields in each element of language_items[].update.chain.blocked[] are listed below.
| Field | Type | Meaning | When there is no value |
|---|---|---|---|
package |
string | Name of the package whose update is blocked. | — |
version |
string | Current version of the package whose update is blocked. | — |
parent |
string | Name of the dependent package whose version requirement blocks the update. | — |
parent_version |
string | Current version of that dependent package. | — |
range |
string | Version or version range the dependent package requires for the target package. | — |
proof |
string | Evidence that the version requirement prevents an update to a fixed version. | — |
via |
array of strings | Names of the project's direct dependencies that lead to that dependent package. | omitted |
The values of proof are listed below.
| Value | Meaning |
|---|---|
exact |
Pinned to a specific version older than the fixed version. |
upper_bound |
The required range's upper bound excludes fixed versions. |
When parent itself is a direct dependency of the project, via contains its name.
Direct dependencies and related changes
Elements of language_items[].update.chain.tops[] and language_items[].update.chain.moves[] have the same structure, with the fields listed below.
| Field | Type | Meaning | When there is no value |
|---|---|---|---|
name |
string | Name of the package whose change is recorded. | — |
from |
string | Version before the change. | omitted |
to |
string | Version after the change. | omitted |
kind |
string | Role of the changed entry or type of change. | — |
The values of kind are listed below.
| Value | Meaning |
|---|---|
top |
Direct dependency in tops whose version is selected again. |
ancestor |
Change to a dependent package leading to the target package, recorded in moves. |
followed |
Change to an entry other than a dependent package, recorded in moves. |
added |
Addition of an entry, recorded in moves. |
removed |
Removal of an entry, recorded in moves. |
The following fields have additional notes.
name- In
moves, the identifier in the lockfile is used when the package name is unavailable
- In
fromandto- In
tops, the values are equal when the version is unchanged, andtois omitted when the resulting version is unknown, such as when an attempt is skipped before re-resolution - In
moves,fromis omitted when no version exists before an addition, andtois omitted when no version exists after a removal
- In
Processing usage of updates and re-resolution
The fields in language_items[].update.chain.usage are listed below.
| Field | Type | Meaning | When there is no value |
|---|---|---|---|
containers |
integer | Number of work containers. | 0 |
lookups |
integer | Number of lookups to registries such as npm and PyPI. | 0 |
bytes |
integer | Bytes received from registries. | 0 |
elapsed_ms |
integer | Milliseconds elapsed from the start of processing the item to the time the usage was recorded. | 0 |
Usage includes the normal update, re-resolution through dependent packages, and any required reruns in that cycle. See Re-resolution support and limits for processing limits.
Go update records
The fields in language_items[].update.go are listed below.
| Field | Type | Meaning | When there is no value |
|---|---|---|---|
collateral |
array of objects | Dependency modules outside the update targets whose versions were raised or that were added. | omitted |
go_before |
string | Version in the go line of go.mod before the update. | omitted |
go_after |
string | Version in the go line of go.mod after the update. | omitted |
toolchain_before |
string | Value in the toolchain line of go.mod before the update. | omitted |
toolchain_after |
string | Value in the toolchain line of go.mod after the update. | omitted |
sum_added |
array of strings | Lines added to complete go.sum using information from the checksum database. | omitted |
The following fields have additional notes.
go_beforeandgo_after- Represent versions such as
1.25.0, and are recorded even when the version is unchanged
- Represent versions such as
toolchain_beforeandtoolchain_after- Represent declared values such as
go1.25.3, and are omitted when the corresponding line is absent
- Represent declared values such as
sum_added- Each string uses the
module-path version h1:hashformat, with/go.modappended to the version for a go.mod checksum - Represents lines added because they were missing from the update result, rather than all lines added by the Go command
- Each string uses the
The fields in each element of language_items[].update.go.collateral[] are listed below.
| Field | Type | Meaning | When there is no value |
|---|---|---|---|
path |
string | Dependency module path. | — |
from |
string | Dependency module version before the update. | omitted when the module was added |
to |
string | Dependency module version after the update. | — |
See Go update validation for adoption conditions.
Maven update records
The fields in language_items[].update.maven are listed below.
| Field | Type | Meaning | When there is no value |
|---|---|---|---|
edits |
array of objects | Version specification changes in pom.xml. | omitted |
moves |
array of objects | Packages outside the update targets whose resolved versions changed. | omitted |
The fields in each element of language_items[].update.maven.edits[] are listed below.
| Field | Type | Meaning | When there is no value |
|---|---|---|---|
file |
string | Repository path of the pom.xml being changed. | — |
kind |
string | Method used to change the version specification. | — |
package |
string | Name of the package targeted by the change, in groupId:artifactId format. |
omitted |
property |
string | Name of the changed property. | omitted |
from |
string | Version specification before the change. | omitted |
to |
string | Version specification after the change. | — |
The values of kind are listed below.
| Value | Meaning |
|---|---|
version |
Change to a version written directly in a dependency declaration. |
property |
Change to a property defined by the project. |
property_override |
Project-level override of a property inherited from a parent. |
managed_pin |
Addition of a version specification to dependencyManagement. |
The fields in each element of language_items[].update.maven.moves[] are listed below.
| Field | Type | Meaning | When there is no value |
|---|---|---|---|
name |
string | Package name in groupId:artifactId format. |
— |
from |
array of strings | Sorted, deduplicated list of versions resolved before the update. | omitted |
to |
array of strings | Sorted, deduplicated list of versions resolved after the update. | omitted |
The versions in moves are those resolved by scans of the dependency files before and after the update.
from is omitted for added packages, and to is omitted for packages that are no longer present.
See Version sources and edits for the change methods and Maven update validation for adoption conditions.
Gradle update records
The fields in language_items[].update.gradle are listed below.
| Field | Type | Meaning | When there is no value |
|---|---|---|---|
edits |
array of objects | Version specification changes within the project. | omitted |
moves |
array of objects | Packages outside the update targets whose lockfile versions changed or that were added. | omitted |
companions |
array of objects | Records of packages changed because they share a version specification in a property or version catalog. | omitted |
bom |
string | Identifier of the Spring Boot BOM associated with the properties being changed, in groupId:artifactId:version format. |
omitted |
The fields in each element of language_items[].update.gradle.edits[] are listed below.
| Field | Type | Meaning | When there is no value |
|---|---|---|---|
file |
string | Repository path of the file being changed. | — |
kind |
string | Method used to change the version specification. | — |
package |
string | Name of the package targeted by the change, in groupId:artifactId format. |
omitted |
property |
string | Name of the changed property or version key in the version catalog. | omitted |
from |
string | Version specification before the change. | omitted |
to |
string | Version specification after the change. | — |
The values of kind are listed below.
| Value | Meaning |
|---|---|
catalog_version |
Change to a version in the version catalog's [versions] section. |
catalog_library |
Change to a version written directly in a library definition in the version catalog. |
declaration |
Change to a version written directly in a dependency declaration in the build script. |
property |
Change to a property defined in gradle.properties or the build script. |
property_override |
Override of a Spring Boot BOM property in gradle.properties. |
constraint |
Addition of a dependency constraint to the build script. |
The fields in each element of language_items[].update.gradle.moves[] are listed below.
| Field | Type | Meaning | When there is no value |
|---|---|---|---|
name |
string | Package name in groupId:artifactId format. |
— |
from |
array of strings | Sorted, deduplicated list of versions locked before the update. | omitted when the package was added |
to |
array of strings | Sorted, deduplicated list of versions locked after the update. | — |
moves records changes or additions.
Updates that remove packages from the lockfile are not adopted, so to in each generated element contains versions after the update.
The fields in each element of language_items[].update.gradle.companions[] are listed below.
| Field | Type | Meaning | When there is no value |
|---|---|---|---|
key |
string | Property name or version catalog version key through which the version is shared. | — |
value |
string | Shared version after the change. | — |
packages |
array of strings | Names of packages sharing that version specification, in groupId:artifactId format. |
— |
The following fields have additional notes.
packages- For each change, packages sharing the version specification are listed, excluding the package targeted by that change itself
- When multiple update targets share a version specification, an update target itself may be included as a package affected by a change for another target
companions records packages confirmed to exist on Maven Central at the shared version after the change.
See Version declarations and edits for the change methods and Gradle update validation for adoption conditions.