diff --git a/CHANGELOG.md b/CHANGELOG.md index d0e34c0..7769c2a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,6 +41,9 @@ This is a replacement alpha rather than a compatibility release. after timeout and bounded shutdown quiescence; - official MCP Inspector installed-wheel invocation and Visual Studio Code workspace configuration-discovery evidence from the independent consumer; +- independently packaged redaction evidence for experimental task creation, status, + blocking result retrieval, related-task progress, bounded retention, cancellation, + and private task state; - real behavioral tests, strict typing/linting, package smoke tests, and accurate docs; - a dependency-free JSON runtime microbenchmark for repeatable local comparisons. - a dependency-free MCP stdio microbenchmark covering parsing, dispatch, diff --git a/README.md b/README.md index 5975e66..4e56f8f 100644 --- a/README.md +++ b/README.md @@ -106,7 +106,7 @@ progress and logging, bounded task retention, admission limits, and security bou ## Proven external consumer [Samsarix Integration Examples](https://github.com/Deathcharge/samsarix-integration-examples) -version 0.2.6 pins Core commit `04cf5ba7ca7eb2defcb946f538d62291762db109` +version 0.2.7 pins Core commit `1558624ba294f47d59ea1713ac5609ef3122239e` and uses only the public API to expose a privacy-first, resumable redaction workflow over MCP. Its consumer-owned tests exercise initialization, discovery, stdio invocation, @@ -115,9 +115,12 @@ artifact conflict handling, exact `TypedDict` output discovery, client cancellation without an output artifact or response, continued protocol service, token-correlated content-free progress, client-filtered operational logging, synchronous timeout/quiescence accounting, package installation, and CLI entry points. -The official MCP Inspector also discovers and invokes its freshly installed wheel; a -portable VS Code workspace is configuration-discovered, with signed-in trust and tool -approval still awaiting operator acceptance. +It also proves the experimental task lifecycle on the real redaction workflow: +immediate private task state, status polling, blocking result retrieval, related-task +progress, safe cancellation, bounded retention, and unavailable unauthenticated listing. +The preceding v0.2.6 contract was also discovered and invoked through official MCP +Inspector 0.21.2; a portable VS Code workspace is configuration-discovered, with +signed-in trust and tool approval still awaiting operator acceptance. This is compatibility evidence, not a claim of third-party production adoption. See the [adoption record](docs/ADOPTION.md) for exact commits, commands, artifact diff --git a/ROADMAP.md b/ROADMAP.md index add4c11..0d9f777 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -30,18 +30,19 @@ remain separate decisions. - Strict `TypedDict` input and output contracts now preserve named nested fields, descriptions, and required/optional key semantics in JSON Schema and runtime validation. -- External consumer: `samsarix-integration-examples` version 0.2.6 pins Core - commit `04cf5ba7ca7eb2defcb946f538d62291762db109` and proves a confined, +- External consumer: `samsarix-integration-examples` version 0.2.7 pins Core + commit `1558624ba294f47d59ea1713ac5609ef3122239e` and proves a confined, privacy-first redaction workflow, exact typed result discovery, and response-free asynchronous cancellation through the public MCP API. It also proves progress-token correlation, monotonic content-free updates, notification ordering, cancellation cutoff, artifact privacy, client-selected operational-log filtering, content-free terminal events, retained sync-worker capacity after timeout, and bounded shutdown quiescence. Its portable Visual Studio Code workspace is - configuration-discovered by VS Code 1.131.0, while official MCP Inspector 0.21.2 - independently proves installed-wheel discovery and invocation. -- Next: prove the task lifecycle from the independently packaged redaction consumer, - complete the signed-in Visual Studio Code trust/tool-approval journey, and rerun + configuration-discovered by VS Code 1.131.0; the preceding v0.2.6 contract was also + independently discovered and invoked through official MCP Inspector 0.21.2. The + consumer now proves real redaction through task creation, status, blocking result + retrieval, related-task progress, bounded private retention, and safe task cancellation. +- Next: complete the signed-in Visual Studio Code trust/tool-approval journey and rerun the consumer matrix after GitHub Actions billing is restored. Use observed demand and confirmed contract gaps—not framework parity—to prioritize broader schema support. @@ -64,7 +65,8 @@ remain separate decisions. 1 MiB source ingestion, safe errors, filesystem confinement, and version compatibility. Consumer-owned asynchronous MCP cancellation, bounded progress, cancellation cutoff, content-free operational logging, synchronous timeout - accounting, and bounded shutdown quiescence are now proven. + accounting, bounded shutdown quiescence, and the experimental MCP task lifecycle are + now proven. - Add authentication evidence only when an authenticated network transport is in scope; the supported stdio bridge delegates trust to the process launcher. - Make one implementation canonical; remove or freeze duplicate behavior only after parity and rollback are proven. diff --git a/docs/ADOPTION.md b/docs/ADOPTION.md index 215de3f..7b7ef50 100644 --- a/docs/ADOPTION.md +++ b/docs/ADOPTION.md @@ -12,14 +12,15 @@ Repository: | Evidence | Value | | --- | --- | -| Core contract commit | `04cf5ba7ca7eb2defcb946f538d62291762db109` | +| Core contract commit | `1558624ba294f47d59ea1713ac5609ef3122239e` | | Core package version | `2.0.0a1` | -| Consumer merge commit | `6fd45f7f36ad57ad5a9ceb372af5b73193739624` | -| Consumer pull request | [samsarix-integration-examples#9](https://github.com/Deathcharge/samsarix-integration-examples/pull/9) | -| Consumer package version | `0.2.6` | +| Consumer merge commit | `51cc3fb3f1fb4bd484ebef58d2c9ab22acc24623` | +| Consumer pull request | [samsarix-integration-examples#10](https://github.com/Deathcharge/samsarix-integration-examples/pull/10) | +| Consumer package version | `0.2.7` | | Integration Guard provenance | [`samsarix-integration-guard`](https://github.com/Deathcharge/samsarix-integration-guard) `0.2.0` at `1aa711d89eaedcc396f0cd6eb416fb4253da3f5e` | | Orchestration provenance | [`samsarix-agent-orchestration`](https://github.com/Deathcharge/samsarix-agent-orchestration) `0.1.0` at `0dfc050cf9a4582c9fa8d34d74b1ca97d43c9005` | -| Supported consumer Python | 3.11-3.13 | +| Declared consumer Python | 3.11-3.13 | +| Executed consumer Python in this record | 3.11.9; extra source-tree pass on 3.14.6 | | Compatibility owner | Samsarix LLC | | Support level | Best effort; no SLA | @@ -46,6 +47,17 @@ selects `info`. The accepted event contains only the public tool name, invocatio status, and duration; it follows both progress phases and precedes the response. A cancelled call emits no terminal log. +The same consumer redaction tool advertises task support as optional, preserving the +ordinary call and older-client contract. A task-aware MCP `2025-11-25` client receives +an immediate `working` state with a random 128-bit identifier; that state contains no +source name, output name, run id, arguments, result, secret, or workspace path. The +consumer proves `tasks/get`, blocking `tasks/result`, exact structured result retrieval, +and two related-task progress updates. Requested retention is clamped to the +application's fifteen-minute maximum, only eight session-local tasks may be retained, +and unauthenticated `tasks/list` remains unavailable. A blocked task can be cancelled; +the async redaction stops, cleanup-time progress is refused, no artifact is published, +and `tasks/result` retains only Core's generic cancelled result. + A separate consumer-owned synchronous fixture occupies one real worker under a single-slot runtime. After the caller-visible timeout, the fixture proves the worker, slot, in-flight gauge, and pending-sync count remain occupied; a second call cannot @@ -56,7 +68,8 @@ zero and bounded shutdown succeeds. The gated probe exists only in the contract and is not a production redaction tool. The consumer now ships a portable, workspace-scoped Visual Studio Code MCP -configuration and confined example. The official MCP Inspector 0.21.2 client discovered +configuration and confined example. At consumer version 0.2.6, the official MCP +Inspector 0.21.2 client discovered the exact tool schemas and successfully invoked the freshly installed consumer wheel over stdio; its result and artifact excluded the seeded token, email, and workspace path. Visual Studio Code 1.131.0 separately opened the sample and discovered the stopped @@ -65,47 +78,57 @@ was signed out of Copilot, so no trust prompt or VS Code tool call was accepted. desktop configuration-discovery evidence, not a completed desktop-agent journey. The consumer's merged -[`pyproject.toml`](https://github.com/Deathcharge/samsarix-integration-examples/blob/6fd45f7f36ad57ad5a9ceb372af5b73193739624/pyproject.toml) +[`pyproject.toml`](https://github.com/Deathcharge/samsarix-integration-examples/blob/51cc3fb3f1fb4bd484ebef58d2c9ab22acc24623/pyproject.toml) is the dependency manifest. It declares -`samsarix-core @ git+https://github.com/Deathcharge/samsarix-core.git@04cf5ba7ca7eb2defcb946f538d62291762db109`; +`samsarix-core @ git+https://github.com/Deathcharge/samsarix-core.git@1558624ba294f47d59ea1713ac5609ef3122239e`; the installed public package reports Core version `2.0.0a1`. The same manifest records the Guard and Orchestration commits above, and the compatibility test asserts all three installed package versions. ## Verified contract -The consumer suite completed locally on Windows with Python 3.11.9: +The installed-wheel consumer contract checks completed locally on Windows with Python +3.11.9: ```text python -m ruff check . -> passed python -m mypy -> passed, strict mode -python -m pytest -q -> 31 passed, 91.35% branch coverage +python -m pytest -> 33 passed, 90.85% branch coverage from installed wheel python -m bandit -q -r src -> passed -python -m build -> isolated wheel and sdist passed +``` + +The isolated release build and metadata checks separately passed on Python 3.14.6: + +```text +python -m build -> isolated wheel and sdist passed python -m twine check -> wheel and sdist passed ``` A fresh virtual environment installed the consumer wheel with dependencies -resolved from their exact public Git commits. Import metadata resolved to `0.2.6` +resolved from their exact public Git commits. Import metadata resolved to `0.2.7` and retained the exact Core commit requirement. Outside the source checkout, the -installed `samsarix-redaction-mcp` CLI completed a real redaction over stdio, -published a sanitized artifact, emitted exactly two token-correlated progress -notifications followed by one content-free operational log and the terminal -response, and exposed neither the seeded secret nor the resolved workspace path in -protocol output. +installed `samsarix-redaction-mcp` CLI completed a real task-augmented redaction over +stdio: initialize, discovery, immediate task creation, blocking result retrieval, and +terminal status. It published a sanitized artifact, emitted exactly two related-task +progress notifications, and exposed neither the three seeded secrets nor the resolved +workspace path in protocol output. Both installed CLIs also passed their help journeys. +The source-tree development run on Python 3.14.6 separately completed the same 33 tests +at 91.47% branch coverage. Python 3.12 and 3.13 remain declared consumer support, but +their hosted jobs did not execute in this record because the account billing gate stopped +the matrix before checkout. Final local artifacts were: | Artifact | Bytes | SHA-256 | | --- | ---: | --- | -| `samsarix_integration_examples-0.2.6-py3-none-any.whl` | 17,798 | `b406b923a2e74778c7500d359851600cc219f14e24d28bb5e163a0084d7af1b5` | -| `samsarix_integration_examples-0.2.6.tar.gz` | 33,951 | `ba8d43723783c2253e9da9ebe438ec9f01f1521d0aa4461a75d6b941c30f5bd2` | - -CodeRabbit attached a green high-level status, but its quota warning states that a -comprehensive review did not start; it is not counted as independent line-level review -evidence. The consumer's -[pull-request](https://github.com/Deathcharge/samsarix-integration-examples/actions/runs/30733933805) -and [post-merge](https://github.com/Deathcharge/samsarix-integration-examples/actions/runs/30733992055) +| `samsarix_integration_examples-0.2.7-py3-none-any.whl` | 18,303 | `1c538ac89b2ea878b1ef0cd8ee0628cef6bcc4745efc39cb42927018d1770896` | +| `samsarix_integration_examples-0.2.7.tar.gz` | 36,469 | `807f33bd857ec7918e4b0a0747472638120a618ea977323c86d4808d3ffd4cf5` | + +CodeRabbit attached a green high-level status, but its free-plan notice says the pass +provides only a summary and walkthrough; it is not counted as independent line-level +review evidence. The consumer's +[pull-request](https://github.com/Deathcharge/samsarix-integration-examples/actions/runs/30736315532) +and [post-merge](https://github.com/Deathcharge/samsarix-integration-examples/actions/runs/30736368378) GitHub Actions runs did not start their jobs: GitHub attached an account billing/spending-limit failure before checkout, leaving zero executed steps and diff --git a/docs/PRODUCTIZATION.md b/docs/PRODUCTIZATION.md index 073ffc9..cec034a 100644 --- a/docs/PRODUCTIZATION.md +++ b/docs/PRODUCTIZATION.md @@ -1,6 +1,6 @@ # Samsarix Core Productization Record -Last updated: 2026-08-01 +Last updated: 2026-08-02 ## Current repository assessment @@ -259,9 +259,10 @@ All baseline commands were run on Windows with Python 3.11.9 at commit asynchronous cancellation, bounded content-free progress, and client-filtered operational logging, retained sync-worker capacity after timeout, and bounded shutdown quiescence, official MCP Inspector invocation, and Visual Studio Code - configuration discovery from `samsarix-integration-examples` 0.2.6 at merge commit - `6fd45f7f36ad57ad5a9ceb372af5b73193739624`; the consumer pins Core commit - `04cf5ba7ca7eb2defcb946f538d62291762db109`. + configuration discovery from `samsarix-integration-examples`; version 0.2.7 at merge + commit `51cc3fb3f1fb4bd484ebef58d2c9ab22acc24623` pins Core commit + `1558624ba294f47d59ea1713ac5609ef3122239e` and additionally proves the bounded + experimental task lifecycle on the real redaction workflow. ## Deferred work and rationale @@ -269,15 +270,14 @@ P2 framework/provider adapters, durable registry/invocation persistence, process isolation, and richer schema types remain deliberately deferred. Experimental MCP tasks retain bounded results only inside one server process and do not satisfy durable persistence or restart recovery. Those features are not required for the first useful -release. One independent repository now proves the stable MCP boundary; task lifecycle -evidence is the next consumer increment. Subsequent surface area should follow concrete -consumer demand. Core's own -[Python 3.10-3.14 hosted matrix](https://github.com/Deathcharge/samsarix-core/actions/runs/30731486471) -is green; the task-execution branch's local Python 3.11 suite has 98 tests and -94.28% branch coverage. Exact hosted evidence remains required before merge. -The consumer's separate Python 3.11-3.13 jobs could not start because GitHub -reported an account billing/spending-limit problem, so its local 31-test and -installed-wheel evidence is recorded separately in `docs/ADOPTION.md`. +release. One independent repository now proves both the stable MCP boundary and the +experimental task lifecycle. Subsequent surface area should follow concrete consumer +demand. Core's own post-merge +[Python 3.10-3.14 hosted matrix](https://github.com/Deathcharge/samsarix-core/actions/runs/30735632274) +is green with 98 tests and 94.28% branch coverage. The consumer's separate Python +3.11-3.13 jobs could not start because GitHub reported an account +billing/spending-limit problem, so its local 33-test installed-wheel evidence is +recorded separately in `docs/ADOPTION.md`. ## Owner-, credential-, or production-blocked tasks