Skip to content

Replace the CWL-managed Nginx demo runtime with the shared Pingora static edge #395

Description

@seonghobae

Current protected-branch defect

At protected main head 128a239f8b71ca16add4b9e15e21752d1ad63ff0, the demo/runtime Dockerfile still ships a CWL-managed Nginx process:

  • build stage produces dist-demo;
  • runtime stage is pinned nginx:1.27-alpine@sha256:65645c7bb6a0661892a8b03b89d0743208a18dd2f3f17a54ef4b76fb8e2f2a10;
  • files are copied into /usr/share/nginx/html;
  • the container runs as the image's nginx user on port 8080; and
  • health/entrypoint behavior is owned by Nginx.

This is ACTIVE_RUNTIME, not a historical/reference mention, and conflicts with the merged CWL Pingora edge policy.

Dependency and ownership

Use ContextualWisdomLab/pingora-gateway only after its first runtime is integrated and an actual reviewed artifact or immutable image digest exists. Do not invent a release/tag/digest. If a managed static-hosting/CDN boundary is proven superior for the demo, record that exception explicitly rather than introducing another self-managed reverse proxy.

The shared gateway is a Generic/Supporting edge subdomain. Inkspan owns demo routing, asset/cache semantics and product-specific response policy. Do not move Inkspan behavior into pingora-gateway.

RED characterization before replacement

Capture the current production/demo HTTP behavior through the real built-container path, not source-text assertions alone:

  • / and representative hashed/static assets;
  • GET and HEAD;
  • missing-resource status/body semantics;
  • MIME, ETag/Last-Modified and cache behavior actually emitted by the image;
  • conditional requests (304) where currently supported;
  • byte ranges (206/416) where currently supported;
  • port 8080, non-root execution and healthcheck;
  • security/response headers required by current clients; and
  • graceful termination behavior used by the deployment path.

Record observed behavior rather than assuming stock Nginx defaults.

GREEN acceptance

  • no deployable Nginx/OpenResty/ingress-nginx image/package/config/command/runtime path remains;
  • the replacement uses a real published pingora-gateway artifact/digest or an accepted managed-hosting boundary;
  • Inkspan-specific static semantics remain in an Inkspan edge/deployment adapter or versioned configuration;
  • non-root and read-only-root operation, health/readiness and graceful drain are tested;
  • container/deployment/CI/operator docs, DDD Context Map/Ubiquitous Language, SECURITY/THREAT_MODEL, TEST_STRATEGY, OPERABILITY/recovery, docs/product-technical-gap-baseline.md, README and CHANGELOG are code-current;
  • exact-head CI/security/coverage/SBOM/provenance gates pass; and
  • rollback is executable and references a real prior artifact.

Do not mark this issue migrated until the protected default branch contains the replacement and the behavior/security evidence passes.

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

    priority: highscope: product-gapCustomer-visible product gapstatus: blockedBlocked by conflict, dependency, or required prerequisitetype: bugDefect or incorrect behavior

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions