Overview
Content operations ensure data integrity across entries, protected assets, and curated collections before deployment. This guide covers:- Entry auditing: Runtime validation and inventory checks
- Asset coverage: Protected asset validation
- Curation validation: Catalog and home featured checks
- Doctor tool: Health checks and repair workflows
Entry Auditing
Thedex entry audit command validates entries against runtime requirements and inventory models.
Audit Single Entry
- ✅ Runtime markers: Required DOM elements and auth trio
- ✅ Script IDs:
dex-sidebar-config,dex-manifest, etc. - ✅ Token validation: Lookup numbers and asset references
- ✅ Recording index refs: PDF, bundle, and source URL tokens
- ✅ Forbidden patterns: No legacy Squarespace/Auth0 blocks
- ✅ Download tree: Coverage model for all selected buckets
Audit All Entries
entries/ directory. Legacy entries (without entry.json) are skipped by default.
Include Legacy Entries
Inventory-Only Check
Validate download tree coverage without runtime checks:- Checking manifest coverage before publishing
- Validating protected asset mappings
- Debugging missing download IDs
Custom Paths
Override default file paths:Entry Doctor
Thedex doctor command scans for drift and health issues, with optional repair.
Interactive Doctor (TUI)
Up/Down: Select entry report- Type: Filter by slug
Ctrl+S: Repair selected entryEsc: Back to dashboard
- ✅ OK entries: No issues detected
- ⚠️ Warnings: Non-critical drift (stale HTML, missing files)
- ❌ Errors: Critical failures (missing
entry.json, schema invalid)
Non-Interactive Doctor
Run in CI/CD or automated pipelines:Common Doctor Warnings
STALE HTML: index.html differs from deterministic regeneration
STALE HTML: index.html differs from deterministic regeneration
Cause:
The entry’s Or use the Update wizard:
index.html doesn’t match what would be generated from current entry.json and template.Solution:
Repair the entry to regenerate HTML:manifest normalization drift detected
manifest normalization drift detected
Cause:
The
manifest.json structure doesn’t match current normalization rules (missing buckets, wrong format keys).Solution:
Repair normalizes the manifest automatically:auth trio missing from index.html
auth trio missing from index.html
Cause:
The generated HTML is missing required authentication scripts:
/assets/vendor/auth0-spa-js.umd.min.js/assets/dex-auth0-config.jsor/assets/dex-auth-config.js/assets/dex-auth.js
legacy Auth0 blocks still present
legacy Auth0 blocks still present
Cause:
Old Auth0 HTML markers remain:
<!-- Auth0 -->id="btn-login"id="btn-profile-container"
bucket X has no populated download ids
bucket X has no populated download ids
Cause:
A selected bucket (A, B, C, D, E, X) has no audio or video download IDs in the manifest.Solution:
Either:
- Populate the bucket in
manifest.json: - Remove the bucket from selected buckets:
looks like URL/path, expected plain drive id
looks like URL/path, expected plain drive id
Cause:
A manifest entry contains a URL or path instead of a plain Google Drive ID:Solution:
Extract the plain ID:
unknown tags: experimental, unreleased
unknown tags: experimental, unreleased
metadata.sampleLength missing
metadata.sampleLength missing
Cause:
Entry metadata doesn’t include
sampleLength.Solution:
Add to entry.json:Protected Assets Validation
Validate that all active catalog entries have protected asset coverage.Validate Assets
- ✅ All active catalog lookups have asset mappings
- ✅ Asset file references are valid
- ✅ No orphaned asset entries
Validate Against Remote
Diff Assets
Compare local vs remote:Catalog and Home Validation
Validate Catalog
Validate Home Featured
- ✅ All featured entries exist in catalog manifest
- ✅ Featured entries are not archived
- ✅ Schema compliance
Set Featured Entries
Reorder Featured Entries
Diff and Publish
Linking Entries to Catalog
Link an existing entry to the catalog after creation:Dry Run
Content Workflow (Canonical)
Stop conditions:
- Any entry audit
FAIL - Doctor shows critical errors
- Missing asset coverage for active lookups
- Catalog/home validation failures
TUI Managers
Interactive content management:Entry Audit Manager
Up/Down: Select inventory rowr: Rerun auditEsc: Back
Protected Assets Manager
v: Validate coveraged/f: Diff test/prodp/o: Publish test/prodb/n: Ensure bucket test/prodr: ReloadUp/Down: Lookup navigationEsc: Back
Troubleshooting
Entry audit runtime/token failure
Entry audit runtime/token failure
Error:Solution:
- Open the Update wizard:
- Correct lookup tokens and recording index refs
- Save and regenerate
- Re-run audit:
Preflight fails on missing protected coverage
Preflight fails on missing protected coverage
Error:Solution:
- Inspect missing coverage:
- Add mappings in protected assets manager (TUI) or manually edit
data/protected.assets.json - Re-run preflight:
Best Practices
Audit After Every Change
Run
dex entry audit after creating or updating entriesUse Doctor Regularly
Scan for drift weekly:
dex doctorValidate Before Publish
Always run validation commands before deploying
Inventory-Only for Assets
Use
--inventory-only to debug asset coverage issues