Skip to content

V48 Gate 4 (spec-impl): Depositor packs finalization - #251

Merged
geraldarthurdavis merged 19 commits into
version/v48from
v48/gate-4-depositor-packs-finalization
Jul 31, 2026
Merged

V48 Gate 4 (spec-impl): Depositor packs finalization#251
geraldarthurdavis merged 19 commits into
version/v48from
v48/gate-4-depositor-packs-finalization

Conversation

@geraldarthurdavis

Copy link
Copy Markdown
Contributor

Summary

Closes the Gate 4 depositor website + packs measurement surface after Gate 3 deposit SDIVF:

  • Batch admit reliability: depositor-confirmed options admit even when compensation/ROI is soft-incomplete; critical source still hard-blocks. UI only shows “Admitted” when receipt is admitted-to-depository.
  • Per-pack admission ledger: one execution row per admitted option with that option’s absolute measurements — never the session admission report (candidateCount / admittedCount / report root as fake measurements).
  • Deposit detail reload: cold reload of a synthesis run rehydrates options from history without requiring live SSE match.
  • Depositor review: patchfile download (path-op JSON) + full roots/details on option cards.
  • Packs: absolute catalog chips/detail; strip session aggregates; flatten depository admission measurements in /api/packs/activity; no patch on network packs.
  • Read start: patchfile download + clearer neediness display on ReadsOptionCard.
  • Spec/QA: Gate 4 objectives + Gate 5 plan in NOTES; live defect class + monitor run e359b78a-7c73-49bb-a54b-35e32dd1ef94 in QA ledger.

Live monitor

Deposit synthesis e359b78a-7c73-49bb-a54b-35e32dd1ef94 on staging-testnet is being monitored while this PR is open. When terminal, verify optionCount ≥ 1 with absolutes, then admit all selected → N packs rows with absolute chips only.

Test plan

  • deposit admission package tests (soft-compensation admit)
  • depositAdmissionActivity + packActivityModel + depositPageClient
  • uapi tsc --noEmit + lint
  • Live: complete run e359 → admit N selected → N packs with absolute chips
  • Live: reload synthesis detail → options + telemetry + admitted cards
  • Packs detail never shows Candidate count / Admitted count as measurements
  • Patchfile download on /deposits; no patch body on /packs network detail

Resolve tool constructor names from path tool:Name, stream stubs,
and host telemetry; title tool-use rows as that name, not "tool".
Drop raw backticks around tool:Name in a comment inside the embedded
live pipeline runner template so SWC/Vercel can parse the host file.
Finish depositor batch admit and packs measurement projection:
per-option ledger rows with absolute catalog chips, no session
candidate/admitted counts on pack detail, soft compensation
no longer drops confirmed deposits, deposit synthesis reload
rehydrates options, patchfile download on deposit/read review
only (never network packs). Gate 4/5 plans recorded in NOTES/QA.
Point /api/deck at .bd/the-pitch.pdf (application/pdf) instead of the
Keynote package; keep .key for authoring only.
Track .bd/the-pitch.pdf as the served pitch-deck SoT for /api/deck.
Keep ProductDetailStage stageKey stable across compose → synthesize so
source pickers and entrance motion do not remount on CTA click.
Project depository admission rows with per-pack absolute
measurements flattened onto context/output and strip legacy
session aggregates. Record live monitor run e359b78a.
@geraldarthurdavis
geraldarthurdavis requested a review from a team July 20, 2026 16:54
@vercel

vercel Bot commented Jul 20, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
bitcode Ready Ready Preview, Comment Jul 20, 2026 6:15pm

Align Gate Quality PR title validation with AGENTS
abbreviated categories (spec-only|impl-only|spec-impl).
Live sandbox deposit completed with 3 measured options;
operator admit→packs verify remains for closure.
docs:refresh openapi drift so docs-refresh CI stays green.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: cbb8f03482

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +402 to +405
const expectsOptions =
run.contextSource === "deposit-option-synthesis" ||
String(run.type || "").includes("deposit") ||
/deposit|asset.?pack|synthes/i.test(String(run.summary || ""));

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Limit option hydration to synthesis rows

When a completed non-synthesis AssetPack row is selected (for example a read-settle-asset-pack execution or an admission/history row whose summary contains “AssetPack”), this heuristic sets synthesisRunExpectsOptions even though the row has no output.depositOptionSynthesis. The resume effect then fetches that history row, finds no synthesis payload, and marks the deposit detail as failed instead of showing a telemetry-only detail; the previous check only opted in deposit-option-synthesis rows. Please keep this broad fallback from matching non-synthesis AssetPack activity.

Useful? React with 👍 / 👎.

Comment on lines 91 to +95
if (input.evaluation.compensation.state !== 'eligible-if-approved-and-selected') {
blockers.push('compensation-route-repair-required-before-admission');
if (depositorApproved) {
warnings.push('compensation-route-not-fully-eligible');
} else {
blockers.push('compensation-route-repair-required-before-admission');

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep soft-incomplete deposits unsettled

For depositor-approved options with an incomplete compensation route, these lines now admit the pack and the receipt later records compensationState: "not-eligible-for-compensation". The Packs ownership filter uses depositPackLooksSettled() and treats any state containing compensat as settled, so these newly admitted-but-unsettled packs will disappear from my-deposited-unsettled and show under my-deposited-settled. Please either avoid emitting a compensation-looking state for open inventory or tighten the settled predicate before admitting this new state.

Useful? React with 👍 / 👎.

P0–P2: synthesis detail stays on parent run after admit;
packs Kind + BTD estimate columns; path-op patchfile
download; measurement descriptors; DIV pass badge;
admitted policy honesty copy.
Avoid false "options not found" when status completes
before depositOptionSynthesis is visible on history GET.
Deposit /deposits showed false "options not found" after
a successful SDIVF Finish because two layers mixed signals:

Shared (deposit+read synthesis streams):
- ExecutionStreamAdapter mapped store key "completion"
  (e.g. finish/completion) to terminal stream completion
- That closed the client mid-run before product output

Deposit-only product close + hydrate:
- finalizeExecutionRow must write depositOptionSynthesis
  before emitEvent(completion, {depositOptionsReady,...})
- Deposit UI hydrates from row/event envelope first;
  history GET retry is fallback only

Proof: execution-stream-adapter + deposit hydrate tests
Guide deposit synthesis: Finish store ≠ product terminal;
shared stream-adapter law; deposit hydrate order.
Add knowledge-in-a-box AssetPack icon. Marketing strip: BTD + AssetPack
(green) exchange BTC/ETH/SOL triangle with brand glows; title Code/Coin.
Ship public SVGs used by the marketing Code/Coin exchange triangle.
Bitcode-side C + AssetPack use 2-size slots; chain triangle stays
smaller 3-size so the pair reads larger than the coin stack.
Restore chain triangle to full optical size; enlarge C + AssetPack
further and use left corner free space (wider badge padding).
Spell out which close/hydrate laws are deposit-only
and which stream-adapter rules apply to all synths.
@geraldarthurdavis
geraldarthurdavis force-pushed the v48/gate-4-depositor-packs-finalization branch from 5d45fe6 to 34ee36a Compare July 20, 2026 18:12
@geraldarthurdavis
geraldarthurdavis merged commit 34ee36a into version/v48 Jul 31, 2026
29 of 31 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant