Skill Tracer
Skills › Scientific Agent Skills › dnanexus-integration › operations-and-troubleshooting.md

operations-and-troubleshooting.md

515 lines · skills/dnanexus-integration/references/operations-and-troubleshooting.md at 5f2bc03

Open on GitHub
1# Operations and Troubleshooting
2

Operations and Troubleshooting

Raw lines 1 to 2
3## Quick Navigation
4
5- [Baseline and first questions](#non-secret-baseline)
6- [Authentication and context](#authentication-and-context)
7- [Path and object resolution](#path-and-object-resolution)
8- [Upload and download problems](#upload-problems)
9- [Job states and failure reasons](#job-state-problems)
10- [Workflow analysis failures](#workflow-analysis-failures)
11- [Nextflow and dxCompiler](#nextflow)
12- [Debug access](#debug-access)
13- [Service limits and cost review](#service-limits)
14- [Destructive operations](#destructive-operations)
15- [Support bundle](#support-bundle)

Quick Navigation

  • Baseline and first questions
  • Authentication and context
  • Path and object resolution
  • Upload and download problems
  • Job states and failure reasons
  • Workflow analysis failures
  • Nextflow and dxCompiler
  • Debug access
  • Service limits and cost review
  • Destructive operations
  • Support bundle
Raw lines 3 to 16
17## Non-Secret Baseline
19Start with:
21```bash
22dx --version
23dx whoami
24dx pwd
25```
27Do not run `dx env`, `dx env --bash`, or `ua --env` in captured output; they
28display credentials.
30Record:
32- dx-toolkit/dxpy version
33- User ID
34- Project ID and region
35- Exact object/execution ID
36- UTC time window
37- Operation attempted
38- API request ID, if available
40Do not record tokens, whole environments, signed URLs, or unredacted PHI.

Non-Secret Baseline

Start with:

dx --version
dx whoami
dx pwd

Do not run dx env, dx env --bash, or ua --env in captured output; they display credentials.

Record:

  • dx-toolkit/dxpy version
  • User ID
  • Project ID and region
  • Exact object/execution ID
  • UTC time window
  • Operation attempted
  • API request ID, if available

Do not record tokens, whole environments, signed URLs, or unredacted PHI.

Raw lines 17 to 41
42## First Questions
441. Is the failure local, API-side, or inside a job?
452. Is the object a file, record, applet, workflow, job, or analysis?
463. Is the ID project-qualified?
474. Is the file closed and live?
485. Does the user have the required access?
496. Is an environment variable overriding saved CLI state?
507. Did the operation cross a region, billing entity, TRE, or restricted
51 project boundary?
528. Is the execution using the intended app version and instance?
539. Is the failure deterministic or transient?
5410. Would retrying incur charges without changing the cause?

First Questions

  1. Is the failure local, API-side, or inside a job?
  2. Is the object a file, record, applet, workflow, job, or analysis?
  3. Is the ID project-qualified?
  4. Is the file closed and live?
  5. Does the user have the required access?
  6. Is an environment variable overriding saved CLI state?
  7. Did the operation cross a region, billing entity, TRE, or restricted project boundary?
  8. Is the execution using the intended app version and instance?
  9. Is the failure deterministic or transient?
  10. Would retrying incur charges without changing the cause?
Raw lines 42 to 55
56## Authentication and Context

Authentication and Context

Raw lines 56 to 57
58### Symptom
60- `AuthError`
61- `PermissionDenied`
62- Unexpected user/project after `dx login`
63- An object visible in the UI is invisible to the CLI

Symptom

  • AuthError
  • PermissionDenied
  • Unexpected user/project after dx login
  • An object visible in the UI is invisible to the CLI
Raw lines 58 to 64
65### Checks
67```bash
68dx whoami
69dx pwd
70```
72Shell variables override `~/.dnanexus_config/environment.json`. If the saved
73CLI state should win:
75```bash
76source "$HOME/.dnanexus_config/unsetenv"
77dx whoami
78dx pwd
79```
81If saved state should be discarded:
83```bash
84dx clearenv
85```
87Then authenticate again. Do not compare token values.
89Also check:
91- Token expiration/revocation
92- Token scope (selected projects versus all projects); user-generated API
93 tokens cannot access UKB RAP resources
94- Login-session timeout: two hours idle and at most 18 hours from issuance
95 under the normal policy, potentially shorter under organization policy
96- Project membership and access level
97- Organization license/policy
98- Download restrictions
99- TRE/Data Access Request association
100- Whether the project/object is in another region
102Do not solve a context error by broadening permissions automatically.

Checks

dx whoami
dx pwd

Shell variables override ~/.dnanexus_config/environment.json. If the saved CLI state should win:

source "$HOME/.dnanexus_config/unsetenv"
dx whoami
dx pwd

If saved state should be discarded:

dx clearenv

Then authenticate again. Do not compare token values.

Also check:

  • Token expiration/revocation
  • Token scope (selected projects versus all projects); user-generated API tokens cannot access UKB RAP resources
  • Login-session timeout: two hours idle and at most 18 hours from issuance under the normal policy, potentially shorter under organization policy
  • Project membership and access level
  • Organization license/policy
  • Download restrictions
  • TRE/Data Access Request association
  • Whether the project/object is in another region

Do not solve a context error by broadening permissions automatically.

Raw lines 65 to 103
104## Path and Object Resolution

Path and Object Resolution

Raw lines 104 to 105
106### Symptom
108- Ambiguous path
109- Wrong object selected
110- `ResourceNotFound`
111- A script sees different data than the UI

Symptom

  • Ambiguous path
  • Wrong object selected
  • ResourceNotFound
  • A script sees different data than the UI
Raw lines 106 to 112
113### Checks
115```bash
116dx ls "project-xxxx:/folder"
117dx find data \
118 --path "project-xxxx:/folder" \
119 --name "sample.bam" \
120 --name-mode exact \
121 --json
122```
124DNAnexus permits duplicate object names. For mutation, select by ID after
125reviewing all matches.
127Use project-qualified links:
129```python
130dxpy.dxlink("file-xxxx", "project-xxxx")
131```

Checks

dx ls "project-xxxx:/folder"
dx find data \
  --path "project-xxxx:/folder" \
  --name "sample.bam" \
  --name-mode exact \
  --json

DNAnexus permits duplicate object names. For mutation, select by ID after reviewing all matches.

Use project-qualified links:

dxpy.dxlink("file-xxxx", "project-xxxx")
Raw lines 113 to 132
133## Upload Problems

Upload Problems

Raw lines 133 to 134
135### File remains open/closing
137Possible causes:
139- Interrupted multipart upload
140- A part never completed
141- Upload process exited before closure
142- Network loss
144For Upload Agent, repeat the same command to resume. Use `--wait-on-close` for
145automation that needs a closed file.
147Inspect state by ID. A dependent job can be submitted while an input is open
148or closing, but it remains `waiting_on_input`; do not expect compute to start
149until the file closes.
151Abandoned files can remain billable until platform cleanup or explicit
152removal. Confirm the exact incomplete object before deleting it.

File remains open/closing

Possible causes:

  • Interrupted multipart upload
  • A part never completed
  • Upload process exited before closure
  • Network loss

For Upload Agent, repeat the same command to resume. Use --wait-on-close for automation that needs a closed file.

Inspect state by ID. A dependent job can be submitted while an input is open or closing, but it remains waiting_on_input; do not expect compute to start until the file closes.

Abandoned files can remain billable until platform cleanup or explicit removal. Confirm the exact incomplete object before deleting it.

Raw lines 135 to 153
154### Upload Agent creates `.gz`
156This is expected for uncompressed inputs. Upload Agent compresses by default.
157Use `--do-not-compress` when preserving original bytes or naming is required.

Upload Agent creates .gz

This is expected for uncompressed inputs. Upload Agent compresses by default. Use --do-not-compress when preserving original bytes or naming is required.

Raw lines 154 to 158
159### Upload retries create duplicates
161Upload Agent identifies resumable files from a signature that includes path,
162size, modification time, compression mode, and chunk size. Changing those
163inputs can create a new object.
165Review incomplete/closed matches before using `--do-not-resume`.

Upload retries create duplicates

Upload Agent identifies resumable files from a signature that includes path, size, modification time, compression mode, and chunk size. Changing those inputs can create a new object.

Review incomplete/closed matches before using --do-not-resume.

Raw lines 159 to 166
167## Download Problems

Download Problems

Raw lines 167 to 168
169### Archived file
171Archived files cannot be downloaded until unarchive completes. Confirm
172retrieval cost and timing before requesting unarchive.

Archived file

Archived files cannot be downloaded until unarchive completes. Confirm retrieval cost and timing before requesting unarchive.

Raw lines 169 to 173
174### Malicious-file warning
176Current dx-toolkit warns when a file or generated download URL has been flagged
177as malicious. Treat this as a stop condition:
1791. Do not execute or preview the content.
1802. Confirm the file ID and security status.
1813. Ask whether an approved malware-containment environment exists.
1824. Download only into that environment if explicitly authorized.

Malicious-file warning

Current dx-toolkit warns when a file or generated download URL has been flagged as malicious. Treat this as a stop condition:

  1. Do not execute or preview the content.
  2. Confirm the file ID and security status.
  3. Ask whether an approved malware-containment environment exists.
  4. Download only into that environment if explicitly authorized.
Raw lines 174 to 183
184### Large batch is slow or fragile
186Use Download Agent with a reviewed manifest. Check free space, run `progress`,
187and use `inspect` after completion. Rerun the same manifest to repair missing
188or checksum-mismatched parts.

Large batch is slow or fragile

Use Download Agent with a reviewed manifest. Check free space, run progress, and use inspect after completion. Rerun the same manifest to repair missing or checksum-mismatched parts.

Raw lines 184 to 189
190## Job State Problems

Job State Problems

Raw lines 190 to 191
192### `waiting_on_input`
194Check:
196- Input files and linked hidden objects are closed.
197- Upstream JBORs resolve.
198- `depends_on` jobs reached `done`.
199- The upstream execution did not fail.
200- Input objects can be cloned into the execution context.

waiting_on_input

Check:

  • Input files and linked hidden objects are closed.
  • Upstream JBORs resolve.
  • depends_on jobs reached done.
  • The upstream execution did not fail.
  • Input objects can be cloned into the execution context.
Raw lines 192 to 201
202### `runnable` for a long time
204Check:
206- Instance availability in the region
207- Spot wait policy and priority
208- Retired or unavailable instance type
209- Dynamic instance selector transitions
210- User/org worker limits
212Do not immediately switch to a larger/on-demand instance without estimating
213cost.

runnable for a long time

Check:

  • Instance availability in the region
  • Spot wait policy and priority
  • Retired or unavailable instance type
  • Dynamic instance selector transitions
  • User/org worker limits

Do not immediately switch to a larger/on-demand instance without estimating cost.

Raw lines 202 to 214
215### `waiting_on_output`
217Check:
219- Descendant jobs still running
220- Output files still closing
221- Unresolved output JBORs
222- A child failed but the tree is still settling

waiting_on_output

Check:

  • Descendant jobs still running
  • Output files still closing
  • Unresolved output JBORs
  • A child failed but the tree is still settling
Raw lines 215 to 223
224## Failure Reasons

Failure Reasons

Raw lines 224 to 225
226### `InputError`
228- Inspect executable help and current input spec.
229- Confirm classes and array shapes.
230- Confirm required fields.
231- Confirm files are closed and accessible.
232- Use DNAnexus links, not local paths.

InputError

  • Inspect executable help and current input spec.
  • Confirm classes and array shapes.
  • Confirm required fields.
  • Confirm files are closed and accessible.
  • Use DNAnexus links, not local paths.
Raw lines 226 to 233
234### `OutputError`
236- Compare returned keys to `outputSpec`.
237- Check every file output is a valid DNAnexus link.
238- Check array versus scalar class.
239- Check descendant output references.
240- Ensure `job_output.json` contains `{}` when there are no outputs.

OutputError

  • Compare returned keys to outputSpec.
  • Check every file output is a valid DNAnexus link.
  • Check array versus scalar class.
  • Check descendant output references.
  • Ensure job_output.json contains {} when there are no outputs.
Raw lines 234 to 241
242### `AppError`
244Expected app-recognized problem. Follow the actionable message and fix input or
245configuration. Do not retry unchanged.

AppError

Expected app-recognized problem. Follow the actionable message and fix input or configuration. Do not retry unchanged.

Raw lines 242 to 246
247### `AppInternalError`
249Unexpected application failure or nonzero process exit:
2511. Review `stdout`/`stderr`.
2522. Identify the first failing command.
2533. Check deterministic reproduction with a small fixture.
2544. Fix and rebuild a new applet/app version.

AppInternalError

Unexpected application failure or nonzero process exit:

  1. Review stdout/stderr.
  2. Identify the first failing command.
  3. Check deterministic reproduction with a small fixture.
  4. Fix and rebuild a new applet/app version.
Raw lines 247 to 255
256### `AppInsufficientResourceError`
258Review detailed metrics and determine whether memory or storage was exhausted.
260Options:
262- Increase the correct resource dimension.
263- Reduce batch/scatter size.
264- Stream data instead of loading it all.
265- Use an automatic restart policy if idempotent.
267Automatic instance upgrade requires the organization policy and a matching
268restart count. It upgrades within the same family; it is not a substitute for
269profiling.

AppInsufficientResourceError

Review detailed metrics and determine whether memory or storage was exhausted.

Options:

  • Increase the correct resource dimension.
  • Reduce batch/scatter size.
  • Stream data instead of loading it all.
  • Use an automatic restart policy if idempotent.

Automatic instance upgrade requires the organization policy and a matching restart count. It upgrades within the same family; it is not a substitute for profiling.

Raw lines 256 to 270
271### `ExecutionError` / dependency installation failure
273Check:
275- APT package exists in the selected Ubuntu release.
276- `execDepends` package manager/name/version is valid.
277- Ubuntu 24.04 Python dependency conflicts.
278- Network host is allowlisted if a runtime download is unavoidable.
279- Asset distribution/release matches the app.
281Prefer a pinned asset, virtual environment, or saved container image over
282runtime installation.

ExecutionError / dependency installation failure

Check:

  • APT package exists in the selected Ubuntu release.
  • execDepends package manager/name/version is valid.
  • Ubuntu 24.04 Python dependency conflicts.
  • Network host is allowlisted if a runtime download is unavoidable.
  • Asset distribution/release matches the app.

Prefer a pinned asset, virtual environment, or saved container image over runtime installation.

Raw lines 271 to 283
284### `SpotInstanceInterruption`
286This can be transient. Confirm the app is restartable/idempotent. Use a bounded
287retry policy. For critical runs, consider high priority/on-demand after cost
288approval.

SpotInstanceInterruption

This can be transient. Confirm the app is restartable/idempotent. Use a bounded retry policy. For critical runs, consider high priority/on-demand after cost approval.

Raw lines 284 to 289
290### `JobTimeoutExceeded`
292Check configured `timeoutPolicy` and platform 30-day limit. Splitting a
293workflow is often safer than simply increasing the timeout.

JobTimeoutExceeded

Check configured timeoutPolicy and platform 30-day limit. Splitting a workflow is often safer than simply increasing the timeout.

Raw lines 290 to 294
295### `CostLimitExceeded`
297The configured cost limit terminated the execution. Review:
299- Actual tree cost
300- Retry count
301- Intermediate outputs
302- Instance sizes
303- Number of subjobs
304- Whether reuse was disabled
306Do not raise the limit until the cause and new maximum are approved.

CostLimitExceeded

The configured cost limit terminated the execution. Review:

  • Actual tree cost
  • Retry count
  • Intermediate outputs
  • Instance sizes
  • Number of subjobs
  • Whether reuse was disabled

Do not raise the limit until the cause and new maximum are approved.

Raw lines 295 to 307
308### `SpendingLimitExceeded` / `OrgExpired`
310These are account/organization controls. Report the exact billing entity and
311stop. Do not attempt to route charges to another account or project without
312explicit authorization.

SpendingLimitExceeded / OrgExpired

These are account/organization controls. Report the exact billing entity and stop. Do not attempt to route charges to another account or project without explicit authorization.

Raw lines 308 to 313
314### `AuthError` in a long job
316Job credentials inherit root authorization and have a limited lifetime. A
317revoked/expired token can terminate the tree. Re-running requires a new
318authorized launch; it does not resurrect the old job.

AuthError in a long job

Job credentials inherit root authorization and have a limited lifetime. A revoked/expired token can terminate the tree. Re-running requires a new authorized launch; it does not resurrect the old job.

Raw lines 314 to 319
320## Workflow Analysis Failures
322For `partially_failed`:
3241. Describe the analysis.
3252. Identify failed and still-active stages.
3263. Inspect the failing stage job and its tries.
3274. Let independent stages finish only if useful and cost-approved.
3285. Decide whether to terminate the remainder.
3296. Rerun only required stages after fixing the cause.
331Example:
333```bash
334dx find jobs --root-execution "analysis-xxxx" --all-jobs
335dx watch "job-failed" --get-streams
336```
338For a rerun:
340```bash
341dx run --clone "analysis-xxxx" \
342 --rerun-stage "stage-name" \
343 --destination "project-xxxx:/reruns/run-001"
344```
346Review reuse and output-folder behavior before launch.

Workflow Analysis Failures

For partially_failed:

  1. Describe the analysis.
  2. Identify failed and still-active stages.
  3. Inspect the failing stage job and its tries.
  4. Let independent stages finish only if useful and cost-approved.
  5. Decide whether to terminate the remainder.
  6. Rerun only required stages after fixing the cause.

Example:

dx find jobs --root-execution "analysis-xxxx" --all-jobs
dx watch "job-failed" --get-streams

For a rerun:

dx run --clone "analysis-xxxx" \
  --rerun-stage "stage-name" \
  --destination "project-xxxx:/reruns/run-001"

Review reuse and output-folder behavior before launch.

Raw lines 320 to 347
348## Nextflow
350### Import/build failure
352- Confirm the organization has the Nextflow feature/license.
353- Use current dx-toolkit.
354- Rebuild existing Nextflow applets after a toolkit upgrade; installing a new
355 local CLI alone does not update their execution template or assets.
356- Pin repository tag/commit.
357- Confirm only supported Nextflow versions are requested.
358- Confirm private Git credential file is accessible.
359- Inspect the remote builder job log.

Import/build failure

  • Confirm the organization has the Nextflow feature/license.
  • Use current dx-toolkit.
  • Rebuild existing Nextflow applets after a toolkit upgrade; installing a new local CLI alone does not update their execution template or assets.
  • Pin repository tag/commit.
  • Confirm only supported Nextflow versions are requested.
  • Confirm private Git credential file is accessible.
  • Inspect the remote builder job log.
Raw lines 350 to 360
361### Process failure
363The head job supervises subjobs. Find the failed child:
365```bash
366dx find jobs --root-execution "job-head" --all-jobs
367dx watch "job-child" --get-streams
368```
370Check:
372- Docker image digest and registry access
373- Process `cpus`, `memory`, and `disk`
374- Queue size (current maximum 1000)
375- Output path and work directory
376- Resume/cache session
377- Offline mode and availability of pre-staged dependencies. Toolkit 0.415.0
378 applets enable it automatically without outbound network access; requesting
379 `-offline=false` does not override the app's network permissions.

Process failure

The head job supervises subjobs. Find the failed child:

dx find jobs --root-execution "job-head" --all-jobs
dx watch "job-child" --get-streams

Check:

  • Docker image digest and registry access
  • Process cpus, memory, and disk
  • Queue size (current maximum 1000)
  • Output path and work directory
  • Resume/cache session
  • Offline mode and availability of pre-staged dependencies. Toolkit 0.415.0 applets enable it automatically without outbound network access; requesting -offline=false does not override the app's network permissions.
Raw lines 361 to 380
381### Resume failure
383Current guidance allows at most 20 preserved sessions per project. Confirm the
384target session exists and no other job is writing it. Clean old work/cache
385folders only after explicit review.

Resume failure

Current guidance allows at most 20 preserved sessions per project. Confirm the target session exists and no other job is writing it. Clean old work/cache folders only after explicit review.

Raw lines 381 to 386
387## dxCompiler
389### Compile failure
391- Confirm dxCompiler and Java versions.
392- Validate WDL with matching wdlTools.
393- Upgrade, pack, and validate CWL 1.2.
394- Check globally unique task/workflow names.
395- Check strict type conversions.
396- Pin imported source.

Compile failure

  • Confirm dxCompiler and Java versions.
  • Validate WDL with matching wdlTools.
  • Upgrade, pack, and validate CWL 1.2.
  • Check globally unique task/workflow names.
  • Check strict type conversions.
  • Pin imported source.
Raw lines 389 to 397
398### Protected WDL import failure
400Check per-domain token configuration without printing
401`DXCOMPILER_WDL_IMPORT_BEARER_TOKENS`. Confirm:
403- Host exactly matches the approved import domain.
404- Token has not expired.
405- Token can only read required source.
406- Redirects do not send authorization to an unapproved domain.

Protected WDL import failure

Check per-domain token configuration without printing DXCOMPILER_WDL_IMPORT_BEARER_TOKENS. Confirm:

  • Host exactly matches the approved import domain.
  • Token has not expired.
  • Token can only read required source.
  • Redirects do not send authorization to an unapproved domain.
Raw lines 398 to 407
408## Debug Access
410DNAnexus supports approved SSH/debug-hold workflows. These settings can expose
411live job data and extend workspace lifetime.
413Before enabling:
415- Confirm organization policy.
416- Restrict source IP/host masks.
417- Use non-sensitive test data where possible.
418- Do not copy credentials from the worker.
419- Record who accessed the job and why.
420- Clean up held workspaces.
422`--clone` does not preserve SSH/debug flags. This is a safety property; do not
423automatically add them back.

Debug Access

DNAnexus supports approved SSH/debug-hold workflows. These settings can expose live job data and extend workspace lifetime.

Before enabling:

  • Confirm organization policy.
  • Restrict source IP/host masks.
  • Use non-sensitive test data where possible.
  • Do not copy credentials from the worker.
  • Record who accessed the job and why.
  • Clean up held workspaces.

--clone does not preserve SSH/debug flags. This is a safety property; do not automatically add them back.

Raw lines 408 to 424
425## Service Limits
427Current documented defaults include:
429- 200 API calls/second
430- 100 running workers/user
431- 10,000 objects/deletion request
432- 100,000 objects/move request
433- 400,000 objects/list request
434- 255,000 project folders mounted in Linux
435- 5 TB/file in AWS regions
436- 4.75 TB/file in Azure regions
438Limits can vary by region/account and change. Bound searches, paginate, use
439batch APIs, and back off on throttling.

Service Limits

Current documented defaults include:

  • 200 API calls/second
  • 100 running workers/user
  • 10,000 objects/deletion request
  • 100,000 objects/move request
  • 400,000 objects/list request
  • 255,000 project folders mounted in Linux
  • 5 TB/file in AWS regions
  • 4.75 TB/file in Azure regions

Limits can vary by region/account and change. Bound searches, paginate, use batch APIs, and back off on throttling.

Raw lines 425 to 440
441## Cost Review
443Distinguish three independent controls:
4451. **Execution cost limit** — optional per root execution tree; reaching it
446 terminates that tree.
4472. **Billing-account spending limit** — cumulative across billed projects;
448 reaching it can terminate jobs and block new executions.
4493. **Monthly project compute and egress limits** — separate licensed controls;
450 compute limits can stop/block jobs, while egress limits can block transfers.
452Increasing one limit does not bypass another. Project monthly behavior can also
453depend on the billing organization's policy.
455Before rerun or scale-up, report:
457- Billing project/org
458- Current accrued cost if visible
459- Proposed instance and priority
460- Number of workers/stages
461- Retry and reuse settings
462- Cost limit
463- Expected data egress
464- Preserved intermediate storage
466Failed and terminated user jobs can still be billed. Platform-internal
467failure billing differs by reason and customer contract.

Cost Review

Distinguish three independent controls:

  1. Execution cost limit — optional per root execution tree; reaching it terminates that tree.
  2. Billing-account spending limit — cumulative across billed projects; reaching it can terminate jobs and block new executions.
  3. Monthly project compute and egress limits — separate licensed controls; compute limits can stop/block jobs, while egress limits can block transfers.

Increasing one limit does not bypass another. Project monthly behavior can also depend on the billing organization's policy.

Before rerun or scale-up, report:

  • Billing project/org
  • Current accrued cost if visible
  • Proposed instance and priority
  • Number of workers/stages
  • Retry and reuse settings
  • Cost limit
  • Expected data egress
  • Preserved intermediate storage

Failed and terminated user jobs can still be billed. Platform-internal failure billing differs by reason and customer contract.

Raw lines 441 to 468
469## Destructive Operations
471Require exact IDs and confirmation for:
473- `dx rm` / object removal
474- Recursive folder removal
475- Project deletion
476- Permission/member changes
477- Archive/unarchive
478- Token revocation
479- App publication or authorized-user replacement
481Never recursively remove `/`. Removal can also delete orphaned hidden linked
482objects and cannot be undone.
484`protected` and `destroyProtected` serve different purposes:
486- `protected` raises project-data deletion from `CONTRIBUTE` to `ADMINISTER`.
487- `destroyProtected` prevents whole-project destruction until an authorized
488 administrator explicitly clears it.
490Project destruction removes all objects and refuses to proceed with active
491jobs unless `terminateJobs=true`. Never clear deletion protection or force
492job termination as part of a generic cleanup request.

Destructive Operations

Require exact IDs and confirmation for:

  • dx rm / object removal
  • Recursive folder removal
  • Project deletion
  • Permission/member changes
  • Archive/unarchive
  • Token revocation
  • App publication or authorized-user replacement

Never recursively remove /. Removal can also delete orphaned hidden linked objects and cannot be undone.

protected and destroyProtected serve different purposes:

  • protected raises project-data deletion from CONTRIBUTE to ADMINISTER.
  • destroyProtected prevents whole-project destruction until an authorized administrator explicitly clears it.

Project destruction removes all objects and refuses to proceed with active jobs unless terminateJobs=true. Never clear deletion protection or force job termination as part of a generic cleanup request.

Raw lines 469 to 493
494## Support Bundle
496Provide only:
498- dx-toolkit/dxpy version
499- UTC timestamp
500- User ID (if appropriate)
501- Project ID/region
502- Object, job, or analysis ID
503- App/applet/workflow ID and version
504- Failure reason/message
505- API request ID
506- Minimal redacted log excerpt
507- Reproduction steps using non-sensitive data
509Exclude:
511- Tokens/security contexts
512- Environment dumps
513- Private registry/Git credentials
514- Signed URLs
515- PHI or proprietary filenames unless required and approved

Support Bundle

Provide only:

  • dx-toolkit/dxpy version
  • UTC timestamp
  • User ID (if appropriate)
  • Project ID/region
  • Object, job, or analysis ID
  • App/applet/workflow ID and version
  • Failure reason/message
  • API request ID
  • Minimal redacted log excerpt
  • Reproduction steps using non-sensitive data

Exclude:

  • Tokens/security contexts
  • Environment dumps
  • Private registry/Git credentials
  • Signed URLs
  • PHI or proprietary filenames unless required and approved
Raw lines 494 to 515