| name | submission-package |
| description | Assemble and validate a local submission package against supplied evidence and the journal pack selected by the Pi extension. Use after pre-review and revision closure to create a traceable file manifest, declaration audit, rule checks, and a human-upload gate without submitting externally. |
Submission Package
Create a local, inspectable package. Never upload, submit, accept terms, send
messages, or change an external account.
Preconditions
Require:
- the manuscript version selected for submission;
- required supplements, tables, figures, and reporting artifacts when
applicable;
- valid
evidence-ledger.json;
- pre-review status
READY_FOR_PACKAGE;
- revision ledger and change log when the manuscript was revised;
- one valid active journal pack injected by the extension.
If a precondition is absent, invalid, blocked, or unresolved, set the package
verdict to BLOCKED. Do not synthesize a missing file or declaration.
Canonical manifest
Create submission-package/manifest.json using
../../templates/submission-package-manifest.json. Minimum fields:
- top level:
schema_version, status, journal_pack, files[],
declarations[], rule_checks[], unresolved_gates[], and verdict;
- journal pack:
id, verified_as_of;
- file:
path, role, sha256, size_bytes, upload;
- declaration:
declaration_id, status, evidence_anchor;
- rule check:
rule_id, status, evidence_anchor, checked_at;
- unresolved gate:
gate_id, status, required_action.
Use schema version pi-research/submission-package-manifest/1.x. Top-level
status is ready_for_human_upload, partial, or blocked; verdict is
READY_FOR_HUMAN_UPLOAD, PARTIAL, or BLOCKED, and the two must agree.
Declaration status is confirmed, not_applicable, unresolved, or
missing; only the first two can pass. Rule-check status is pass,
manual_confirmed, not_applicable, unresolved, or fail, and the manifest
must cover every rule in the active journal pack. A ready manifest has no
unresolved gates.
Use relative, package-contained paths. Record a digest only when actually
computed. The validator checks structure and traceability, not scientific truth
or publisher acceptance.
Create a human-readable mirror from
../../templates/submission-package-manifest.md.
Workflow
- Freeze the active journal pack ID and its verification date.
- Inventory candidate files and reject paths outside the package.
- Assign one role to each upload file and detect missing, duplicate, empty,
unreadable, or ambiguous files.
- Compute size and digest when the local tool succeeds.
- Audit declarations without filling them.
- Run only checks supported by the active pack and actual local tools.
- Preserve approximate, conditional, currentness, and manual requirements as
manual gates.
- Ensure no internal logs, credentials, caches, private notes, raw review
traces, or unrelated files enter the upload set.
Fail-closed verdict
READY_FOR_HUMAN_UPLOAD: required files are present and traceable, all hard
checks pass, and only named human upload checks remain;
PARTIAL: a useful package inventory exists but non-blocking manual
assessment remains incomplete;
BLOCKED: any required file, declaration, hard rule, traceability item,
parsing step, or validator check is missing or failed.
An unresolved blocking gate can never be declared ready. Do not auto-repair or
silently remove source files.
Call record_checkpoint with the final verdict and strongest unresolved gate.
Prefix the statement with [submission-package/manifest.json].
Output
Return the canonical manifest path, Markdown mirror, upload-file inventory,
blocked items, manual checks, and explicit statement that no external
submission occurred.