Repository navigation
feat(interactive): M2 executable Program ABI V1 and immutable-byte loader - #3
Conversation
rockyshi1993
left a comment
There was a problem hiding this comment.
M2 implementation self-review (review gate; not an independent external approver):
- Scope limited to executable Program ABI V1 emission, immutable program identity, same-byte loader and internal compile API. No M3–M6/runtime APIs leaked.
- Fixes made during review: nested AST ImportExpression traversal; compile-option upfront own-data snapshot; static ProgramTable/IR revalidation at load.
- Runtime and identity checks: zero module imports, exact hash, advance Function#toString equality, original evaluateWhenAst inlined from Standard implementation, checked phase/edge/failed-when behavior, Agent frame/attempt and candidate commitment proposal rules.
- CI #42820318617: Ubuntu 24.04 / Windows 2025 × Node 22.13.0 / 24.22.1 all PASS 283/283; website PASS; existing Standard exports unaffected.
- M3–M6 (Store, Coordinator, auth and public SDK) are intentionally not asserted to exist. No external exactly-once claim.
Verdict: PASS for M2 milestone; ready for squash merge only. Documentation and model-host safety gates remain in later milestones.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 3 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 7578cc7. Configure here.
| evaluateWhenAst.toString(), | ||
| freezeData.toString(), | ||
| 'export const interactiveProgram = freezeData(' + JSON.stringify(manifest) + ');', | ||
| 'export const programTable = freezeData(' + JSON.stringify(table) + ');', |
There was a problem hiding this comment.
Embedded JSON mishandles proto keys
High Severity
emitInteractive splices JSON.stringify(manifest) and JSON.stringify(table) into generated object literals. A quoted "__proto__" key is a prototype setter in JavaScript, so own __proto__ keys in Agent output schemas are dropped and the object's prototype is replaced. loadInteractiveProgram then rejects the table as untrusted metadata, so programs that M1 already preserves fail to load.
Reviewed by Cursor Bugbot for commit 7578cc7. Configure here.
| if (!descriptor || !Object.hasOwn(descriptor,'value')) throw new TypeError('Program metadata has accessor'); | ||
| if (Array.isArray(value) && key === 'length') continue; | ||
| if (Array.isArray(value) && !/^(0|[1-9]\d*)$/.test(key)) throw new TypeError('Invalid Program metadata array key'); | ||
| if (!Array.isArray(value) && (key === 'constructor' || key === 'prototype')) throw new TypeError('Unsafe metadata key'); |
There was a problem hiding this comment.
Loader rejects valid schema keys
Medium Severity
ownJSON throws on constructor or prototype keys while copying programTable. Those names are valid JSON Schema property keys and are already preserved by the Standard analyzer, dataflow, and M1 IR. A compiled Program whose Agent output lists them cannot be loaded even though the copy target is a null-prototype object.
Reviewed by Cursor Bugbot for commit 7578cc7. Configure here.
| const outDir = snapshotOptions.outDir === undefined ? path.dirname(filename) : path.resolve(cwd,snapshotOptions.outDir); | ||
| const snapshot = await readFile(filename); // original source bytes, never imported | ||
| const analysis = await analyzeSource(snapshot,{ | ||
| filename, projectRoot:path.dirname(filename), |
There was a problem hiding this comment.
Compiler uses wrong project root
Medium Severity
compileInteractive passes projectRoot: path.dirname(filename) into analyzeSource, which skips resolveProjectRoot's walk to package.json. Skill checks then resolve skills/ next to the workflow file instead of the project root. Agent workflows in a subdirectory fail with missing-skill diagnostics, and callers cannot override projectRoot or skillsRoot.
Reviewed by Cursor Bugbot for commit 7578cc7. Configure here.
* test(interactive): freeze C01-C12 scenario matrix and scripted/live/native evidence separation * test(interactive): C01-C04,C10,C11 scripted complex runs with real Program signed Host and SQLite * test(interactive): C01/C03 live multi-Agent two-Condition workflow definition * test(interactive): real ChatGPT multi-Agent 5-turn replay bridge with schema rejection and SQLite reopen * test(c01-live): actual ChatGPT requirements analysis bound to published Pending #1 * test(c01-live): ChatGPT architecture response to real dependent Pending #2 * test(c01-live): actual ChatGPT implementation plan from real Pending #3 * test(c03-live): ChatGPT deliberately submits invalid reviewApproved type to test real retry Pending * test(c01-live): genuine ChatGPT corrected review after real attempt-2 Pending #5 * docs(interactive): record C01-C12 detailed scripted and five-turn real ChatGPT evidence with open native gates * test(interactive): extend complex P0-A acceptance with C13-C20 interleavings * docs(interactive): extend risk-mapped C13-C24 acceptance and native-host gates * test(interactive): inspect durable Store state while Pending frame intentionally redacts State * test(interactive): verify C16 durable Checkpoint while Pending frame hides private State * docs(interactive): record independently checked 7/7 CI and C13-C24 layered verdict * test(interactive): rebase M6 Host integration on current main Add current-main M6 scripted Host integration coverage, root-discovery fixtures, Linux cross-UID CI, and the full Interactive delivery roadmap. This is test/CI/documentation only and does not complete native-host C12/S13 or M6 final acceptance. * docs(interactive): add Trusted Host V2 conditional security design Add the reviewed Trusted Host V2 threat model, deployment profiles, security acceptance matrix, and explicit Phase 2 limitations. This is documentation-only: it does not implement Host isolation, Grok native provenance, Windows ACL enforcement, or Phase 3/4 runtime changes. F-02 and F-04 remain pending real validation; F-07 formal V0.3/V0.6-R5 conformance remains blocked. Merge does not authorize Phase 3 or claim C12/S13/M6 acceptance. * docs(interactive): recover frozen baselines and establish evidence audit plan Record independently validated Requirements V0.3 and Technical Design V0.6-R5 originals, limited Core PoC results and Phase 2 traceability roadmap. Reconcile the previously confirmed M1–M6 P0-A plan and existing M1–M5 implementation. Documentation only: no Core/API/Program ABI/Store schema changes, no Phase 3 authorization, no C12/S13 or full conformance PASS claim. * docs(interactive): archive Phase 2 formal conformance R1/R2 audit * docs(interactive): add source-backed T/R/S crosswalk and initial P0-A gap findings * docs(interactive): document Host/Public terminal State projection contract difference * docs(interactive): record async Store contract divergence from confirmed V0.6-R5 * docs(interactive): add Phase 2 R2 code-evidence review and R04 mutation findings * docs(interactive): link R04 independent regression PR and retrigger Phase 2 CI * docs(interactive): archive local R04 reproduction and verification evidence * docs(interactive): record local verification of PR 16 and 17 The report keeps the PR heads, commands, R04 failure output, the snapshot fix result, and the merge recommendation. Raw decisive logs are stored beside it. No product code changes. * docs(interactive): record that Actions for PR 16-19 are still queued The 13:15 +08 reconfirm keeps all four draft PRs unmerged. Run status is queued with an empty conclusion. That is not a matrix pass and not a proven Actions outage. * fix(interactive): snapshot start inputs before first await (R04) start() copied caller-owned State and startIntent only after loadInteractiveProgram resolved. That await yields even when the loader is already settled, so a caller could change both objects before the Checkpoint and startIntentHash were created. Copy both with the existing bounded canonical snapshot first, and preserve the initial-State capacity error. Later Store writes use those copies. Includes the R04 regression tests from PR #17. * test(interactive): require complete recorded ChatGPT responses in normal CI * docs(interactive): clarify recorded model-response evidence tier
* test(interactive): define executable S13 ChatGPT tool-bridge acceptance workflow * test(interactive): add auditable public Agent instruction for S13 bridge * test(interactive): 2-stage public Pending bridge for real ChatGPT tool-using response and Host resume * test(s13): bind actual ChatGPT model-generated response to published public Pending digest * test(s13): generate Host-only private canary inside CI, never commit even a synthetic secret * test(interactive): rebase M6 Host integration on current main Add current-main M6 scripted Host integration coverage, root-discovery fixtures, Linux cross-UID CI, and the full Interactive delivery roadmap. This is test/CI/documentation only and does not complete native-host C12/S13 or M6 final acceptance. * docs(interactive): add Trusted Host V2 conditional security design Add the reviewed Trusted Host V2 threat model, deployment profiles, security acceptance matrix, and explicit Phase 2 limitations. This is documentation-only: it does not implement Host isolation, Grok native provenance, Windows ACL enforcement, or Phase 3/4 runtime changes. F-02 and F-04 remain pending real validation; F-07 formal V0.3/V0.6-R5 conformance remains blocked. Merge does not authorize Phase 3 or claim C12/S13/M6 acceptance. * docs(interactive): recover frozen baselines and establish evidence audit plan Record independently validated Requirements V0.3 and Technical Design V0.6-R5 originals, limited Core PoC results and Phase 2 traceability roadmap. Reconcile the previously confirmed M1–M6 P0-A plan and existing M1–M5 implementation. Documentation only: no Core/API/Program ABI/Store schema changes, no Phase 3 authorization, no C12/S13 or full conformance PASS claim. * docs(interactive): archive Phase 2 formal conformance R1/R2 audit * docs(interactive): add source-backed T/R/S crosswalk and initial P0-A gap findings * docs(interactive): document Host/Public terminal State projection contract difference * docs(interactive): record async Store contract divergence from confirmed V0.6-R5 * docs(interactive): add Phase 2 R2 code-evidence review and R04 mutation findings * docs(interactive): link R04 independent regression PR and retrigger Phase 2 CI * docs(interactive): archive local R04 reproduction and verification evidence * docs(interactive): record local verification of PR 16 and 17 The report keeps the PR heads, commands, R04 failure output, the snapshot fix result, and the merge recommendation. Raw decisive logs are stored beside it. No product code changes. * docs(interactive): record that Actions for PR 16-19 are still queued The 13:15 +08 reconfirm keeps all four draft PRs unmerged. Run status is queued with an empty conclusion. That is not a matrix pass and not a proven Actions outage. * fix(interactive): snapshot start inputs before first await (R04) start() copied caller-owned State and startIntent only after loadInteractiveProgram resolved. That await yields even when the loader is already settled, so a caller could change both objects before the Checkpoint and startIntentHash were created. Copy both with the existing bounded canonical snapshot first, and preserve the initial-State capacity error. Later Store writes use those copies. Includes the R04 regression tests from PR #17. * test(interactive): require explicit preparation mode for ChatGPT response fixture * docs(interactive): label ChatGPT response experiment as M-level * test(interactive): preserve original workflow identity for recorded Pending fixture * docs(interactive): clarify ChatGPT response evidence tier and S13 limits * test(interactive): add C01-C24 complex acceptance evidence * test(interactive): freeze C01-C12 scenario matrix and scripted/live/native evidence separation * test(interactive): C01-C04,C10,C11 scripted complex runs with real Program signed Host and SQLite * test(interactive): C01/C03 live multi-Agent two-Condition workflow definition * test(interactive): real ChatGPT multi-Agent 5-turn replay bridge with schema rejection and SQLite reopen * test(c01-live): actual ChatGPT requirements analysis bound to published Pending #1 * test(c01-live): ChatGPT architecture response to real dependent Pending #2 * test(c01-live): actual ChatGPT implementation plan from real Pending #3 * test(c03-live): ChatGPT deliberately submits invalid reviewApproved type to test real retry Pending * test(c01-live): genuine ChatGPT corrected review after real attempt-2 Pending #5 * docs(interactive): record C01-C12 detailed scripted and five-turn real ChatGPT evidence with open native gates * test(interactive): extend complex P0-A acceptance with C13-C20 interleavings * docs(interactive): extend risk-mapped C13-C24 acceptance and native-host gates * test(interactive): inspect durable Store state while Pending frame intentionally redacts State * test(interactive): verify C16 durable Checkpoint while Pending frame hides private State * docs(interactive): record independently checked 7/7 CI and C13-C24 layered verdict * test(interactive): rebase M6 Host integration on current main Add current-main M6 scripted Host integration coverage, root-discovery fixtures, Linux cross-UID CI, and the full Interactive delivery roadmap. This is test/CI/documentation only and does not complete native-host C12/S13 or M6 final acceptance. * docs(interactive): add Trusted Host V2 conditional security design Add the reviewed Trusted Host V2 threat model, deployment profiles, security acceptance matrix, and explicit Phase 2 limitations. This is documentation-only: it does not implement Host isolation, Grok native provenance, Windows ACL enforcement, or Phase 3/4 runtime changes. F-02 and F-04 remain pending real validation; F-07 formal V0.3/V0.6-R5 conformance remains blocked. Merge does not authorize Phase 3 or claim C12/S13/M6 acceptance. * docs(interactive): recover frozen baselines and establish evidence audit plan Record independently validated Requirements V0.3 and Technical Design V0.6-R5 originals, limited Core PoC results and Phase 2 traceability roadmap. Reconcile the previously confirmed M1–M6 P0-A plan and existing M1–M5 implementation. Documentation only: no Core/API/Program ABI/Store schema changes, no Phase 3 authorization, no C12/S13 or full conformance PASS claim. * docs(interactive): archive Phase 2 formal conformance R1/R2 audit * docs(interactive): add source-backed T/R/S crosswalk and initial P0-A gap findings * docs(interactive): document Host/Public terminal State projection contract difference * docs(interactive): record async Store contract divergence from confirmed V0.6-R5 * docs(interactive): add Phase 2 R2 code-evidence review and R04 mutation findings * docs(interactive): link R04 independent regression PR and retrigger Phase 2 CI * docs(interactive): archive local R04 reproduction and verification evidence * docs(interactive): record local verification of PR 16 and 17 The report keeps the PR heads, commands, R04 failure output, the snapshot fix result, and the merge recommendation. Raw decisive logs are stored beside it. No product code changes. * docs(interactive): record that Actions for PR 16-19 are still queued The 13:15 +08 reconfirm keeps all four draft PRs unmerged. Run status is queued with an empty conclusion. That is not a matrix pass and not a proven Actions outage. * fix(interactive): snapshot start inputs before first await (R04) start() copied caller-owned State and startIntent only after loadInteractiveProgram resolved. That await yields even when the loader is already settled, so a caller could change both objects before the Checkpoint and startIntentHash were created. Copy both with the existing bounded canonical snapshot first, and preserve the initial-State capacity error. Later Store writes use those copies. Includes the R04 regression tests from PR #17. * test(interactive): require complete recorded ChatGPT responses in normal CI * docs(interactive): clarify recorded model-response evidence tier
…osswalk * docs(interactive): record current baseline and local CI fallback policy * docs(interactive): map approved P0-A tasks to current main evidence * docs(interactive): refresh roadmap and formal audit baseline to 606d055 * docs(interactive): refine retain semantics and review PR11/PR12 evidence * test(interactive): add C01-C24 complex acceptance evidence * test(interactive): freeze C01-C12 scenario matrix and scripted/live/native evidence separation * test(interactive): C01-C04,C10,C11 scripted complex runs with real Program signed Host and SQLite * test(interactive): C01/C03 live multi-Agent two-Condition workflow definition * test(interactive): real ChatGPT multi-Agent 5-turn replay bridge with schema rejection and SQLite reopen * test(c01-live): actual ChatGPT requirements analysis bound to published Pending #1 * test(c01-live): ChatGPT architecture response to real dependent Pending #2 * test(c01-live): actual ChatGPT implementation plan from real Pending #3 * test(c03-live): ChatGPT deliberately submits invalid reviewApproved type to test real retry Pending * test(c01-live): genuine ChatGPT corrected review after real attempt-2 Pending #5 * docs(interactive): record C01-C12 detailed scripted and five-turn real ChatGPT evidence with open native gates * test(interactive): extend complex P0-A acceptance with C13-C20 interleavings * docs(interactive): extend risk-mapped C13-C24 acceptance and native-host gates * test(interactive): inspect durable Store state while Pending frame intentionally redacts State * test(interactive): verify C16 durable Checkpoint while Pending frame hides private State * docs(interactive): record independently checked 7/7 CI and C13-C24 layered verdict * test(interactive): rebase M6 Host integration on current main Add current-main M6 scripted Host integration coverage, root-discovery fixtures, Linux cross-UID CI, and the full Interactive delivery roadmap. This is test/CI/documentation only and does not complete native-host C12/S13 or M6 final acceptance. * docs(interactive): add Trusted Host V2 conditional security design Add the reviewed Trusted Host V2 threat model, deployment profiles, security acceptance matrix, and explicit Phase 2 limitations. This is documentation-only: it does not implement Host isolation, Grok native provenance, Windows ACL enforcement, or Phase 3/4 runtime changes. F-02 and F-04 remain pending real validation; F-07 formal V0.3/V0.6-R5 conformance remains blocked. Merge does not authorize Phase 3 or claim C12/S13/M6 acceptance. * docs(interactive): recover frozen baselines and establish evidence audit plan Record independently validated Requirements V0.3 and Technical Design V0.6-R5 originals, limited Core PoC results and Phase 2 traceability roadmap. Reconcile the previously confirmed M1–M6 P0-A plan and existing M1–M5 implementation. Documentation only: no Core/API/Program ABI/Store schema changes, no Phase 3 authorization, no C12/S13 or full conformance PASS claim. * docs(interactive): archive Phase 2 formal conformance R1/R2 audit * docs(interactive): add source-backed T/R/S crosswalk and initial P0-A gap findings * docs(interactive): document Host/Public terminal State projection contract difference * docs(interactive): record async Store contract divergence from confirmed V0.6-R5 * docs(interactive): add Phase 2 R2 code-evidence review and R04 mutation findings * docs(interactive): link R04 independent regression PR and retrigger Phase 2 CI * docs(interactive): archive local R04 reproduction and verification evidence * docs(interactive): record local verification of PR 16 and 17 The report keeps the PR heads, commands, R04 failure output, the snapshot fix result, and the merge recommendation. Raw decisive logs are stored beside it. No product code changes. * docs(interactive): record that Actions for PR 16-19 are still queued The 13:15 +08 reconfirm keeps all four draft PRs unmerged. Run status is queued with an empty conclusion. That is not a matrix pass and not a proven Actions outage. * fix(interactive): snapshot start inputs before first await (R04) start() copied caller-owned State and startIntent only after loadInteractiveProgram resolved. That await yields even when the loader is already settled, so a caller could change both objects before the Checkpoint and startIntentHash were created. Copy both with the existing bounded canonical snapshot first, and preserve the initial-State capacity error. Later Store writes use those copies. Includes the R04 regression tests from PR #17. * test(interactive): require complete recorded ChatGPT responses in normal CI * docs(interactive): clarify recorded model-response evidence tier * test(interactive): add ChatGPT Pending response evidence * test(interactive): define executable S13 ChatGPT tool-bridge acceptance workflow * test(interactive): add auditable public Agent instruction for S13 bridge * test(interactive): 2-stage public Pending bridge for real ChatGPT tool-using response and Host resume * test(s13): bind actual ChatGPT model-generated response to published public Pending digest * test(s13): generate Host-only private canary inside CI, never commit even a synthetic secret * test(interactive): rebase M6 Host integration on current main Add current-main M6 scripted Host integration coverage, root-discovery fixtures, Linux cross-UID CI, and the full Interactive delivery roadmap. This is test/CI/documentation only and does not complete native-host C12/S13 or M6 final acceptance. * docs(interactive): add Trusted Host V2 conditional security design Add the reviewed Trusted Host V2 threat model, deployment profiles, security acceptance matrix, and explicit Phase 2 limitations. This is documentation-only: it does not implement Host isolation, Grok native provenance, Windows ACL enforcement, or Phase 3/4 runtime changes. F-02 and F-04 remain pending real validation; F-07 formal V0.3/V0.6-R5 conformance remains blocked. Merge does not authorize Phase 3 or claim C12/S13/M6 acceptance. * docs(interactive): recover frozen baselines and establish evidence audit plan Record independently validated Requirements V0.3 and Technical Design V0.6-R5 originals, limited Core PoC results and Phase 2 traceability roadmap. Reconcile the previously confirmed M1–M6 P0-A plan and existing M1–M5 implementation. Documentation only: no Core/API/Program ABI/Store schema changes, no Phase 3 authorization, no C12/S13 or full conformance PASS claim. * docs(interactive): archive Phase 2 formal conformance R1/R2 audit * docs(interactive): add source-backed T/R/S crosswalk and initial P0-A gap findings * docs(interactive): document Host/Public terminal State projection contract difference * docs(interactive): record async Store contract divergence from confirmed V0.6-R5 * docs(interactive): add Phase 2 R2 code-evidence review and R04 mutation findings * docs(interactive): link R04 independent regression PR and retrigger Phase 2 CI * docs(interactive): archive local R04 reproduction and verification evidence * docs(interactive): record local verification of PR 16 and 17 The report keeps the PR heads, commands, R04 failure output, the snapshot fix result, and the merge recommendation. Raw decisive logs are stored beside it. No product code changes. * docs(interactive): record that Actions for PR 16-19 are still queued The 13:15 +08 reconfirm keeps all four draft PRs unmerged. Run status is queued with an empty conclusion. That is not a matrix pass and not a proven Actions outage. * fix(interactive): snapshot start inputs before first await (R04) start() copied caller-owned State and startIntent only after loadInteractiveProgram resolved. That await yields even when the loader is already settled, so a caller could change both objects before the Checkpoint and startIntentHash were created. Copy both with the existing bounded canonical snapshot first, and preserve the initial-State capacity error. Later Store writes use those copies. Includes the R04 regression tests from PR #17. * test(interactive): require explicit preparation mode for ChatGPT response fixture * docs(interactive): label ChatGPT response experiment as M-level * test(interactive): preserve original workflow identity for recorded Pending fixture * docs(interactive): clarify ChatGPT response evidence tier and S13 limits * test(interactive): add C01-C24 complex acceptance evidence * test(interactive): freeze C01-C12 scenario matrix and scripted/live/native evidence separation * test(interactive): C01-C04,C10,C11 scripted complex runs with real Program signed Host and SQLite * test(interactive): C01/C03 live multi-Agent two-Condition workflow definition * test(interactive): real ChatGPT multi-Agent 5-turn replay bridge with schema rejection and SQLite reopen * test(c01-live): actual ChatGPT requirements analysis bound to published Pending #1 * test(c01-live): ChatGPT architecture response to real dependent Pending #2 * test(c01-live): actual ChatGPT implementation plan from real Pending #3 * test(c03-live): ChatGPT deliberately submits invalid reviewApproved type to test real retry Pending * test(c01-live): genuine ChatGPT corrected review after real attempt-2 Pending #5 * docs(interactive): record C01-C12 detailed scripted and five-turn real ChatGPT evidence with open native gates * test(interactive): extend complex P0-A acceptance with C13-C20 interleavings * docs(interactive): extend risk-mapped C13-C24 acceptance and native-host gates * test(interactive): inspect durable Store state while Pending frame intentionally redacts State * test(interactive): verify C16 durable Checkpoint while Pending frame hides private State * docs(interactive): record independently checked 7/7 CI and C13-C24 layered verdict * test(interactive): rebase M6 Host integration on current main Add current-main M6 scripted Host integration coverage, root-discovery fixtures, Linux cross-UID CI, and the full Interactive delivery roadmap. This is test/CI/documentation only and does not complete native-host C12/S13 or M6 final acceptance. * docs(interactive): add Trusted Host V2 conditional security design Add the reviewed Trusted Host V2 threat model, deployment profiles, security acceptance matrix, and explicit Phase 2 limitations. This is documentation-only: it does not implement Host isolation, Grok native provenance, Windows ACL enforcement, or Phase 3/4 runtime changes. F-02 and F-04 remain pending real validation; F-07 formal V0.3/V0.6-R5 conformance remains blocked. Merge does not authorize Phase 3 or claim C12/S13/M6 acceptance. * docs(interactive): recover frozen baselines and establish evidence audit plan Record independently validated Requirements V0.3 and Technical Design V0.6-R5 originals, limited Core PoC results and Phase 2 traceability roadmap. Reconcile the previously confirmed M1–M6 P0-A plan and existing M1–M5 implementation. Documentation only: no Core/API/Program ABI/Store schema changes, no Phase 3 authorization, no C12/S13 or full conformance PASS claim. * docs(interactive): archive Phase 2 formal conformance R1/R2 audit * docs(interactive): add source-backed T/R/S crosswalk and initial P0-A gap findings * docs(interactive): document Host/Public terminal State projection contract difference * docs(interactive): record async Store contract divergence from confirmed V0.6-R5 * docs(interactive): add Phase 2 R2 code-evidence review and R04 mutation findings * docs(interactive): link R04 independent regression PR and retrigger Phase 2 CI * docs(interactive): archive local R04 reproduction and verification evidence * docs(interactive): record local verification of PR 16 and 17 The report keeps the PR heads, commands, R04 failure output, the snapshot fix result, and the merge recommendation. Raw decisive logs are stored beside it. No product code changes. * docs(interactive): record that Actions for PR 16-19 are still queued The 13:15 +08 reconfirm keeps all four draft PRs unmerged. Run status is queued with an empty conclusion. That is not a matrix pass and not a proven Actions outage. * fix(interactive): snapshot start inputs before first await (R04) start() copied caller-owned State and startIntent only after loadInteractiveProgram resolved. That await yields even when the loader is already settled, so a caller could change both objects before the Checkpoint and startIntentHash were created. Copy both with the existing bounded canonical snapshot first, and preserve the initial-State capacity error. Later Store writes use those copies. Includes the R04 regression tests from PR #17. * test(interactive): require complete recorded ChatGPT responses in normal CI * docs(interactive): clarify recorded model-response evidence tier


M2 of confirmed P0-A plan. Adds a deterministic JS emitter for M1's real-analyzer IR, an immutable-byte SHA-256 Program identity, a zero-import ESM loader with AST rejection of static/dynamic imports and Function.toString byte-consistency validation, and an internal compileInteractive memory/file compiler. No Store, Coordinator, Public SDK subpath or side-effecting Host operations introduced. Existing Standard run and public exports unchanged. New ESM, Condition/Terminal, Agent-phase, source identity and loader-adversarial tests. Review and CI required before squash merge; do not start M3 until M2 gate passes.
Note
Medium Risk
New compiler output and a loader that executes verified JS via dynamic import; security depends on hash/AST checks and IR validation, but this expands the trusted execution surface for interactive workflows.
Overview
Introduces M2 of the interactive P0-A pipeline: workflows can be compiled into deterministic, import-free ESM with a SHA-256 artifact identity and loaded only from verified bytes.
emitInteractiveturns validated interactive IR into a frozen standalone module exportinginteractiveProgram,programTable, and a synchronousadvancestate machine (conditions via inlinedevaluateWhenAst, agent frame/retry/commit flow, terminal routing).compileInteractivewires analyze → lower → emit for.workflow.js/.ts, supporting memory or atomic file output (*.interactive.mjs) without executing the DSL source.loadInteractiveProgramenforces digest match, size limits, zero static/dynamic imports, export shape,advancebody byte-consistency, and re-validates the embedded program table against the interactive IR rules.identityhelpers standardize SHA-256 handling. Packaging andemitter.test.mjscover determinism, routing semantics, agent transitions, loader hardening, and the compile API.Reviewed by Cursor Bugbot for commit 7578cc7. Bugbot is set up for automated code reviews on this repo. Configure here.