Before you begin
A Python-capable developer or technical team is recommended. The checked baseline is Linux/Python 3.13.16 with a maintained JavaScript browser. This is one operator/workspace with no accounts, collaboration, persistent history or scheduling optimizer.
Your four tables and intent produce deterministic review notes and a draft—not organizational sign-off, legal/compliance certification or authorization to execute. BYOM is not applicable; there is no AI/provider/connector.
1. Check the source release before extracting
This source edition remains in preparation. When an approved purchase becomes available, obtain the exact archive and signed manifest through your account library. Verify the whole ZIP signature and digest using the separately trusted Store verifier and independently confirmed public-key fingerprint. A key or hash inside the archive cannot authenticate itself.
The standard conditional source license covers the eligible purchased release for the purchasing organization’s internal use. Hosted infrastructure, provider accounts, future major releases, unlisted support, commercial services for third parties and source redistribution are not included. Third-party dependency rights remain separate.
Download the standalone archive verification helper
Download the Store release public key; confirm its fingerprint independently
A passed metadata field, screenshot, filename or native source fingerprint is not permission to distribute software or proof of production suitability.
2. Install and open the actual workbench
Use an external environment and approved package source. No interpreter/browser/model is bundled. The reference .env.example is not automatically loaded.
- Open http://127.0.0.1: 6251 on the same machine. The new fictional Community workshop renewal plan contains 4 roadmaprows, 3 relevantrows and a 3.6/5 human-weighted score.
- Edit the title to Community workshop renewal — reviewed draft. Inspect project intent, Roadmap, RACI, Dependencies and Scorecard.
python3.13 -m venv ../pt-charter-env
../pt-charter-env/bin/python -m pip install --require-hashes -r requirements.txt
PYTHONDONTWRITEBYTECODE=1 ../pt-charter-env/bin/python run.py
The supplied Waitress entry binds loopback with 4 threads / 24 connections and a 30 second channel timeout. Choose another unused CHARTER_PORT if required; stop only your owned process. Do not expose the demo backend.
3. Repair a responsibility gap and validate
- In the WK-02 RACI row, change Operations from C to A. Select Validate & refresh draft. The exactly-one-accountable-role note disappears for that row while other review notes remain.
- Set WK-01 End to 2025-01-01 and validate. The end-before-start request is rejected while the supported browser keeps current edits. Restore 2026-11-06 and validate.
- Use Add row/Remove for controlled source tables. Narrow layouts scroll each table within its own boundary. Validation freezes browser edits during the request to avoid replacing later changes with an older response.

Review notes flag selected roadmap availability/ownership/schedule, missing or ambiguous RACI accountability, unresolved dependencies and absent sponsor. They are not exhaustive completeness rules.
4. Save and restore a portable project
Save project JSON validates the current editor and downloads charter-project.json. Keep it in protected storage. Import project JSON asks before replacing edits, validates the entire format and restores the editor only after success.
The exact format pt-charter-project-1 contains only format, project, tables. Project fields are title, purpose, sponsor, in_scope, out_scope, assumptions, success_measures. Title/purpose are required; title/sponsor 160 characters, otherfields 3000. JSON is limited to 160,000 bytes; duplicate/nonfinite/deep invalid input and invalidUnicode are rejected.
There is no autosave, localStorage or app-managed database. Refresh/navigation/restart can lose unsaved page edits. Export JSON before leaving; downloaded HTML is not an editable backup. Browser leave warnings are a convenience, not recovery.
5. Import a plain four-sheet workbook
Roadmap columns: ID, Workstream, Capability, Target, Availability, Team, Status, Start, End, Relevant. RACI: Roadmap ID, Area, Delivery, Operations, Sponsor, Notes. Dependencies: Roadmap ID, Dependency, Owner, Status. Scorecard: Criterion, Weight, Score, Notes.
Workbook limits: 2,000,000 compressedbytes, 64 ZIPentries, 16,000,000 expandedbytes, 4,000,000 bytes perpart. Plain XML/relationships only; formulas/errorcells, macros, embeddedbinaries, external links, duplicates/traversal and extra sheets are rejected. Roadmap/RACI/Dependencies 100 rows each; Scorecard 20; cells 1000 characters. Actual streamed rows/columns are checked independently of worksheet dimension hints.
A supervised Linux parser child has a 15 second parent deadline and child alarm; its own process group is killed/reaped on timeout. Workbook bytes are not extracted to supplied paths. Multipart/OS temporary spooling and host swap/logs remain your deployment responsibility. Bounds are not an OS sandbox or memory quota.
- Download synthetic workbook to create a fresh neutral .xlsx schema. Edit that generated copy; no original workbook is included.
- Use exactly Roadmap, RACI, Dependencies, Scorecard sheets and exact generated headers. Keep dates as plain YYYY-MM-DD text and formulas as plain approved values.
- Select the .xlsx and Validate & replace tables. Confirm replacement only after saving your current project. All 4 tables replace after complete validation; current project intent stays.
6. Understand the table and score contract
Roadmap IDs must be unique 1–40 character ASCII alphanumeric/hyphen/underscore. Capability required; Relevant Yes/No; Availability Available/Gap/Unknown; Status Not started / In progress / Done / Blocked. Start/End are blank or exact ISO dates; end cannot precede start.
RACI and Dependencies must reference a supplied roadmap ID. RACI roles are blank, R, A, C, I or RA; each relevant area needs exactly one A/RA role to clear that review note. Participation counts all supplied RACI rows, including non-relevantroadmap IDs—not unique people or staffing. Dependencies use Open/Resolved; open notes remain even for non-relevant rows.
Scorecard requires criterion, wholeweight 0–100 and score 1–5. The mean appears only if totalweight 100; otherwise withheld. Default 60×4+40×3 yields 3.6/5. This is human-entered planning input, not a calibrated probability, valuation or investment recommendation.
7. Export a full draft deliberately
- Inspect current source and unresolved notes. Check the acknowledgment only after human review. Any edit clears the checkbox.
- Select Download draft charter HTML. The server revalidates the data and includes every supplied row—no representative subset silently selected.
- Open the self-contained HTML locally, check intent/scope/snapshots/decisions and all 4 source tables, then keep it private. It has escaped text, fixed inline CSS, no script, external asset or network integration.

Local acknowledgment is not trusted identity, timestamp, electronic approval or organizational sign-off. Browser Print is available; PDF layout/output has not been qualified.
8. Optional local command line
Use a privately saved validated project JSON and a new output path. Optional workbook replaces all 4 table sets using the same supervised parser. Existing output files are refused; the CLI sends nothing to ProgreTech or a model.
../pt-charter-env/bin/python cli.py --project /private/path/charter-project.json --output /private/path/new-draft.html
../pt-charter-env/bin/python cli.py --project /private/path/charter-project.json --workbook /private/path/synthetic-charter.xlsx --output /private/path/another-new-draft.htmlPaths are local operator choices, not hostile-filesystem or symlink/TOCTOU isolation. Review every generated draft.
9. Configure buyer-owned private HTTPS
Leave the backend loopback/firewall inaccessible to other machines. Set CHARTER_MODE=private, exact CHARTER_HOST, CHARTER_USER and a random CHARTER_PASSWORD of 24+characters through protected process configuration/secret management. Missing required values refuse startup.
Private Host / HTTP checks run before shared Basic access. Every POST also needs exact same-origin Origin and signed-session CSRF. Sessions contain only the CSRF token; app records are not stored there.
Enable CHARTER_TRUST_PROXY=1 only for exactly one isolated TLS gateway that strips incoming forwarded headers and sets the trusted protocol. A reachable backend around the proxy defeats that assumption. No forwarded host/client trust is enabled.
One Waitress process is the checked private baseline. The signing secret randomizes per process/restart; multiple independent processes without sticky sessions are unsupported. Reload safely after 403, first preserving your project JSON. Basic credentials may remain cached until closing the protected browser profile.
There are no individual users, roles, MFA, logout or revocation UI or buyer SSO. Buyer certificate/firewall, logs, host quotas, rate limits and confidential input handling require separate qualification.
10. Keep a recoverable working copy
Retain validated project JSON, verified release/manifest/locks, private authored workbooks if applicable and buyer configuration references. Protect actual secrets separately. No app-managed retention/backup scheduler exists. BrowserRAM/serverRAM/request temporary files/OS swap/downloads remain in your privacy boundary.
For restore, run a fresh verified source/environment on another unused loopback port, import a knownJSON, validate and compare exact title/rows/RACI/score before trusting it. Export drafts separately.
For upgrade/rollback, stop the owned server, close editing tabs, keep the old verified source, environment and compatible JSON and test a new version in isolation. There are no 1.0.0 database migrations and no future-schema guarantee.

Watch the short authentic synthetic charter workflow recording
Troubleshooting: 400—check exact schema/Host/TLS; 401—check private operator credentials; 403—preserve edits then reload CSRF / use the exact Origin; 413—reduce bounds; workbook deadline—simplify input/qualify host capacity. Use a current JavaScript browser or CLI. Contact info@progretech.com with a version and a new synthetic reproduction; never send credentials or confidential plans. No unlisted SLA, approval or production guarantee is included.