# Upload Instructions

This package is ready to upload as a static directory. Keep the directory layout intact.

## Upload Target

Upload the full package directory to one immutable public prefix, for example:

```text
https://<your-domain>/<catalog-prefix>/PBAC-PEPTIDE-GLP1-GLP1R-ED2-FULL-V1/
```

The public entry page should be:

```text
https://<your-domain>/<catalog-prefix>/PBAC-PEPTIDE-GLP1-GLP1R-ED2-FULL-V1/wrapper/index.html
```

## Required Files

Upload every file in this package. At minimum, verify these root files exist after upload:

```text
upload_manifest.json
package_hash_manifest.json
artifact_index.json
citation.json
sample_assets.json
UPLOAD_INSTRUCTIONS.md
wrapper/index.html
wrapper/downloads.html
wrapper/sample-assets.html
wrapper/citation.html
```

Also upload the complete `artifacts/` tree, including Parquet shards, JSONL.gz audit shards, hash files, source references, enablement packet, FASTA, and sequence-to-shard index files.

## DigitalOcean Spaces Example

With an S3-compatible client configured for your Space:

```bash
aws s3 sync <package-dir>/ s3://<space-name>/<catalog-prefix>/PBAC-PEPTIDE-GLP1-GLP1R-ED2-FULL-V1/ --endpoint-url https://<region>.digitaloceanspaces.com --acl public-read
```

Use the region matching your Space, such as `nyc3`, `sfo3`, `ams3`, `sgp1`, `fra1`, or `blr1`.

## Content Types

Set ordinary static content types where your uploader supports it:

```text
.html        text/html; charset=utf-8
.json        application/json; charset=utf-8
.jsonl.gz    application/gzip
.parquet     application/vnd.apache.parquet
.fasta       text/plain; charset=utf-8
.md          text/markdown; charset=utf-8
.txt         text/plain; charset=utf-8
```

## After Upload

1. Open the public `wrapper/index.html` URL.
2. Confirm `upload_manifest.json`, `package_hash_manifest.json`, and `wrapper/downloads.html` are reachable.
3. Confirm `artifacts/sequence_shard_index.jsonl.gz` and `artifacts/sequence_shard_index_manifest.json` are reachable.
4. Capture independent date evidence for the public URL, such as an archive snapshot or other timestamped public record.
5. Do not edit uploaded files in place. Publish corrections as a new immutable prefix with a new manifest and hashes.

## Local Validation Command

Before and after uploading, the local package should validate with:

```bash
python3 src/build_peptide_release_package.py validate <package-dir>
```

Manifest summary:

```text
catalog_id = PBAC-PEPTIDE-GLP1-GLP1R-ED2-FULL
release_id = PBAC-PEPTIDE-GLP1-GLP1R-ED2-FULL-V1
row_count = 1260848
backbone_count = 157606
shard_count = 79
artifact_count = 248
```
