@kirrosh/zond 0.26.0 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +59 -0
- package/README.md +22 -21
- package/bin/zond.mjs +23 -0
- package/package.json +13 -16
- package/scripts/npm/postinstall.mjs +76 -0
- package/src/CLAUDE.md +0 -112
- package/src/bun-types.d.ts +0 -5
- package/src/cli/argv.ts +0 -122
- package/src/cli/commands/add-api.ts +0 -146
- package/src/cli/commands/api/annotate/idempotency.ts +0 -59
- package/src/cli/commands/api/annotate/index.ts +0 -880
- package/src/cli/commands/api/annotate/lifecycle.ts +0 -74
- package/src/cli/commands/api/annotate/overlay.ts +0 -206
- package/src/cli/commands/api/annotate/pagination.ts +0 -64
- package/src/cli/commands/api/annotate/prompts.ts +0 -220
- package/src/cli/commands/api/annotate/readback.ts +0 -58
- package/src/cli/commands/api/annotate/resources.ts +0 -91
- package/src/cli/commands/api/annotate/seed-bodies.ts +0 -61
- package/src/cli/commands/audit.ts +0 -786
- package/src/cli/commands/catalog.ts +0 -97
- package/src/cli/commands/check.ts +0 -361
- package/src/cli/commands/checks.ts +0 -1072
- package/src/cli/commands/ci-init.ts +0 -223
- package/src/cli/commands/clean.ts +0 -212
- package/src/cli/commands/cleanup.ts +0 -236
- package/src/cli/commands/completions.ts +0 -192
- package/src/cli/commands/coverage.ts +0 -872
- package/src/cli/commands/db.ts +0 -611
- package/src/cli/commands/describe.ts +0 -120
- package/src/cli/commands/discover.ts +0 -1356
- package/src/cli/commands/doctor.ts +0 -661
- package/src/cli/commands/fixtures.ts +0 -402
- package/src/cli/commands/generate.ts +0 -577
- package/src/cli/commands/init/agents-md.ts +0 -61
- package/src/cli/commands/init/bootstrap.ts +0 -111
- package/src/cli/commands/init/index.ts +0 -244
- package/src/cli/commands/init/skills.ts +0 -141
- package/src/cli/commands/init/templates/agents.md +0 -86
- package/src/cli/commands/init/templates/markdown.d.ts +0 -4
- package/src/cli/commands/init/templates/skills/warm-up-target.md +0 -122
- package/src/cli/commands/init/templates/skills/zond-checks.md +0 -621
- package/src/cli/commands/init/templates/skills/zond-seed.md +0 -114
- package/src/cli/commands/init/templates/skills/zond-triage.md +0 -272
- package/src/cli/commands/init/templates/skills/zond.md +0 -861
- package/src/cli/commands/init/templates/zond-config.yml +0 -14
- package/src/cli/commands/prepare-fixtures.ts +0 -97
- package/src/cli/commands/probe/_seed-bodies.ts +0 -52
- package/src/cli/commands/probe/mass-assignment.ts +0 -594
- package/src/cli/commands/probe/security.ts +0 -537
- package/src/cli/commands/probe/static.ts +0 -255
- package/src/cli/commands/probe/webhooks.ts +0 -163
- package/src/cli/commands/probe.ts +0 -535
- package/src/cli/commands/reference.ts +0 -87
- package/src/cli/commands/refresh-api.ts +0 -227
- package/src/cli/commands/remove-api.ts +0 -150
- package/src/cli/commands/report-bundle.ts +0 -310
- package/src/cli/commands/report.ts +0 -241
- package/src/cli/commands/request.ts +0 -548
- package/src/cli/commands/run.ts +0 -1142
- package/src/cli/commands/schema-from-runs.ts +0 -128
- package/src/cli/commands/secrets.ts +0 -133
- package/src/cli/commands/session.ts +0 -244
- package/src/cli/commands/use.ts +0 -74
- package/src/cli/index.ts +0 -55
- package/src/cli/json-envelope.ts +0 -108
- package/src/cli/json-schemas.ts +0 -314
- package/src/cli/output.ts +0 -40
- package/src/cli/program.ts +0 -219
- package/src/cli/resolve.ts +0 -105
- package/src/cli/runtime.ts +0 -7
- package/src/cli/safe-live.ts +0 -24
- package/src/cli/status-filter.ts +0 -114
- package/src/cli/util/api-context.ts +0 -85
- package/src/cli/version.ts +0 -8
- package/src/core/audit/persist.ts +0 -183
- package/src/core/checks/budget.ts +0 -59
- package/src/core/checks/checks/_crud-helpers.ts +0 -133
- package/src/core/checks/checks/_negative_mutator.ts +0 -133
- package/src/core/checks/checks/_readback-helpers.ts +0 -133
- package/src/core/checks/checks/content_type_conformance.ts +0 -39
- package/src/core/checks/checks/cross_call_references.ts +0 -147
- package/src/core/checks/checks/cursor_boundary_fuzzing.ts +0 -219
- package/src/core/checks/checks/ensure_resource_availability.ts +0 -62
- package/src/core/checks/checks/idempotency_replay.ts +0 -242
- package/src/core/checks/checks/ignored_auth.ts +0 -254
- package/src/core/checks/checks/index.ts +0 -68
- package/src/core/checks/checks/lifecycle_transitions.ts +0 -416
- package/src/core/checks/checks/missing_required_header.ts +0 -40
- package/src/core/checks/checks/negative_data_rejection.ts +0 -148
- package/src/core/checks/checks/not_a_server_error.ts +0 -35
- package/src/core/checks/checks/open_cors_on_sensitive.ts +0 -160
- package/src/core/checks/checks/pagination_invariants.ts +0 -419
- package/src/core/checks/checks/positive_data_acceptance.ts +0 -33
- package/src/core/checks/checks/rate_limit_headers_absent.ts +0 -77
- package/src/core/checks/checks/response_headers_conformance.ts +0 -74
- package/src/core/checks/checks/response_schema_conformance.ts +0 -30
- package/src/core/checks/checks/status_code_conformance.ts +0 -132
- package/src/core/checks/checks/unsupported_method.ts +0 -63
- package/src/core/checks/checks/use_after_free.ts +0 -78
- package/src/core/checks/index.ts +0 -30
- package/src/core/checks/mode.ts +0 -82
- package/src/core/checks/recommended-action.ts +0 -68
- package/src/core/checks/registry.ts +0 -78
- package/src/core/checks/runner.ts +0 -1461
- package/src/core/checks/sarif.ts +0 -230
- package/src/core/checks/spec-findings.ts +0 -308
- package/src/core/checks/stateful.ts +0 -121
- package/src/core/checks/types.ts +0 -305
- package/src/core/checks/zond-extensions.ts +0 -73
- package/src/core/classifier/recommended-action.ts +0 -251
- package/src/core/context/current.ts +0 -51
- package/src/core/context/session.ts +0 -78
- package/src/core/coverage/loader.ts +0 -216
- package/src/core/coverage/reasons.ts +0 -300
- package/src/core/diagnostics/db-analysis.ts +0 -666
- package/src/core/diagnostics/failure-class.ts +0 -140
- package/src/core/diagnostics/failure-hints.ts +0 -112
- package/src/core/diagnostics/spec-pointer.ts +0 -99
- package/src/core/diagnostics/suggested-fixes.ts +0 -155
- package/src/core/exporter/case-study/index.ts +0 -270
- package/src/core/exporter/curl.ts +0 -40
- package/src/core/exporter/exporter.ts +0 -48
- package/src/core/exporter/html-report/escape.ts +0 -24
- package/src/core/exporter/html-report/index.ts +0 -479
- package/src/core/exporter/html-report/script.ts +0 -100
- package/src/core/exporter/html-report/styles.ts +0 -408
- package/src/core/generator/catalog-builder.ts +0 -179
- package/src/core/generator/chunker.ts +0 -78
- package/src/core/generator/coverage-phase.ts +0 -0
- package/src/core/generator/coverage-scanner.ts +0 -87
- package/src/core/generator/data-factory.ts +0 -759
- package/src/core/generator/describe.ts +0 -302
- package/src/core/generator/endpoint-warnings.ts +0 -52
- package/src/core/generator/fixtures-builder.ts +0 -332
- package/src/core/generator/index.ts +0 -14
- package/src/core/generator/openapi-reader.ts +0 -297
- package/src/core/generator/path-param-disambig.ts +0 -140
- package/src/core/generator/resources-builder.ts +0 -898
- package/src/core/generator/schema-utils.ts +0 -112
- package/src/core/generator/serializer.ts +0 -343
- package/src/core/generator/suite-generator.ts +0 -1301
- package/src/core/generator/types.ts +0 -63
- package/src/core/identity/identity-file.ts +0 -0
- package/src/core/lint/affects.ts +0 -28
- package/src/core/lint/config.ts +0 -96
- package/src/core/lint/format.ts +0 -42
- package/src/core/lint/index.ts +0 -94
- package/src/core/lint/reporter.ts +0 -128
- package/src/core/lint/rules/consistency.ts +0 -158
- package/src/core/lint/rules/heuristics.ts +0 -97
- package/src/core/lint/rules/strictness.ts +0 -109
- package/src/core/lint/types.ts +0 -96
- package/src/core/lint/walker.ts +0 -248
- package/src/core/meta/meta-store.ts +0 -11
- package/src/core/output/README.md +0 -73
- package/src/core/output/index.ts +0 -13
- package/src/core/output/run.ts +0 -91
- package/src/core/output/types.ts +0 -122
- package/src/core/parser/dynamic-values.ts +0 -160
- package/src/core/parser/env-interpolation.ts +0 -104
- package/src/core/parser/filter.ts +0 -97
- package/src/core/parser/schema.ts +0 -359
- package/src/core/parser/types.ts +0 -117
- package/src/core/parser/variables.ts +0 -0
- package/src/core/parser/yaml-parser.ts +0 -181
- package/src/core/probe/bootstrap.ts +0 -34
- package/src/core/probe/dry-run-envelope.ts +0 -61
- package/src/core/probe/mass-assignment/classify.ts +0 -175
- package/src/core/probe/mass-assignment/cleanup.ts +0 -52
- package/src/core/probe/mass-assignment/digest.ts +0 -114
- package/src/core/probe/mass-assignment/orchestrator.ts +0 -459
- package/src/core/probe/mass-assignment/regression.ts +0 -141
- package/src/core/probe/mass-assignment/suspects.ts +0 -92
- package/src/core/probe/mass-assignment/types.ts +0 -135
- package/src/core/probe/mass-assignment-probe-class.ts +0 -198
- package/src/core/probe/mass-assignment-probe.ts +0 -27
- package/src/core/probe/mass-assignment-template.ts +0 -240
- package/src/core/probe/method-probe.ts +0 -164
- package/src/core/probe/method-shared.ts +0 -69
- package/src/core/probe/negative-probe.ts +0 -691
- package/src/core/probe/orphan-tracker.ts +0 -188
- package/src/core/probe/path-discovery.ts +0 -439
- package/src/core/probe/probe-harness.ts +0 -119
- package/src/core/probe/registry.ts +0 -89
- package/src/core/probe/runner.ts +0 -136
- package/src/core/probe/security/baseline.ts +0 -174
- package/src/core/probe/security/classify.ts +0 -341
- package/src/core/probe/security/cleanup.ts +0 -125
- package/src/core/probe/security/detectors.ts +0 -71
- package/src/core/probe/security/digest.ts +0 -104
- package/src/core/probe/security/orchestrator.ts +0 -398
- package/src/core/probe/security/regression.ts +0 -103
- package/src/core/probe/security/types.ts +0 -151
- package/src/core/probe/security-probe-class.ts +0 -207
- package/src/core/probe/security-probe.ts +0 -32
- package/src/core/probe/shared.ts +0 -531
- package/src/core/probe/static-probe-class.ts +0 -125
- package/src/core/probe/types.ts +0 -165
- package/src/core/probe/verdict-aggregator.ts +0 -33
- package/src/core/probe/webhooks-probe.ts +0 -282
- package/src/core/reporter/console.ts +0 -240
- package/src/core/reporter/index.ts +0 -22
- package/src/core/reporter/json.ts +0 -22
- package/src/core/reporter/junit.ts +0 -93
- package/src/core/reporter/ndjson.ts +0 -37
- package/src/core/reporter/types.ts +0 -15
- package/src/core/runner/assertions.ts +0 -383
- package/src/core/runner/async-pool.ts +0 -108
- package/src/core/runner/auth-path.ts +0 -8
- package/src/core/runner/ci-context.ts +0 -72
- package/src/core/runner/executor.ts +0 -652
- package/src/core/runner/expr-eval.ts +0 -41
- package/src/core/runner/form-encode.ts +0 -41
- package/src/core/runner/http-client.ts +0 -224
- package/src/core/runner/learn-drift.ts +0 -293
- package/src/core/runner/preflight-vars.ts +0 -153
- package/src/core/runner/progress-tracker.ts +0 -73
- package/src/core/runner/rate-limiter.ts +0 -185
- package/src/core/runner/run-kind.ts +0 -45
- package/src/core/runner/schema-validator.ts +0 -308
- package/src/core/runner/send-request.ts +0 -232
- package/src/core/runner/transforms.ts +0 -65
- package/src/core/runner/types.ts +0 -94
- package/src/core/secrets/registry.ts +0 -164
- package/src/core/secrets/secrets-file.ts +0 -115
- package/src/core/selectors/operation-filter.ts +0 -144
- package/src/core/setup-api.ts +0 -590
- package/src/core/severity/category.ts +0 -94
- package/src/core/severity/index.ts +0 -58
- package/src/core/spec/infer-schema.ts +0 -102
- package/src/core/spec/layers.ts +0 -154
- package/src/core/spec/merge-specs.ts +0 -156
- package/src/core/spec/schema-from-runs.ts +0 -117
- package/src/core/spec/schema-overlay.ts +0 -130
- package/src/core/util/ajv.ts +0 -13
- package/src/core/util/format-eta.ts +0 -21
- package/src/core/util/headers.ts +0 -9
- package/src/core/util/url.ts +0 -24
- package/src/core/utils.ts +0 -13
- package/src/core/workspace/config.ts +0 -129
- package/src/core/workspace/fixture-gap-report.ts +0 -84
- package/src/core/workspace/fixture-gaps.ts +0 -71
- package/src/core/workspace/manifest.ts +0 -283
- package/src/core/workspace/output-rotation.ts +0 -62
- package/src/core/workspace/root.ts +0 -96
- package/src/core/workspace/triage-path.ts +0 -87
- package/src/db/lint-runs.ts +0 -47
- package/src/db/migrate.ts +0 -128
- package/src/db/migrations/0001_run_kind.sql +0 -25
- package/src/db/migrations/0002_run_kind_request.sql +0 -59
- package/src/db/migrations/sql.d.ts +0 -4
- package/src/db/queries/collections.ts +0 -133
- package/src/db/queries/coverage.ts +0 -9
- package/src/db/queries/dashboard.ts +0 -59
- package/src/db/queries/results.ts +0 -216
- package/src/db/queries/runs.ts +0 -289
- package/src/db/queries/sessions.ts +0 -42
- package/src/db/queries/settings.ts +0 -28
- package/src/db/queries/types.ts +0 -172
- package/src/db/queries.ts +0 -75
- package/src/db/schema.ts +0 -298
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: warm-up-target
|
|
3
|
-
description: |
|
|
4
|
-
Warm up the TARGET API's environment so honest-2xx coverage stops being
|
|
5
|
-
capped by empty state. Picks up where `zond-seed` stops: the fixtures the
|
|
6
|
-
API cannot self-create via a plain POST — a real error `issue_id` (needs an
|
|
7
|
-
actual event), a `file_id` (needs a sourcemap/artifact upload), an
|
|
8
|
-
`integration_id` (needs an OAuth/app install), a `webhook_event_id` (needs a
|
|
9
|
-
replay). YOU decide HOW to warm each one using the target's OWN tooling (its
|
|
10
|
-
SDK, CLI, dashboard, replay/trigger endpoints); then harvest the resulting
|
|
11
|
-
LIVE id into `.env.yaml`. Use when honest-2xx is stuck low (~30%), when
|
|
12
|
-
`zond-seed` / `prepare-fixtures` report roots as un-seedable / external-input,
|
|
13
|
-
or the user asks to "warm up the target", "raise honest-2xx", "seed via the
|
|
14
|
-
SDK", "generate real test data". zond only STORES the id and MEASURES the
|
|
15
|
-
lift — the warm-up judgment is yours. Hand back to `zond` once warm.
|
|
16
|
-
allowed-tools: [Read, Write, Edit, Bash]
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
# warm-up-target — get the API into a testable state
|
|
20
|
-
|
|
21
|
-
`prepare-fixtures` reports fixture gaps; `zond-seed` fills the ones the API
|
|
22
|
-
self-serves (plain `POST` + capture). Whatever is left — resources that exist
|
|
23
|
-
only after a **real-world event** — is the honest-2xx ceiling. This skill
|
|
24
|
-
breaks that ceiling by warming the target with **its own means**, then storing
|
|
25
|
-
the live ids zond will reuse.
|
|
26
|
-
|
|
27
|
-
This is **not** core zond and **not** a heuristic: zond never learns how to
|
|
28
|
-
warm an API (that judgment has an infinite tail — every provider is different).
|
|
29
|
-
YOU read the provider's docs/SDK and drive it; zond only records the id
|
|
30
|
-
(`fixtures add`) and measures the coverage delta (`coverage`). Keep it that way
|
|
31
|
-
— no warm-up logic goes into zond core (litmus test).
|
|
32
|
-
|
|
33
|
-
## Iron rules
|
|
34
|
-
|
|
35
|
-
- **You warm, zond stores + measures.** You run the SDK/CLI/dashboard action
|
|
36
|
-
that creates the real resource; you read the returned id; `zond fixtures add`
|
|
37
|
-
writes it. Never ask zond to "figure out" how to warm a resource.
|
|
38
|
-
- **Live + throwaway/sandbox + cleanup.** Warm-ups create real state (events,
|
|
39
|
-
files, installs). Confirm `base_url` is a sandbox/test account first. Track
|
|
40
|
-
what you create; tear it down after (or use a disposable org). If you can't
|
|
41
|
-
guarantee cleanup, ask before creating.
|
|
42
|
-
- **Hand off to `zond-seed` first.** Only warm what `zond-seed` marked
|
|
43
|
-
un-seedable. Don't reinvent plain-POST creation here — that's zond-seed's job.
|
|
44
|
-
- **Ask early, don't reverse-engineer.** Give yourself a hard budget of ~1-2
|
|
45
|
-
attempts to derive a create-recipe from the spec/API. If a blind create 4xx/5xx
|
|
46
|
-
(missing an integer id the API doesn't expose, an opaque body shape), STOP —
|
|
47
|
-
ask the user for an example request (a working `curl`/HAR/body from their UI).
|
|
48
|
-
Extract the ids from it deterministically and replay. Do NOT spelunk 10 endpoints
|
|
49
|
-
guessing how creation works — that's the slow path the user hates.
|
|
50
|
-
- **Delete only by self-captured id.** Tear-down must target the id YOUR create
|
|
51
|
-
returned, never a harvested read-fixture value. Deleting by `{{key}}` when that
|
|
52
|
-
key came from a live resource wipes pre-existing data (see ARV-368). Track
|
|
53
|
-
created ids explicitly; DELETE those and only those.
|
|
54
|
-
- **Report honestly what you can't warm.** Some fixtures need a human (a paid
|
|
55
|
-
plan, a KYC step, a physical device, a manual dashboard toggle). Surface those
|
|
56
|
-
as a short "needs you" list with the exact action — never fake a value (it
|
|
57
|
-
just 422s and lies about coverage).
|
|
58
|
-
- **Measure the lift.** Snapshot honest-2xx before and after so the warm-up's
|
|
59
|
-
value is visible (`zond coverage --api <name> --union session`).
|
|
60
|
-
|
|
61
|
-
## Inputs — what needs warming
|
|
62
|
-
|
|
63
|
-
| Signal | Command | What it tells you |
|
|
64
|
-
|---|---|---|
|
|
65
|
-
| Un-seedable roots | `zond-seed` handoff / `zond prepare-fixtures --api <name> --json` → `summary.fixtureGaps.unseededRoots[]` | fixtures no plain-POST can create |
|
|
66
|
-
| Empty-list gaps | `prepare-fixtures` items with `status: miss-empty` | resource exists in spec, zero records in the target |
|
|
67
|
-
| What each id is for | `apis/<name>/.api-resources.yaml` (the owning resource + its create/read endpoints) | which real-world action mints this id |
|
|
68
|
-
| Current honest-2xx | `zond coverage --api <name> --union session --json` | the ceiling you're trying to raise |
|
|
69
|
-
|
|
70
|
-
## Warm-up patterns (pick per resource)
|
|
71
|
-
|
|
72
|
-
The resource's *nature* tells you the warm-up path. Common families:
|
|
73
|
-
|
|
74
|
-
| Fixture shape | Warm-up path (via the target's own tooling) |
|
|
75
|
-
|---|---|
|
|
76
|
-
| Error / issue id (`issue_id`, `event_id`) | Trigger a real event: `sentry-cli send-event`, the app's error-report endpoint, or an SDK `captureException`. Poll the list endpoint until the id appears, capture it. |
|
|
77
|
-
| Uploaded-artifact id (`file_id`, `release`, `sourcemap`) | Upload via the provider CLI/SDK (`sentry-cli releases files upload`, a `POST .../files` multipart). Capture the returned id. |
|
|
78
|
-
| Integration / connection id (`integration_id`, `installation_id`) | Install the app/integration into a **sandbox** org (OAuth flow / provider dashboard "add to test workspace"). Capture the id from the callback or the list endpoint. |
|
|
79
|
-
| Delivered-webhook id (`delivery_id`, `webhook_event_id`) | Register a webhook, trigger the source event, replay/list deliveries, capture the id. |
|
|
80
|
-
| Provisioned-async id (needs a background job to finish) | Kick off the job, poll the status endpoint until ready, capture. |
|
|
81
|
-
|
|
82
|
-
These are *examples*, not a lookup table — read the actual provider's docs for
|
|
83
|
-
the target you're on.
|
|
84
|
-
|
|
85
|
-
## The loop
|
|
86
|
-
|
|
87
|
-
For each un-seedable root:
|
|
88
|
-
|
|
89
|
-
1. **Identify the warm-up path.** From `.api-resources.yaml` + the provider
|
|
90
|
-
docs, decide which real-world action mints this id. If it needs a human,
|
|
91
|
-
add it to the "needs you" list and move on.
|
|
92
|
-
|
|
93
|
-
2. **Warm it via the target's own tooling.** Run the SDK/CLI/curl that creates
|
|
94
|
-
the real resource in the sandbox. Read the id from the response (or poll the
|
|
95
|
-
list endpoint until it shows up — async resources aren't instant).
|
|
96
|
-
|
|
97
|
-
3. **Store the live id.**
|
|
98
|
-
```bash
|
|
99
|
-
zond fixtures add --api <name> issue_id=<real-id-you-got> --validate --apply
|
|
100
|
-
```
|
|
101
|
-
`--validate` GETs the read-by-id endpoint and confirms the id is `live`
|
|
102
|
-
before writing (so a warm-up that half-failed doesn't poison later runs).
|
|
103
|
-
|
|
104
|
-
4. **Verify the gap closed.** Re-run `zond prepare-fixtures --api <name> --json`
|
|
105
|
-
— the warmed root should drop out of `unseededRoots` / flip off `miss-empty`.
|
|
106
|
-
|
|
107
|
-
5. **Measure + hand back.** When the worklist is drained (or only "needs you"
|
|
108
|
-
items remain), snapshot honest-2xx again and report the delta, then hand
|
|
109
|
-
back to `zond` for the audit:
|
|
110
|
-
```bash
|
|
111
|
-
zond coverage --api <name> --union session # after — compare to the before snapshot
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
## Output to the user
|
|
115
|
-
|
|
116
|
-
- **Warmed:** table of `fixture → how it was warmed → live id captured`.
|
|
117
|
-
- **Needs you:** fixtures that require a human action, each with the exact step
|
|
118
|
-
(e.g. "enable the Slack integration in the sandbox workspace, then re-run").
|
|
119
|
-
- **Coverage:** honest-2xx before → after, so the lift is measurable.
|
|
120
|
-
|
|
121
|
-
Cleanup: DELETE the resources you created (or note they live in a disposable
|
|
122
|
-
sandbox). Never leave test events/files/installs on a shared account.
|