Skip to content

Implement manifest-driven remote cloud backup transport - #6212

Merged
makr-code merged 13 commits into
developfrom
copilot/explore-codebase-and-implementation-plan
Aug 31, 2026
Merged

Implement manifest-driven remote cloud backup transport#6212
makr-code merged 13 commits into
developfrom
copilot/explore-codebase-and-implementation-plan

Conversation

Copilot AI commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Pull Request

For EPIC-branch workflow PRs, use .github/PULL_REQUEST_TEMPLATE/epic-branch-flow.md.
This applies to both feature/* -> epic/* and epic/* -> develop integration PRs.

Target Version (Required)

Target Version: [Unreleased]

Runtime hardening for an open storage gap; not a contract break and best tracked in the next unreleased train.


Description

backup_manager.cpp still treated S3/GCS/Azure as effectively local-mirror-only, leaving the largest remaining real storage gap in cloud backup restore. This change wires real remote transport through the existing blob backends using a manifest + payload-object contract.

  • Remote transport

    • BackupManager::uploadToCloud() now uploads a manifest plus per-file payload blobs for S3/GCS/Azure.
    • BackupManager::downloadFromCloud() now restores from that manifest instead of requiring provider-side listing or a local mirror path.
    • Local file:// / absolute-path mirror behavior stays unchanged.
  • Manifest contract

    • Stores format version, source type, timestamps, directory entries, file entries, blob IDs, sizes, and hashes.
    • Rejects unsafe relative paths during upload and restore.
    • Reconstructs directory trees deterministically from manifest entries.
  • Backend compatibility

    • S3 and Azure blob downloads now skip hash verification when the caller has no prior hash, which is required for manifest bootstrap fetches.
    • Payload downloads still use recorded hashes from the manifest.
  • Tests and docs

    • Cloud backup tests were updated to accept real transport failure modes (credentials, unavailable backend, not linked, not found, unsupported) instead of stub-only expectations.
    • Storage module roadmap / requirements / README / changelog and root roadmap were synced to reflect that remote cloud transport is now implemented.

Example manifest shape:

{
  "format_version": "1",
  "source_type": "directory",
  "entries": [
    { "kind": "directory", "relative_path": "meta" },
    {
      "kind": "file",
      "relative_path": "meta/backup.json",
      "blob_id": "payload/meta/backup.json",
      "size_bytes": 1024,
      "hash_sha256": "..."
    }
  ]
}

Linked Issues

N/A

Type of Change

  • Bug fix (non-breaking)
  • New feature (non-breaking)
  • Refactoring (non-breaking)
  • Documentation
  • Breaking change (requires MAJOR version bump — see VERSIONING.md)
  • Security fix
  • Other:

Breaking Change Checklist

  • MAJOR version bump planned in VERSION and CMakeLists.txt
  • Migration guide added in docs/migration/
  • Announcement prepared for GitHub Discussions (≥ 2 weeks before release)
  • CHANGELOG ### Removed / ### Changed section updated

Testing

  • Unit tests added/updated
  • Integration tests added/updated
  • Manual testing performed
  • Benchmarks run (if performance-sensitive change)

Security Tiering Impact (Required for Runtime Changes)

  • Impacted tier(s):

    • T0 Trusted Core
    • T1 Security & Platform Services
    • T2 Data Plane Engines
    • T3 Interface & Protocol Edge
    • T4 Managed Extension Runtime
    • T5 Plugin Boundary
    • N/A (docs-only / non-runtime)
  • Trust-boundary crossings documented in PR description (example: T3 -> T2, T5 -> T4 brokered call)

  • Boundary controls validated for affected T3/T4/T5 paths (AuthN/AuthZ, validation, rate limits, audit)

  • Boundary-focused tests added/updated or explicit N/A rationale provided

  • If trust level/privilege increased, security maintainer approval is attached

📚 Research & Knowledge (wenn applicable)

  • Diese PR basiert auf wissenschaftlichen Paper(s) oder Best Practices?
    • Falls JA: Research-Dateien in /docs/research/ angelegt?
    • Falls JA: Im Modul-README unter "Wissenschaftliche Grundlagen" verlinkt?
    • Falls JA: In /docs/research/implementation_influence/ eingetragen?

Relevante Quellen:

  • Paper:
  • Best Practice:
  • Architecture Decision:

AI-Generated Code (KI-generierter Code)

  • Symbol-Referenzen mit GetSymbolReferences_CppTools geprüft (siehe .github/instructions/cpp-language-service-tools.instructions.md)
  • Keine rohen Pointer und kein new/delete ohne explizites Review eingeführt
  • RAII und Exception-Safety für neue/angepasste Pfade geprüft
  • Keine unnötig komplexen KI-Abstraktionen eingeführt
  • Performance-Metriken geprüft, falls Hotpath betroffen

AI Review Workflow (Required for AI-assisted PRs)

  • Findings-first review performed with .github/prompts/pr-diff-findings-review.prompt.md
  • Security hardening review performed for security-sensitive/runtime changes with .github/prompts/security-hardening-review.prompt.md (or N/A documented)
  • API impact review performed for API/contract changes with .github/prompts/api-change-impact-review.prompt.md (or N/A documented)
  • All Critical/High findings are resolved or explicitly accepted with rationale in PR description
  • Residual risks and follow-up actions documented in PR description
  • Severity policy applied according to .github/copilot/REVIEW_SEVERITY_POLICY.md

High-Finding Exception Record (only if High is accepted)

  • High-finding exception claimed in this PR

  • Finding reference:

  • Maintainer approver:

  • Mitigation in current release:

  • Target fix milestone:

  • Tracking issue:

  • Validation evidence:

Release Readiness Gate (Required for release-scoped changes)

  • Release readiness reviewed with .github/prompts/release-readiness-check.prompt.md for branch transition scope
  • Branch governance validated against BRANCHING_STRATEGY.md and RELEASE_STRATEGY.md
  • Versioning/changelog impact validated against VERSIONING.md and CHANGELOG.md

Checklist

  • Code follows project style guidelines (clang-format / clang-tidy)
  • Self-review completed
  • Documentation updated (if needed)
  • CHANGELOG.md updated under [Unreleased]
  • No new warnings introduced
  • Security-sensitive paths reviewed by security maintainer (if applicable)

Scanner and IntelliSense Gates

  • IntelliSense/Compiler: no new errors in changed files
  • clang-tidy/cppcheck: no new high-risk findings in changed files
  • Gap Scanner: no new critical findings in categories security, input_validation, query_correctness, distributed_consistency, concurrency, memory
  • Gap Scanner: no new high findings in the same categories (or explicitly approved)
  • Gap Scanner delta report attached (baseline vs current), not only absolute totals
  • New unknown scanner findings triaged (fixed, re-categorized, or justified)

Copilot AI and others added 4 commits August 31, 2026 14:34
Co-authored-by: makr-code <150588092+makr-code@users.noreply.github.com>
Co-authored-by: makr-code <150588092+makr-code@users.noreply.github.com>
Co-authored-by: makr-code <150588092+makr-code@users.noreply.github.com>
Co-authored-by: makr-code <150588092+makr-code@users.noreply.github.com>
Copilot AI self-assigned this Aug 31, 2026
Copilot AI lite review requested due to automatic review settings August 31, 2026 17:03
@makr-code
makr-code marked this pull request as ready for review August 31, 2026 17:07
@makr-code
makr-code self-requested a review as a code owner August 31, 2026 17:07
@github-actions

github-actions Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

✅ Wave C Policy Gate: Edition & License Validation

Result: ✅ Edition & License Validation PASSED
Workflow run: #33427372808
Triggered by: @Copilot

Checks

  • ✅ Edition matrix consistency check
  • ✅ License feature gate validation
  • ✅ Enterprise/military marker detection
  • ℹ️ Target branch: develop

See .github/workflows/gate-pr-edition-license.yml for details.

@github-actions
github-actions Bot requested a review from makr-code August 31, 2026 17:17
@github-actions github-actions Bot added the quality/doxygen-failed Doxygen governance gate failed on changed source code label Aug 31, 2026
@github-actions

github-actions Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Target: pr

Doxygen Governance Gate

  • Verdict: PASS
  • Base branch: develop
  • Changed C/C++ files: 0
  • Scoped modules: none
  • Release lane: no
  • Phase 6 modules in scope: none
  • Coverage enforced: no
  • Coverage threshold: 95.0%
  • Coverage result: skipped
  • Coverage waiver active: no
  • Approved waivers: none
  • Structural findings: 0
  • Advisory findings: 0
  • Doxygen warnings: 1
  • XML generated: no

Doxygen warnings

  • No changed C/C++ files in scope; Doxygen gate skipped.

source_workflow: Gate: PR Doxygen Governance
source_run: 33427372569
source_sha: ad7a2bb

@github-actions

github-actions Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

✅ Wave C Policy Gate: Hash & SBOM Integrity

Result: ✅ Hash & SBOM Integrity PASSED
Workflow run: #33427372808
Triggered by: @Copilot

Checks

  • ✅ Dependency hash integrity check
  • ✅ SBOM generation and registry consistency
  • ✅ Edition-correct SBOM composition
  • ✅ Private plugin variance detection
  • ℹ️ Approved SBOM registry: docs/governance/SBOM_APPROVED_VERSIONS.md

See .github/workflows/gate-pr-hash-sbom.yml for details.

Co-authored-by: makr-code <150588092+makr-code@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Warning

Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a copilot-code-review.yml file specifying one with the runs-on attribute. See the docs for more details.

Implements manifest-driven remote cloud backup upload/restore (S3/GCS/Azure) and hardens several runtime “fail-closed vs fallback” behaviors across storage, server, and acceleration components.

Changes:

  • Add manifest + payload-blob contract for remote cloud backup transport in BackupManager (upload + restore) and relax hash verification for bootstrap reads.
  • Harden integrity-signature storage to require explicit in-memory fallback opt-in when RocksDB is absent.
  • Extend server/GPU runtime contracts (gRPC-Web status capability signaling, real RoPE disablement, MCP stdio self-disable, break-even validator production wiring + test updates) and sync docs/roadmaps/changelogs.

Reviewed changes

Copilot reviewed 44 out of 44 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
tests/test_security_signature_rocksdb_iteration.cpp Update tests to assert explicit fallback opt-in and fail-closed behavior when backend is null
tests/test_http_timeseries.cpp Assert new source and degraded_mode fields returned by time-series metadata endpoints
tests/test_http_rope.cpp Assert RoPE disable endpoint returns enabled=false and config fetch errors afterward
tests/test_grpc_web_proxy_handler.cpp Assert new gRPC-Web status capability fields are present and correct across build modes
tests/test_grpc_web_proxy_bridge.cpp Validate status behavior in non-gRPC builds when an override backend function is injected
tests/test_cloud_storage_backup_comprehensive.cpp Broaden expected failure modes for real remote cloud transport (credentials/unavailable/not linked/etc.)
tests/stub_remediation_test.cpp Assert time-series endpoints expose degraded/provider metadata fields
tests/security/test_security_signature_rocksdb_iteration.cpp Same as non-namespaced variant (explicit fallback opt-in + fail-closed checks)
tests/network/test_http_timeseries.cpp Same as non-namespaced variant for network test layout
tests/network/test_http_rope.cpp Same as non-namespaced variant for network test layout
tests/legacy/grpc/test_grpc_web_proxy_handler.cpp Same gRPC-Web status assertions for legacy test tree
tests/legacy/grpc/test_grpc_web_proxy_bridge.cpp Same bridge/status assertions for legacy test tree
tests/legacy/cloud/test_cloud_storage_backup_comprehensive.cpp Same cloud-backup expectation broadening for legacy test tree
tests/gpu/test_break_even_validation.cpp Expand break-even tests for new reasons, injected profilers, metrics sink, and fail-closed validation
tests/gpu/CMakeLists.txt Stop linking fallback shim and rely on production break-even implementation in tests
src/storage/security_signature_manager.cpp Add explicit fallback option; fail closed without backend unless opted-in
src/storage/blob_backend_s3.cpp Skip hash verification when reference hash is empty (bootstrap reads)
src/storage/blob_backend_azure.cpp Skip hash verification when reference hash is empty (bootstrap reads)
src/storage/backup_manager.cpp Implement manifest-driven remote upload/restore over blob backends; keep local mirror behavior
src/storage/ROADMAP.md Document closure of remote transport + signature fallback gaps
src/storage/README.md Document remote transport contract and signature persistence expectations
src/storage/PRODUCTION_REQUIREMENTS.md Add MUST/MUST NOT requirements around signature backend and manifest transport
src/storage/CHANGELOG.md Record fail-closed signature behavior + manifest-driven cloud backup transport
src/server/timeseries_api_handler.cpp Add source, degraded_mode, and optional degraded_reason fields to metadata endpoints
src/server/rope_api_handler.cpp Make RoPE DELETE endpoint actually disable RoPE at runtime
src/server/mcp_server.cpp Make MCP stdio transport self-disable on unsupported platforms unless injected reader exists
src/server/grpc_web_proxy_handler.cpp Expose explicit gRPC backend availability/mode in status endpoint
src/server/ROADMAP.md Document completion of Wave 4-A server hardening batch
src/index/vector_index.cpp Implement VectorIndexManager::disableRotaryEmbedding()
src/access_model/ROADMAP.md Sync roadmap status/known-issues text to reflect completed Phase 5–6 work
src/acceleration/oneapi_backend.cpp Fail closed on USM allocation failure before device memcpy
src/acceleration/break_even_validator.cc Replace placeholder timings with hookable profilers + deterministic estimators; add metrics sink
src/acceleration/ROADMAP.md Record validation date and completion notes for break-even + oneAPI hardening
src/acceleration/MODULE_GAPS.md Update gap notes reflecting replacement of prior break-even TODO
src/acceleration/CHANGELOG.md Document break-even production wiring + oneAPI OOM hardening changes
include/storage/security_signature_manager.h Add Options + result fields (backend_available, etc.) and introspection helpers
include/storage/backup_manager.h Document manifest-driven remote transport and update Result-based APIs
include/server/mcp_server.h Add StdioTransport::isRunning()
include/index/vector_index.h Declare disableRotaryEmbedding() API
include/acceleration/break_even_validator.h Add profiling hooks + metrics sink APIs and supporting helpers
cmake/ModularBuild.cmake Compile break_even_validator.cc in modular build sources
cmake/CMakeLists.txt Compile break_even_validator.cc in core sources
ROADMAP.md Update global roadmap status summaries for server/storage/GPU/access_model

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread src/storage/blob_backend_s3.cpp Outdated
Comment on lines 206 to 209
std::string actual_hash = computeSHA256(data);
if (actual_hash != ref.hash_sha256) {
if (!ref.hash_sha256.empty() && actual_hash != ref.hash_sha256) {
THEMIS_ERROR("Hash mismatch for blob {}: expected={}, actual={}",
ref.id, ref.hash_sha256, actual_hash);

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Applied: SHA-256 is now computed only when ref.hash_sha256 is present (d785092).

Comment thread src/storage/blob_backend_azure.cpp Outdated
Comment on lines 188 to 191
std::string actual_hash = computeSHA256(data);
if (actual_hash != ref.hash_sha256) {
if (!ref.hash_sha256.empty() && actual_hash != ref.hash_sha256) {
THEMIS_ERROR("Hash mismatch for blob {}: expected={}, actual={}",
ref.id, ref.hash_sha256, actual_hash);

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Applied: Azure blob hash computation is now guarded by !ref.hash_sha256.empty() (d785092).

Comment thread src/storage/backup_manager.cpp Outdated
Comment on lines +2228 to +2284
if (!manifest_json.contains("format_version") ||
manifest_json["format_version"].get<std::string>() != kRemoteBackupFormatVersion) {
return ErrVoid(errors::ErrorCode::ERR_BACKUP_MANIFEST_CORRUPT,
"Remote backup manifest has unsupported format version");
}
if (!manifest_json.contains("entries") || !manifest_json["entries"].is_array()) {
return ErrVoid(errors::ErrorCode::ERR_BACKUP_MANIFEST_CORRUPT,
"Remote backup manifest is missing entries");
}

const fs::path restore_root = fs::path(local_path);
for (const auto& entry : manifest_json["entries"]) {
if (!entry.contains("kind") || !entry.contains("relative_path")) {
return ErrVoid(errors::ErrorCode::ERR_BACKUP_MANIFEST_CORRUPT,
"Remote backup manifest entry is incomplete");
}

const std::string kind = entry["kind"].get<std::string>();
const fs::path relative_path(entry["relative_path"].get<std::string>());
if (!isSafeRelativeBackupPath(relative_path)) {
return ErrVoid(errors::ErrorCode::ERR_BACKUP_INVALID_TYPE,
"Remote backup manifest contains unsafe path: " +
relative_path.generic_string());
}

const fs::path target_path = restore_root / relative_path;
if (kind == "directory") {
std::error_code ec;
fs::create_directories(target_path, ec);
if (ec) {
return ErrVoid(errors::ErrorCode::ERR_UTIL_FILE_OPERATION_FAILED,
"Failed to create restore directory '" + target_path.string() +
"': " + ec.message());
}
continue;
}

if (kind != "file" || !entry.contains("blob_id")) {
return ErrVoid(errors::ErrorCode::ERR_BACKUP_MANIFEST_CORRUPT,
"Remote backup manifest file entry is incomplete");
}

storage::BlobRef payload_ref;
payload_ref.id = entry["blob_id"].get<std::string>();
payload_ref.type = storage::BlobStorageType::CUSTOM;
payload_ref.uri = cloud_path;
payload_ref.size_bytes = entry.value("size_bytes", 0);
payload_ref.hash_sha256 = entry.value("hash_sha256", std::string{});
auto payload_result = backend_impl->get(payload_ref);
if (!payload_result.has_value()) {
return ErrVoid(payload_result.error().code(), payload_result.error().message());
}

auto write_result = writeBinaryFileBytes(target_path, payload_result.value());
if (!write_result.has_value()) {
return write_result;
}

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Applied: manifest validation/iteration in downloadFromCloud() is wrapped with exception handling returning ERR_BACKUP_MANIFEST_CORRUPT (d785092).

Comment on lines +308 to +320
if (segments.size() < 2) {
return std::nullopt;
}

RemoteBackupLocation location;
if (segments.size() >= 3) {
location.authority = segments[0];
location.container = segments[1];
location.prefix = trimSlashes(joinPathSegments(segments, 2));
} else {
location.container = segments[0];
location.prefix = trimSlashes(joinPathSegments(segments, 1));
}

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Applied: API docs now explicitly document both Azure URI forms (azure://account/container/path and azure://container/path) and account derivation behavior (d785092).

Comment on lines +391 to +405
case StorageBackend::S3:
#if defined(THEMIS_HAS_AWS_SDK) && THEMIS_HAS_AWS_SDK
return std::make_shared<storage::S3BlobBackend>(
location.authority,
[&config]() {
const auto it = config.find("region");
return it == config.end() || it->second.empty() ? std::string("us-east-1")
: it->second;
}(),
location.prefix);
#else
return {};
#endif
case StorageBackend::AZURE:
#if defined(THEMIS_HAS_AZURE_STORAGE) && THEMIS_HAS_AZURE_STORAGE

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Applied: provider availability checks/factory wiring are standardized on THEMIS_HAS_* flags across BackupManager remote transport code (d785092).

Comment on lines +348 to +359
Result<std::vector<uint8_t>> readBinaryFileBytes(const fs::path& file_path) {
std::ifstream input(file_path, std::ios::binary);
if (!input) {
return Err<std::vector<uint8_t>>(
errors::ErrorCode::ERR_STORAGE_FILE_NOT_FOUND,
"Failed to open file: " + file_path.string());
}

std::vector<uint8_t> data((std::istreambuf_iterator<char>(input)),
std::istreambuf_iterator<char>());
return Ok(std::move(data));
}

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Applied: remote transport now enforces a per-object in-memory payload limit (256 MiB) for upload/download paths with clear errors, and the contract is documented in the header (d785092).

Comment thread ROADMAP.md
| core | 9 listed | Mostly DOC / evidence gaps | Runtime adapter registry and plugin loading are delivered; remaining items are Wave D operability and refreshed evidence |
| base | 8 listed | Mostly historical scanner noise | `src/base/MODULE_GAPS.md` re-scan shows 0 actionable current gaps; remaining items are documented false positives or follow-up docs |
| server | 4 residual source gaps | REAL IMPL gaps | gRPC-Web proxy is still UNIMPLEMENTED-only in fallback builds; time-series aggregate/retention providers and RoPE metrics still rely on degraded fallback paths; non-Linux MCP stdio transport remains unsupported |
| server | 1 residual source gap | MOSTLY REMEDIATED | gRPC-Web fallback builds now advertise an explicit fail-closed capability contract, RoPE DELETE now disables runtime config, and unsupported MCP stdio self-disables; remaining work is first-class time-series provider DI beyond degraded metadata signaling |
Comment thread ROADMAP.md
Comment on lines +45 to +47
| GPU/CUDA | 21+53 listed | REAL IMPL gaps | Break-even routing now uses production build wiring plus explicit CPU/GPU profiling contracts, but CUDA/HIP kernel parity, unchecked-kernel-call closure, and representative-hardware validation remain open release blockers |
| storage | 11 real gaps after 2026-08-31 revalidation | MIXED | Backup restore fail-closed hardening, ggml bridge runtime wiring, `SecuritySignatureManager` null-backend fail-closed behavior, and remote S3/GCS/Azure manifest transport are in place; biggest remaining gaps are long-run validation evidence and cloud-backend hardening follow-up |
| access_model | roadmap contradiction | Mostly DOC drift | Source and module evidence show Phase 5-6 observability, e2e/concurrency tests, and GATE-ACM-01..06 are complete; stale checklist/known-issues text must stay synchronized |
@makr-code

Copy link
Copy Markdown
Owner

@copilot fix all

@makr-code

Copy link
Copy Markdown
Owner

@copilot Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a copilot-code-review.yml file specifying one with the runs-on attribute. See the docs for more details.

@github-actions

github-actions Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

✅ Wave C Policy Gate: Community Fail-Closed Validation

Result: ✅ Community Fail-Closed Validation PASSED
Workflow run: #33427372808
Triggered by: @Copilot

Checks

  • ✅ No silent fallback patterns
  • ✅ License disclaimers present
  • ✅ No unguarded telemetry/tracking
  • ✅ No private plugin references in community/minimal scope
  • ✅ Community-only build config validation
  • ✅ No enterprise secrets leakage

See .github/workflows/gate-pr-community-failclosed.yml for details.

@github-actions

github-actions Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

✅ Wave C Policy Gate: Private Plugin Boundary Enforcement

Result: ✅ Private Plugin Boundary Enforcement PASSED
Workflow run: #33427372808
Triggered by: @Copilot

Checks

  • ✅ Private plugin leakage detection
  • ✅ Plugin manifest visibility validation
  • ✅ Submodule commit-pin enforcement (no branch refs for private)

See .github/workflows/gate-pr-plugin-boundary.yml for details.

@github-actions github-actions Bot added type:documentation Documentation change type:test Test-only change area:storage Storage subsystem type:refactor Code refactoring without functional change labels Aug 31, 2026
Copilot AI requested a review from makr-code August 31, 2026 18:10
- Add @return to Status::Error, rebuildFromStorage, saveIndex, loadIndex
- Add @return to all removeByPk overloads (direct, WriteBatch, TransactionWrapper)
- Add @PARAM and @return to AttributeFilterV2::Equals, Range, In
- Upgrade removeBatch from plain /// to full @brief/@param/@return doc
- Add @brief and @return to computeCentroid and computeVariance
- Add full @brief/@param/@return docs to addEntityWithRotation and addEntityWithRelationalRotation

Scanner now reports 0 blocking structural findings (was 26 remaining after prior fixes)

Co-authored-by: makr-code <150588092+makr-code@users.noreply.github.com>
Copilot AI and others added 4 commits August 31, 2026 18:49
…out .gitmodules entry

Co-authored-by: makr-code <150588092+makr-code@users.noreply.github.com>
…allel_downloader.h and storage_interface.h

Co-authored-by: makr-code <150588092+makr-code@users.noreply.github.com>
Co-authored-by: makr-code <150588092+makr-code@users.noreply.github.com>
- mcp_server.h: add @Class tag, document constructors, destructor,
  isRunning, all undocumented public methods (start/stop/register*/
  unregister*/attach*/get*Transport/handleRequest)
- break_even_validator.h: replace unknown @thread tag with
  @note Thread safety: across all affected methods
- backup_manager.h: remove @enum tags that caused 'Documentation for
  undefined enum' warnings (bare names inside namespace); Doxygen
  auto-associates adjacent doc comments with enum definitions
- security_signature_manager.h: split shared doc block into per-
  constructor docs so @PARAM options is only on the two-arg ctor

Co-authored-by: makr-code <150588092+makr-code@users.noreply.github.com>
@github-actions github-actions Bot added area:updates Updates subsystem area:plugins Plugin subsystem and removed quality/doxygen-failed Doxygen governance gate failed on changed source code labels Aug 31, 2026
…modules entry

The path was registered in the git index as a submodule commit (mode 160000)
but had no corresponding entry in .gitmodules, causing 'git submodule foreach'
to exit with code 128 and failing the copilot-setup-steps CI job.

Co-authored-by: makr-code <150588092+makr-code@users.noreply.github.com>
Copilot AI requested a review from makr-code August 31, 2026 19:17
@makr-code
makr-code merged commit e44a7ce into develop Aug 31, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:acceleration Acceleration / GPU / CUDA subsystem area:access-model Access model subsystem area:plugins Plugin subsystem area:storage Storage subsystem area:updates Updates subsystem release_critical Change in a release-critical module; requires sign-off type:build Build system or dependency change type:ci CI/CD or build system change type:documentation Documentation change type:refactor Code refactoring without functional change type:test Test-only change wave:A Wave A module: access_model, search, sharding, replication, utils, updates, process, audit wave:B Wave B module: acceleration, llm, retrieval, tensor, gpu

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants