Skip to content

V48 Gate 3 (specification-implementation): Deposit systems MVP — SynthesizeAssetPacks SDIVF correctness#250

Merged
geraldarthurdavis merged 197 commits into
version/v48from
v48/gate-3-synthesis-pipeline-correctness
Jul 9, 2026
Merged

V48 Gate 3 (specification-implementation): Deposit systems MVP — SynthesizeAssetPacks SDIVF correctness#250
geraldarthurdavis merged 197 commits into
version/v48from
v48/gate-3-synthesis-pipeline-correctness

Conversation

@geraldarthurdavis

@geraldarthurdavis geraldarthurdavis commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

V48 Gate 3 — Deposit systems MVP (close into version/v48)

Gate 3 is the depositing full-stack MVP: SynthesizeAssetPacks SDIVF for /deposits, source-safe telemetry, option review/admission, demand honesty, hosts, and rebuild-alone canon.

Single-canon law

BITCODE_SPEC_V48.md §G3-1…G3-15 is the rebuild-alone SPEC for deposit SDIVF (storage, APIs, Inline/VercelSandbox hosts, agents/tools/prompts/telemetry, option full-stack, /deposits UI, fail-closed errors).

Implementation highlights

  • Deposit lens SDIVF (maxIterations=1, grok-build-0.1, 180s LLM timeout)
  • Forced Inclusions/Exclusions, empty Obfuscations skip Setup LLM
  • Settled Depository demand → estimatable or Unestimatable
  • Full-stack option stats (ROI / denials) without fake demand
  • Ephemeral Vercel Sandbox deposit, cooperative cancel, source-safe stream telemetry

Contributor docs

Root README.md refurbished for current canon posture, local run, and Gate 3 deposit focus.

Verification

Gate Quality + unit/typecheck/spec checks green on branch. Optional live smoke: Forced Inclusions + cancel (QA runbook §6).

geraldarthurdavis and others added 28 commits June 25, 2026 14:41
…line telemetry

sourceSafeStreamEvent withholds llm:{prompt,input,output,reasoningOutput,judgmentOutput,parsedOutput} content from every persisted/streamed pipeline event, leaving only a content-withheld summary. Applied at the execution_events persistence chokepoint so the formal agent-generics LLM substeps — which store full prompt/response content — stream lawfully (rawPromptVisible/rawProviderResponseVisible stay false) for ALL pipelines. Prerequisite for AssetPacksSynthesis on the real primitives.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…nt/prompt primitives

New asset-packs-synthesis-pipeline.ts runs the measurement on the actual Bitcode primitives instead of the hand-rolled bounded-structured-inference loop:

- Execution spine: PipelineExecution('pipeline:asset-packs-synthesis', lineage{family:asset_pack,posture:live,admittedSurface:lens}) -> phase:<lens> -> factoryAgent (AgentExecution) -> measure step -> createFailsafeGenerationSequence (Failsafe[prepare|chunk|stitch] of Thricified[reason|judge|structured_output]) as REAL nested child nodes.

- Prompt built UPWARDS via the registry: layered PromptParts (pipeline identity + source-safety law / phase lens-role / agent measurement-catalog + rules / step candidate-shape) registered on the AgentExecution.prompt, composed by buildHierarchicalPrompt; structured generation input becomes the user prompt.

- Real ExecutionTool (AssetPackInventoryTool) produces the exclusion-filtered source inventory and is tracked under tool: child execution. AgentExecution auto-resolves the env LLM (no manual wiring). Token accounting walks the execution tree for llm:usage.

Additive: typechecks clean; not yet wired into the route (next chunk rewires synthesizeAssetPackCandidates + the deposit route, then deletes bounded-structured-inference.ts).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…re the hand-rolled inference)

synthesizeAssetPackCandidates now delegates inference to synthesizeAssetPackCandidatesFormal (the real PipelineExecution -> factoryAgent -> Failsafe of Thricified spine) instead of runBoundedStructuredInference. This module keeps what it owns: the deposit/read lens contract, the candidate schema, fail-closed exclusion/path validation, measurement-catalog mapping, and inference accounting.

- request.execution is now a real execution-generics Execution (the deposit route's streaming Execution); a detached root Execution is created when absent. SourceSafeStreamTarget and the in-module usage-recorder / source-safe-summary bridge are retired — telemetry source-safety is now the universal streaming filter (chunk A).

- Added assertSourceSafeCandidates: defense-in-depth local source-safety assertion (Garrett's 'keep local assert') that fails closed if any candidate's prose carries a verbatim source line (>= 40 chars) from the excerpts.

- deposit-option-real-synthesis adapter + route status wording updated; synthesis test repoints its mock from bounded-structured-inference to asset-packs-synthesis-pipeline (5/5 green).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… mismatch + verify synthesis prompt build-up

Chunk F (sanity-check all PromptPart + Prompt implementations for instruction correctness given the full registry build-up + formatting correctness):

- prompts/src/index.{ts,d.ts}: the four PROMPTPART_SPECIFIC_TOOL_REPOSITORYSETUP_ASSET_PACK_* re-exports were spelled ASSETPACK (no underscore), naming members that do not exist — a latent TS2724 surfaced whenever a package imports the prompts index. Corrected to the real ASSET_PACK names (the six AssetPack comprehension/clone tools already import them directly under the correct name; no consumer used the wrong spelling).

- asset-packs-synthesis-pipeline.ts: extracted buildSynthesisPromptLayers — the six layered system PromptParts (pipeline identity -> source-safety -> phase lens-role -> agent catalog -> agent rules -> step shape) as a pure, exported, ordered factory the measure step applies via setSpecificExecution.

- New asset-packs-synthesis-pipeline.test.ts proves the registry build-up + hierarchical formatting: every layer registers under a valid ExecutionPrompt path and the real hierarchicalFormatter renders each layer's instruction content into the system prompt, lens-correctly (deposit demand-alignment vs read need-fit). 3/3 green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…uarded execution labels

stream-parser collapses each generation/tool/thinking event's (possibly multi-line) message to a single line via toSingleLine, so a structured-output JSON payload renders as ONE expandable row instead of fragmenting into many orphan rows (the accumulated stream text is newline-delimited, one line per event). formatExecutionTag null-guards the [phase -> agent -> step -> failsafe -> generation] label so only populated layers show (no literal 'undefined' when a pipeline emits partial executionState). Full payload stays in the event details for the expandable. 5 stream-parser + 3 pipeline-log component tests green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…d through the phase registries

New synthesize-asset-packs.ts defines SynthesizeAssetPacksMode ('deposit'|'read') + resolve/store/from-execution helpers. The unified-pipeline preprocess resolves the mode once and stores it on the execution; every SDIVF phase (phases/index.ts) reads it via synthesizeAssetPacksModeFromExecution and threads it to its conditional registry (registerDiscoveryAgents/registerImplementationAgents/registerValidationAgentsForType/registerFinishAgentsForType now accept mode). This is the conditional-runtime-registry spine that unifies deposit + read into one pipeline; read is the default so the live develop pipeline behaves unchanged. Deposit-mode preprocess + agent variants + Finish-upload land in later chunks.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…tPacksPipeline entry

preprocessDepositMode: deposit skips the read Need / fits-finding preprocess entirely and stores the repository coordinates + depositor steering (instructions, protected-IP exclusions, demand context, inventory) for the SDIVF phases (Setup clones+danger-walls, Discovery explores, Implementation writes AP patches, Validation gates, Finish uploads for review). factoryPreprocess early-returns to it when mode==='deposit'.

synthesizeAssetPacksPipeline: the unified SDIVF synthesis as a directly-callable executor (mode resolved from input), the one-and-only synthesis entry for both deposit and read. assetPackPipeline stays the legacy Design/Develop/Digest router whose Develop gate is this same synthesis. 43 suites / 209 tests green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…patches via formal PTRR

New DepositAssetPackSynthesisAgent (factoryAgentWithPTRR → Plan/Try/Refine/Retry × Failsafe × Thricified) synthesizes reviewable, source-safe AssetPack patches from the depositor's repository source (deposit lens): per-pack source-safe summary, covered source paths, fileChanges descriptor, review notes; honors protected-IP exclusions. registerImplementationAgents now conditionally registers it under the Implementation key when mode==='deposit' (read keeps the fits agent) — the first live use of the conditional runtime registry. Every call renders in the SDIVF telemetry.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… for review (no PR)

New upload-asset-packs-for-review-agent records the synthesized artifacts as a reviewable Bitcode upload (deposit: review before Depository admission; read: before purchase) instead of opening a PR — PR/settlement moves to the future Gate-6 SettleAssetPacks pipeline. registerFinishAgentsForType registers it for deposit mode under the Finish deliver key; read keeps its legacy delivery until migrated at gate close (noted residue). Simple (non-PTRR) finalization agent.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… + reusable validator

DepositAssetPackSynthesisAgent now produces the candidate-options shape (options[] with per-pack measurements via the DEPOSIT_MEASUREMENT_CATALOG) the /deposit review surface consumes — still a real PTRR agent (36 formal calls) — and stores them at implementation:options. validateDepositSynthesisOptions (exported) turns the pipeline's raw options into fail-closed, source-safe AssetPackCandidates (drop unknown/excluded paths, map measurements through the lens catalog), so the route can build the deposit option synthesis from the pipeline output.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… — full SDIVF telemetry

The synthesize-options route now (default) runs synthesizeAssetPacksPipeline in deposit mode against the streaming execution, so the full Setup→Discovery→Implementation→Validation→Finish pipeline streams its phase→agent→step→failsafe→generation telemetry to the /deposit log. It extracts the deposit Implementation phase's measured options (implementation:options), validates them fail-closed via validateDepositSynthesisOptions, and builds the existing deposit option synthesis response (unchanged contract). Falls back to the bounded synthesis if the pipeline yields no admissible options; BITCODE_DEPOSIT_SYNTHESIS_PIPELINE=0 forces bounded-only. uapi tsc --noEmit: 0 errors.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…e (legacy develop aliased)

factoryDevelopPhase generalized to factorySynthesizeAssetPacksPipeline(pipelineName='synthesize-asset-packs'); the deposit/read entry synthesizeAssetPacksPipeline now runs the SDIVF executor as 'synthesize-asset-packs' (canonical telemetry pipeline name) while factoryDevelopPhase remains a thin alias passing 'develop' so the legacy Design/Develop/Digest router + its observability (phase ids develop.*) are byte-unchanged. 43 suites/209 tests green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ENABLE_OTF_INSTRUCTIONS flag

ExecutionPrompt.setOnTheFly (otf: prompt-part paths) had zero callers; ENABLE_OTF_INSTRUCTIONS was unused. Both removed (the primitive removal is sanctioned: OTF is the exception to 'primitives untouched'). The rest of OTF is NOT pure residue — it splits into dead UI telemetry types (otf_instructions/otf_adherence, never emitted) and a LIVE instruction feature (run_otf_instructions table + instructions API + waitForInstruction in the Validation phase + ExecutionOnTheFlyInstructions) — those belong in the dedicated gate-close pass; the live-feature removal needs a deliberate decision. execution-generics typecheck clean; no remaining refs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…dherence)

These stream types were never emitted (only a commented store at shippables.ts). Removed the parse cases (stream-parser.ts), the ParsedStreamData instructions/adherence fields (types/stream.ts), the TYPE_STYLES entries + type-detection heuristics + getLineClass case + now-unused ChatBubbleIcon import (pipeline-execution-log.tsx), the otf-insight/otf-adherence tailwind colors, the mock telemetry union members, and the dead streamParserOTF test. uapi tsc 0 errors; telemetry tests green. (Group A of the OTF removal; live instruction feature follows.)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ady-to-instruct + instruction fetch

Deleted the waitForInstruction executor (pipelines-generics) + its export — the mid-run instruction pause. Deleted the asset-pack ready-to-instruct agent + its test, unregistered it, and removed the validation-phase sequence pause (validators -> ReadyToFinish now, no ready-to-instruct/waitIfNeeded) + the validation:selfInstruction store. Removed the OTF instruction fetch from factoryIterationPreprocess (.from('instructions')). asset-pack 42 suites/208 tests green; pipelines-generics clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… instruction UI

Completes the OTF removal. Telemetry-type source (the earlier commit only captured the test deletion; its source edits land here): stream-parser cases, ParsedStreamData fields, pipeline-execution-log TYPE_STYLES/heuristics/case + ChatBubbleIcon import, tailwind otf colors, mock union.

API/storage/ORM/UI (executed + verified by subagent): deleted the instructions API route, the ExecutionsInstructions submit UI (+ alias + Fixed variant + RunInstructions stories), and the OTF API tests; removed fetchShippableInstructions/postShippableInstruction (api-client), the ExecutionsPageClient instruction block, the AssetPackRunInstructionsModel + run_otf_instructions ORM model/types/exports/client-accessors/data-health/refresh-schema, the edgetimes unresolved-table entry, and OTF story sample data. orm + uapi + asset-pack tsc 0 errors; orm 21 tests pass.

Deferred to a deliberate DB step: DROP the deliverable_pipeline_otf_instructions/run_otf_instructions table (migration) — generated DB types + tracked compiled .js mirrors (api-client.js, protocol proven-generator.js) still mirror the live schema and regenerate after the drop.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
DROP deliverable_pipeline_otf_instructions (the live table; legacy run_otf_instructions was renamed into it) CASCADE + the pre-rename name defensively. Idempotent (IF EXISTS). After apply, regenerate the DB types so packages/orm/src/types/**generated** + the tracked compiled .js mirrors (api-client.js, proven-generator.js) lose their stale OTF references. The ORM's .from('run_otf_instructions') was querying a name that no longer existed post-rename, so the feature was effectively inert.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…nthesis no longer PRs)

registerFinishAgentsForType now registers the upload-asset-packs-for-review agent for BOTH modes (was deposit-only). Synthesis (deposit AND read, incl. the legacy Develop gate) finishes by uploading the synthesized artifacts to Bitcode for user review — deposit before Depository admission, read before purchase — instead of opening a PR. PR/settlement delivery moves to the future Gate-6 SettleAssetPacks pipeline; the deliver-asset-pack-to-destination-agent is retained (unregistered) for it. The upload agent now uploads whichever Implementation output the mode produced (deposit: options; read: assetPackSynthesisArtifacts).

Develop-gate consumers degrade gracefully (postprocess + shippables route read prUrl via optional chaining → prCreated:false). asset-pack 42 suites/208 tests green; the test-mode finish mock is left as-is (test-only).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…isions in the V48 notes

Adds the Gate-3 notes section: the SynthesizeAssetPacks SDIVF unification (one pipeline, deposit|read modes via conditional runtime registries; subsumes Develop), the formal-primitives execution law (Pipeline→Phase→Agent→Step→Failsafe∘Thricified; N PTRR/Simple agents; 36 calls/PTRR agent), per-phase jobs, Finish→upload-for-review both modes (no PR; PR→Gate-6 SettleAssetPacks), inline /deposit run, universal source-safety, and the complete OTF eradication. Records the open specification decisions (deposit AssetPack nature, deposit Discovery/Validation/Setup shapes) so implementation stays reproducible from spec per canonical Bitcode law.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…gents, lens inputs

Records Garrett's decided model (2026-06-25): an AssetPack is a measured patch — deposit APs are patches against the depositing repo with absolute (content-direct) measurements (Readless/Needless); read APs are patches against the reading repo synthesized from fit-found deposited APs, carrying absolute + fit measurements, with BTD = normalized scalar weighted sum of fit-only measurements (bought for BTC). Lens inputs: Obfuscations (deposit) / Need (read); ~same agents lens-varied. Discovery = 3 agents (codebase-comprehension / depository-search / inherent-regurgitation, discovering from codebase / Depository / model). Setup adds input-comprehension; Validation = quality thresholds + coverage/corrections + smoke/sanity. Includes the implementation-status build-down list (options→patch, 5→3 discovery agents, instructions→Obfuscations, +input-comprehension) and the protocol-demonstration measurement grounding.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ode (asset-packs-synthesis + btd-scalar-volume-quote)

Corrects the grounding: the V48 measurement catalogs (absolute deposit dims + the fit-only need-fit) live in asset-packs-synthesis.ts, the BTD scalar in btd-scalar-volume-quote.ts (need-relative-fixed-point-weighted-volume policy, formula recorded), the read Need pricing vector in read-need.ts, and the patch as fileChanges + source-binding with content withheld pre-settlement. protocol-demonstration is the V47 realization framework, not the V48 measurement source of truth.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…(patch + measurements + metadata)

Final AssetPack-model clarification: never a slice of existing source — Implementation synthesizes the patch (new content as code edits) into the Setup-cloned workspace via a code-edit tool, measures it (absolute; read adds fit + BTD), and attaches metadata (contributing AssetPacks for a read-synthesized pack); content withheld pre-settlement. The deposit Implementation's current measured-options output is the build-down gap.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…egorization as canonical development law

Every commit + gate-PR title must declare its category — (specification-only) | (implementation-only) | (specification-implementation) — as a parenthetical after the version+gate prefix. Encoded in AGENTS.md (contributing law) and BITCODE_SPECIFYING.md §2.8 (under Complete Implementation Derivability), so the spec<->implementation relationship of every change is auditable from history alone and no implementation outruns its spec.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…nstructions → Obfuscations

The deposit single-prompt input is canonically Obfuscations (what to obfuscate/withhold). Renamed the field across route + deposit-route-model + DepositPageClient (UI label too) + the adapter + deposit-asset-pack-options + the pipeline preprocess (deposit:obfuscations store) + the deposit synthesis agent + tests. Kept stable (hash/schema/lens-neutral): the root namespace literals ('deposit-option-instructions'), the depositorInstructionRoot output field, and steering.instructions (the adapter maps obfuscations into it; read keeps it). asset-pack 42/208 + uapi tsc 0 + deposit tests green; root hashes unchanged. Read input stays Need (ReadNeed).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…hension agent (comprehend Obfuscations)

New DepositInputComprehensionAgent (factoryAgentWithPTRR) comprehends the depositor's Obfuscations against the cloned repository inventory into structured obfuscation guidance (obfuscatedPaths / obfuscatedConcepts / honorNotes), stored at setup:inputComprehension for downstream phases (authoritative alongside the protected-IP exclusions). The Setup executor conditionally re-registers it under the comprehension key for deposit mode (read keeps Need-comprehension); execution.agents is the live registry (preprocess.ts), createPhaseRunner resolves the sequence from it. Spec: the V48 notes Setup entry now records the deposit input-comprehension output, so implementation does not outrun spec. asset-pack 42/208 + typecheck + spec-checker green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…scovery agents (codebase / depository / model)

Deposit Discovery now runs the 3 canonical agents instead of the 5 legacy read agents: deposit-codebase-comprehension (discovers from the cloned source → discovery:codebaseComprehension), deposit-depository-search (likely-to-be-read/demand framing → discovery:depositorySearch), deposit-inherent-regurgitation (model training-data knowledge → discovery:inherentRegurgitation) — all factoryAgentWithPTRR on the input-comprehension template. registerDiscoveryAgents + the discoveryPhase delegator branch on mode (deposit → the 3; read → the existing 5, untouched). Spec: the V48 notes Discovery entry records each deposit agent's stored output. asset-pack 42/208 + typecheck green; read path unchanged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ts a measured patch via the code-edit tool

Each synthesized AssetPack is now a measured PATCH: the measured option fields plus a SOURCE-SAFE patch descriptor (fileChanges [path+op] + a natural-language patchSummary; never raw code). New AssetPackPatchWriteTool (ExecutionTool) records the descriptor (physical workspace fs-write is the delivery context, out of scope). The deposit synthesis agent reads the Discovery stores (codebase/depository/regurgitation comprehension) + the obfuscation comprehension, synthesizes the patch descriptor honoring obfuscations + exclusions, calls the tool per pack, and stores implementation:assetPacks (full measured-patch packs) + implementation:options (reviewable face; validateDepositSynthesisOptions reads the measured fields, ignores patch). Source-safety: no raw patch code in any schema/store/tool/telemetry — descriptor + measurements + summaries only. asset-pack 42/208 + typecheck green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…quality/coverage/smoke → iterate gate)

New DepositValidationAgent (factoryAgentWithPTRR + deterministic smoke/sanity checks) validates the synthesized deposit AssetPacks — measurement honesty (0..1), distinctness, source-safety, obfuscation/exclusion compliance, patch-descriptor coherence, coverage — emitting {issues, qualityScore, coverageGaps, recommendation:'complete'|'iterate'}. Issues stored at validation/implementation:issues (the key the canonical ReadyToFinish gate reads); any issue forces iterate, driving the DIV loop. registerValidationAgentsForType + validationPhase branch on mode (deposit → deposit-quality → ReadyToFinish; read → the 3 parallel validators → ReadyToFinish, untouched). Spec note records the checks + the gate integration. asset-pack 42/208 + typecheck green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 26, 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 9, 2026 7:16am
engi-uapi Ready Ready Preview, Comment Jul 9, 2026 7:16am

@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: e516e5dd5c

ℹ️ 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 +67 to +69
return {
...event,
message: '[content withheld — source-safe]',

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Redact LLM metadata before persisting stream events

For llm prompt/output events this spread keeps the original metadata object, but ExecutionStreamAdapter.onStore populates metadata.stores.generations[...].llm from sanitizeData(value), which still includes prompt/output strings up to 1000 chars. So even though message and data are withheld here, the persisted execution_events.event_data.metadata can still expose raw prompts or provider responses for deposit synthesis logs; the redaction needs to remove or rewrite these metadata stores too.

Useful? React with 👍 / 👎.

Comment on lines +128 to +130
execution.store('pipeline', 'input', processedInput);
execution.store('pipeline', 'synthesizeMode', 'deposit');
execution.store('deposit', 'repository', repository);

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 Propagate deposit mode beyond the preprocess child

This stores the resolved deposit mode only on the preprocess execution node. I checked sequential_executor.ts: each SDIVF stage runs on a sibling child (seq-0, seq-1, seq-2, ...), while the setup/discovery/implementation phases read mode only from their own node or ancestors via synthesizeAssetPacksModeFromExecution. In real deposit runs the later phases therefore miss this store and default to read, dispatching the read agents instead of the new deposit agents.

Useful? React with 👍 / 👎.

Comment on lines +320 to +322
const rawOptions = ((execution as any).get?.('implementation', 'options') ??
(execution as any).findUp?.('implementation', 'options') ??
[]) as Parameters<typeof validateDepositSynthesisOptions>[0];

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 Read pipeline options from descendant executions

After synthesizeAssetPacksPipeline returns, this is looking for implementation/options on the root execution (or its ancestors), but the implementation agent stores those options on the phase/agent execution child created inside the SDIVF sequential tree. Because findUp does not search descendants, rawOptions is always [] for successful full-pipeline output, causing the route to discard the SDIVF result and fall back to bounded synthesis every time.

Useful? React with 👍 / 👎.

…andbox host durability

Spec (NOTES #26 + parity matrix #26–31; QA runbook cancel/sandbox):
- Exhaustive cancel law (row authority, cooperative abort, sandbox stop, UI)
- Sandbox deposit: ephemeral boxes, OIDC/token auth fail-closed, sandboxId on context

Implementation:
- POST /api/executions/[runId]/cancel + execution-cancel helper
- Deposit route polls cancel; sandbox shouldAbort + non-persistent create
- VercelSandboxPipelineHost abort/cancel outcome; assertVercelSandboxAuthAvailable
- Deposit UI Cancel run control + deposit_synthesis_cancelled analytics
- Tests for cancel API, host abort, harness result shape, provisioning
… next to refresh

Pipelines table is master-only. A square + (New deposit) beside refresh opens
the configuration/detail experience (same drill-in as selecting a run). Back
returns to the table. Run detail still locks config above telemetry.
Match master-detail Deposit UX — click New deposit before Synthesize.
…y telemetry for anchors

- Add xai provider (OpenAI-compatible https://api.x.ai/v1, default model grok-4.5)
- Prefer XAI_API_KEY for default provider; setDefaultProvider on registry factory
- Exclude activity-ledger anchors from Deposit pipelines table; show ledger detail
  instead of empty pipeline telemetry when an anchor URL is opened
- Document XAI_API_KEY in .env.example (secrets stay in .env.local only)
…nclusion

Apply Forced Inclusion roots before measurement, re-sample prompt excerpts
after scope, project paths/samples only into deposit agent PTRR inputs, and
keep full sources on deposit:inventory for measurement (not pipeline:input).
Prevent Invalid string length on monorepo inventories: safePromptJson for
PTRR reason/judge/structured_output, redact content-bearing stores before
SSE emit, and estimate contentChars without giant JSON.stringify walks.
…synthesize

Keep Forced Inclusion/Exclusions/Obfuscations editable before synthesize;
always POST sourcePathHints; raise deposit maxDuration; surface concrete
failure messages; document Forced Inclusion as inventory scope.
…lock

Page execution_events past the PostgREST 1000-row default, map
executions.error into summary/errorMessage, and prefer started_at/
completed_at/duration_ms for the deposit run clock on refresh.
… boxes

Force persistent:false for one-shot harness creates (v2 defaults to
persistent/Snapshot Storage), assign unique names, and stop+delete
ephemeral sandboxes after deposit synthesis.
…ourcePathHintCount

CI typecheck failed: ProductEvent did not allow sourcePathHintCount on the
dispatch analytics payload after Forced Inclusion was wired into the funnel.
… and forcedExclusions

Replace sourcePathHints/protectedIpExclusions identifiers across deposit UI,
API, pipeline steering, anchors, analytics, fixtures, and notes. Keep legacy
POST/anchor key read fallbacks and leave option sourcePathRoots (covered paths)
unchanged.
…eline rows

Show error plus last phase→agent→step→failsafe→generation lines when hovering
FAILED/CANCELLED/interrupted status pills. History supports ?tail=N for a
lightweight event window used by the preview.
…ck draft canon

Add BITCODE_SPEC_V48.md as the self-contained V48 system specification (no
prior-version binding law) with Gate 3 SDIVF, deposit full-stack, demand
honesty, defaults (grok-build-0.1, maxIterations 1, 180s LLM timeout), and
close-out law. Update notes Gate 3 closing posture and product defaults.
…ck deposit stats

Ground earnings/neediness in settled Depository AssetPack search or show
Unestimatable; re-ground option neediness after synthesis. Keep Positive ROI
reviewable when demand is unestimatable (provisional ROI ranking; earnings
display still unestimatable). Fix permanent Required denials=2 by treating
sub-critical deposit authority as ready without depositApproved first.
…s, empty-obf skip

Default xAI model to grok-build-0.1; set SynthesizeAssetPacks maxIterations to
1; raise LLM call timeout default to 180s and stall UI to match; skip Setup
input-comprehension LLM when Obfuscations are empty (no monorepo thrash).
…d stall tests

Map @/lib/depository-settled-demand in jest; mock package-root grounding in
synthesize-options tests; align stall indicators to 180s; accept Unestimatable
neediness when demand estimate is unavailable; restore notes-backed canon
posture after incomplete SPEC_V48.md was removed from the family gate.
…for rebuild

Open the complete V48 draft family (SPEC + DELTA + NOTES + PARITY + PROVEN)
as Complete Implementation Derivability authority: the entire Bitcode stack
through Gate 3 is restated for rebuild from BITCODE_SPEC_V48.md alone without
silent inheritance from superseded version files. Include Gate 3 SDIVF,
deposit full-stack, demand honesty, and product defaults. Draft status keeps
Current canonical/latest target at active V47 until promotion.
… and close

Expand BITCODE_SPEC_V48.md Gate 3 law into G3-1…G3-15 covering executions
schemas, deposit APIs, Inline/VercelSandbox hosts, SDIVF agent/tool/prompt/
store/telemetry contracts, option full-stack stats, /deposits UI, fail-closed
errors, env rebuild checklist, and source map — sufficient to rebuild deposit
MVP from this SPEC alone. Mark Gate 3 closed in notes, parity completion, and
QA ledger; ops smoke remains optional.
…README

Rename Gate 3 framing to Deposit systems MVP in notes. Replace the outdated
V41–V46 README changelog with contributor-facing canon posture, routes,
local run, deposit smoke, monorepo map, and workflow for V48 Gate 3.
… surfaces

Restore required root README documentation of check:v47-gate10 and
v47-canon-promotion.yml so active-canon promotion readiness stays green
after the contributor README refurbish.
…ation anchors

Keep the contributor-facing README while re-adding promoted-gate check tokens
and canon-promotion workflow names required by Gate Quality package tests
(e.g. V35/V47 promotion readiness substring checks).
…cal CI anchors

Keep the Deposit-focused contributor front matter while restoring the complete
prior gate changelog as a labeled historical appendix so Gate Quality package
tests retain required README substrings.
…olutes and source-safe inventory

Neediness validation now fails closed without Validation-phase formal absolutes,
and pipeline:input projects inventory without full sources. Update pins so Gate
Quality package tests match the G3 deposit law already shipped on this branch.
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