Develop - #1
Merged
Merged
Conversation
Establish canonical feature specifications, architectural decisions, implementation ordering, contribution rules, and complete release gates for the Python and .NET integrations.
Add project-specific Copilot guidance, pull request checks, and structured issue forms for Python, .NET, and feature work.
Schedule grouped weekly updates for NuGet, pip, and GitHub Actions dependencies.
Strengthen the repository-wide agent guidance so non-trivial changes are recorded as logical, independently reviewable commits with explanatory bodies instead of terse or checkpoint history. Require implementation-linked developer documentation under docs/development that supplements specifications and ADRs with architecture, code-level behavior, APIs, schemas, operations, verification, and cross-language parity details. Validated with editor diagnostics, staged diff review, and git diff --cached --check.
Create the canonical Python distribution and internal MongoDB client handle as the first foundation slice. Construction records immutable resource ownership so provider-created clients close exactly once while injected clients remain caller-owned. Document the package, lifecycle boundary, validation behavior, and focused verification alongside the implementation. Validate owned and injected cleanup, failure cleanup, URI validation, and Ruff checks. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add feature-neutral validation for capability results, configured field paths, and generated embedding batches. The helpers reject unsafe paths and malformed vectors before MongoDB I/O while exposing stable integration-level errors. Document module boundaries, invariants, error categories, cancellation ownership, and verification with the implementation. Validate 22 focused cases plus Ruff, mypy, and Pyright. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…foundation-shared-internals Apply the repository-wide detailed commit and developer documentation requirements after reconciling the existing Python foundation commits with those rules. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Implement the Python Memory slice through the public ContextProvider contract, including scoped ANN and ENN retrieval, batched idempotent persistence, adapter resilience, cancellation propagation, lifecycle administration, retention metadata, and explicit index management. Direct APIs retain stable integration errors and driver causes while framework hooks fail open only for documented operational categories. Scope filters remain inside vector search and every deletion remains authorization-bound. Add public-seam unit and language-neutral contract coverage for construction, ownership, framework attribution, deterministic retry IDs, role/source filtering, pagination, deletion, timeout handling, index definitions, readiness, and redacted failures. Document the schema, control flow, security boundaries, ownership, and operational model. Validation: python -m pytest -q (52 passed, 1 skipped); python -m ruff check src tests samples; python -m ruff format --check src tests samples; python -m mypy; python -m pyright Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add a credential-gated integration-memory test that uses a uniquely prefixed collection, provisions Vector Search explicitly, verifies exact retrieval and scoped deletion, and performs targeted cleanup even on failure. Missing MongoDB credentials produce a clean skip rather than a network attempt. Add a runnable quickstart with explicit environment validation and cleanup, plus package and developer guidance that distinguishes semantic Memory from exact history and RAG. The deterministic sample embedding generator is intentionally limited to setup demonstration. Validation: python -m pytest -q (52 passed, 1 skipped); python -m build; python -m twine check for the exact wheel and sdist; clean virtual-environment install/import smoke for each exact artifact Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Fallback IDs previously remained cached after successful persistence, causing a later legitimate identical message to collide with an earlier memory. Track generated IDs by pending batch, preserve them across operational failures, and remove them only after confirmed insertion or a duplicate-only idempotent replay. This keeps retries stable without conflating separate successful runs. Reject float, bool, and other non-integer values for vector dimensions, constructor result and candidate limits, direct search limits, and administrative page sizes before embedding or MongoDB access. Strengthen the credentialed integration test with an equally relevant cross-tenant memory and explicit assertions that mandatory scope filtering excludes it. Validation: 61 unit/contract tests passed and 1 credentialed integration test skipped; Ruff check and format check passed; mypy and Pyright passed; wheel and sdist built and passed Twine; both exact artifacts passed clean install/import smoke tests. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Identical no-message-ID batches previously addressed one shared pending entry, so concurrent legitimate store or after-run attempts could insert the same document ID and lose one run. Allocate a JSON-native in-flight slot per attempt, draw retries only from failed slots, and retire each slot independently after confirmed persistence. Move cancelled and operationally failed attempts into retryable state before propagating cancellation or translating the driver error. Successful and duplicate-only attempts clean up only their own slot, preserving other concurrent and failed work. Public-seam tests coordinate two MongoDB insert boundaries, prove distinct IDs and complete state cleanup, and verify cancelled attempts retain their IDs for retry. Validation: 63 tests passed and 1 credentialed integration test skipped; Ruff check and format check passed; mypy and Pyright passed; wheel and sdist built and passed Twine; both exact artifacts passed clean install/import smoke tests. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
A session serialized during persistence retained an in-flight attempt token that a restored provider could not distinguish from live work, so retry generated new fallback IDs. Track active attempt tokens only in the provider instance and normalize persisted state before allocation, moving orphaned in-flight IDs into the failed queue for deterministic reuse and cleanup. Migrate the immediately preceding batch-to-message-ID map into one failed retry slot. Validate current, legacy, and restored shapes without discarding unknown data; malformed or unsupported state now raises a stable configuration error with explicit migration and cleanup guidance. Document the JSON-native state schema and recovery contract. Public-seam tests round-trip an in-flight AgentSession through to_dict/from_dict, verify orphan recovery and stale-state removal, verify prior-shape ID reuse, and retain malformed-state rejection coverage. Validation: 66 tests passed and 1 credentialed integration test skipped; Ruff check and format check passed; mypy and Pyright passed; wheel and sdist built and passed Twine; both exact artifacts passed clean install/import smoke tests. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Create the multi-target MongoDB.AgentFramework package and the reusable ownership, client construction, field-path, embedding, capability, and stable error mechanics required by every .NET provider. Ownership is fixed at construction so only provider-created clients are disposed, while unsafe paths and malformed vectors fail before MongoDB I/O. Document the verified public Agent Framework and MongoDB driver contracts alongside the implementation. Validate all net8.0, net9.0, and net10.0 targets, 24 offline unit tests, dotnet format, resolved dependency ranges, and the packed NuGet contents. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…e/dornet-implementation Combine the validated .NET package foundation with the active Python Memory line so dependent .NET features fork from the required cumulative prerequisites. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> # Conflicts: # docs/development/README.md
Classify PyMongo failures into stable authorization, configuration, capability, index, transient retrieval, transient persistence, and non-transient operation categories while preserving the driver exception as the cause. Agent hooks now fail open only for documented transient connection, retry-label, topology, shutdown, and timeout failures; security, index, configuration, embedding, programmer, and cancellation failures propagate. Treat duplicate-key writes as idempotent replay only when every collision names the expected _id, no write-concern failure occurred, and a mandatory-scope read confirms every expected document. Unrelated unique-index collisions and incomplete or cross-scope replay evidence remain persistence failures with retry state intact. Replace delimiter-based IDs and pending-batch fingerprints with canonical sorted JSON hashing. Migrate the immediately prior pending-state shape plus its batch and message fingerprints, while documenting the intentional pre-release document-ID change and development-collection cleanup guidance. Validation: 82 tests passed and 1 credentialed integration test skipped; Ruff check and format check passed; mypy and Pyright passed; wheel and sdist built and passed Twine; both exact artifacts passed clean install/import smoke tests. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Delimiter-based pending fingerprints can alias distinct scopes when valid values contain newlines, pipes, or control characters. Migrating such a candidate could consume another scope's retry slot even though canonical fingerprints are distinct. Permit legacy migration only when every current scope and message value is provably unambiguous under the former encoding. If an unsafe scope computes an existing legacy key, leave the state untouched and raise a stable configuration error with explicit cleanup guidance; when no candidate key exists, continue safely with canonical state. Add a public store regression reproducing two distinct newline-bearing scopes with the same legacy batch fingerprint and proving the second scope cannot consume the first scope's retry IDs. Document the conditional migration boundary and recovery procedure. Validation: 83 tests passed and 1 credentialed integration test skipped; Ruff check and format check passed; mypy and Pyright passed; wheel and sdist built and passed Twine; both exact artifacts passed clean install/import smoke tests. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…thon-implementation Integrate the completed Python Memory provider, its scoped lifecycle APIs, explicit provisioning, samples, developer documentation, contract coverage, and credential-gated deployment test after all local quality and artifact gates passed. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Implement the public HistoryProvider seam with immutable authorization scope, lossless versioned Message serialization, atomic per-session sequence ranges, and idempotent scoped identities. Reads apply the complete scope before latest-N ordering, while clear and regular index operations remain explicit and authorized. Preserve framework input, context, output, and source-attribution conventions by delegating lifecycle behavior to HistoryProvider. Add migration-gated mapping, stable MongoDB error categories, cancellation propagation, retention, ownership, redacted operation logs, public contract fixtures, and code-level developer documentation. Validated with focused pytest coverage, Ruff check/format, mypy, Pyright, and staged diff checks. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add a credential-gated integration-history test that provisions regular indexes explicitly and verifies exact reload, continuation, retry idempotency, latest-N ordering, tenant isolation, tool pairing, and targeted clear against a uniquely prefixed collection. Provide a runnable quickstart with explicit environment validation, provisioning, replay, optional scoped cleanup, and lifecycle closure. Update package and repository guidance to distinguish exact History from Memory, RAG, sessions, and checkpoints. Validated the integration test's clean credential-free skip, sample setup failure, Ruff checks, formatting, and staged diff checks. Real-deployment execution remains credential-gated. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Implement MongoDBMemoryProvider through the public AIContextProvider lifecycle with distinct search and storage scopes, batched embeddings, ANN and ENN retrieval, mandatory in-stage authorization filters, stable retry IDs persisted through AgentSession state, and fail-open behavior limited to documented framework adapter failures. Add explicit Vector Search index provisioning and validation, scoped deletion and bounded metadata administration, retention metadata, immutable resource ownership, cancellation and deadline propagation, a credential-gated deployment test, a runnable quickstart, and code-level developer documentation. Configured nested vector paths are materialized as nested BSON and index definitions validate type, path, dimensions, similarity, filter fields, readiness, and queryability. Validation: 57 tests passed and 1 credentialed integration test skipped; net8.0, net9.0, and net10.0 builds passed; dotnet format passed; sample build passed; NuGet pack and clean consumer install/compile passed. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…rnet-implementation Integrate the validated .NET Memory feature after its Python Memory and shared .NET foundation prerequisites, preserving the feature branch as an independently reviewable unit. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…et-implementation Advance the cumulative integration line through the completed Python Chat History prerequisite and latest Python Memory fixes before forking the equivalent .NET slice. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> # Conflicts: # docs/development/README.md
Anonymous framework messages previously received a generated framework message_id before serialization. That made retries stable but changed the caller's Message and violated exact lossless replay. Keep the framework payload and optional message_id unchanged. Store a separate required stable_message_id for scoped uniqueness, use provider identity for direct same-object retries, and use framework provider state to deduplicate reconstructed anonymous batches. Allocate sequence ranges atomically without changing replay content. Validated with the full pytest suite, Ruff check/format, mypy, Pyright, and staged diff checks. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Partial scopes previously omitted absent dimensions, so MongoDB filters could match a more-specific partition. Anonymous retry IDs also survived successful turns, and a partial insert allocated a new sequence range on retry. Index validation checked keys but not the complete uniqueness, partial-filter, and TTL contract. Persist schema-v2 canonical scope discriminators with explicit null dimensions and require the full scope at every MongoDB boundary. Track concurrent failed/in-flight attempts in versioned AgentSession state, reject ambiguous legacy state, and persist sequence reservations before message insertion so partial retries fill their original slots. Validate every compound and TTL index option with actionable recreate guidance. Validated with 116 passing tests and 2 credential-gated skips, Ruff check/format, mypy, Pyright, wheel and sdist builds, Twine checks, clean artifact imports, diff checks, and credential-pattern scanning. BREAKING CHANGE: History schema version 2 adds scope_discriminator, explicit scope dimensions, and new compound index definitions. Migrate version 1 history documents and recreate History indexes before replay. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Implement MongoDBChatHistoryProvider through the public ChatHistoryProvider lifecycle with immutable tenant/application/agent/session authorization, lossless versioned Agent Framework message serialization, scoped latest-N replay, and atomic sequence allocation. Use versioned AgentSession retry state and random fallback identities so operational retries remain idempotent without conflating separate identical messages. Reconcile compatible duplicate-key races, preserve tool and additional-property payloads, expose authorized clear and explicit regular/TTL index operations, and keep injected resources caller-owned. Add public-seam, contract, concurrency, migration, package, sample, and credential-gated deployment coverage plus code-level documentation. Validation: 87 tests passed and 2 integration tests skipped; net8.0/net9.0/net10.0 builds, dotnet format, sample build, NuGet pack, and clean consumer smoke passed. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…et-implementation Integrate the validated .NET exact Chat History feature after the completed Python History prerequisite, preserving the feature branch as an independently reviewable unit. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…-implementation Incorporate the completed Python History scope and retry-ordering hardening after the initial cross-language History integration. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Legacy schema-v1 records could be hidden by schema-v2 reads, while an absent scope dimension risked matching a more-specific partition during migration detection. Probe only the exact authorized raw scope and session, representing absent dimensions as explicit null-or-missing predicates, and fail with stable migration guidance before returning history. Retain deterministic explicit-ID sequence reservations for seven days so a losing concurrent writer can reconcile with a winner that has already completed. Provision and validate a dedicated partial TTL index to bound both completed and failed reservation metadata without sacrificing retry ordering. Require simple binary collation for the scoped identity and ordering indexes, while accepting MongoDB's equivalent omission of the default simple collation. Reject incompatible collations and reservation TTL definitions with recreate guidance. Validated with 121 passing tests (2 credential-gated skips), Ruff format and check, mypy, Pyright, wheel and sdist builds, Twine checks, and clean artifact install/import smoke tests. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Adopt the canonical schema-v2 History scope with explicit null dimensions and a scope discriminator so tenantless providers cannot match tenant-scoped or legacy documents. Persist sequence reservations before insertion so partial retries reuse their original ordinals even when later batches complete. Validate complete compound, partial-filter, uniqueness, and TTL index contracts; reject ambiguous version-1 retry state and schema-v1 documents with migration guidance; and extend the shared fixture and public-seam regression coverage. Validation: 93 .NET tests passed and 2 credentialed integration tests skipped; dotnet format, sample build, NuGet pack, and consumer smoke passed. The merged Python prerequisite currently has separate test-harness failures around reservation cleanup that will be corrected independently. BREAKING CHANGE: .NET History schema version 2 adds canonical scope fields, scope_discriminator, stable_message_id, reservation documents, and new compound index definitions. Migrate version 1 documents and recreate History indexes before replay. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ornet-implementation Align .NET History with the completed Python schema-v2 scope and retry-ordering hardening before downstream shared RAG work begins. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Resolve the README conflict in favor of the feature branch version, retaining its .NET guidance and legal notices. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Document local Python and .NET restore, build, test, package installation, smoke-test, and non-publishing rehearsal workflows. Link the guide from the repository and developer documentation indexes so contributors can find the supported artifact-consumption path without using GitHub or public registries.\n\nValidated Python tests and wheel/sdist creation, plus .NET Release build, tests, and NuGet package creation. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace branch-pinned GitHub URLs for repository-owned README content with relative paths. This keeps links valid when browsing develop, release, and topic branches instead of redirecting readers to main.\n\nValidation: confirmed every relative README target exists and no internal blob/tree URL remains in Markdown. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Integrate branch-independent repository documentation links into the development branch. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool. What Enabling Code Scanning Means:
For more information about GitHub Code Scanning, check out the documentation. |
Co-authored-by: theshanbhag <91714892+theshanbhag@users.noreply.github.com>
Co-authored-by: theshanbhag <91714892+theshanbhag@users.noreply.github.com>
Co-authored-by: theshanbhag <91714892+theshanbhag@users.noreply.github.com>
Co-authored-by: theshanbhag <91714892+theshanbhag@users.noreply.github.com>
Co-authored-by: theshanbhag <91714892+theshanbhag@users.noreply.github.com>
Co-authored-by: theshanbhag <91714892+theshanbhag@users.noreply.github.com>
Co-authored-by: theshanbhag <91714892+theshanbhag@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.