A fully offline, single-file browser tool for editing IPMDAR Contract Performance Dataset (CPD) files. Built for program control professionals who need to review and modify Work Package earned value techniques, Control Account attributes, and other CPD metadata — then re-export a clean .zip — without installing software or transmitting data over a network.
This tool runs entirely in your browser. No data ever leaves your machine.
- Zero network activity — JSZip and all application code are embedded directly in the HTML file. No CDN calls, no API requests, no telemetry, no analytics. Once the page loads, you can disconnect from the internet entirely.
- No server component — There is no backend. All file parsing, editing, validation, and ZIP generation happen client-side in browser memory.
- Nothing is stored — No cookies, no
localStorage, nosessionStorage, no IndexedDB. When you close the tab, everything is gone. - Safe for sensitive data — Designed for use with CUI (Controlled Unclassified Information), ITAR/EAR export-controlled data, proprietary contractor data, and other sensitive program information. Your CPD files are never uploaded, cached, or exposed to any external service.
You can verify this yourself: open the HTML file in a text editor — every line of code is readable, and you will find no external URLs, tracking pixels, or network calls of any kind.
- Open
ClearPlan_CPD_Editor.htmlin any modern browser (Chrome, Edge, Firefox, Safari). - Load a CPD
.zipfile by dragging it onto the upload area or clicking to browse. - Edit Control Accounts and Work Packages using the tabbed interface.
- Validate your changes against the IPMDAR specification.
- Export an updated
.zipfile with your edits applied.
That's it. No installation, no accounts, no configuration.
- Toggle Summary-Level Planning Package (SLPP) designation
- Edit name, manager, and all date fields (baseline, forecast, actual start/end)
- Edit custom field values (FIELD_01 through FIELD_10)
- Filter by WBS element; search by name, ID, or manager
- Sortable columns
- Assign Earned Value Techniques from the full IPMDAR enumeration (Milestone, Percent Complete, LOE, 0/100, 50/50, Apportioned Effort, etc.)
- Toggle Planning Package designation
OtherEarnedValueTechniquedescription field auto-appears for OTHER_DISCRETE and FIXED_X_Y- Edit name, dates, and custom fields
- Filter by Control Account
- Add new Work Packages — even to CPD files that don't yet contain a
WorkPackages.json
Checks against the IPMDAR v1.0 specification, including:
- Date consistency (start ≤ end for all date pairs)
- WBS/OBS leaf-node verification for Control Accounts
- Earned Value Technique enum validity
OtherEarnedValueTechniqueconditional enforcement (must be set for OTHER_DISCRETE / FIXED_X_Y; must not be set otherwise)- Planning Package EV Technique warnings
- Duplicate ID detection
- Required field checks
- Custom field definition/value cross-referencing
Enables repeatable edits across successive CPD deliverables:
- Save Changeset — Exports a
.cpd-changeset.jsonfile capturing every field-level edit you made, keyed by entity ID - Import Changeset — Loads a previously saved changeset against a new CPD file
- Review & Approve — Modal diff view showing old → new values, match/mismatch status for every entity ID, and summary statistics
- Apply — One-click approval applies all matched changes; unmatched IDs are flagged and skipped
On launch, the tool verifies browser capabilities (File API, Blob support, JSZip availability) and displays a checklist. If any requirement isn't met, actionable troubleshooting guidance is shown.
┌─────────────────────────────────────────────────────────┐
│ ClearPlan_CPD_Editor.html │
│ (~195 KB, single file) │
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌────────────────┐ │
│ │ JSZip 3.10 │ │ App CSS │ │ App JavaScript│ │
│ │ (embedded) │ │ (embedded) │ │ (embedded) │ │
│ │ 97 KB │ │ ~12 KB │ │ ~85 KB │ │
│ └──────┬───────┘ └──────────────┘ └───────┬────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ZIP read/write Parsing, editing, validation │
│ (client-side) diffing, changeset engine │
│ │
│ ┌────────────────────────────────────────────────────┐ │
│ │ Browser (runtime environment) │ │
│ │ File API ──▶ ArrayBuffer ──▶ JSZip ──▶ JSON parse │ │
│ │ User edits ──▶ State mutation ──▶ Validation │ │
│ │ Export ──▶ JSZip generate ──▶ Blob ──▶ Download │ │
│ └────────────────────────────────────────────────────┘ │
│ │
│ ▲ │ │
│ │ ▼ │
│ ┌────┴─────┐ ┌──────┴──────┐ │
│ │ CPD .zip │ │ CPD .zip │ │
│ │ (input) │ │ (output) │ │
│ └──────────┘ └─────────────┘ │
│ │
│ ┌──────────────┐ ┌──────────────────┐ │
│ │ Changeset │◄─────────▶│ Changeset │ │
│ │ .json import │ │ .json export │ │
│ └──────────────┘ └──────────────────┘ │
└─────────────────────────────────────────────────────────┘
Network: NONE (fully air-gapped capable)
- User drops a CPD
.zipfile onto the page File.arrayBuffer()reads the raw bytes into browser memory- JSZip parses the ZIP archive and extracts each JSON file
- JSON files are parsed into JavaScript objects held in application state
- A deep copy of the original state is retained for change tracking
- User edits mutate the working state; the UI re-renders from state
- The validation engine compares state against IPMDAR v1.0 rules
- On export, JSZip re-serializes all JSON files and generates a new ZIP blob
- The browser triggers a file download from the blob — no upload occurs
- The diff engine compares current state against the original snapshot field-by-field
- Changes are serialized as a structured JSON document keyed by entity IDs
- On import, each changeset entry is matched against the current CPD by ID
- Unmatched IDs are flagged; matched changes are previewed in a diff view
- On approval, changes are applied to the working state in a single pass
This tool reads and writes CPD files conforming to the IPMDAR Contract Performance Dataset Version 1.0 specification (March 2020), including:
FileType.txt— verified on load, written on export asIPMDAR_CONTRACT_PERFORMANCE_DATASET/1.0- All 24 JSON file entries defined in the File Format Specification
- Singleton tables (DatasetConfiguration, DatasetMetadata, SourceSoftwareMetadata, ContractData) preserved as single objects
- Array tables preserved with record ordering
- Null/empty field omission per the JSON conventions in the spec
- Files for empty tables are omitted from the exported ZIP per spec
Files that this tool does not edit (performance data tables like BCWS_ToDate, BCWP_ToDate, ACWP_ToDate, etc.) are passed through byte-for-byte from input to output.
| Browser | Status |
|---|---|
| Chrome / Chromium 80+ | ✅ Fully supported |
| Microsoft Edge 80+ | ✅ Fully supported |
| Firefox 78+ | ✅ Fully supported |
| Safari 14+ | ✅ Fully supported |
| Internet Explorer | ❌ Not supported |
The tool includes a File.arrayBuffer() polyfill for older browser builds that support FileReader but not the newer ArrayBuffer API.
| File | Purpose |
|---|---|
ClearPlan_CPD_Editor.html |
The complete tool — open in any browser to use |
README.md |
This file |
This is a single HTML file. You can distribute it by:
- Emailing it as an attachment
- Hosting it on a SharePoint or internal file share
- Committing it to a Git repository
- Placing it on a USB drive
No build step, no package manager, no dependencies to install. Recipients double-click the file and it works.
JSZip is dual-licensed under the MIT License and GPLv3.
Built by ClearPlan, LLC — the absolute go-to company for effective program planning and control solutions.