Skip to content

V48 Gate NA: Further commercialize - #252

Merged
geraldarthurdavis merged 954 commits into
mainfrom
version/v48
Aug 6, 2026
Merged

V48 Gate NA: Further commercialize #252
geraldarthurdavis merged 954 commits into
mainfrom
version/v48

Conversation

@geraldarthurdavis

Copy link
Copy Markdown
Contributor

No description provided.

Satisfy Json typing for email notification prefs merge, and align
interfaces/workspace panel tests with hidden defaults and new pills.
Resolve tsx from pipeline-hosts workspace paths so
Pipeliner deposit runs no longer hang on bare
node --import tsx / runtime npm install. Write absolute
stdout/stderr/exit/telemetry markers immediately so the
host always gets exit-code or early telemetry.
Make the deepest Auxillaries / orbital overlay background
fully opaque so homepage copy no longer bleeds through
the 0.98-alpha base. Keep glass shells translucent over
the solid field; drop overlay backdrop-blur when opaque.
Hot-uploaded live runners import syntheses/ paths the
v48-ee433ddc Pipeliner image lacks. Resolve current +
legacy package paths and factory aliases so deposit
bootstraps on older images; assert new layout at image
build.
tsx dynamic import of monorepo packages surfaces
factories on default/module.exports. Unwrap so the
live runner can destructure deposit/read factories.
pipelines-generics imports @bitcode/tools-generics but did
not declare it; stale Pipeliner images fail at file:// load.
Declare the dep and expand Dockerfile install filters/asserts.
After syntheses/ co-locate, deposit/read/domain typecheck
configs pointed one directory too shallow and node_modules
links were stale. Re-link and fix tsc/tsconfig paths.
Fix BitcodeTransactionsFilterBar mosaic: fixed-height
single-line labels so controls share one baseline, min-w-0
full-width triggers, and a shorter Search label.
One fullscreen OAuth page: large green center phrase
rotates Confirming proof → Sealing session → Opening
workspace. Drop kickers/headers; keep quantum background.
Rename the focus-only skip control so keyboard users
see Skip to Wallet content (etc.), not opaque support
pane jargon. Still jumps to #auxillaries-active-pane.
Propagate mutateUserData cache updates to every mounted useUserData
instance so Auxillaries chrome drops Authorize GitHub after connect
without a full page reload.
Keep explicit sourceBranch/sourceCommit through URL sync, honor short
SHA and explicit branch selection, and list repository anchors by full
repo·branch·commit package for Deposit and Read.
Extract admin clients to a leaf module so sandbox tsx file loads no
longer resolve @bitcode/supabase from inside the package. Assert the
btd→supabase link and ban package self-imports in the image build.
Link workspace packages and rewrite missing .js/dist exports to .ts so
sandbox tsx can load the deposit graph. Split LSP install layers for VCR
blob limits and stop always blaming "outdated image" on import failures.
Require branch and resolved commit before anchoring. Name anchors in the
ledger and restore the full repo·branch·commit package on Load.
Paint rich hover explainers above auxillaries and surface chrome.
Stop silent autosave on the shared prompt draft. Commit only on Save;
Undo restores the last saved text.
Verified-email modes with welcome after confirm, profile Save/Undo and
default avatars, invite deep-links that lock email on signup, and admin
role changes on the roster.
Emerald Bitcode HTML for auth, team invite, welcome, and asset-pack
notification mail.
Stop slash-regex free-var crash that masked nested import failures. Keep
the first import error over fallback ENOENT. Install repository-setup
(with zod) into the Pipeliner image for deposit clone tools.
Full workspace install, ship root tsconfig path maps, and fail image
build unless deposit/read factories load. Add host-boot smoke that
rejects asset free-var and missing-module boot failures.
Drive @bitcode/generic-llms-xai through @ai-sdk/xai and ai generateText
instead of the OpenAI client pointed at api.x.ai.
Include XAI_API_KEY and peer provider credentials in trusted host env,
prefer xAI when selecting the default model provider, and accept any
configured LLM key for real-inference gates.
Show the repository-anchor tooltip only on the icon and disable it while
the name popover is open so the portal cannot cover the name field.
Drop CSS blur and heavy layers on small running loaders so the square
orb stays crisp at telemetry sizes.
Deposit in-box host only injected BITCODE_HOST_CLONE_* env, so
XAI_API_KEY never reached the Pipeliner box despite being set on
Vercel and allowlisted on the asset-pack host route. Share
selectedPipelineHostCommandEnvironment and merge it into
runDepositInBoxHost commandEnvironment.
Product host routes only admit REAL_INFERENCE_PROFILE=bounded.
Always pin it in selectedPipelineHostCommandEnvironment so a
process/Vercel value of full does not fail preflight on deposit.
Deposit run 793f8be1 completed setup and was mid-discovery on real
xAI PTRR when PipelineHostTimeoutError hit the legacy 240s budget.
Pin BITCODE_PIPELINE_HOST_MAX_RUNTIME_MS=600000 (product preflight
ceiling) for real-inference product host creates.
Sandbox deposit only wrote structured deliverable tables and flattened
host telemetry.jsonl into status strings, so execution_events had zero
F19 formal rows and the UI showed No logs available after Setup.

Enable legacy execution_events dual-write, re-emit generation/tool and
hierarchy context from host telemetry artifacts, de-dupe formal rows,
and keep latched call-chain pills after complete/fail.
Deposit Setup OOM-killed the sandbox (exit 137) while priming tsserver
and running initialize-lsp PTRR workspace/symbol (navto) on Bitcode.
Defer long-lived language servers when checkout scale is large, skip
PTRR without a live session, and cap LSP child V8 heap.
Path-only absolute fallback never claims measured; attach
path-only measureReport. Read neediness re-plans when Need
exists and Setup plan empty; fit volumes pack-grounded.
No dual-pipeline lens; deposit|read stay separate products.
Replace JSON.stringify lexical with field-weighted scores:
commercial NL >> fixtures >> title/summary >> paths.
Ops reembed path documented; search-impl handoff was S-A2.
Read ready-to-finish no longer uses deposit validation
identity. Domain adds Need-first prompts; Need read
injects last, depository hits, and path law. Setup
ReadFitsFinding registry keys stay as compat aliases.
Record core E2E ladder in NOTES/PARITY. Lock L1 inventory and
add fail-closed contracts for depository index, read synthesize,
and settle quote (session, Need, needinesses).
Boundary-mocked deposit and read full SDIVF with pins
(honesty, Need, *-fit needinesses, productLens). Fix jest maps
for generic-llms-models and generic-tools-editing.
Mocked index upsert (commercial NL + fixtures) and hybrid
search ranking NL over paths. Reembed dry-run inventory locked.
CI-fast commercial spine: index embed, NL search,
needinesses, mock quote, source-safe checks, admit. No browser/LLM/DB.
Spine fail modes for reject, empty needinesses, thin corpus;
path-only honesty pin; crypto/UX handoff doc.
Pin bounded default vs full opt-in; host seed + resolver
tests.
Add pnpm test:mvp-core-e2e for CI-fast ladder.
Fail-closed settle rehydrate (session, ownership, indexes)
plus mock dispatch; wire into test:mvp-core-e2e.
Ship landing waitlist with optional Seller/Buyer/Builder roles
and Resend delivery through Supabase Edge Function `resend`.

- POST /api/waitlist stores marketing_waitlist (service role)
- Invokes functions/v1/resend (waitlist From, not general mail)
- Migrations: table + optional empty roles[]
- Env docs: RESEND_WAITLIST_FROM_EMAIL vs RESEND_FROM_EMAIL
- Tests: validate + route + landing surface
Source-safe packs/activity GET contracts; mine-only skips
network merge. Wire into test:mvp-core-e2e inventory.
Packs activity route contracts; spine pins admission
activity source-safe; harden normalize null payload.
Render waitlist mail from supabase/templates SSOT
instead of inlined Edge Function HTML.

- Add waitlist.html (app-mail {{var}} placeholders)
- uapi renderSupabaseEmailTemplate + route render
- Edge resend is thin: kind/to/subject/html only
- Docs + unit/route tests for render path
Add GET /api/deposit/demand-estimate route contracts:
session 401, thin-corpus estimatable=false, focus query
forwarding, and ok/estimate/signals envelope.

Document for UX handoff;
include suite in test:mvp-core-e2e.

Proof: jest depositDemandEstimateRoute + l1-inventory
Add POST /api/packs/payout/finalize fail-closed contracts:
session, settleRunId, sellerBtdBps bounds, owner-only 404,
pending/finalized 409, and happy projected split persist.

handoff for seller slider;
include suite in test:mvp-core-e2e.

Proof: jest packsPayoutFinalizeRoute + l1-inventory
Tighten landing waitlist chrome for balance.

- Add left subcopy line for optional role tags
- Drop right-side privacy footer under the form
Document opt-in LLM and Supabase operator lanes for
the closed CI-fast MVP core ladder.
Run present scripts/check-v48-gate*.mjs in ci:local after
the V48 draft family (Spec Basics flags). Align canon
workflow discovery; refresh Gate 4 depositor proof after
NOTES/PARITY digest drift.

Closes the Spec Basics gap that stayed green only locally.
Cut continuous-paint cost on the marketing shell after
waitlist height growth, without visual changes.

- Cache shell geometry; skip mouse commits when tab hidden
- Drop will-change:background on document-tall pointer glow
- contain paint layers; note law in PERFORMANCE.md
Move waitlist below the fold with scroll entrance so the
hero scroll cue is unregressed. Pause tall-shell CSS when
the tab is hidden; coalesce scroll geometry refresh.

Outbound waitlist "Open Bitcode" never embeds localhost —
defaults to https://bitcode.exchange (BITCODE_WAITLIST_SITE_URL).
Fix production POST /api/waitlist 502 after successful
insert: Vercel apps/uapi root lacked monorepo
supabase/templates, so HTML render failed before Resend.

- Ship apps/uapi/email-templates/waitlist.html
- Resolve app email-templates first, then monorepo
- NFT-include waitlist HTML for /api/waitlist
Stop inventing semantics volumes from confidence; require
host/quality signals or insufficient_evidence. Deepen
function/type multi-lang heuristics; wire execution
measureSignals; exact 65 catalog; companion core tests;
retire residual 46-kind language.

Proof: domain measure fixture + honesty suites; catalog
exact 65; semantics fail-closed core tests.
Accept promote --version V48; prepare family/runtime;
pointer-aware local CI; v48-canon-promotion workflow;
document as-is override; refresh gate4 proof.
As-is promotion: sole-complete SPEC + living product tree.
Pointer V48; residual Gate 2–3/5–10 machine matrix.
Mainnet value-bearing remains blocked.
@vercel

vercel Bot commented Aug 6, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
bitcode Building Building Aug 6, 2026 7:24pm
bitcode (staginglocal-testnet) Ready Ready Preview Aug 6, 2026 7:24pm

@chatgpt-codex-connector

Copy link
Copy Markdown

💡 Codex Review

status: confirmed ? 'final' : txId ? 'observed' : 'observed-projection',
txId,
amountSats: typeof prior.amountSats === 'number' ? prior.amountSats : null,

P1 Badge Require payment finality before granting rights

When txId is absent—which is how the current Reads client submits every rail—this records an observed-projection and the pipeline continues: it fabricates the quoted ETH amount or a rail identifier, marks the execution settled, constructs entitledPatch, and ships the repository PR. Consequently, any authenticated buyer can unlock protected source material without a confirmed payment; fail closed before finalization, rights creation, or delivery unless the selected rail has verifiable finality.

AGENTS.md reference: .docs/AGENTS.md:L3-L3


// Fail-closed: only the settle-run owner may finalize seller payout.
if (String(row.user_id || '') !== String(user.id)) {
return NextResponse.json(
{ ok: false, error: 'Settle run not found.', code: 'settle_run_forbidden' },
{ status: 404 },

P1 Badge Authorize the seller rather than the buyer

The settle route stores the current buyer as executions.user_id, so this check authorizes the buyer who purchased the DataPack, not the seller identified by pending.sellerAccount. In every sale between distinct accounts, the buyer can choose the seller's BTD/pay-asset split while the actual seller receives a 404 and cannot finalize it; bind the authorization to a verified seller principal instead.

AGENTS.md reference: .docs/AGENTS.md:L3-L3


// Projected finalize (testnet): seed escrow as post-settle, then distribute.
const state = createBitcodeErc1155State({
masterAccount,
operator: '0xbitcode-settlement-operator',
});

P1 Badge Execute the payout before marking it finalized

For every successful payout request, this creates an in-memory escrow with placeholder operator state and later only updates the executions JSON; the handler never calls the ERC1155 contract or transfers ETH, BTC, SOL, or BTD. The API and Exchange UI therefore report concrete seller/treasury amounts as finalized while no balances change, corrupting financial results; persist finalization only after a real transaction or attested rail execution succeeds.

AGENTS.md reference: .docs/AGENTS.md:L3-L3


if (mint_i > 0) {
totalMinted += mint_i;
_balances[s.depositor][BTD_TOKEN_ID] += mint_i;

P1 Badge Implement escrow semantics in the on-chain contract

The current V48 flow and TypeScript settlement path mint 100% of V to the master escrow so the seller can choose the BTD/pay-asset split later, but this contract immediately mints only each depositor's btdBps slice directly to that depositor (and similarly sends coin legs during settlement). A deployment therefore cannot back the pending-payout/finalize model or match its receipts, and may leave no escrow for the advertised seller choice; align the Solidity settlement and finalization entrypoints with the canonical escrow lifecycle.

AGENTS.md reference: .docs/AGENTS.md:L3-L3

ℹ️ 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".

@geraldarthurdavis
geraldarthurdavis merged commit 8f8804b into main Aug 6, 2026
3 of 7 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