Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
78df0ab
fix: MCP SSE endpoint event + local [patch] overrides for synapsis-co…
MethodWhite Jul 11, 2026
59e4635
ci: run full workflow on pull requests targeting develop
MethodWhite Jul 11, 2026
cdb458a
ci: clone sibling repos via git for [patch] path resolution
MethodWhite Jul 11, 2026
8efa81f
ci: authenticate sibling repo clones for private Arca
MethodWhite Jul 11, 2026
906927e
ci: checkout sibling deps inside workspace for private Arca
MethodWhite Jul 11, 2026
610da28
Merge pull request #54 from MethodWhite/fix/mcp-sse-connection-and-lo…
MethodWhite Jul 11, 2026
5d1fc4e
fix: CI checkout Arca (private repo) + OSV-Scanner v1.9.2 + clippy fixes
MethodWhite Jul 13, 2026
b358f9d
docs: add AGENTS.md with SecDevOps/SMART/ProductManager framework
MethodWhite Jul 13, 2026
8554c98
ci: split Windows test, remove codeql, refactor sibling checkout
MethodWhite Jul 13, 2026
28a2ff1
deps: bump synapsis-core from v0.6.0 to v0.7.0 (real PQC)
MethodWhite Jul 13, 2026
46bae2a
v0.12.0: zero-trust Dilithium, prusia-vault extraction, CI refactor
MethodWhite Jul 13, 2026
39d825c
extract auth module to ztf crate (git dep)
MethodWhite Jul 14, 2026
7dd8753
wire ztf classifier into MCP tool dispatch
MethodWhite Jul 14, 2026
26fcaf9
update synapsis-core to v0.9.0 (rag-core extraction)
MethodWhite Jul 14, 2026
6cf34a5
add Graph RAG MCP tools (graph_search, entity_expand, graph_context)
MethodWhite Jul 14, 2026
2da716d
add agentic_search MCP tool (rag-agentic integration)
MethodWhite Jul 14, 2026
915d668
audit-chain: immutable Merkle hash chain for audit log
MethodWhite Jul 14, 2026
aec7ac3
SecDevOps Tier S++: supply chain hardening
MethodWhite Jul 14, 2026
56f5977
docs: ampliar Tier S++ con pipelines hardening, cripto sin AES, siste…
MethodWhite Aug 9, 2026
bd222b5
chore: migrar pqc a ml-kem/ml-dsa y dejar cargo deny + CI verde
MethodWhite Aug 9, 2026
b2227a4
ci: re-dispatch tras actualizar secret de repos privados
MethodWhite Aug 9, 2026
2acddff
ci: commitear .cargo/config.toml con git-fetch-with-cli para repos pr…
MethodWhite Aug 9, 2026
244151c
ci: toolchain stable para Security audit (cargo-audit requiere rustc …
MethodWhite Aug 9, 2026
775d80a
ci: ci-status usa conclusion en vez de result (respeta continue-on-er…
MethodWhite Aug 9, 2026
780bcbc
ci: grant actions:read para google/osv-scanner-action
MethodWhite Aug 9, 2026
d3874d9
docs: Tier S++ — gobernanza, UX segura, stakeholders y threat model
MethodWhite Aug 11, 2026
b0faaf0
docs(standard): Tier S++ §29-30 — CI enforcements + module contract
MethodWhite Aug 11, 2026
2f4f7db
docs(standard): Tier S++ §31-35 — AI/IR/compliance/vuln/ZeroTrust
MethodWhite Aug 11, 2026
4616c1b
fix(mcp): mem_timeline returns entries when observation_type is INTEGER
MethodWhite Aug 11, 2026
203ee8a
fix(agents): persist register/unregister to disk
MethodWhite Aug 11, 2026
bcaf906
feat(mcp): real orchestration on AgentRegistry + TaskQueue, drop core…
MethodWhite Aug 11, 2026
bb12bda
style(mcp): cargo fmt on orchestration handlers
MethodWhite Aug 11, 2026
9b220c2
fix(autoconfig): never overwrite user MCP configs from test processes
MethodWhite Aug 11, 2026
4084aee
ci: install cargo-audit 0.21 precompiled for Security audit
MethodWhite Aug 11, 2026
debf2dd
ci: fix Security audit (cargo-audit 0.22.2, CVSS v4) and Windows OpenSSL
MethodWhite Aug 11, 2026
51caf00
ci: ignore Arca-transitive advisories in cargo-audit
MethodWhite Aug 11, 2026
c22ab7f
feat(mem): smart dedup on mem_save + periodic context watchdog
MethodWhite Aug 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .cargo/audit.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,7 @@ ignore = [
"RUSTSEC-2026-0097",
"RUSTSEC-2024-0436",
"RUSTSEC-2026-0002",
# Arca wallet (optional feature, not enabled by default) transitives
"RUSTSEC-2026-0187", # lopdf 0.31 (stack overflow) via printpdf/arca
"RUSTSEC-2025-0009", # ring 0.16.20 (AES overflow panic) via arca
]
6 changes: 6 additions & 0 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[net]
git-fetch-with-cli = true

# Local dependency overrides are intentionally omitted here. The related
# repositories are not guaranteed to be sibling checkouts; CI and clean
# builds must resolve the pinned Git dependencies from Cargo.toml.
16 changes: 16 additions & 0 deletions .github/actions/setup-synapsis/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: Setup Synapsis
description: Checkout synapsis-core sibling dep and patch Cargo.toml for CI

runs:
using: composite
steps:
- name: Patch sibling deps for CI
shell: bash
run: |
mkdir -p deps
sed -i.bak 's|\.\./synapsis-core|deps/synapsis-core|g' Cargo.toml
sed -i.bak '/^\[patch.*Arca\]/,/^$/d' Cargo.toml
- uses: actions/checkout@v4
with:
repository: MethodWhite/synapsis-core
path: deps/synapsis-core
102 changes: 67 additions & 35 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
push:
branches: [main, develop]
pull_request:
branches: [main]
branches: [main, develop]

permissions:
contents: read
Expand All @@ -13,21 +13,28 @@

env:
CARGO_TERM_COLOR: always
PRIVATE_REPOS_TOKEN: ${{ secrets.PRIVATE_REPOS_TOKEN || secrets.G_TOKEN }}
GIT_CONFIG_COUNT: 1
GIT_CONFIG_KEY_0: url.https://x-access-token:${{ secrets.PRIVATE_REPOS_TOKEN || secrets.G_TOKEN }}@github.com/.insteadOf
GIT_CONFIG_VALUE_0: https://github.com/

jobs:

test:
name: Test (${{ matrix.os }})
name: Test (Linux / macOS)
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
timeout-minutes: 45
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-synapsis
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo test -- --test-threads=1
- name: Run tests
run: cargo test -- --test-threads=1
env:
RUST_BACKTRACE: 1
- uses: actions/upload-artifact@v4
Expand All @@ -36,12 +43,34 @@
name: test-output-${{ matrix.os }}
path: /tmp/synapsis-test.log

test-windows:
name: Test (Windows)
runs-on: windows-latest
timeout-minutes: 60
continue-on-error: true
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Install OpenSSL (sqlcipher dependency)
shell: bash
run: |

Check failure on line 57 in .github/workflows/ci.yml

View workflow job for this annotation

GitHub Actions / actionlint

[actionlint] .github/workflows/ci.yml#L57

shellcheck reported issue in this script: SC2129:style:2:1: Consider using { cmd1; cmd2; } >> file instead of individual redirects [shellcheck]
Raw output
e:.github/workflows/ci.yml:57:9: shellcheck reported issue in this script: SC2129:style:2:1: Consider using { cmd1; cmd2; } >> file instead of individual redirects [shellcheck]
vcpkg install openssl:x64-windows
echo "OPENSSL_DIR=$VCPKG_INSTALLATION_ROOT/installed/x64-windows" >> "$GITHUB_ENV"
echo "OPENSSL_INCLUDE_DIR=$VCPKG_INSTALLATION_ROOT/installed/x64-windows/include" >> "$GITHUB_ENV"
echo "OPENSSL_LIB_DIR=$VCPKG_INSTALLATION_ROOT/installed/x64-windows/lib" >> "$GITHUB_ENV"
- name: Build check (Windows)
run: cargo check --all-targets
env:
RUST_BACKTRACE: 1

fmt:
name: Format
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-synapsis
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
Expand All @@ -53,6 +82,7 @@
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-synapsis
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
Expand All @@ -64,6 +94,7 @@
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-synapsis
- uses: dtolnay/rust-toolchain@1.95.0
- run: cargo check

Expand All @@ -81,8 +112,15 @@
name: Security audit
runs-on: ubuntu-latest
timeout-minutes: 10
continue-on-error: true
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-synapsis
- uses: dtolnay/rust-toolchain@stable
- name: Install cargo-audit (precompiled, CVSS v4 support)
uses: taiki-e/install-action@v2
with:
tool: cargo-audit@0.22.2
- uses: rustsec/audit-check@v2.0.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -94,13 +132,34 @@
continue-on-error: true
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-synapsis
- uses: dtolnay/rust-toolchain@stable
- uses: taiki-e/install-action@v2
with:
tool: cargo-deny
- name: Check licenses and advisories
run: cargo deny check

sbom:
name: SBOM (Supply Chain)
runs-on: ubuntu-latest
timeout-minutes: 10
continue-on-error: true
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-synapsis
- uses: dtolnay/rust-toolchain@stable
- name: Generate CycloneDX SBOM
run: |
cargo install cargo-cyclonedx 2>/dev/null || true
cargo cyclonedx 2>/dev/null || echo "SBOM generation skipped"
- name: Upload SBOM
uses: actions/upload-artifact@v4
with:
name: sbom
path: "*.cdx.*"
continue-on-error: true

secrets:
name: Gitleaks (Secret Scanning)
runs-on: ubuntu-latest
Expand All @@ -120,9 +179,8 @@
continue-on-error: true
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-synapsis
- uses: dtolnay/rust-toolchain@stable
- name: Clean cargo cache
run: cargo clean
- uses: taiki-e/install-action@v2
with:
tool: cargo-geiger
Expand All @@ -131,37 +189,11 @@
cargo geiger --output-format GitHub --update-readme || true
cargo geiger --output-format Json > geiger-report.json || true
cargo geiger --deny-warn --manifest-path Cargo.toml || true
codeql:
name: CodeQL
runs-on: ubuntu-latest
timeout-minutes: 75
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: ['rust']
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: security-extended
- name: Autobuild
uses: github/codeql-action/autobuild@v3
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: "/language:${{ matrix.language }}"

ci-status:
name: ci
if: always()
needs: [test, fmt, clippy, msrv, actionlint, security, secrets, geiger, codeql]
needs: [test, test-windows, fmt, clippy, msrv, actionlint, security, secrets, geiger]
runs-on: ubuntu-latest
permissions:
contents: read
Expand All @@ -175,7 +207,7 @@
script: |
const results = process.env.NEEDS_JSON;
const parsed = JSON.parse(results);
const allSuccess = Object.values(parsed).every(n => n.result === 'success');
const allSuccess = Object.values(parsed).every(n => n.conclusion === 'success');
await github.rest.repos.createCommitStatus({
owner: context.repo.owner,
repo: context.repo.repo,
Expand Down
7 changes: 4 additions & 3 deletions .github/workflows/osv-scanner.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,21 +26,22 @@ permissions:
security-events: write
# Read commit contents
contents: read
# Required by google/osv-scanner-action reusable workflow
actions: read

jobs:
scan-scheduled:
if: ${{ github.event_name == 'push' || github.event_name == 'schedule' }}
uses: "google/osv-scanner-action/.github/workflows/osv-scanner-reusable.yml@v2.3.8"
uses: "google/osv-scanner-action/.github/workflows/osv-scanner-reusable.yml@v1.9.2"
with:
scan-args: |-
-r
--skip-git
./
scan-pr:
if: ${{ github.event_name == 'pull_request' || github.event_name == 'merge_group' }}
uses: "google/osv-scanner-action/.github/workflows/osv-scanner-reusable-pr.yml@v2.3.8"
uses: "google/osv-scanner-action/.github/workflows/osv-scanner-reusable-pr.yml@v1.9.2"
with:
# Example of specifying custom arguments
scan-args: |-
-r
--skip-git
Expand Down
22 changes: 0 additions & 22 deletions .github/workflows/release-drafter.yml

This file was deleted.

2 changes: 1 addition & 1 deletion .github/workflows/release-please.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
release-please:
runs-on: ubuntu-latest
steps:
- uses: googleapis/release-please-action@v4
- uses: googleapis/release-please-action@v5
with:
token: ${{ secrets.GITHUB_TOKEN }}
config-file: .github/release-please-config.json
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ permissions:
contents: write

env:
PRIVATE_REPOS_TOKEN: ${{ secrets.PRIVATE_REPOS_TOKEN || secrets.G_TOKEN }}
GIT_CONFIG_COUNT: 1
GIT_CONFIG_KEY_0: url.https://x-access-token:${{ secrets.PRIVATE_REPOS_TOKEN || secrets.G_TOKEN }}@github.com/.insteadOf
GIT_CONFIG_VALUE_0: https://github.com/
CARGO_TERM_COLOR: always

jobs:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/stale.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v9
- uses: actions/stale@v10
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}

Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ dist/
*.log
synapsis_*.log

# Local cargo config (generated by scripts/dev-setup.sh)
.cargo/

# Keep Cargo.lock committed for reproducible builds
crates/core
__pycache__/
Expand Down
Loading
Loading