ci: bump actions/upload-artifact from 4 to 7#2
Merged
Conversation
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 7. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](actions/upload-artifact@v4...v7) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Contributor
Author
LabelsThe following labels could not be found: Please fix the above issues or remove invalid values from |
cdayAI
approved these changes
Mar 21, 2026
cdayAI
pushed a commit
that referenced
this pull request
May 25, 2026
Second H1 item: given a flagged scan + a one-line user note, the replay agent reproduces the scan, identifies which rule(s) fired, names the root cause, proposes a structured fix, and emits a ready-to-paste regression test in both Node.js and Python. Handles four incident kinds: - false_positive: pattern matched benign input. Proposes regex tightening + allowlist rule with the input baked in. - false_negative: rule missed a confirmed attack. Proposes a new pattern with the distinctive substring. - redos: detector exceeded latency budget. Recommends rewriting the offending pattern (cap unbounded quantifiers, anchor greedy gaps); bisection hint when the offender is unknown. - crash: detector threw. Reports the stack, recommends try/catch in detector-core, emits an assert.doesNotThrow regression test. Optional judge-backed narration: if a ShieldAgent with an LLM judge is wired in, IncidentReplay also calls the judge for a 2-3 sentence human-readable explanation + remediation. All judge failures (timeout, malformed JSON, exception) fall back to a "judge unavailable" stub so the deterministic report still ships. investigateBatch() clusters repeated incidents by (kind, primarySuspect) so a real bug producing 1,000 customer reports surfaces as one cluster with 1,000 count, not 1,000 separate reports. Tests: test/test-incident-replay.js, 35 assertions across all four incident kinds, judge narration + fallbacks, batch aggregation, and input validation. Wired into npm test. Stack: PR #18 now contains - Python detector hardening (security bypasses, dedup, FPs, CI fixes) - H1 #1: ShieldAgent + ShieldActions + 5 MCP tools + demo - H1 #2: IncidentReplay Next loop iteration: H1 #3 cross-SDK differential auditor. https://claude.ai/code/session_01AqtyP5YupS6MKt6qCTXghS
cdayAI
pushed a commit
that referenced
this pull request
May 25, 2026
…Rust
Third H1 item. Same input through every available SDK; any disagreement is
a bug -- either a port drifted or a regex-semantics difference (Python's
Unicode-aware \\b vs JS's ASCII-only \\b, Python's Unicode \\d vs JS's
ASCII \\d, etc.). This is the exact bug pattern that shipped in v14.2.2
and that the layer-1 hardening in this PR fixed.
Adapter pattern: zero new deps. NodeAdapter runs in-process. PythonAdapter
spawns python3 -c, reads JSON from stdout, skips gracefully if the
runtime isn't on PATH. Easy to add GoAdapter / RustAdapter the same way.
audit(inputs) returns:
- availableSdks: which engines were actually consulted
- disagreements[]: per-input, per-SDK verdict matrix with byCategory and
bySeverity diffs (so a reviewer sees exactly where each SDK fires)
- bySdkAccuracy: majority-vote score per SDK across all disagreements
- suggestedCanonical: which SDK was right most often (the others need
fixing toward it)
driftBank() static helper returns 18 inputs hand-picked to expose every
class of cross-SDK drift Shield has historically suffered:
- Unicode \\b boundary cases (DAN, αjailbreak, βgod mode)
- Subdomain confusion in API base URL whitelist
- Fullwidth digit \\d divergence (10.0.0.1)
- Multilingual instruction overrides (Chinese, German)
- Encoding evasion
- Critical attacks (should agree)
- Benign edges (../../package.json, search URLs)
Tests: test/test-cross-sdk-differential.js, 34 assertions covering mock-
adapter agreement/disagreement, 3-way majority canonical detection,
insufficient-SDK warning, unavailable-SDK skip, driftBank composition,
input validation, and a LIVE Node↔Python audit using the actual fixed
Python SDK in this PR.
Stack on PR #18:
- Python detector hardening
- H1 #1: ShieldAgent + ShieldActions + 5 MCP tools + demo
- H1 #2: IncidentReplay (autonomous triage)
- H1 #3: CrossSDKDifferential (port-drift auditor)
Next: H1 #4 self-tuning thresholds, H1 #5 adversarial tournament.
https://claude.ai/code/session_01AqtyP5YupS6MKt6qCTXghS
cdayAI
pushed a commit
that referenced
this pull request
May 25, 2026
…anceNarrator, CustomerLearning Shipping the rest of H1 and the first H2 batch in one commit since I can't ScheduleWakeup across turns in this environment. H1 #4: src/threshold-tuner.js Sweeps per-category confidence thresholds to maximize F1 (or precision/ recall/accuracy) on a labeled corpus. Scans corpus once, sweeps in O(grid x categories). Supports precision/recall floors. Returns a threshold map the host can apply to AgentShield for measurably better signal on the customer's traffic, plus a confusion-matrix baseline for before/after comparison. Tests: 23 assertions. H2 #1: src/adversarial-tournament.js Wires the existing EvolutionSimulator + MutationEngine into a closed loop. Seed attacks -> mutate -> classify -> survivors feed next gen -> derive hardened patterns via hardenFromEvolution. Optional LLM judge validates that survivors are real attacks (not mutation noise) and ranks them. runIterative() chains tournaments using prior survivors as seeds to surface emergent strategies. Tests: 22 assertions. H2 #2: src/compliance-narrator.js Auditor-grade narrative generator for SOC2 / HIPAA / GDPR / EU AI Act. Ingests Shield events (raw scan results, agent verdicts, or normalized entries), maps categories to framework control IDs, generates a deterministic markdown report, and optionally rewrites it as audit prose via an LLM judge. HMAC-SHA256 signs the canonicalized payload with order-independent serialization so tampering is detectable. Tests: 26 assertions including 3 distinct tamper attempts. H2 #3: src/customer-learning.js Reads a customer's agent codebase (defaults: js/ts/py/go/rs/json/yaml/ md/toml) and extracts: legitimate URLs/domains, env var names, tool names, system-prompt phrases, and secret-shape prefixes (sk-, ghp_, AKIA, etc). Builds a customer-specific profile with: - allowed domains/env-vars/tool-names (suppress generic FPs) - lookalike-tool regex patterns (catch tool-name impersonation) - honeypot canary tokens shaped like the customer's real secrets (any appearance in agent output is instant exfil confirmation) - system-prompt phrase allowlist (suppresses injection FPs on the agent's own legitimate prompts) Walks with safety caps (maxFiles, maxFileBytes, exclude node_modules etc). Tests: 28 assertions including a temp-fixture repo end-to-end. All four wired into src/main.js (with namespace fix: NARRATOR_FRAMEWORKS to avoid collision with the existing COMPLIANCE_FRAMEWORKS export from src/compliance.js) and added to npm test. Suite still green end-to-end. Stack on PR #18: - Python detector hardening - H1 #1: ShieldAgent + ShieldActions + 5 MCP tools + demo - H1 #2: IncidentReplay - H1 #3: CrossSDKDifferential - H1 #4: ThresholdTuner - H2 #1: AdversarialTournament - H2 #2: ComplianceNarrator - H2 #3: CustomerLearning Continuing with H2 #4 (autonomous threat hunter) and H2 #5 (production-traffic shadow-mode reporter) next. https://claude.ai/code/session_01AqtyP5YupS6MKt6qCTXghS
cdayAI
pushed a commit
that referenced
this pull request
May 25, 2026
…porter H2 #4: src/threat-hunter.js Pluggable source pattern: any object with .name + async .fetch() can feed the hunter. Built-ins: - LocalCorpusSource: JSONL or in-memory array (offline-safe for CI) - HTTPSourceFn: caller-supplied async () => items (caller owns network so we add no dependency and the user controls egress) Hunt flow: 1. Fetch from every source (broken sources don't crash the hunt). 2. Classify each item: detector misses it -> "novel attack". 3. Synthesize a tight regex by picking the rarest 4-token window (lowest occurrence in the benign corpus) and escaping it. 4. Estimate FP rate against benignCorpus; reject above threshold (default 5%). 5. Optional LLM judge review of proposals. 6. Emit a PR-ready markdown report. Conservative by design — prefers tight literal phrases over loose alternation to keep FPs near zero. Tests: 22 assertions including broken-source tolerance, addSource validation, FP filtering, and judge integration. H2 #5: src/shadow-mode-reporter.js Aggregator over a stream of scan events. After N days emits an executive report: - traffic volume + scan-time percentiles (p50/p95/p99/max) - threats by severity, category, source - action projection (if deployed in enforce mode: would-block / would-rewrite / would-allow counts) - noisy categories (likely FP candidates: >=5 hits, low avg conf) - quiet categories (rarely fire — candidates for removal) - estimated ROI: wouldBlock * costPerIncident (configurable) Accepts raw shield.scan() results, ShieldAgent verdicts, or wrapped envelopes. ingestMany handles arrays. maxEvents cap protects memory on long-running services. Outputs JSON via report() or markdown via markdownReport(). Tests: 29 assertions including window filtering, raw vs wrapped ingest, noisy/quiet category detection, max-event cap, and ROI math. Both wired into main.js and npm test. Full suite green. Stack on PR #18: - Python detector hardening - H1 #1: ShieldAgent + ShieldActions + 5 MCP tools + demo - H1 #2: IncidentReplay - H1 #3: CrossSDKDifferential - H1 #4: ThresholdTuner - H2 #1: AdversarialTournament - H2 #2: ComplianceNarrator - H2 #3: CustomerLearning - H2 #4: ThreatHunter - H2 #5: ShadowModeReporter Continuing with H3 multi-agent SOC + agent identity CA next. https://claude.ai/code/session_01AqtyP5YupS6MKt6qCTXghS
cdayAI
pushed a commit
that referenced
this pull request
May 25, 2026
…rg trust) H3 #1: src/soc-fleet.js Orchestrates the H1+H2 modules into a coordinated SOC team: - Defender: ShieldAgent triage on every event. - Detective: IncidentReplay deep-dive on block/escalate. - Forensics: ShadowModeReporter + ComplianceNarrator window report. - PatchWriter: ThreatHunter pattern synthesis for novel attacks. - Reviewer: judge-backed approval, with rule-based fallback (no judge configured -> approve <=5 patches with zero FP). - Releaser: bundles a ChangeRequest with patches + test cases + framework attribution, ready for PR generation. Every role's I/O is captured as a SOCEvent in the timeline so the entire decision chain is replayable. Bounded by maxTimeline. status() returns per-role event counts + last event. forceFullPipeline=true runs all roles even for safe input (for synthetic drills). Tests: 25 assertions including critical/safe/forced/FP paths, judge vs rule-based reviewer, timeline cap, status snapshot. H3 #2: src/agent-identity-ca.js Cryptographic agent passports for cross-org trust. Uses Ed25519 from Node's built-in crypto (zero external deps). Capabilities: - issuePassport({agentId, capabilities, orgId}) -> {passport, privateKey} Passport contains agentId, publicKey (SPKI base64), TTL, capabilities, orgId, caRootId. CA signs the canonical body. - verifyPassport: signature check + CA root match + revocation list + expiry. Tampered passports rejected. - revoke(agentId): CRL-style revocation, subsequent verifications fail. - signMessage({agentId, payload, privateKey}) -> envelope with timestamp + 16-byte nonce + signature. - verifyMessage(envelope, passport): full chain — passport valid, agentId matches, timestamp within messageTtlMs window (replay protection), nonce not in seenNonces cache, signature valid against passport's publicKey. Returns {valid, reason?, agentId, capabilities}. - exportRootPublicKey: SPKI for cross-org verification (private key never leaves the CA instance). Canonical JSON serializer recursively sorts keys so signatures are order-independent. Nonce cache has TTL-based sweep + max-size eviction. Tests: 30 assertions including issue+verify, tamper detection on body and signature, revocation, message signing, replay protection, stale message rejection, future-timestamp rejection, agentId mismatch, foreign-CA rejection, public-key export, input validation. Both wired into main.js and npm test. Full suite green. Stack on PR #18 (12 commits, 11 new modules, ~270 new test assertions): - Python detector hardening - H1 #1-#4: ShieldAgent, IncidentReplay, CrossSDKDifferential, ThresholdTuner - H2 #1-#5: AdversarialTournament, ComplianceNarrator, CustomerLearning, ThreatHunter, ShadowModeReporter - H3 #1-#2: SOCFleet, AgentIdentityCA That's all H1 + all H2 + 2 of the highest-leverage H3 modules built offline-safe with zero new dependencies. The remaining H3 items (fleet immunity wiring, cyber-insurance integration, public benchmark leaderboard hosting) require external infra (signed update feeds, a partner API, hosted infra) that can't be scaffolded purely in-tree. https://claude.ai/code/session_01AqtyP5YupS6MKt6qCTXghS
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps actions/upload-artifact from 4 to 7.
Release notes
Sourced from actions/upload-artifact's releases.
... (truncated)
Commits
bbbca2dSupport direct file uploads (#764)589182cUpgrade the module to ESM and bump dependencies (#762)47309c9Merge pull request #754 from actions/Link-/add-proxy-integration-tests02a8460Add proxy integration testb7c566aMerge pull request #745 from actions/upload-artifact-v6-releasee516bc8docs: correct description of Node.js 24 support in READMEddc45eddocs: update README to correct action name for Node.js 24 support615b319chore: release v6.0.0 for Node.js 24 support017748bMerge pull request #744 from actions/fix-storage-blob38d4c79chore: rebuild distDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)