Skip to content

build(deps): bump actions/checkout from 4 to 6#1

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/github_actions/actions/checkout-6
Open

build(deps): bump actions/checkout from 4 to 6#1
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/github_actions/actions/checkout-6

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Apr 22, 2026

Copy link
Copy Markdown
Contributor

Bumps actions/checkout from 4 to 6.

Release notes

Sourced from actions/checkout's releases.

v6.0.0

What's Changed

Full Changelog: actions/checkout@v5.0.0...v6.0.0

v6-beta

What's Changed

Updated persist-credentials to store the credentials under $RUNNER_TEMP instead of directly in the local git config.

This requires a minimum Actions Runner version of v2.329.0 to access the persisted credentials for Docker container action scenarios.

v5.0.1

What's Changed

Full Changelog: actions/checkout@v5...v5.0.1

v5.0.0

What's Changed

⚠️ Minimum Compatible Runner Version

v2.327.1
Release Notes

Make sure your runner is updated to this version or newer to use this release.

Full Changelog: actions/checkout@v4...v5.0.0

v4.3.1

What's Changed

Full Changelog: actions/checkout@v4...v4.3.1

v4.3.0

What's Changed

... (truncated)

Changelog

Sourced from actions/checkout's changelog.

Changelog

v6.0.2

v6.0.1

v6.0.0

v5.0.1

v5.0.0

v4.3.1

v4.3.0

v4.2.2

v4.2.1

v4.2.0

v4.1.7

v4.1.6

... (truncated)

Commits

@dependabot dependabot Bot added dependencies Pull requests that update a dependency file github_actions Pull requests that update GitHub Actions code labels Apr 22, 2026
@dependabot dependabot Bot changed the title Bump actions/checkout from 4 to 6 build(deps): Bump actions/checkout from 4 to 6 Apr 22, 2026
@dependabot dependabot Bot force-pushed the dependabot/github_actions/actions/checkout-6 branch from a8d2a35 to a0cbe9c Compare April 22, 2026 18:16
@dependabot dependabot Bot changed the title build(deps): Bump actions/checkout from 4 to 6 chore(deps): Bump actions/checkout from 4 to 6 Apr 22, 2026
@dependabot dependabot Bot force-pushed the dependabot/github_actions/actions/checkout-6 branch from a0cbe9c to a86d5a2 Compare April 22, 2026 18:26
blackbeardONE pushed a commit that referenced this pull request Apr 22, 2026
The previous commit (cde2ee1) got govulncheck compiling again by
wiring liboqs into the job so it could analyse the CGO-gated
pkg/crypto. With the scan actually running end-to-end, it surfaced a
real transitive vulnerability:

  Vulnerability #1: GO-2024-3218
    Content Censorship in the InterPlanetary File System (IPFS) via
    Kademlia DHT abuse in github.com/libp2p/go-libp2p-kad-dht
    Module: github.com/libp2p/go-libp2p-kad-dht@v0.39.0
    Fixed in: N/A

Reached via pkg/networking/bootstrap.go -> libp2p.New() -> IpfsDHT.
Because `Fixed in: N/A`, there is literally no upstream version we
can upgrade to. Replacing the DHT backend outright would be a
major architectural change far outside the scope of a CI hygiene
fix -- that path is tracked separately (networking / DHT review).

Blocking `main` forever on a finding with no upstream patch is
cargo-culted security theatre, so introduce a narrow, auditable
allowlist:

- QSDM/scripts/govulncheck-filter.sh
  Runs `govulncheck -json ./...`, parses the emitted OSV ids with
  jq (falls back to regex grep if jq is missing), prints the raw
  findings for the job log, and exits:
    * 0 if govulncheck reports nothing,
    * 0 if every reported id is in the allowlist,
    * 1 (and a loud "UNEXPECTED vulnerabilities" message) if ANY
      id outside the allowlist is reported.
  Also propagates real tool failures (exit != {0,3}) so a genuine
  govulncheck crash still goes red.

  The allowlist today contains exactly one id (GO-2024-3218) with a
  mandatory comment block: OSV id, reason, Fixed-in status, and a
  soft expiry date (2026-10-22) so the allowlist cannot rot
  indefinitely; future maintainers are prompted to re-check
  upstream every ~6 months or replace the DHT backend.

- .github/workflows/qsdm-go.yml
  The govulncheck step now calls the filter script instead of
  invoking govulncheck directly. All the CGO_* / liboqs setup is
  unchanged.

Net result: govulncheck will go green on the next run because the
only finding (GO-2024-3218) is explicitly acknowledged. The day a
new CVE shows up in any of our Go deps, CI will go red with the
offending OSV id printed in the log -- which is the behaviour we
actually wanted from govulncheck all along.

Made-with: Cursor
@dependabot dependabot Bot force-pushed the dependabot/github_actions/actions/checkout-6 branch 5 times, most recently from 7451a8c to a28de90 Compare April 24, 2026 05:34
blackbeardONE pushed a commit that referenced this pull request Apr 24, 2026
The consensus-maintained backing store for the nvidia-hmac-v1
registry that pkg/mining/attest/hmac has been consuming through
an in-memory stub since Phase 2c-i. Wire format + validation
+ state-view adapter only — the pkg/chain state-transition
hook that actually debits the sender's balance and inserts the
record is a separate follow-on commit (kept isolated because
consensus-critical diffs deserve their own review).

SECURITY MODEL (documented exhaustively in doc.go)

  The nvidia-hmac-v1 HMAC key lives on-chain as public state.
  That is by design under the ratified tiered trust-anchor
  model: datacenter GPUs use nvidia-cc-v1 (real AIK crypto,
  Phase 2c-iv), consumer GPUs use nvidia-hmac-v1 where
  security comes from identity pinning + stake bond, NOT key
  secrecy. An adversary who reads the chain can produce valid
  bundles for any enrolled node_id, but the reward still flows
  to the enrolled owner — so the rational worst case is
  operators leaking their own keys, which is what the protocol
  rewards anyway.

PACKAGE SURFACE

  EnrollPayload          wire format, stored in Tx.Payload
                          with ContractID = "qsdm/enroll/v1"
  UnenrollPayload        companion wire format
  EnrollmentRecord       on-chain state entry, keyed by
                          NodeID; covers stake, unbond
                          maturity, owner, memo
  EnrollmentState        read-only interface (Lookup,
                          GPUUUIDBound) that the chain's
                          state store will implement
  InMemoryState          reference implementation — ApplyEnroll,
                          ApplyUnenroll, SweepMaturedUnbonds
  StateBackedRegistry    adapts EnrollmentState to
                          hmac.Registry; defensive-copies
                          HMACKey so callers can't corrupt
                          state through returned entries
  EncodeEnrollPayload    canonical JSON encoder —
  DecodeEnrollPayload    - SetEscapeHTML(false) for cross-
  EncodeUnenrollPayload    platform determinism
  DecodeUnenrollPayload  - DisallowUnknownFields on decode so
                           attackers can't smuggle extras
                           past un-updated validators
                         - no trailing newline (json.Encoder
                           appends one; we strip)
  PeekKind               lenient kind-lookup for dispatch
                          before full decode
  ValidateEnrollFields   stateless check: Kind, node_id
                          character set (a-z0-9_-), gpu_uuid
                          printable-ASCII + case check,
                          hmac_key length [32..128],
                          stake_dust == mining.MinEnrollStakeDust,
                          memo ≤ 256 bytes, sender non-empty
  ValidateEnrollAgainstState   stateful: sender balance ≥
                                stake, node_id uniqueness,
                                gpu_uuid uniqueness among
                                ACTIVE records
  ValidateUnenrollFields      stateless for unenroll
  ValidateUnenrollAgainstState  sender == Owner, not
                                already unenrolled

KEY DESIGN DECISIONS

  - Node_id character set [a-z0-9_-]: avoids unicode-
    normalization pitfalls, matches existing miner tooling
    conventions. Uppercase rejected to prevent "Alice" vs
    "alice" ambiguity.

  - gpu_uuid: case-preserved, must start with "GPU-" (upper)
    if the prefix is present, no embedded whitespace. Looser
    than RFC 4122 because nvidia-smi output varies by driver;
    strict enough that "GPU-abc" ≠ "GPU-abc ".

  - Stake exact-equals, not ≥: overpayment would leave surplus
    in limbo. Operators who try to pay more get a clean
    validation error.

  - gpu_uuid released immediately on unenroll, BUT node_id
    reserved until unbond matures: operators can unenroll rig
    #1 and immediately enroll rig #2 with the same physical
    GPU. The NAME stays locked so slashing can still target
    the revoked record during its window.

  - UnbondWindow = 7 days at 3s blocks = 201,600 blocks.
    Genesis default, exported as var for future governance
    adjustment.

  - InMemoryState.ApplyEnroll / ApplyUnenroll return errors
    on duplicate / missing rather than silently ignoring —
    catches programmer errors where validation was skipped.

TESTS (54 new, 328 total across ./pkg/api/... ./pkg/mining/...)

  codec_test.go (11):
    - EnrollPayload round-trip (ensures tx signatures cover
      bytes that decode back to the same struct)
    - canonical bytes have no trailing newline
    - encoding is deterministic across calls
    - DisallowUnknownFields rejects smuggled fields
    - trailing-data rejection (JSON-smuggling guard)
    - wrong-kind rejection on both decoders
    - PeekKind covers both variants + missing kind + non-JSON
    - default-Kind on encode convenience path

  validate_test.go (24):
    - ValidateEnrollFields accept + 14-case table of rejects
      covering every field + sentinel
    - ValidateUnenrollFields accept + 4 rejects
    - ValidateEnrollAgainstState accept, insufficient balance,
      node_id taken, gpu_uuid taken, nil-state
    - ValidateUnenrollAgainstState accept, wrong owner, already
      unenrolled, unknown node

  registry_test.go (11):
    - StateBackedRegistry Lookup for active/not-registered/
      revoked + defensive-copy check
    - NilState panics (fail-loud contract)
    - InMemoryState duplicate enroll fails, double unenroll
      fails
    - GPURebind after unenroll succeeds (physical binding
      released)
    - NodeID reserved during unbond (name-squatting guard)
    - SweepMaturedUnbonds respects UnbondWindow boundary
    - EnrollmentRecord.Active / MatureForUnbond

  integration_test.go (1, crown jewel):
    - Full path: payload → stateless validate → stateful
      validate → ApplyEnroll → StateBackedRegistry →
      NewProductionDispatcher → miner assembles bundle with
      real operator key → validator accepts.
    - Then ApplyUnenroll; fresh proof from the (now-revoked)
      node is rejected, proving the revocation path reaches
      the hmac verifier through the adapter.

EXPLICITLY NOT IN SCOPE (follow-on commits):

  1. pkg/chain integration: debit sender's balance by
     StakeDust, insert record into chain state, credit
     released stakes to owners on sweep. Touches account
     store + block sealer + receipt formatter — its own
     review.

  2. Block-time sweep trigger. Currently SweepMaturedUnbonds
     exists but nothing calls it; the chain commit wires it
     into block finalization.

  3. Slashing path: governance-triggered tx that burns a
     revoked record's StakeDust. Phase 2c-v.

  4. HTTP/JSON-RPC surface for submitting enrollments (the
     miner toolchain). Follows after chain integration.
blackbeardONE pushed a commit that referenced this pull request Apr 25, 2026
Closes Tier-A #1: the v2 slashing wire format now has a
corresponding consensus applier, so on-chain slashing is
end-to-end functional once concrete EvidenceVerifiers ship.

  - pkg/chain/slash_apply.go: SlashApplier with ApplySlashTx.
    * Decodes + stateless-validates the payload.
    * Looks up the offender via SlasherStateMutator.
    * Computes actualSlash = min(payload.SlashAmountDust,
      verifier-cap, record.StakeDust).
    * Atomic fee+nonce debit on the slasher before any state
      mutation (matches enroll/unenroll fee-burn semantics).
    * Replay protection via state.MarkEvidenceSeen, keyed on
      sha256(EvidenceKind || 0x00 || EvidenceBlob).
    * Slasher reward = slashed * RewardBPS / 10000, capped at
      SlashRewardCap (50% of forfeiture). Remainder is burned.
    * Dispatcher is injected; at v2 genesis all kinds are
      stubbed out, so slash txs reject until Tier-3 verifiers
      ship.

  - pkg/mining/enrollment: InMemoryState extended with
    SlashStake, MarkEvidenceSeen, and EvidenceSeen. Clone /
    Restore propagate the new seenEvidence set so speculative
    replay through ChainReplayApplier stays correct.

  - pkg/chain/enrollment_aware_applier.go: routes
    slashing.ContractID via SetSlashApplier opt-in, exposes
    SlashApplier() accessor, surfaces ErrSlashingNotWired for
    unconfigured nodes, and deep-copies the slasher (sharing
    the cloned EnrollmentStateMutator with the enrollment
    applier so both routes see one consistent snapshot).

Tests: 14 new cases covering happy path, replay rejection,
verifier rejection with untouched nonce/balance, unknown node,
wrong contract ID, zero-fee reject, stake clamp, reward cap
panic, nil-field panics, fingerprint determinism, concurrent
slash race, routing via EnrollmentAwareApplier, not-wired
rejection, and ChainReplay preserves slasher deep-copy.

All touched packages green: chain, mining/enrollment,
mining/slashing, mining/attest/{,cc,hmac}, api.

Made-with: Cursor
@dependabot dependabot Bot force-pushed the dependabot/github_actions/actions/checkout-6 branch from a28de90 to ccfeaef Compare April 26, 2026 16:25
@dependabot dependabot Bot changed the title chore(deps): Bump actions/checkout from 4 to 6 chore(deps): bump actions/checkout from 4 to 6 May 2, 2026
@dependabot dependabot Bot force-pushed the dependabot/github_actions/actions/checkout-6 branch 2 times, most recently from ea1db04 to 46b559e Compare May 3, 2026 21:49
@dependabot dependabot Bot force-pushed the dependabot/github_actions/actions/checkout-6 branch from 46b559e to 686216e Compare May 10, 2026 09:34
@blackbeardONE

Copy link
Copy Markdown
Owner

@dependabot rebase

@dependabot dependabot Bot force-pushed the dependabot/github_actions/actions/checkout-6 branch from 686216e to aaa2f95 Compare May 11, 2026 08:47
blackbeardONE pushed a commit that referenced this pull request May 11, 2026
…ld queue

The macos-build.yml workflow had never actually completed a run end-to-end
because the hosted macOS pool was queue-limited and concurrency.cancel-in-progress
only cancels runs in the same head-ref group. 14h of backlog + 6 dependabot
PRs sitting queued kept everything from ever reaching a runner.

Cancelled 10 stale queued runs via the REST API (kept the latest v0.3.0
run). On the first run that actually got a runner, the no-CGO macos-14
job failed within 0.4s with:

  go: cannot find main module, but found .git/config in /Users/runner/work/QSDM/QSDM

Root cause: build_macos.sh runs from working-directory=QSDM (the
macos-build.yml convention), but go.mod lives at QSDM/source/go.mod.
The CGO branch already handled the source/-indirection. The no-CGO
branch did not -- it just called go build directly against the QSDM
root, which has no go.mod.

Fix: mirror the same `if [[ -f source/go.mod ]]; cd source` guard
into the no-CGO branch.

Also in this session:
  * Merged dependabot PR #11 (libp2p-pubsub 0.15.0 -> 0.16.0) after
    confirming all 24 PR-CI checks were green across build-test,
    govulncheck, trivy, docker, trustcheck, and wasm.
  * PR #12 (mattn/go-sqlite3 1.14.28 -> 1.14.44) hit a go.sum conflict
    after PR #11 merged -- triggered @dependabot rebase.
  * Posted @dependabot rebase on #1, #5, #6, #7, #8, #10 so they pick
    up the session-75 ripgrep fix and re-run cleanly.
  * Deferred PR #2 (login-action 3->4) and PR #13 (build-push-action
    6->7): PR CI doesn't trigger release-container.yml (which runs
    only on push: tags: v*), so merging risks re-breaking the release
    pipeline we just stabilised in sessions 75-78. Path forward
    documented in RELEASE_NOTES_v0.3.0.md.

Co-authored-by: Cursor <cursoragent@cursor.com>
blackbeardONE pushed a commit that referenced this pull request May 12, 2026
Documents the deploy of b1f72ef to api.qsdm.tech (BLR1):
 * binary cross-compiled linux/amd64,
   sha256 738796c3ddcd6efd8e38305549d9b8a4d445dd70ac392595e835152a3a5b46f3
 * /etc/systemd/system/qsdm.service.d/host-key.conf drop-in
   sets QSDM_NETWORK_HOST_KEY_PATH=/opt/qsdm/host_key
 * restart #1 generated and persisted /opt/qsdm/host_key
   (93 bytes, 0600, sha256 03c91b27...)
 * restart #2 reloaded the same key
 * pre-deploy node_id:  12D3KooWBY9zdQ...
 * post-deploy node_id: 12D3KooWRH4MGi... (stable across restart)

Includes an honest scope note: the post-restart "attested=0" trust-
summary blip is NOT cured by this change. The NGC sidecar
identifies bundles by a config-set qsdmplus_node_id (e.g.
"vps-blr1-validator"), independent of the libp2p peer.ID. The real
cause is the validator's in-memory accepted-attestation ring being
wiped on every restart. Filed as a new follow-up named
trust-attest-persist (mirror recentrejections.FilePersister).
@dependabot dependabot Bot force-pushed the dependabot/github_actions/actions/checkout-6 branch 2 times, most recently from f4f3175 to 42dcbaf Compare May 18, 2026 12:45
@github-advanced-security

Copy link
Copy Markdown

You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool.

What Enabling Code Scanning Means:

  • The 'Security' tab will display more code scanning analysis results (e.g., for the default branch).
  • Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results.
  • You will be able to see the analysis results for the pull request's branch on this overview once the scans have completed and the checks have passed.

For more information about GitHub Code Scanning, check out the documentation.

Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v4...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot changed the title chore(deps): bump actions/checkout from 4 to 6 build(deps): bump actions/checkout from 4 to 6 May 18, 2026
@dependabot dependabot Bot force-pushed the dependabot/github_actions/actions/checkout-6 branch from 42dcbaf to 3371f4a Compare May 18, 2026 16:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file github_actions Pull requests that update GitHub Actions code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants