CHANGELOG.md
Rama master · réplica de lectura del repositorio original.
# Changelog
All notable MCPlica changes are recorded here. The format follows Keep a Changelog, and release
identities follow Semantic Versioning. Unreleased entries describe repository changes only; a
version is not published until its immutable tag and release workflow complete.
## [Unreleased]
## [1.0.0-rc.2] - 2026-09-26
### Changed
- Integrated structured, rotating application logs, worker registration recovery, protected login
destinations, and asynchronous build failure feedback.
- Preserved canonicalization isolation across cancelled requests, mutable source roles, byte limits,
and callers; bounded cached results and retained safe database diagnostics without private rows.
- Excluded absent retrieval embeddings from AI usage counts and verified failed-run SQL NULL storage.
- Updated the container and application dependencies, explicitly installed Corepack for Node 26,
and rebuilt the existing MinIO release from verified official source after registry removal.
- Added top margin to the project setup wizard's inline error alerts so they no longer visually
merge with the content above them, most noticeably the info cards on the **Start build** step.
- Paged the sources list over distinct sources rather than raw version rows, so a superseded source
version can no longer land on a different page than its latest version and render as an orphaned
top-level entry.
- Retried a canonicalization request as the new leader instead of failing it when the concurrent
in-flight request it was coalesced onto was cancelled by an unrelated caller, preventing one
cancelled poll from failing every other request waiting on the same result.
- Replaced the native `window.confirm()` prompt on the Sources tab with the same in-app dialog
already used for project deletion, so source deletion confirmation is consistent across the site.
- Raised a dedicated `ExecutionOwnershipError` when a build's execution lease is stale, and skipped
the failure-audit write when that loss is itself the error being recorded, so an expired lease no
longer masks the real failure behind a doomed ownership recheck.
- Declared `JSONB(none_as_null=True)` on the AI run's response/usage/cost columns so a `None` value
is stored as true SQL `NULL`, fixing an intermittent `IntegrityError` on
`ck_build_ai_runs_outcome` when an AI operation genuinely failed, and expanded diagnostic logging
to surface exception types and safe constraint identifiers without exposing private row values.
- Resolved path-level OpenAPI servers before checking whether the document has a usable server URL,
so a spec declaring servers only under a path item (valid per OpenAPI 3.1) no longer fails at
server selection before the parser's existing path-level handling ever runs.
- Rejected OpenAPI and API Inventory documents whose operations reference an undefined security
scheme at parse time instead of admitting them silently.
- Persisted the configured embedding model on a document index generation instead of the model name
a provider's response happened to echo back, so a completed generation's `embedding_model` matches
what was actually requested.
- Added a per-model AI usage and cost counter under **Settings > Usage**, showing call count, total
tokens, and total cost per model from the build AI-run history.
## [1.0.0-rc.1] - 2026-09-04
### Changed
- Moved canonical repository and OCI source metadata to the `waqoor/MCPlica` organization
namespace, added the owner-operated public-prerelease security/settings ledger, and made release
asset publication compatible with GitHub immutable releases.
- Recorded the current single-maintainer governance exception: exact automated release gates remain
mandatory, while an explicitly authorized founder self-merge is reported truthfully instead of
being labeled as independent review.
- Updated the unprivileged Nginx image to `1.31.5-alpine3.24-slim` and made nested
source-configuration response models validate domain records through Pydantic attribute access.
- Preserved account timestamps in authenticated identities so `GET /api/v1/auth/me` returns the
same `created_at`, `updated_at`, and `last_login_at` values as the user record.
- Replaced the organization-license-dependent Gitleaks Action with an offline, digest-pinned
Gitleaks CLI history scan so the required `secrets` job remains executable after transfer.
- Migrated the frontend toolchain to pnpm 11.25.0 and its explicit `allowBuilds` configuration,
and made CI audit the complete pnpm lockfile through a digest-pinned OSV-Scanner instead of the
registry's retired legacy endpoint.
- Added an admin-only, route-backed **Settings > Providers** workspace for write-only encrypted
OpenRouter key rotation, live connection testing, and distinct credential/reachability/build
readiness states.
- Corrected the public OpenRouter API default and decoded-response header handling so compressed
model-catalog responses cannot be decompressed twice and falsely degrade the control plane.
- Updated the official MCP Python SDK to 2.1.1, made `2026-07-28` the candidate-validation
protocol revision, and retained explicit legacy negotiation coverage on the same runtime.
- Refreshed compatible container, frontend, Python, and GitHub Actions dependencies while
preserving the Node 24, Python 3.13, and single-host service compatibility boundaries.
- Made each cleanup dispatch use one eligibility snapshot, preventing a failed target from
consuming multiple retry attempts in the same worker cycle when its backoff is short or the
database is under load.
- Bound the post-build wizard transition directly to the created build so an obsolete unbound
journey refetch cannot race the URL back to the start-build step.
- Made hosted Playwright retries diagnostic only: any flaky retry now fails CI, with regression
coverage that rejects post-build journey requests lacking the created build identity.
- Restricted repository Actions to the recursively audited full-SHA direct/transitive action
closure, enabled Dependabot vulnerability alerts and automated fixes, and documented the exact
unavailable private-platform security gates without treating local scans as substitutes.
- Updated the backend and runtime development constraint to pytest 9.1.1 for
GHSA-6w46-j5rx-g56g/CVE-2025-71176, and expanded both frozen Python advisory audits to include
every optional development dependency rather than auditing only the production graph.
### Added
- Self-hosted FastAPI control plane, React administration UI, PostgreSQL persistence, Redis/RQ
workers, Milvus document retrieval, and OpenRouter-backed build-time analysis.
- Deterministic OpenAPI 3.0/3.1 and API Inventory compilation into the shared
`mcp-manifest/v1` contract, with source provenance, exact validation, immutable build evidence,
export, diff, rebuild, and operation exclusion workflows.
- Reusable isolated MCP Streamable HTTP runtimes with static bearer or external OIDC inbound
authentication, project-scoped upstream credentials, bounded HTTP execution, and dynamic
Traefik routing.
- Health-before-switch deployment, stop/restart/redeploy, immutable-build rollback, durable
command execution, fenced workers, retention cleanup, and recovery-safe lifecycle handling.
- Canonical Docker Compose development and production configurations, migration/init jobs,
operator documentation, CI, security scanning, SBOM creation, checksums, digest signing, and
provenance-aware release automation.
### Security
- Enforced cookie/CSRF/role authorization, encrypted write-only credentials, bounded uploads and
external responses, SSRF/DNS/redirect controls, safe logging, non-root/read-only containers,
resource limits, exact manifest/secret digests, and isolated runtime networks.
- Added frozen dependency locks, dependency and secret scans, pre-publication image scans,
source/image SBOMs, Cosign verification, and immutable tag/digest refusal checks.
### Changed
- Established root `VERSION` as the `1.0.0-rc.1` authority and synchronized package, API, frontend,
runtime, Compose, image-label, generated-contract, fixture, lockfile, and release metadata.
- Advanced the single Alembic migration line through `0025`, including legacy constraint
normalization, current-source/build identity, runtime/cleanup execution fencing, deployment
intent, and index-generation ownership.
### Known limitations
- The supported production topology is a single Docker Compose host; high availability,
orchestrator-specific deployment, managed backup automation, and multi-host runtime scheduling
are not included.
- OpenRouter availability/model access, public DNS/TLS, host hardening, external OIDC providers,
registry permissions, and backup/restore RPO/RTO remain operator-owned production checks.
- See [the v1.0.0-rc.1 release notes](docs/releases/v1.0.0-rc.1.md) for the complete compatibility,
migration, and evidence boundary.
[Unreleased]: https://github.com/waqoor/MCPlica/compare/v1.0.0-rc.1...HEAD
[1.0.0-rc.1]: https://github.com/waqoor/MCPlica/releases/tag/v1.0.0-rc.1