From 743122a8b20667cce8363c327f8e8b34763049c1 Mon Sep 17 00:00:00 2001 From: PRAMOD B N Date: Mon, 19 Oct 2026 19:21:14 -0500 Subject: [PATCH 1/7] docs: align Sidecar 0.9 authority privacy and evidence boundaries --- README.md | 6 ++++++ ROADMAP.md | 6 ++++++ docs/sidecar-0.9.md | 23 +++++++++++++++++++++++ 3 files changed, 35 insertions(+) create mode 100644 docs/sidecar-0.9.md diff --git a/README.md b/README.md index d84a947..d0db4bb 100644 --- a/README.md +++ b/README.md @@ -642,3 +642,9 @@ the existing registry discovers faults. Workflows, experiments and fuzzing are Python/CLI orchestration, not new MCP tools. Hosted HTTP continues to reject `chaos.run_experiment`, so no experiment target is executed by the hosted service. + +## Sidecar 0.9.0 interoperability + +Task-authority/delegation and reader-safe summaries are available in Sidecar. +See [compatibility and ownership boundaries](docs/sidecar-0.9.md). Existing +native decisions/correlation stay compatible; no new normative schema is claimed. diff --git a/ROADMAP.md b/ROADMAP.md index 92a9453..7f511ed 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -817,3 +817,9 @@ the existing registry discovers faults. Workflows, experiments and fuzzing are Python/CLI orchestration, not new MCP tools. Hosted HTTP continues to reject `chaos.run_experiment`, so no experiment target is executed by the hosted service. + +## Sidecar 0.9.0 interoperability + +Task-authority/delegation and reader-safe summaries are available in Sidecar. +See [compatibility and ownership boundaries](docs/sidecar-0.9.md). Existing +native decisions/correlation stay compatible; no new normative schema is claimed. diff --git a/docs/sidecar-0.9.md b/docs/sidecar-0.9.md new file mode 100644 index 0000000..2888626 --- /dev/null +++ b/docs/sidecar-0.9.md @@ -0,0 +1,23 @@ +# Sidecar 0.9.0 compatibility + +Sidecar 0.9.0 adds explicit task-authority tool bindings, narrowed delegation, +ancestor revocation, dispatch-time expiry checks, context reader permissions and +redacted evidence summaries. Private scope goals/values use explicit host delivery. + +MCP discovery detects installed task-authority/revocation and redacted-evidence APIs without constructing a task. Discovery does not connect to or govern a runtime. Protected MCP servers/credential issuers remain responsible for remote access revocation; Sidecar registries are process-local. + +The core package remains standalone. No new mandatory sibling dependency or +shared schema is introduced. Constraint-only guardians retain expiry WARN; +authority-bearing tasks BLOCK on expiry/revocation. Stop revokes descendants; +restart does not revive grants. Operator intent modification cannot reset a +delegated grant. Reader/actor identities must come from the trusted harness. + +The fixed comparison has 24 offline synthetic runs (12 per variant): Agent Alone +dispatches 6/6 unsafe proposals; Sidecar dispatches 0/6, with 2/6 false interventions +on clean gate/provider-outage controls. Zero live inference cost/tokens are +synthetic accounting, not an economic or production-reliability claim. Raw +arguments/journals/operator views remain privileged; redaction is allowlisted, +not arbitrary secret detection or process isolation. + +See the [Sidecar v0.9 guide](https://github.com/DeepAgentLabs/agentic-sidecar/blob/v0.9.0/website/docs/v0.9.md) +and [paired evidence](https://github.com/DeepAgentLabs/agentic-sidecar/blob/v0.9.0/tests/validation/v0_9_supervision.json). From 95ba60d0c14e707455d049027cf512e85c19fdf0 Mon Sep 17 00:00:00 2001 From: PRAMOD B N Date: Mon, 19 Oct 2026 19:21:59 -0500 Subject: [PATCH 2/7] feat: discover Sidecar authority and redacted evidence without runtime access --- .../adapters/agentic_sidecar.py | 3 +++ tests/test_sidecar_readiness.py | 25 ++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/deep_agentic_core_mcp/adapters/agentic_sidecar.py b/src/deep_agentic_core_mcp/adapters/agentic_sidecar.py index 318431a..f08a2dc 100644 --- a/src/deep_agentic_core_mcp/adapters/agentic_sidecar.py +++ b/src/deep_agentic_core_mcp/adapters/agentic_sidecar.py @@ -28,6 +28,9 @@ def _runtime_status(package: Any) -> dict[str, Any]: (getattr(package, "TaskRuntime", None), "snapshot", "runtime_events"), (getattr(package, "TaskRuntime", None), "control", "task_controls"), (getattr(package, "EventJournal", None), "export", "durable_audit"), + (getattr(package, "AuthorityRegistry", None), "grant", "task_authority"), + (getattr(package, "AuthorityRegistry", None), "revoke", "authority_revocation"), + (getattr(package, "BoundAgent", None), "evidence", "redacted_evidence"), ): if callable(getattr(owner, method, None)): features.append(capability) diff --git a/tests/test_sidecar_readiness.py b/tests/test_sidecar_readiness.py index f9de39d..2168789 100644 --- a/tests/test_sidecar_readiness.py +++ b/tests/test_sidecar_readiness.py @@ -37,7 +37,7 @@ def test_real_v07_package_reports_capabilities_without_connecting_task(monkeypat status = adapter.status_summary() assert probe["runtime_ready"] is True assert status["package_status"] == "implemented" - assert set(status["installed_runtime_capabilities"]) == { + expected = { "decision_evaluation", "governance_enforcement", "plan_evaluation", @@ -46,6 +46,9 @@ def test_real_v07_package_reports_capabilities_without_connecting_task(monkeypat "durable_audit", "local_operator_http", } + if hasattr(package, "AuthorityRegistry"): + expected |= {"task_authority", "authority_revocation", "redacted_evidence"} + assert set(status["installed_runtime_capabilities"]) == expected assert not status["runtime_connected"] assert not status["mcp_runtime_controls"] inventory = adapter.module_inventory() @@ -124,3 +127,23 @@ def must_not_run(*args, **kwargs): assert not result["mcp_runtime_controls"] (tmp_path / "operations").rmdir() assert adapter.module_inventory()["planned_runtime_modules"] == ["operations"] + + +def test_v09_discovery_is_read_only(): + def must_not_run(*args, **kwargs): + raise AssertionError("Discovery must not issue grants, revoke or read evidence") + + package = SimpleNamespace( + Sidecar=SimpleNamespace(evaluate=must_not_run), + AuthorityRegistry=SimpleNamespace(grant=must_not_run, revoke=must_not_run), + BoundAgent=SimpleNamespace(evidence=must_not_run), + ) + status = adapter._runtime_status(package) + assert set(status["installed_runtime_capabilities"]) == { + "decision_evaluation", + "task_authority", + "authority_revocation", + "redacted_evidence", + } + assert status["runtime_connected"] is False + assert status["mcp_runtime_controls"] is False From 8575a2dd425ecd62b66a7d49e30f9d234c608f22 Mon Sep 17 00:00:00 2001 From: PRAMOD B N Date: Mon, 19 Oct 2026 19:21:59 -0500 Subject: [PATCH 3/7] ci: decouple AWS deployment from releases and pin Sidecar 0.9 images --- .github/workflows/release-pypi.yml | 48 ------------------------------ AGENTS.md | 15 +++++++--- deploy/aws/CI-CD.md | 9 ++++++ deploy/docker/Dockerfile.aws | 2 +- deploy/docker/Dockerfile.render | 2 +- deploy/docker/README.md | 9 ++++++ tests/test_hosted_image.py | 14 ++++++++- 7 files changed, 44 insertions(+), 55 deletions(-) diff --git a/.github/workflows/release-pypi.yml b/.github/workflows/release-pypi.yml index 541fd72..a8bfdee 100644 --- a/.github/workflows/release-pypi.yml +++ b/.github/workflows/release-pypi.yml @@ -154,51 +154,3 @@ jobs: - name: Publish to MCP Registry run: ./mcp-publisher publish - deploy: - name: Deploy AWS - needs: publish-pypi - environment: aws - runs-on: ubuntu-latest - timeout-minutes: 45 - permissions: - contents: read - concurrency: - group: aws-mcp-production - cancel-in-progress: false - env: - AWS_REGION: us-east-2 - AWS_DEFAULT_REGION: us-east-2 - IMAGE_TAG: release-${{ github.ref_name }}-${{ github.run_id }}-${{ github.run_attempt }} - steps: - - uses: actions/checkout@v7 - - name: Build AWS image - run: python3 scripts/build_container.py --target aws --tag "deep-agentic-core-mcp:$IMAGE_TAG" - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@e1253824e5c10ff9df46874f81ed3ec929e19cfd # v6 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: ${{ env.AWS_REGION }} - - name: Publish immutable image - id: image - shell: bash - run: | - repository_uri=$(aws cloudformation describe-stacks --stack-name deep-agentic-core-mcp-assets --query 'Stacks[0].Outputs[?OutputKey==`RepositoryUri`].OutputValue | [0]' --output text) - registry="${repository_uri%%/*}" - repository="${repository_uri#*/}" - export DOCKER_CONFIG=$(mktemp -d) - trap 'docker logout "$registry" >/dev/null 2>&1; rm -rf "$DOCKER_CONFIG"' EXIT - aws ecr get-login-password | docker login --username AWS --password-stdin "$registry" - docker tag "deep-agentic-core-mcp:$IMAGE_TAG" "$repository_uri:$IMAGE_TAG" - docker push "$repository_uri:$IMAGE_TAG" - digest=$(aws ecr describe-images --repository-name "$repository" --image-ids "imageTag=$IMAGE_TAG" --query 'imageDetails[0].imageDigest' --output text) - echo "uri=$repository_uri@$digest" >> "$GITHUB_OUTPUT" - - name: Deploy image through CloudFormation - env: - IMAGE_URI: ${{ steps.image.outputs.uri }} - run: python3 scripts/aws_ci_deploy.py --image "$IMAGE_URI" --change-set "ci-$GITHUB_RUN_ID-$GITHUB_RUN_ATTEMPT" - - name: Verify hosted MCP - env: - MCP_API_KEY: ${{ secrets.MCP_SMOKE_KEY }} - MCP_ORIGIN: https://mcp.deepagentlabs.io - run: python3 scripts/ci_smoke.py diff --git a/AGENTS.md b/AGENTS.md index 5476018..b0a90a6 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -130,9 +130,7 @@ Test transport-specific authorization and state isolation when changing dispatch - Pull requests, pushes to `main`, and manual CI runs perform checks and package builds without deploying AWS or publishing to PyPI. - Pushing a `v*` tag runs `release-pypi.yml`: the full test matrix and packaging - checks, PyPI publication, GitHub Release, MCP Registry publication, and AWS - deployment. AWS depends on successful PyPI publication and deploys the tagged - source using an immutable image. Infrastructure changes use the operator flow. + checks, PyPI publication, GitHub Release, MCP Registry publication. AWS deployment is manual from 0.4.1. Infrastructure changes use the operator flow. - Prepare matching versions in `pyproject.toml`, `__init__.py`, `server.json`, and `uv.lock`, plus dated changelog notes, before pushing the release tag. - Keep Docker files under `deploy/docker/` and infrastructure under `deploy/aws/`. @@ -206,8 +204,17 @@ from the same tag and does all of the following: - publishes the package to PyPI via Trusted Publishing (OIDC) - creates the GitHub Release object for `vX.Y.Z` - publishes the server to the MCP Registry -- deploys the tagged source to AWS after PyPI publication succeeds +- leaves AWS deployment to an explicit manual operator action The GitHub Release title is the tag name, and its body is copied from the matching `CHANGELOG.md` section so the changelog, tag, PyPI release, GitHub Releases page, and MCP Registry publish all stay aligned. + + +## Release pipeline from 0.4.1 + +Tag releases validate, publish PyPI/GitHub Release and publish the MCP Registry. +Automatic AWS deployment is removed from GitHub Actions. Existing AWS build and +operator deployment scripts remain available for an explicit manual deployment; +publishing a package does not update the running AWS service. Standalone image +recipes include Sidecar 0.9.0 for package discovery, with no live runtime bridge. diff --git a/deploy/aws/CI-CD.md b/deploy/aws/CI-CD.md index 887754f..1b035d3 100644 --- a/deploy/aws/CI-CD.md +++ b/deploy/aws/CI-CD.md @@ -45,3 +45,12 @@ To retry a failed release deployment, rerun its failed job in GitHub Actions. To deploy new code, prepare and publish a new version tag. Rotate the IAM access key by updating both repository secrets, then remove the old key after a successful run. Rotate or revoke the MCP smoke key through its application account and update `MCP_SMOKE_KEY` when rotating. + + +## Release pipeline from 0.4.1 + +Tag releases validate, publish PyPI/GitHub Release and publish the MCP Registry. +Automatic AWS deployment is removed from GitHub Actions. Existing AWS build and +operator deployment scripts remain available for an explicit manual deployment; +publishing a package does not update the running AWS service. Standalone image +recipes include Sidecar 0.9.0 for package discovery, with no live runtime bridge. diff --git a/deploy/docker/Dockerfile.aws b/deploy/docker/Dockerfile.aws index fc07545..a685042 100644 --- a/deploy/docker/Dockerfile.aws +++ b/deploy/docker/Dockerfile.aws @@ -8,7 +8,7 @@ COPY src ./src # Evals 0.9.0 (the producer of the native report/gate schemas bundled for evals.validate_artifact). # Chaos is installed for its exporter and fault catalog only; HTTP always # rejects chaos.run_experiment, so no target script is ever executed here. -RUN pip install --no-cache-dir ".[http]" "agenticlens==0.10.0" "agentic-chaos==0.8.0" "agentic-evals==0.9.0" +RUN pip install --no-cache-dir ".[http]" "agenticlens==0.10.0" "agentic-chaos==0.8.0" "agentic-evals==0.9.0" "agentic-sidecar==0.9.0" COPY scripts/fetch_schema_assets.py /tmp/fetch_schema_assets.py RUN python /tmp/fetch_schema_assets.py /opt/workspace/ai-operations-spec RUN useradd --create-home --uid 10001 mcp diff --git a/deploy/docker/Dockerfile.render b/deploy/docker/Dockerfile.render index a478446..b4a5e68 100644 --- a/deploy/docker/Dockerfile.render +++ b/deploy/docker/Dockerfile.render @@ -8,7 +8,7 @@ COPY src ./src # Evals 0.9.0 (the producer of the native report/gate schemas bundled for evals.validate_artifact). # Chaos is installed for its exporter and fault catalog only; HTTP always # rejects chaos.run_experiment, so no target script is ever executed here. -RUN pip install --no-cache-dir ".[http]" "agenticlens==0.10.0" "agentic-chaos==0.8.0" "agentic-evals==0.9.0" +RUN pip install --no-cache-dir ".[http]" "agenticlens==0.10.0" "agentic-chaos==0.8.0" "agentic-evals==0.9.0" "agentic-sidecar==0.9.0" COPY scripts/fetch_schema_assets.py /tmp/fetch_schema_assets.py RUN python /tmp/fetch_schema_assets.py /opt/workspace/ai-operations-spec RUN useradd --create-home --uid 10001 mcp diff --git a/deploy/docker/README.md b/deploy/docker/README.md index 47cbceb..d6e1992 100644 --- a/deploy/docker/README.md +++ b/deploy/docker/README.md @@ -28,3 +28,12 @@ docker build -f deploy/docker/Dockerfile.render -t deep-agentic-core-mcp:render The adjacent `Dockerfile.*.dockerignore` files filter those direct build contexts. The helper is the portable option across Docker builders. + + +## Release pipeline from 0.4.1 + +Tag releases validate, publish PyPI/GitHub Release and publish the MCP Registry. +Automatic AWS deployment is removed from GitHub Actions. Existing AWS build and +operator deployment scripts remain available for an explicit manual deployment; +publishing a package does not update the running AWS service. Standalone image +recipes include Sidecar 0.9.0 for package discovery, with no live runtime bridge. diff --git a/tests/test_hosted_image.py b/tests/test_hosted_image.py index ec62cd7..cae1e28 100644 --- a/tests/test_hosted_image.py +++ b/tests/test_hosted_image.py @@ -48,7 +48,12 @@ def test_standalone_images_pin_phase3_sibling_versions(dockerfile: str) -> None: # Exact sibling releases the current hosted images ship (0.3.14: Lens 0.10.0, Chaos 0.8.0, # Evals 0.9.0, matching the bundled native Evals schemas). -HOSTED_PINS = {"agenticlens": "0.10.0", "agentic-chaos": "0.8.0", "agentic-evals": "0.9.0"} +HOSTED_PINS = { + "agenticlens": "0.10.0", + "agentic-chaos": "0.8.0", + "agentic-evals": "0.9.0", + "agentic-sidecar": "0.9.0", +} @pytest.mark.parametrize("dockerfile", STANDALONE_IMAGES) @@ -118,3 +123,10 @@ def test_workspace_image_copies_chaos_and_spec_catalogs() -> None: ): assert f"COPY {path}" in dockerfile assert f"!{path}" in ignore + + +def test_release_does_not_automatically_deploy_aws(): + workflow = (REPO / ".github/workflows/release-pypi.yml").read_text() + assert " deploy:" not in workflow + assert "aws-actions/configure-aws-credentials" not in workflow + assert "scripts/aws_ci_deploy.py" not in workflow From c90da3a05017d513065b13d5943cb13db317570d Mon Sep 17 00:00:00 2001 From: PRAMOD B N Date: Mon, 19 Oct 2026 19:23:25 -0500 Subject: [PATCH 4/7] fix: keep sibling virtualenv dependencies behind the active interpreter --- src/deep_agentic_core_mcp/adapters/__init__.py | 4 +++- tests/test_sidecar_readiness.py | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/deep_agentic_core_mcp/adapters/__init__.py b/src/deep_agentic_core_mcp/adapters/__init__.py index 829db23..a2395be 100644 --- a/src/deep_agentic_core_mcp/adapters/__init__.py +++ b/src/deep_agentic_core_mcp/adapters/__init__.py @@ -48,7 +48,9 @@ def ensure_repo_on_path(repo_name: str, *, src: bool = True) -> Path: for site_packages in sorted((repo_root / ".venv" / "lib").glob("python*/site-packages")): site_packages_str = str(site_packages) if site_packages_str not in sys.path: - sys.path.insert(0, site_packages_str) + # Sibling environments are fallback dependencies, never overrides + # for the interpreter's installed and locked dependency versions. + sys.path.append(site_packages_str) # The explicit workspace checkout must win over stale copies in sibling venvs. if import_root_str in sys.path: sys.path.remove(import_root_str) diff --git a/tests/test_sidecar_readiness.py b/tests/test_sidecar_readiness.py index 2168789..d487d69 100644 --- a/tests/test_sidecar_readiness.py +++ b/tests/test_sidecar_readiness.py @@ -147,3 +147,19 @@ def must_not_run(*args, **kwargs): } assert status["runtime_connected"] is False assert status["mcp_runtime_controls"] is False + + +def test_sibling_venv_is_only_a_dependency_fallback(monkeypatch, tmp_path): + import sys + + from deep_agentic_core_mcp.adapters import ensure_repo_on_path + + sibling = tmp_path / "agentic-sidecar" + source = sibling / "src" + site = sibling / ".venv/lib/python3.12/site-packages" + site.mkdir(parents=True) + source.mkdir() + monkeypatch.setenv("DEEP_AGENTIC_CORE_MCP_WORKSPACE_ROOT", str(tmp_path)) + monkeypatch.setattr(sys, "path", ["/current/interpreter/site-packages"]) + ensure_repo_on_path("agentic-sidecar") + assert sys.path == [str(source), "/current/interpreter/site-packages", str(site)] From 496e40bdf168422263173fa60d95d3ac813cfd07 Mon Sep 17 00:00:00 2001 From: PRAMOD B N Date: Mon, 19 Oct 2026 19:23:25 -0500 Subject: [PATCH 5/7] docs: describe manual AWS deployment after release pipeline separation --- README.md | 10 +++---- deploy/aws/CI-CD.md | 72 ++++++++++----------------------------------- 2 files changed, 21 insertions(+), 61 deletions(-) diff --git a/README.md b/README.md index d0db4bb..d4844c7 100644 --- a/README.md +++ b/README.md @@ -190,7 +190,7 @@ The exported report is MCP-local, not an AIOS artifact. No sibling release or dependency floor changes. See the [unified workflows guide](docs/unified-workflows.md) and [`examples/unified_release_check.py`](examples/unified_release_check.py). -## MCP Surface (current, `0.4.0`) +## MCP Surface (current, `0.4.1`) - `core.health` — rich diagnostics: adapter availability/version, loaded tool/resource/prompt counts, workspace root, recent successful calls @@ -369,11 +369,11 @@ PyPI `0.2.0` release provides local stdio. |---|---|---| | `.github/workflows/ci.yml` | Pull request | Tests Python 3.10–3.13 and builds distributions; no AWS deployment | | `.github/workflows/ci.yml` | Push/merge to `main`, or manual run | Runs tests and package checks; no AWS deployment | -| `.github/workflows/release-pypi.yml` | Push a `v*` version tag | Runs checks, publishes to PyPI, creates the GitHub Release, publishes MCP Registry metadata, and deploys AWS after PyPI succeeds | +| `.github/workflows/release-pypi.yml` | Push a `v*` version tag | Runs checks, publishes to PyPI, creates the GitHub Release, publishes MCP Registry metadata; no AWS deployment | -A push to `main` does not publish to PyPI or deploy AWS. A version-tag release -deploys the same tagged source to AWS only after PyPI publication succeeds. Package releases use PyPI Trusted Publishing; -AWS deployment uses the dedicated IAM user's GitHub secrets. See +A push to `main` does not publish to PyPI or deploy AWS. Version-tag releases +publish packages using PyPI Trusted Publishing. AWS deployment is an explicit +manual operator action from 0.4.1. See [CONTRIBUTING.md](CONTRIBUTING.md) for releases and [the AWS CI guide](deploy/aws/CI-CD.md) for deployment setup and limits. diff --git a/deploy/aws/CI-CD.md b/deploy/aws/CI-CD.md index 1b035d3..24d5375 100644 --- a/deploy/aws/CI-CD.md +++ b/deploy/aws/CI-CD.md @@ -1,56 +1,16 @@ -# AWS continuous deployment - -CI checks pull requests, pushes to `main`, and manual runs without deploying. -A pushed `v*` version tag starts `release-pypi.yml`, which runs the full test -matrix and package checks before publishing to PyPI. AWS deployment depends on -successful PyPI publication and builds the same tagged source. It publishes an -immutable ECR image, updates ECS through CloudFormation, and verifies the public -HTTPS endpoint and authenticated MCP integrations. A failed PyPI publication -prevents AWS deployment. - -## GitHub secrets - -Configure repository secrets in `DeepAgentLabs/mcp-server`: - -- `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`: credentials for the dedicated - `deep-agentic-core-mcp-github-deploy` IAM user. -- `MCP_SMOKE_KEY`: a dedicated application API key for authenticated health checks. - -These secrets have been installed using the operator's AWS profile. Region -`us-east-2` is configured in the workflow. Never put credentials in the repo. - -The scoped IAM policy is managed in AWS IAM. It allows ECR publishing, -CloudFormation change sets on the existing deployment, ECS revision/service -updates, and passing the two existing runtime roles. Read permissions for load-balancer and CloudFront attributes and deployment -events allow CloudFormation to resolve existing resource references and report -failures. Task-definition registration, reads, and deregistration use wildcard -resources where AWS requires them; service and pass-role permissions are scoped. -Infrastructure provisioning and database access are handled separately using the operator profile. - -## Deployment behavior - -Deployments are serialized. Each image tag includes the release tag, run ID, -and attempt; ECS receives the image digest. Release tags should advance in order; -rerunning an older release deployment would deploy that older version. - -The deployment script uses the existing CloudFormation template and preserves -all parameters except `ImageUri`, including the domain and cache credentials. -It refuses changes outside the ECS task definition and service, and refuses -service replacement. ECS's deployment circuit breaker rolls back tasks that fail -to become healthy. A failure of the final MCP smoke check fails the workflow; -it does not automatically roll back an otherwise completed deployment. - -For infrastructure changes, use the reviewed operator flow in [README.md](README.md). -To retry a failed release deployment, rerun its failed job in GitHub Actions. -To deploy new code, prepare and publish a new version tag. Rotate the IAM access key by updating both repository secrets, then -remove the old key after a successful run. Rotate or revoke the MCP smoke key -through its application account and update `MCP_SMOKE_KEY` when rotating. - - -## Release pipeline from 0.4.1 - -Tag releases validate, publish PyPI/GitHub Release and publish the MCP Registry. -Automatic AWS deployment is removed from GitHub Actions. Existing AWS build and -operator deployment scripts remain available for an explicit manual deployment; -publishing a package does not update the running AWS service. Standalone image -recipes include Sidecar 0.9.0 for package discovery, with no live runtime bridge. +# AWS deployment and package releases + +From **0.4.1**, GitHub Actions does not deploy AWS. Pull requests and main pushes +run checks; a `v*` tag validates and publishes PyPI, GitHub Release and MCP Registry +metadata. Publishing or retrying a release does not update the running AWS service. + +The existing Docker build, ECR/CloudFormation deployment and smoke-check scripts +remain manual operator tools. Follow the reviewed operator flow in +[README.md](README.md) for an explicit deployment. The service template and runtime +resources are unchanged by this pipeline change. Do not infer hosted deployment +version or health from a successful package release. + +Standalone image recipes pin Sidecar 0.9.0 for package discovery; they expose no +live Sidecar task controls. Use an immutable image reference for manual deployments. +Existing GitHub AWS secrets are not consumed by the release workflow. Credential +rotation and infrastructure provisioning remain separate operator responsibilities. From e97d7b4d01dd30e0846e47eed93c4dc0340d273b Mon Sep 17 00:00:00 2001 From: PRAMOD B N Date: Mon, 19 Oct 2026 19:23:25 -0500 Subject: [PATCH 6/7] release: prepare MCP 0.4.1 Sidecar compatibility patch --- CHANGELOG.md | 10 ++++++++++ pyproject.toml | 2 +- server.json | 4 ++-- src/deep_agentic_core_mcp/__init__.py | 2 +- uv.lock | 2 +- 5 files changed, 15 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f3fbd8..9e53eb5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,16 @@ This project follows [Semantic Versioning](https://semver.org/). dispatch, stop/revoke, denial evidence, hosted Tower credentials) move to Phase 5. +## 0.4.1 - 2026-10-19 + +- Discover installed Sidecar 0.9 task-authority, revocation and redacted-evidence + APIs without constructing a task or exposing runtime controls. +- Pin Sidecar 0.9.0 in standalone hosted image recipes; native evidence remains + compatible and no new remote authority API is claimed. +- Remove automatic AWS deployment from the release pipeline. Package/GitHub/MCP + Registry publication remains; existing deployment scripts are manual operator tools. +- Document Sidecar authority, privacy, evidence and ownership boundaries. + ## 0.4.0 - 2026-10-19 First Phase 4 (Unified Workflows) slice. No sibling release, dependency range diff --git a/pyproject.toml b/pyproject.toml index 34e84ff..c3b527c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "deep-agentic-core-mcp" -version = "0.4.0" +version = "0.4.1" description = "Unified MCP server for AgenticLens and Agentic Chaos workflows." readme = "README.md" requires-python = ">=3.10" diff --git a/server.json b/server.json index 634c891..f1a2e68 100644 --- a/server.json +++ b/server.json @@ -3,7 +3,7 @@ "name": "io.github.DeepAgentLabs/deep-agentic-core-mcp", "title": "Deep Agentic Core MCP", "description": "Unified MCP server for AgenticLens and Agentic Chaos capabilities.", - "version": "0.4.0", + "version": "0.4.1", "repository": { "url": "https://github.com/DeepAgentLabs/mcp-server", "source": "github" @@ -12,7 +12,7 @@ { "registryType": "pypi", "identifier": "deep-agentic-core-mcp", - "version": "0.4.0", + "version": "0.4.1", "transport": { "type": "stdio" } diff --git a/src/deep_agentic_core_mcp/__init__.py b/src/deep_agentic_core_mcp/__init__.py index 51517e3..9ef9696 100644 --- a/src/deep_agentic_core_mcp/__init__.py +++ b/src/deep_agentic_core_mcp/__init__.py @@ -2,4 +2,4 @@ __all__ = ["__version__"] -__version__ = "0.4.0" +__version__ = "0.4.1" diff --git a/uv.lock b/uv.lock index 72fa5a7..025cf1a 100644 --- a/uv.lock +++ b/uv.lock @@ -631,7 +631,7 @@ wheels = [ [[package]] name = "deep-agentic-core-mcp" -version = "0.4.0" +version = "0.4.1" source = { editable = "." } dependencies = [ { name = "jsonschema" }, From 7aa7cbd9cde60798d759b97a96b215e1dc511a6e Mon Sep 17 00:00:00 2001 From: PRAMOD B N Date: Mon, 19 Oct 2026 20:22:22 -0500 Subject: [PATCH 7/7] docs: align 0.4.1 status and remove obsolete automatic AWS release instructions --- CONTRIBUTING.md | 23 ++++++++--------------- ROADMAP.md | 4 ++-- docs/index.md | 2 +- docs/roadmap.md | 2 +- 4 files changed, 12 insertions(+), 19 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8214953..6c2e520 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -69,24 +69,17 @@ Never commit credentials, generated API keys, or local deployment state. Pull requests, pushes to `main`, and manual CI runs perform lint, format, typing, tests across Python 3.10–3.13, and package build checks without deploying AWS. A pushed `v*` version tag runs the same validation before package publication. -After PyPI succeeds, the release workflow deploys the tagged source to AWS. -It publishes an immutable ECR image, updates the existing CloudFormation -stack, and verifies MCP authentication and integration readiness. It preserves -infrastructure parameters and rejects unrelated infrastructure changes. - -AWS deployment requires repository secrets `AWS_ACCESS_KEY_ID`, -`AWS_SECRET_ACCESS_KEY`, and `MCP_SMOKE_KEY`. See -[deploy/aws/CI-CD.md](deploy/aws/CI-CD.md) for permissions and operational limits. -Infrastructure changes use the separate reviewed operator deployment flow. -AWS deployment is a downstream release job; it does not publish to PyPI itself. +From 0.4.1, tag releases do not deploy AWS. Existing immutable-image, +CloudFormation and smoke-check scripts remain manual operator tools; package +publication does not update the hosted service. See +[deploy/aws/CI-CD.md](deploy/aws/CI-CD.md) for the separate operator flow. ## Releases Package releases start when a `v*` version tag is pushed. Creating a GitHub Release manually is not the trigger. `release-pypi.yml` publishes to PyPI using Trusted Publishing (OIDC), creates the GitHub Release from the changelog, and -then publishes to the MCP Registry. AWS deployment runs after successful PyPI -publication. +then publishes to the MCP Registry. AWS deployment is a separate manual action. 1. On a feature branch, update `pyproject.toml`, `src/deep_agentic_core_mcp/__init__.py`, both version fields in `server.json`, @@ -98,7 +91,7 @@ publication. `git tag -a vX.Y.Z -F --cleanup=verbatim`. 4. Push that tag: `git push origin vX.Y.Z`. 5. Approve the existing `pypi` environment gate when required, then verify PyPI, - GitHub Release, MCP Registry, and AWS deployment jobs. + GitHub Release and MCP Registry jobs. -AWS updates through CI only as part of a version-tag release after PyPI succeeds. -A `main` push does not publish a package or deploy the hosted service. +Neither a tag release nor a `main` push deploys the hosted service. +A `main` push does not publish a package. diff --git a/ROADMAP.md b/ROADMAP.md index 7f511ed..2751c87 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -10,8 +10,8 @@ entry below have been updated accordingly; see the audit for full detail. ## Release Status -Release version: `0.4.0` — see [CHANGELOG.md](CHANGELOG.md). It completes -Phase 4: `core.compare_runs`, a fail-closed `core.release_check` +Release version: `0.4.1` (2026-10-19) — see [CHANGELOG.md](CHANGELOG.md). It adds Sidecar 0.9 discovery and manual AWS deployment. +The 0.4.0 release completed Phase 4: `core.compare_runs`, a fail-closed `core.release_check` over Lens, Evals and Chaos evidence, `core.incident_summary` and `core.export_report` ([guide](docs/unified-workflows.md)). Hosted image pins and sibling dependency ranges are unchanged. diff --git a/docs/index.md b/docs/index.md index e7168c1..8c68aaa 100644 --- a/docs/index.md +++ b/docs/index.md @@ -2,7 +2,7 @@ ## Unified MCP interface for agentic workflows -**Version:** 0.4.0 +**Version:** 0.4.1 **Maturity:** Alpha `deep-agentic-core-mcp` is the shared MCP server layer for the DeepAgentLabs ecosystem. It provides one MCP interface for workflow analysis, resilience testing, server diagnostics, and supervision-readiness discovery. diff --git a/docs/roadmap.md b/docs/roadmap.md index 7a22a22..86ace33 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -5,7 +5,7 @@ interface across the DeepAgentLabs ecosystem. ## Current Release -**Version:** `0.4.0` +**Version:** `0.4.1` **Released:** 2026-10-19 ## Development Status