Skip to content

fix(reliability): validate runtime image configuration - #216

Draft
seonghobae wants to merge 20 commits into
mainfrom
fix/image-config-runtime-validation-215
Draft

fix(reliability): validate runtime image configuration#216
seonghobae wants to merge 20 commits into
mainfrom
fix/image-config-runtime-validation-215

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Closes #215.
Closes #220.

Scope and ownership

This Draft is the canonical single-writer lane for fail-closed runtime validation of public BuildExtensionsOptions and nested ImageConfig. JavaScript, deserialized, or otherwise untyped hosts must not be able to weaken local image/resource policy through malformed containers, accessors, unknown keys, hostile reflection/proxies, or invalid numeric values. This remains Inkspan-owned local extension configuration only; transport, persistence, authorization, tenancy, credentials, network/model/provider policy, deployment, migration, retention, and durable audit remain host-owned.

TDD lineage

  • Container/value RED predecessor 3995d336c4a8aa06b4632732fadc48816683165a covered malformed containers/accessors/non-enumerable runtime configuration.
  • Unknown-key RED predecessor f18fd401775a34ea1fa679df6d71cc9945ce52db: CI 31511031148 failed at the new unknown string/symbol regressions while Security 31511031203 and SAST 31511031166 succeeded.
  • Test-only 9e1611b281c3cdb2243107c9e69b4dd9b919cc65 added hostile own-key redaction coverage; its hosted run was cancelled by the next source push and is not promoted as passing evidence.
  • Product predecessors established the bounded runtime contract; all predecessor workflow results are historical after synchronization.

Current branch behavior rejects malformed top-level build options and nested image configuration, uses bounded own-key/descriptor reflection before reads, accepts only documented enumerable data-property keys, validates maxSizeBytes / maxDimension as non-negative safe integers (zero preserving documented disable semantics), validates quality as finite [0,1], redacts hostile reflection failures, and preserves valid/default extension, image, paste/drop/upload, package, and host-composition behavior.

Protected-main synchronization

Protected shipped truth and the frozen v0.6.0 source candidate are main@3b38ead2d00f44eb578d0689087b9293b3dabe1e.

Current exact head is 85aac6e55b4839b456b6ed464dbab78fd9d402c6. It is a non-destructive two-parent synchronization commit whose first parent is prior branch head c2d6219e175b5e0471dc76054a877225447c3d1c and whose second parent is exact protected main 3b38ead2d00f44eb578d0689087b9293b3dabe1e. Its tree is exact protected main plus only:

  • src/extensions/buildExtensionsRuntimeBoundary.test.ts;
  • src/extensions/imageConfigRuntime.test.ts;
  • src/extensions/kit.ts.

Fresh compare resolves the merge base exactly to protected main, reports 15 ahead / 0 behind, and reports exactly those three files. No force push or destructive rebase was used.

Exact-current-head evidence

For unchanged exact head 85aac6e55b4839b456b6ed464dbab78fd9d402c6 at the latest refetch:

  • CI 32101702170: completed / success;
  • Security Scan 32101702155: completed / success;
  • SAST Semgrep 32101702154: completed / success;
  • formal submitted reviews: 0;
  • unresolved inline review threads: 0;
  • GitHub reports the Draft mergeable.

The earlier queued/in-progress snapshot is superseded by these terminal repository results. They are exact-current-head technical evidence only: they do not establish any separately applicable central required workflow or qualifying independent approval. Absent, queued, skipped, cancelled, stale, predecessor-only, status-only, or model-only evidence remains non-passing.

Governance and integration boundary

Keep this PR Draft/unmerged while #118 owns exact protected v0.6.0 tag/publication/provenance/digest operational acceptance and while qualifying independent approval plus every applicable exact-current-head governance gate remain incomplete. Before any lifecycle transition, refetch unchanged head, protected main, ancestry/mergeability, live rules, formal reviews/threads, and every applicable repository/central workflow. Do not transfer predecessor evidence, weaken gates, self-approve, move protected main, or fabricate tag/release identity.

@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@opencode-agent opencode-agent Bot added priority: medium Normal-priority or P2 work status: draft Draft pull request type: bug Defect or incorrect behavior labels Aug 22, 2026
@seonghobae

Copy link
Copy Markdown
Contributor Author

Restacked onto current protected main and retained runtime validation at the shared extension-construction boundary.

Validation at 83eca563a19052bea56ff3a306bd29b408371dc3:

  • focused configuration and exact-head tests: 53 passed
  • typecheck passed
  • full root suite: 158 files / 916 tests, 100% coverage
  • production build and packed-package verification passed

Malformed containers, hostile descriptors, unknown keys, and invalid numeric image settings fail closed before extension setup; documented zero-disable semantics remain intact. @codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

Remove the duplicated Python support contract changes from this image-config branch. PR #405 remains the single writer while this branch keeps its runtime validation delta.

Signed-off-by: Seongho Bae <seonghobae@users.noreply.github.com>

Commit-Message-Assisted-by: Claude (via Claude Code)
@seonghobae seonghobae added the bug Something isn't working label Sep 7, 2026 — with ChatGPT Codex Connector
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working priority: medium Normal-priority or P2 work status: draft Draft pull request type: bug Defect or incorrect behavior

Projects

None yet

1 participant