ADJCJH's picture
Add in-app submit checklist panel
6609140 verified
|
Raw
History Blame Contribute Delete
6.18 kB
# ProofFrame Technical Spec
## Architecture
```text
Browser UI
|
FastAPI app
|-- Campaign service
|-- Generation service
| |-- MockMediaProvider
| |-- GenblazeMediaProvider
|-- Storage service
| |-- LocalStorageBackend
| |-- B2StorageBackend
|-- Manifest service
|-- Submission gate service
|-- SQLite repository
```
## Data Model
### Campaign
- `id`
- `title`
- `brief`
- `audience`
- `tone`
- `created_at`
### Asset
- `id`
- `campaign_id`
- `kind`: image, video, audio, text
- `status`: draft, approved, rejected
- `prompt`
- `provider`
- `model`
- `storage_backend`
- `storage_key`
- `public_url`
- `sha256`
- `generation_metadata`
- `risk_note`
- `created_at`
### Manifest
- `manifest_version`
- `campaign`
- `assets[]`
- `exported_at`
- `app_version`
## API Draft
| Method | Path | Purpose |
| --- | --- | --- |
| `GET` | `/` | Serve the Proof Ledger browser UI. |
| `GET` | `/api/health` | Runtime health and adapter availability. |
| `GET` | `/api/submission/gate` | Return fail-closed final submission readiness for task gates, Devpost packet, live proof evidence, and final report artifacts. |
| `GET` | `/api/judge/brief` | Return the public-safe judge brief artifact that powers the first-screen Judge Brief panel. |
| `GET` | `/api/judge/crosswalk` | Return the public-safe judge criteria crosswalk artifact that powers the first-screen Criteria Crosswalk panel. |
| `GET` | `/api/judge/recording` | Return the public-safe recording runbook artifact that powers the first-screen Recording Runbook panel. |
| `GET` | `/api/judge/devpost` | Return the public-safe Devpost form kit artifact that powers the first-screen Devpost Kit panel. |
| `GET` | `/api/judge/submission-checklist` | Return the public-safe Devpost submission checklist artifact that powers the first-screen Submit Checklist panel. |
| `POST` | `/api/campaigns` | Create campaign. |
| `GET` | `/api/campaigns` | List campaigns. |
| `POST` | `/api/campaigns/{id}/generate` | Generate variants. |
| `POST` | `/api/demo/judge-packet` | Create a one-click judge-ready local demo packet. |
| `POST` | `/api/assets/{id}/status` | Approve/reject asset. |
| `GET` | `/api/campaigns/{id}/manifest` | Return manifest JSON. |
| `POST` | `/api/campaigns/{id}/export` | Export packet. |
| `GET` | `/api/campaigns/{id}/packet.zip` | Download manifest, README, and available local media as an evidence packet. |
## Review Console
The browser UI includes local-only review operations over the in-memory asset set:
- scorecard counts for total, approved, draft, rejected, and decision coverage
- status filter for all/draft/approved/rejected
- search across prompt, provider, model, storage backend, storage key, checksum, and risk note
- copy-safe evidence summary that includes campaign id, counts, backend names, first checksum, and storage key, but no credentials or signed URLs
## Submission Gate Dashboard
The browser sidebar includes a final gate panel backed by `GET /api/submission/gate`:
- required final tasks: T020, T021, T040, T041, T041A, and T042
- Devpost packet presence and claim mode
- final live proof evidence status for B2 storage plus Genblaze generation
- final report artifacts for secret scan, submission audit, and Devpost submission receipt
- next-action copy for whichever final blocker remains first
The gate intentionally stays in `pre_live_safe` mode until all required tasks are done, `docs/assets/final-live-proof-evidence.json` proves B2 plus Genblaze with nonempty sanitized object/checksum fields, and the final secret scan, submission audit, and Devpost receipt reports all declare the expected schema with `ok=true`.
## Storage
Local mode:
- Writes media and manifests under `var/storage`.
- Used by tests, demo fallback, and contributors without credentials.
B2 mode:
- Uses S3-compatible settings:
- `B2_ENDPOINT_URL`
- `B2_S3_ENDPOINT_URL` as an accepted alias
- `B2_BUCKET`
- `B2_KEY_ID`
- `B2_APPLICATION_KEY`
- `B2_APP_KEY` as an accepted alias
- Credentials are environment-only.
- If required variables are missing, B2 mode must be unavailable rather than silently falling back during final verification.
- Current status: code-level backend and fake-client tests exist. Live B2 bucket verification is still required before public submission claims.
## Generation
Mock mode:
- Creates deterministic SVG/PNG-like artifacts and metadata from the prompt.
- Guarantees repeatable tests.
Genblaze mode:
- Uses the official Genblaze `Pipeline` API with `GMICloudImageProvider`.
- Records provider/model/run/manifest metadata in the manifest without storing raw provider URLs.
- Must never persist raw secrets.
- Current status: code-level provider path exists and fails closed without packages/config. Live official Genblaze package/provider route is still required before public submission claims.
## Frontend Direction
The selected interface is Proof Ledger, a restrained audit-and-approval board for media approvals:
- Dense but calm asset ledger.
- Visible storage and manifest details.
- Strong first-viewport product signal: ProofFrame, campaign status, asset packet.
- No generic purple AI hero.
- Use an `index.html` entry file.
- Include subtle "Created By Deerflow" signature as required by the frontend-design skill when generated frontend code is added.
## Security
- `.env` is ignored.
- Provide `.env.example`.
- Add a secret scan before final submission.
- Do not print full storage keys or signed URLs in test logs unless sanitized.
## Verification Gates
- Unit tests for task ledger, manifest, storage adapters.
- API smoke for `/api/health`.
- Browser smoke for create/review/export happy path.
- Docker build and local run.
- Submission audit against Devpost requirements.
- Submission gate API and UI checks.
- Schema-stamped judge crosswalk from official criteria to evidence, safe claims, final gates, and demo shots.
- No-secret final rehearsal checklist before credential entry and Devpost submission.
- No-secret Devpost web submission checklist before pressing the final submit button.
- Public demo video URL check for token-free, reachable final video evidence.