Skip to content

chore(architecture): map and characterize onboarding lifecycle contracts (#6225) - #6259

Merged
cv merged 3 commits into
NVIDIA:mainfrom
abhi-0906:chore/issue-6225-lifecycle-contract-map
Jul 7, 2026
Merged

chore(architecture): map and characterize onboarding lifecycle contracts (#6225)#6259
cv merged 3 commits into
NVIDIA:mainfrom
abhi-0906:chore/issue-6225-lifecycle-contract-map

Conversation

@abhi-0906

@abhi-0906 abhi-0906 commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Summary

Delivers #6225 (epic #6224) as a behavior-preserving lifecycle inventory and focused characterization baseline.

  • src/lib/onboard/lifecycle-contracts.md — compact, symbol-referenced contract map covering new, fresh, resume, and recreate onboarding; rebuild and installer upgrade; channel mutations; provider, model, and credential changes; config, policy, resource, port-forward, and runtime contributions; agent differences; persisted-field ownership; effect boundaries; compensation; known gaps; and flow diagrams.
  • src/lib/onboard/machine/transition-traces.test.ts — four runner-driven traces for fresh success, resume, real-handler recreate, and failure.
  • src/lib/state/onboard-session.test.ts — two focused session-boundary characterizations plus one TODO for value-shaped URL secret redaction.
  • README pointers link the contract map and trace ownership.

This revision removes the duplicate 394-line lifecycle-invariants suite and keeps zero production-code changes.

Testing

  • Current-main synthetic merge: clean, with no conflicts.
  • npm run typecheck:cli
  • Targeted characterization: 69 passed, 1 TODO.
  • Related onboarding machine/create tests: 86 passed.
  • test/onboard.test.ts: 65 passed.
  • Changed-file prek hooks: all passed.
  • Pre-push hooks: CLI TypeScript and version sync passed.

Closes #6225
Refs #6224

Signed-off-by: Abhimanyu Kumar abhimanyukumar7290@gmail.com

Summary by CodeRabbit

  • Documentation

    • Added a lifecycle contract map for onboarding flows, including journey-level guidance and behavior expectations.
    • Expanded onboarding docs with a new section that explains how key lifecycle traces are tracked and maintained.
  • Tests

    • Added broader onboarding session coverage for persistence, reload behavior, and value handling.
    • Added lifecycle trace coverage to better validate onboarding flow order, resume behavior, repair handling, and failure paths.

@copy-pr-bot

copy-pr-bot Bot commented Jul 3, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@coderabbitai

coderabbitai Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Adds a lifecycle-contracts.md document mapping onboarding/runtime lifecycle journeys, states, ownership, and known gaps, cross-linked from related READMEs. Adds a new transition-traces.test.ts characterization suite pinning FSM event traces, and extends onboard-session tests for secret-boundary persistence (migratedLegacyValueHashes, credentialEnv).

Changes

Lifecycle contract documentation

Layer / File(s) Summary
Onboarding contract map and cross-references
src/lib/onboard/lifecycle-contracts.md, src/lib/onboard/README.md, src/lib/onboard/machine/README.md
Adds the lifecycle contract map document (vocabulary, FSM ownership, effect-order flows, journey matrix, agent differences, persisted field ownership, duplicated decision points, bug-to-gap map, characterization coverage) and cross-links it from the two READMEs.

Characterization test suites

Layer / File(s) Summary
FSM transition-trace scaffolding and handler chain
src/lib/onboard/machine/transition-traces.test.ts
Adds a deterministic timestamp, session helpers, a traced runtime harness, and a canonical fullRunHandlers state chain used by the trace scenarios.
FSM run trace scenarios
src/lib/onboard/machine/transition-traces.test.ts
Adds tests pinning event traces for a fresh run, resume at openclaw, sandbox repair/recreate before branching, and inference failure with failure envelope recording.
Session secret-boundary persistence tests
src/lib/state/onboard-session.test.ts
Adds tests verifying migratedLegacyValueHashes persists only SHA-256 digests and credentialEnv round-trips as null, plus a todo for query-param token redaction.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Possibly related PRs

  • NVIDIA/NemoClaw#2554: Introduces/stabilizes migratedLegacyValueHashes and credentialEnv fields that the new persistence tests directly exercise.
  • NVIDIA/NemoClaw#3264: Fixed the credentialEnv explicit-clear normalization behavior that the new tests assert persists/reloads as null.
  • NVIDIA/NemoClaw#4472: Introduced resume-machine repair and record-only boundary flow directly exercised by the new repair/resume trace tests.

Suggested labels: area: docs

Suggested reviewers: jyaunches, ericksoa, prekshivyas

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The docs and tests cover the lifecycle contract map, vocabulary, journey matrix, and fresh/resume/recreate/failure traces requested by #6225.
Out of Scope Changes check ✅ Passed All changes are docs/tests and README pointers for the onboarding lifecycle work; no unrelated production code or extra scope is introduced.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately captures the main change: documenting and characterizing onboarding lifecycle contracts for #6225.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (2)
test/onboard-session-secret-invariants.test.ts (1)

41-52: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

CommonJS require() violates the ESM-only test guideline.

Lines 41 and 51-52 use createRequire/require() to defer module loading until after the HOME reassignment. A top-level await import(...) achieves the same deferred-load ordering (it isn't hoisted like a static import) while staying ESM-only, as required for files under test/.

♻️ Proposed fix using dynamic import
-import { createRequire } from "node:module";
 import os from "node:os";
 import path from "node:path";

 import { afterAll, beforeEach, describe, expect, it } from "vitest";

 import type { Session } from "../src/lib/state/onboard-session";

-const require = createRequire(import.meta.url);
-
 // SESSION_DIR/SESSION_FILE are derived from HOME at module-load time, so the
 // temp HOME must be in place before the session module loads. These CJS
-// requires (via the integration project's source-require hook) execute here,
-// after the assignment — unlike a hoisted static import.
+// dynamic imports execute here, after the assignment — unlike a hoisted
+// static import.
 const originalHome = process.env.HOME;
 const tempHome = fs.mkdtempSync(path.join(os.tmpdir(), "nemoclaw-session-secret-"));
 process.env.HOME = tempHome;

-const session: typeof import("../src/lib/state/onboard-session") = require("../src/lib/state/onboard-session");
-const stepMutation: typeof import("../src/lib/state/onboard-step-mutation") = require("../src/lib/state/onboard-step-mutation");
+const session: typeof import("../src/lib/state/onboard-session") = await import(
+  "../src/lib/state/onboard-session"
+);
+const stepMutation: typeof import("../src/lib/state/onboard-step-mutation") = await import(
+  "../src/lib/state/onboard-step-mutation"
+);

As per coding guidelines, "Files under test/ must use ESM imports/exports."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@test/onboard-session-secret-invariants.test.ts` around lines 41 - 52, The
test currently uses createRequire/require() to delay loading onboard-session and
onboard-step-mutation until after HOME is reassigned, but that breaks the
ESM-only test rule. Replace the CommonJS require-based loading in this test with
deferred dynamic imports using top-level await so the modules still load after
tempHome is set. Keep the ordering behavior intact by importing the same symbols
from ../src/lib/state/onboard-session and ../src/lib/state/onboard-step-mutation
via await import(), and remove the createRequire usage entirely.

Source: Coding guidelines

test/onboard-lifecycle-invariants.test.ts (1)

92-185: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚖️ Poor tradeoff

Source-text pinning conflicts with the test-review path instruction, though the rationale is documented.

This section indexes raw source text of onboard.ts and asserts ordering via string offsets (markerIndex), rather than exercising createSandbox through its public boundary. The file's own comment (lines 12-17) explains this is deliberate because createSandbox isn't hermetically testable, but per path instructions for test files, source-text assertions are exactly the pattern to avoid where an observable-outcome alternative exists.

Any harmless refactor inside createSandbox (e.g., reordering an unrelated log line, renaming a local, or reformatting a call) that doesn't touch the described lifecycle ordering could still break these markers/exact snippet matches, making the tests brittle beyond their intended contract. If a longer-term fix is feasible, consider extracting the ordering-relevant steps behind a small internal "step recorder" injectable in onboard.ts (mirroring the pattern already used for sandbox-messaging-preflight, sandbox-create-plan, etc.), so this ordering could be pinned via recorded events instead of literal source-text matching.

Separately, the static-analysis path-traversal hint on line 92 is a false positive — the path is built from import.meta.dirname plus fixed literal segments, not external input.

As per path instructions, "Prefer observable outcomes through the public boundary over source-text, private-shape, or mock-call assertions."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@test/onboard-lifecycle-invariants.test.ts` around lines 92 - 185, The test is
pinning raw source text and exact string offsets inside createSandbox, which
makes it brittle and conflicts with the test guidance to prefer observable
outcomes. Update onboard-lifecycle-invariants.test.ts to validate the lifecycle
through the public boundary or a small injectable step-recorder in createSandbox
rather than scanning onboard.ts source text with markerIndex and exact snippet
matches. Keep the ordering contract, but assert recorded events/calls from
createSandbox, sandboxCreatePlan, sandboxMessagingPreflight,
streamSandboxCreate, and sandboxRegistration instead of literal source ordering.

Source: Path instructions

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/lib/onboard/machine/transition-traces.test.ts`:
- Around line 88-92: The updateSession helper in transition-traces.test.ts is
falling back to the outer session when mutator returns void, which drops
in-place edits made on the cloned draft. Update the updateSession function so it
uses the cloned draft as the fallback result instead of session, preserving both
OnboardRuntimeDeps.updateSession call patterns while still cloning the stored
session before returning.

---

Nitpick comments:
In `@test/onboard-lifecycle-invariants.test.ts`:
- Around line 92-185: The test is pinning raw source text and exact string
offsets inside createSandbox, which makes it brittle and conflicts with the test
guidance to prefer observable outcomes. Update
onboard-lifecycle-invariants.test.ts to validate the lifecycle through the
public boundary or a small injectable step-recorder in createSandbox rather than
scanning onboard.ts source text with markerIndex and exact snippet matches. Keep
the ordering contract, but assert recorded events/calls from createSandbox,
sandboxCreatePlan, sandboxMessagingPreflight, streamSandboxCreate, and
sandboxRegistration instead of literal source ordering.

In `@test/onboard-session-secret-invariants.test.ts`:
- Around line 41-52: The test currently uses createRequire/require() to delay
loading onboard-session and onboard-step-mutation until after HOME is
reassigned, but that breaks the ESM-only test rule. Replace the CommonJS
require-based loading in this test with deferred dynamic imports using top-level
await so the modules still load after tempHome is set. Keep the ordering
behavior intact by importing the same symbols from
../src/lib/state/onboard-session and ../src/lib/state/onboard-step-mutation via
await import(), and remove the createRequire usage entirely.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 7dc1530f-c37c-45f1-9753-980a2d0c9ad1

📥 Commits

Reviewing files that changed from the base of the PR and between 8aeb719 and b997556.

📒 Files selected for processing (6)
  • AGENTS.md
  • src/lib/onboard/AGENTS.md
  • src/lib/onboard/machine/README.md
  • src/lib/onboard/machine/transition-traces.test.ts
  • test/onboard-lifecycle-invariants.test.ts
  • test/onboard-session-secret-invariants.test.ts

Comment thread src/lib/onboard/machine/transition-traces.test.ts

@cv cv left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Thanks for assembling the lifecycle inventory. The contract map contains useful analysis, but this PR currently adds substantially more permanent maintenance surface than the behavior it protects, so I am requesting changes before merge.

Please re-scope this toward the smallest durable deliverable:

  1. Keep a compact contract map, but prefer stable symbol/module references over volatile line-number anchors. Please also reconsider placing a large current-state architecture inventory in nested AGENTS.md, where it becomes instruction/context overhead for every onboarding change.
  2. Remove or sharply reduce the 658-line transition suite. The canonical graph, transition kinds, runtime application, retry/branch/failure behavior, and runner behavior are already covered by transitions.test.ts, runtime.test.ts, and runner.test.ts. Add only path-level traces that demonstrate a concrete uncovered contract.
  3. Remove the raw-source scanning in onboard-lifecycle-invariants.test.ts. Exact string offsets and call-site snippets are brittle and conflict with our test guidance. Do not add production scaffolding solely to preserve these characterization assertions; if no behavioral seam exists, document the ordering and leave its executable coverage to the issue that introduces the seam.
  4. Consolidate only genuinely missing session-security cases into the existing onboard-session.test.ts. That suite already covers endpoint redaction, secret-free provider metadata, nullable credential updates, and failure-message redaction. Do not codify token-shaped secret persistence as an accepted passing contract; track/fix it separately or mark the desired behavior as pending.
  5. Fix the characterization harness correctness bug before retaining any trace test: mutator(cloneSession(session)) ?? session discards in-place mutations when the mutator returns void. The fallback must be the cloned draft. Also keep root tests ESM-only rather than using createRequire.

Please favor deletion and consolidation over rewriting all 1,788 test lines. A short map plus a small set of demonstrably missing behavioral tests would satisfy the useful outcome without duplicating the existing test matrix.

abhi-0906 added 2 commits July 4, 2026 15:28
…cts (NVIDIA#6225)

Add the onboarding lifecycle contract map (src/lib/onboard/AGENTS.md):
epic NVIDIA#6224 vocabulary, per-journey contract tables for create, rebuild,
re-onboard, and runtime mutation, seven cross-journey divergences with
code anchors, and a bug-to-contract-gap table for the epic's evidence
issues, with pointers from machine/README.md and the root AGENTS.md.

Pin current behavior as an executable characterization baseline before
the NVIDIA#6226/NVIDIA#6227 refactors move it:

- machine/transition-traces.test.ts: legal-transition surface and full
  event traces for fresh-run, resume, recreate, and mid-flow failure.
  Failed-state exit legality and the legacy step-mutation bridge are
  deliberately not pinned; PR NVIDIA#6253 owns those semantics.
- test/onboard-lifecycle-invariants.test.ts: create-path ordering
  invariants (conflict guard before sandbox delete, deterministic
  validation before the destructive boundary, cleanup-before-upsert,
  resume identity per NVIDIA#2753).
- test/onboard-session-secret-invariants.test.ts: session persistence
  secret boundary (credentialEnv name-only, endpointUrl redaction,
  sha256-only legacy hashes, unset/declined ambiguity pinned as a
  known NVIDIA#6224 contract gap).

Zero production-code changes.

Signed-off-by: Abhimanyu Kumar <abhimanyukumar7290@gmail.com>
…n surface (NVIDIA#6225)

Address review: replace the nested AGENTS.md inventory with a compact
symbol-referenced map at src/lib/onboard/lifecycle-contracts.md and
revert the root AGENTS.md registration; reduce transition-traces to the
five ordered event-trace pins no existing machine suite covers; drop
all raw-source scanning from the lifecycle invariants (the create-path
ordering contract is now prose in the map); consolidate the genuinely
missing session-security cases into src/lib/state/onboard-session.test.ts,
encoding token-shaped-value persistence as pending desired behavior via
it.fails rather than an accepted pin; fix the trace-harness updateSession
fallback to return the cloned draft so void-returning mutators persist.

Signed-off-by: Abhimanyu Kumar <abhimanyukumar7290@gmail.com>
@abhi-0906

Copy link
Copy Markdown
Contributor Author

Reworked in ab988dd24 (rebased onto current main). Net: 857 added lines vs 2,040 in the original push.

  1. Map compacted from the 249-line nested AGENTS.md to src/lib/onboard/lifecycle-contracts.md (92 lines), symbol/module references only — no line-number anchors. Root AGENTS.md registration reverted; pointers live in src/lib/onboard/README.md and machine/README.md.
  2. Transition suite reduced to 5 tests (304 lines): only the ordered event-stream traces no existing suite pins — runner.test.ts stubs emitEvent, so no suite observes a runner-driven event stream. Kept: fresh-run lifecycle stream, sanitized resume trace (completed states have no handlers to re-enter), recreate repair-event interleaving, failure envelope with resumable: true.
  3. All raw-source scanning removed. The create-path ordering contract is now prose in the map; the invariants file (394 lines) keeps only runtime pins through exported seams: messaging preflight conflict guard, create-plan cleanup-before-upsert and drifted-credential rejection, resume identity. No production scaffolding added.
  4. The focused secret file is deleted; the three genuinely missing cases moved into src/lib/state/onboard-session.test.ts (+61 lines, 1438/1500): sha256-hex-only legacy hashes, unset/declined credentialEnv indistinguishability (commented as the Epic: stabilize onboarding and runtime lifecycle contracts before public extensibility #6224 gap), and token-shaped-value persistence encoded as pending desired behavior via it.fails — it flips to a failing signal when value-shape redaction lands.
  5. Harness fallback fixed (mutator(draft) ?? draft) with a dedicated regression test; deleting the root file also removes its createRequire usage.

@abhi-0906
abhi-0906 force-pushed the chore/issue-6225-lifecycle-contract-map branch from b997556 to ab988dd Compare July 4, 2026 10:13
@wscurran wscurran added v0.0.76 area: architecture Architecture, design debt, major refactors, or maintainability area: onboarding Onboarding FSM, provider setup, sandbox launch, or first-run flow area: sandbox OpenShell sandbox lifecycle, runtime, config, or recovery chore Build, CI, dependency, or tooling maintenance integration: dcode LangChain Deep Code integration behavior labels Jul 7, 2026
@apurvvkumaria apurvvkumaria self-assigned this Jul 7, 2026
Remove duplicate coverage and exercise recreate through the real sandbox handler.

Align the lifecycle map with current main behavior.

Co-authored-by: Abhimanyu Kumar <abhimanyukumar7290@gmail.com>
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
@apurvvkumaria

Copy link
Copy Markdown
Collaborator

/ok to test 7ae4ed6

@apurvvkumaria

Copy link
Copy Markdown
Collaborator

@cv The requested streamlining is ready for re-review. The revision removes the duplicate 394-line lifecycle-invariants suite, reduces the characterization to four runner-driven traces plus two session-boundary tests and one TODO, exercises recreate through the real sandbox handler, and audits the compact lifecycle map against current main. A synthetic merge onto current main was clean; CLI type-checking, 69 targeted tests (+1 TODO), 86 related onboarding tests, 65 onboard integration tests, changed-file hooks, and pre-push hooks all passed. The original author is credited in the verified commit.

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

E2E Target Results — ✅ All requested jobs passed

Run: 28899507422
Workflow ref: pull-request/6259
Requested targets: (default — all supported)
Requested jobs: cloud-onboard
Summary: 1 passed, 0 failed, 0 cancelled, 0 skipped

Job Result
cloud-onboard ✅ success

@cv cv left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Approving exact head 7ae4ed6a202c47c763cc5e6bcebf38be1be71148.

  • All attached CI is green, with no unresolved review threads.
  • The required exact-head cloud-onboard live proof passed: https://github.com/NVIDIA/NemoClaw/actions/runs/28899507422/job/85732556293
  • DCO is present and every commit is GitHub Verified.
  • The lifecycle map and focused runner traces are behavior-preserving; there are no production-code changes.
  • The prior scope, duplicate raw-source suite, harness fallback, and session-boundary objections are resolved.

I reviewed the primary advisor's request to split the added session-boundary cases out of onboard-session.test.ts. That is nonblocking here: the earlier human review explicitly requested consolidating these cases into the existing session-boundary suite, and the repository's test-size/growth gate passes. The secondary advisor recommends merging as-is.

@cv
cv merged commit 6495c3c into NVIDIA:main Jul 7, 2026
122 of 125 checks passed
Hadar301 pushed a commit to Hadar301/NemoClaw-OpenShift that referenced this pull request Jul 12, 2026
…cts (NVIDIA#6225) (NVIDIA#6259)

## Summary

Delivers NVIDIA#6225 (epic NVIDIA#6224) as a behavior-preserving lifecycle inventory
and focused characterization baseline.

- `src/lib/onboard/lifecycle-contracts.md` — compact, symbol-referenced
contract map covering new, fresh, resume, and recreate onboarding;
rebuild and installer upgrade; channel mutations; provider, model, and
credential changes; config, policy, resource, port-forward, and runtime
contributions; agent differences; persisted-field ownership; effect
boundaries; compensation; known gaps; and flow diagrams.
- `src/lib/onboard/machine/transition-traces.test.ts` — four
runner-driven traces for fresh success, resume, real-handler recreate,
and failure.
- `src/lib/state/onboard-session.test.ts` — two focused session-boundary
characterizations plus one TODO for value-shaped URL secret redaction.
- README pointers link the contract map and trace ownership.

This revision removes the duplicate 394-line lifecycle-invariants suite
and keeps zero production-code changes.

## Testing

- Current-main synthetic merge: clean, with no conflicts.
- `npm run typecheck:cli`
- Targeted characterization: 69 passed, 1 TODO.
- Related onboarding machine/create tests: 86 passed.
- `test/onboard.test.ts`: 65 passed.
- Changed-file prek hooks: all passed.
- Pre-push hooks: CLI TypeScript and version sync passed.

Closes NVIDIA#6225
Refs NVIDIA#6224

Signed-off-by: Abhimanyu Kumar <abhimanyukumar7290@gmail.com>


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Documentation**
* Added a lifecycle contract map for onboarding flows, including
journey-level guidance and behavior expectations.
* Expanded onboarding docs with a new section that explains how key
lifecycle traces are tracked and maintained.

* **Tests**
* Added broader onboarding session coverage for persistence, reload
behavior, and value handling.
* Added lifecycle trace coverage to better validate onboarding flow
order, resume behavior, repair handling, and failure paths.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Abhimanyu Kumar <abhimanyukumar7290@gmail.com>
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
Co-authored-by: Apurv Kumaria <akumaria@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: architecture Architecture, design debt, major refactors, or maintainability area: onboarding Onboarding FSM, provider setup, sandbox launch, or first-run flow area: sandbox OpenShell sandbox lifecycle, runtime, config, or recovery chore Build, CI, dependency, or tooling maintenance integration: dcode LangChain Deep Code integration behavior

Projects

None yet

Development

Successfully merging this pull request may close these issues.

chore(architecture): map and characterize onboarding/runtime lifecycle contracts

4 participants