# OSS 3.0.0 candidate qualification

Status: proposed release qualification, **not published**. User authorized OSS
publication on 2026-10-27 KST. Do not derive publication status/date from this
filename. Source version fields retain the `0.0.0` sentinel.

## Version and reviewed source

Start from published v2.1.1. Select **3.0.0** by compatibility impact: domain
wildcards and wildcard exclusions now match one DNS label, creation no longer
adds an apex for wildcard-only input, and the previously integrated Blue Cell
migration removes in-tree Python implementations in favor of AutoBot. These
changes need explicit migration notes; the optional OpenShell transport alone
would have been an additive minor change. Broad migration candidates require
preview/distribution qualification before a final release under RELEASE.md.

Product source selected for qualification:
`a58bf7bdd56307e67e01abfabaff7ac404f8276b`. The final tag must identify the then
verified merged main SHA; record it after all gates and do not move it. The
[path manifest](3.0.0-changed-paths.txt) covers v2.1.1 through that product SHA.
Post-publication documentation does not move an immutable tag.

| Main-line change since v2.1.1 | Disposition |
|---|---|
| #1110 | Publication history for v2.1.1; retain immutable v2.1.0 PyPI files and real publication dates. |
| #1114 / #1116 / #1117 | Already integrated Blue/AutoBot implementation movement and role/client discovery changes. Must qualify both installed and absent AutoBot boundaries; no silent claim that the separate package is published. |
| #1111 | Historical changelog rename, superseded by #1119's consolidation into the user-required root CHAGELOG.md. |
| #1112 | Core/SDK coverage and re-export identity contracts. |
| #1119 | Deep Agents 0.7.32, LangChain 1.4.7, LangGraph 1.2.17 and run-scoped filesystem API migration. |
| #1120 | Opt-in admitted OpenShell session transport preserving tmux contracts; no default provider switch. |
| #1121 | Explicit external live lanes, duplicate/obsolete test cleanup, restored collected RoE network tests, isolated benchmark unit boundaries. |
| #1123 | Host-required OpenShell provider, no HTTP downgrade and per-run notification isolation. |
| #1118 | One-label scope and filtered passive enrichment: discovery cannot re-add the wildcard apex or deeper hosts. |

## Open PR/issue audit

Inspected the OSS open list when this release work began. #1118, #1119 and #1120
were candidates; #1121 was subsequently created for the user's test cleanup.
Their source changes are now merged after CI. Do not merge an obsolete branch
again just because its older PR is still open.

Open #1113 records the original Blue movement. Its functionality already entered
main through the later #1114 integration/fixes and #1116/#1117. Its older branch
is not selected as a separate candidate change; retain that distinction in the
release audit and compare the actual tree rather than counting PR state.

Issue #1115 concerns the environment-dependent SARIF HTTP-auth fixture. #1119
bridges its owned ASGI response to a real httpx response, rather than widening
production exception handling. The affected 26 SARIF tests and broad PR lane
passed. Keep publication/issue disposition factual; a source fix is not itself
a released fix. Recheck the open list immediately before tagging/publication.

## Upgrade notes

- Back up and preserve installation configuration, conversations/checkpoints,
  workspace files and volumes. No verification may reset the user's data.
- Review existing RoE and exclusions before resuming an old engagement.
  `*.example.com` allows `a.example.com`, not the apex or `a.b.example.com`.
  Deeper permissions/exclusions require explicit approved entries. Existing
  saved RoE are not silently rewritten or automatically reapproved.
- Passive discovery remains inventory. Wildcard enrichment must stay inside
  its one-label authorization boundary. SaaS reviewed inventory/approval is
  separate from public discovery evidence.
- Deep Agents 0.7 backend objects are initialized instances; removed backend
  factories and direct middleware backend access require the compatibility
  migration in #1119. Recursive delete remains unavailable until its scoped
  directory/RoE contract is implemented.
- AutoBot owns the moved Blue runtime. Preserve client URL/blue.json interop;
  unconfigured optional deployments are not live-qualified. Do not install the
  unrelated PyPI distribution named `autobot`.
- OpenShell selection is experimental/opt-in and requires a trusted host
  resolver. Basic exec/files can reuse the maintained upstream adapter; named
  tmux sessions use the retained Decepticon contract. This OSS artifact does
  not supply or enable a production E2B compute service.
- SaaS remains independently pinned until its exact compatible artifacts,
  plugin/checkpoint behavior and runtime boundary pass adoption tests. This
  document does not authorize a SaaS traffic promotion.

## Gates and evidence to complete

Record exact final-source CI/security, local `make quality-strict` (four workers,
unchanged selection/coverage gate), Go tests, isolated WSL source product and
same-volume upgrade results. Record an actual model response through the product.
Then verify downloaded candidate launcher/checksums, tagged images/config,
service health/CLI and unchanged persisted data before final publication.

The release pipeline publishes PyPI before GitHub undraft; verify PyPI separately
and retain the draft until the distribution gates pass. Verify all three PyPI
packages, six launchers, config/skill manifests, eight image platforms/digests,
signatures and SBOM results. Protected environment gates must not be bypassed.
No tag, publication date, final gate pass or production deployment is claimed yet.

## Final product-source qualification observed, 2026-10-27 KST

At product SHA edd37bb, the four-worker Python lane passed **6,124 tests**,
with seven skips and **74.92%** coverage against the unchanged 60% gate.
CLI: **292 passed**. Telemetry: **51 passed**. Python formatting/lint passed;
the full type audit had zero errors (885 warnings). Initial web verification
failed because `npm ci --ignore-scripts` omitted the native node-pty module;
rebuilding node-pty fixed the fixture. Web tests and production build then
passed. This setup failure is not counted as a product pass.

#1123 subsequently passed all PR CI checks and 258 affected tests. The final
product tree at `a58bf7bdd56307e67e01abfabaff7ac404f8276b` was then qualified:

| Gate | Observed result |
|---|---|
| Python full four-worker lane | 6,129 passed, seven skipped; 74.95% coverage, unchanged 60% gate. |
| Python format/lint/type | Ruff passed, 880 files already formatted; full type audit zero errors, 894 warnings. |
| CLI / telemetry | 292 / 51 passed. |
| Web | Lint passed without warnings, 75 tests passed, production build passed. |
| Launcher | `go test ./...` and actual launcher build passed. |
| Actual WSL source product | Separate installation, synthetic DB credentials and private auth copy; launcher, reviewed scope creation, service health, CLI connection and real Plan model response `OSS3-SOURCE-OK` passed. |
| Persistence | Real thread/checkpoint and two messages remained identical after launcher stop/start on the same volumes. Four workspace file hashes, including canonical RoE and nested upgrade canary, remained identical. |
| MCP | Shipping `decepticon-mcp --transport stdio` initialized, listed 21 tools and executed `decepticon_list_graphs` against the actual isolated API. |

These are executed constituent gates, not a claim that one uninterrupted
`make quality-strict` invocation passed. An initial run was contaminated by a
fixture `.env` in the source tree; it was moved outside before repeating Python.
An unrestricted CLI run exhausted shared resources and hit four timing failures;
the complete CLI lane passed with `CLI_TEST_ARGS=--maxWorkers=4`. Neither failed
attempt is counted as a pass. Full application builds used the shared build slot.

Source-product evidence lives in the private installation
`/tmp/decepticon-oss-3-source-20261027`: `source-baseline.json`,
`source-after-cli.json`, `source-after-restart.json` and `mcp-stdio.json`. Local
gate logs use the prefix `/tmp/decepticon-oss-release-final-`. No credentials or
private auth copies are committed. This proves source restart compatibility;
it does not replace an upgrade using downloaded candidate artifacts.

## External peer and publication blockers

AutoBot source at `a85b57d1235380521ec70d8595f4c2d434381b4f` registered its
graph/subagent entry points, exposed five read-only sensor tools and produced
the real model response `AUTOBOT-INTEROP-OK` with zero sensor/tool calls in an
isolated environment. Absent AutoBot returned Graph Not Found, as expected;
the core treats an unknown role as execution rather than trusting its name.
AutoBot [#14](https://github.com/BitterSecurity/AutoBot/pull/14), merged as
`53d95d7d1f0158c9791388e02aa5b65cbf13340b`, adds explicit observation-role
metadata; its full default lane passed 245 tests, with four slow tests deselected.

The installed-peer **actual LangGraph server** qualification found a further
startup incompatibility: AutoBot exports `graph` via module `__getattr__`, while
the shipped server loader looks up an actual module variable. Registration and
direct invocation therefore do not prove server startup. Keep this unresolved
Blue startup boundary as a release blocker. The distribution is `bs-autobot`;
PyPI had no published package at the time of inspection, so the optional
`DECEPTICON_ENABLE_BLUE=1` startup install is not distribution-qualified either.
No live sensor stack pass is claimed. The isolated server also reports that its
`langgraph-api 0.10.0` is end-of-life; review its supported replacement before
presenting the broader server stack as current.

On 2026-10-26 UTC, SaaS native-runtime PR
[#1458](https://github.com/BitterSecurity/decepticon-saas/pull/1458) CI jobs were
rejected **before executing any steps** because GitHub Actions reported failed
account payments or an insufficient spending limit. The separate local joined
E2B/native-policy lane passed, but it cannot substitute for required CI or
candidate distribution checks. Do not bypass checks, push a release tag or claim
publication while the relevant required source/distribution gates remain blocked.

No new tag, preview/final publication or SaaS deployment has occurred.
