Skip to content

feat(ispxnative): load pinned portable project config - #1764

Merged
joeykchen merged 1 commit into
goplus:devfrom
joeykchen:feat/portable-engine-config
Aug 21, 2026
Merged

feat(ispxnative): load pinned portable project config#1764
joeykchen merged 1 commit into
goplus:devfrom
joeykchen:feat/portable-engine-config

Conversation

@joeykchen

Copy link
Copy Markdown
Contributor

Summary

  • carry an optional, identity-bound portable project config through interpreted runtime roots
  • load the config from a pinned session directory and reject path or content drift
  • overlay the captured config without changing legacy run behavior when absent

Validation

  • go test -race ./cmd/ispxnative ./internal/interpruntime
  • go test ./...
  • go vet ./...
  • go test -tags pure_engine ./cmd/ispxnative ./internal/interpruntime
  • Windows amd64 pure_engine compile
  • go mod tidy -diff
  • git diff --check

@fennoai fennoai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the fixed range 7b73af9d73edfeda5a5ee7c33e57e0b78f29ccf9...2a0efad9de3828db93d1cfb6f13c1268a38bacdd} across the runtime environment propagation, pinned config loading, and overlay filesystem units. The pinned snapshot and overlay behavior are covered by focused tests; go test -race ./cmd/ispxnative ./internal/interpruntime and git diff --check pass. One regression in forwarding the new portable-config contract is called out inline.

Additional findings

  • internal/interpruntime/roots.go:166: [P1] Preserve portable config variables when building child environments: rootEnvKey now classifies SPX_PORTABLE_CONFIG_DIR and SPX_PORTABLE_CONFIG_IDENTITY as root variables, so this loop removes both from base, but the return value only re-adds the three legacy roots. Any caller that uses Roots.Environment to launch ispxnative therefore drops the pinned config directory and identity; the child sees no portable overlay and falls back to its project .config, defeating the new identity-bound behavior (or silently losing the portable config when the project copy differs). Preserve the validated pair when present, or filter only the three legacy keys here.

@joeykchen
joeykchen merged commit 318c5e5 into goplus:dev Aug 21, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant