Skip to content

feat(supply-chain): build, attest, and activate the patch-validator image #66

Description

@seonghobae

Goal

Maintain a buyer-verifiable patch-validator image lifecycle: reviewed source → exact image/runtime/SBOM/vulnerability receipts → protected integration → protected-main operational acceptance → immutable publication/signature/attestation → controlled activation. The validator must never inherit reviewer/model/GitHub-write/provider-routing/quarantine/security/outbound/release authority, and automation must not invent outbound licensing authority.

Protected truth — 2026-09-07 KST

Current protected main is GitHub-verified d9b2a956960be72a5370afa50275a405dfbba529, the normal merge of #526 on top of protected 0dec8d84b1e4744e7a9c6a77e2e2631a183ee2ab. That parent already contains the normal #554 workflow-source trust integration; #554 is no longer an open image-gate candidate. The image/runtime/supply-chain implementation originally entered protected history through #407 as GitHub-verified squash commit 8ce7c7536888ec0b596e18368eedd9379deec64f; 8ce7c753... is the integration commit, not the current protected tip.

The unchanged #407 exact head 871490009a65336003047a85b994581ed3e36b44 reached terminal success in all four applicable gates before merge:

  • Application CI 32619804074: success
  • reviewer-ci 32619804030: success
  • central Security Scan 32619804069: success
  • dedicated patch-validator-image 32619804032: success
  • unresolved review findings: 0

Current protected source retains the fully-static numeric-non-root scratch runtime, no-network/read-only/capability-dropped smoke path, exact source/image/receipt binding, pinned Trivy/Syft/Grype tooling, CycloneDX/SBOM/component evidence, reviewed runtime-component identities and applicability evidence, strict SHA-256/provider/CPE/provenance checks, fail-closed MEDIUM-or-higher policy, and credential-free validator execution.

Fresh current-main candidate evidence narrows the present verification latency. PR #543 exact b14b37ca12b3b6ae1999d250a393997ffff04dec has terminal-success application CI 34071938887, reviewer-ci 34071938888, and required Security Scan 34071938889. Dedicated image run 34071938978, job 101590775349, is assigned to GitHub-hosted runner 1001730092; exact checkout, stale-head refusal, scanner installation, exact dependency materialization and Buildx completed, and the job is still executing Build exact-head patch-validator image. This is PR-head verification only and does not satisfy protected-main operational acceptance or publication.

The current workflow gives the image build a 150-minute step timeout within a 180-minute job and uses shared GHA BuildKit cache scope noema-patch-validator-image. The reviewed Dockerfile intentionally compiles checksum-pinned OpenSSL 3.5.8 and fully-static Node 24.19.0 from source before producing the scratch runtime. Several current candidate generations are concurrently in that build phase; this is therefore build-cost/cache-population throughput evidence, not a repository-wide hosted-runner assignment outage. Do not weaken the static/non-root/scratch/runtime receipt boundary to shorten the queue. After one current generation completes, compare BuildKit cache-hit/export evidence before changing the canonical #550#540 workflow/toolchain lane.

No GitHub release currently exists for Noema. Historical #407 PR-head evidence and current open-PR image evidence therefore remain implementation/integration or candidate verification history, not protected-main operational publication evidence.

Historical predecessor #67 was semantically compared with the integrated successor and closed as superseded; it was not merged.

Completed local-image criteria

  • Reconstruct the image/runtime/verifier/reviewer integration on protected lineage.
  • Preserve node_patch_verify_v1, exact source/image/receipt binding, supply-chain pinning and credential-free isolation.
  • Add realistic no-network/read-only/non-root smoke and hostile-result-channel regressions.
  • Add CycloneDX, Trivy, Syft/Grype, static-runtime/component and exact-image receipt verification.
  • Repair builder/runtime/scanner evidence failures test-first without weakening isolation or vulnerability thresholds.
  • Require reviewed identities/provenance for independently versioned bundled runtime components.
  • Fail closed on malformed/ambiguous image identity, unreviewed provider/CPE provenance, cross-repository smoke evidence, duplicate image authority and receipt-path replacement.
  • Preserve raw scanner evidence separately from reviewed applicability evidence.
  • Obtain application CI, reviewer-ci, eligible central Security Scan and dedicated image terminal-success on one unchanged exact feat(sandbox): restack patch-validator image on current main #407 head before integration.
  • Re-read live base/reviews/scanner authority immediately before integration and merge the unchanged gate-clean successor.
  • Compare feat(sandbox): build and verify patch-validator image #67 against the integrated successor and close it as superseded only after valuable semantic preservation was established.

Remaining executable boundary

Protected-main operational acceptance

  • Execute .github/workflows/patch-validator-image.yml by its protected workflow_dispatch entrypoint against the then-current exact protected main and retain immutable run/artifact identities.
  • Bind the retained receipt to that exact protected source revision. Historical feat(sandbox): restack patch-validator image on current main #407 PR-head evidence and open-PR evidence do not substitute for protected-main proof.
  • If protected-main execution fails, repair the exact causal boundary test-first without weakening scanner/isolation policy.

The currently available GitHub write surface exposes rerun operations but no generic fresh workflow_dispatch action for this workflow. A rerun of a prior PR event is not a protected-main dispatch and must not be used to manufacture this acceptance receipt. Waiting on an authorized fresh dispatch blocks only this operational sub-lane.

Publication / signature / provenance

  • Publish only an immutable image digest after protected-main local-image acceptance.
  • Sign/attest through a verified repository-controlled or keyless identity that is not exposed to untrusted execution.
  • Generate provenance bound to repository, exact source, workflow path/ref, builder/runner identity, image digest and build parameters.
  • Verify signature/provenance/SBOM/source/signer identity before reviewer consumption or activation.
  • Retain bounded machine-readable receipts with schema versions and canonical SHA-256 identities.

Licensing / transfer rights

  • Keep OCI/artifact outbound-license metadata absent or subordinate to an explicit authorized owner/legal decision.
  • Bind artifact-rights evidence to SemVer tag, full source commit, immutable image digest, SBOM, dependency-license inventory, NOTICE/attribution and provenance.
  • Preserve third-party obligations; vulnerability success is not license/transfer-rights evidence.

Activation / buyer proof

  • Activation defaults disabled until protected operational/publication evidence passes.
  • Validator evidence never counts as formal approval, merge/release authority, deployment authority or acquisition readiness.
  • Refuse stale/missing/malformed/mismatched producer/workflow/image/receipt evidence.
  • Exercise rollback/rotation/recovery and retain buyer-verifiable evidence.
  • Reconcile canonical operations/security/threat-model/test/traceability/licensing authority after publication/activation implementation stabilizes.

Guardrails

Do not weaken #27, provision #29/#227 by source fiction, configure #40 by documentation, synthesize #3 production KPI evidence, choose an outbound license, or write central .github/naruon/contextual-orchestrator source from this issue.

Related: #5, #9, #27, #29, #40, #73, #227, #407, #526, #539, #543, #550, #554.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: apiAPI, protocol, event, or external contractarea: authAuthentication, authorization, identity, or tenant isolationarea: ci-cdCI, GitHub Actions, checks, release, or supply chainarea: securitySecurity boundary, hardening, or vulnerability preventionenhancementNew feature or requestpriority: mediumNormal-priority or P2 workstatus: blockedBlocked by conflict, dependency, or required prerequisitetype: featureNew or expanded product capability

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions