Skip to content

fix(e2e): Playwright fundamental — vite alias + ums sub-build (closes #113)#114

Merged
hyperpolymath merged 4 commits into
mainfrom
fix/playwright-fundamental-vite-and-ums-build
Jun 1, 2026
Merged

fix(e2e): Playwright fundamental — vite alias + ums sub-build (closes #113)#114
hyperpolymath merged 4 commits into
mainfrom
fix/playwright-fundamental-vite-and-ums-build

Conversation

@hyperpolymath
Copy link
Copy Markdown
Owner

@hyperpolymath hyperpolymath commented Jun 1, 2026

Summary

Closes the fundamental Playwright infrastructure fix recipe filed in idaptik#113. The CI workflow has been red on main since 2026-05-02; this PR moves it from "never runs" to "runs end-to-end". The remaining test failures are a separate game-rendering issue tracked at #118.

Scope: Infrastructure-only

This PR's commits resolve four distinct infrastructure layers that compounded into "Playwright never runs":

Layer Surface Fix
1 vite.config.js optimizeDeps.include Drop broken @src/... bare specifiers (no matching alias was configured)
2 vite.config.js optimizeDeps.entries Scope discovery to root index.html so vite doesn't crawl idaptik-ums/index.html (Tauri webview entry, broken per #116)
3 tools/compat-testing/playwright.config.js baseURL + webServer.port Align to vite's 1984 (was 8080, vite is strictPort so it never bound)
4 tools/compat-testing/playwright.config.js testDir ./tests (was ./tools/compat-testing/tests — doubled when working-directory: tools/compat-testing)

Plus three secondary fixes:

  • e2e-playwright.yml push + pull_request path filters made symmetric and extended to cover vite.config.js + idaptik-ums/** so the workflow can self-validate when those files are modified in a PR
  • Root deno task res:build step in the workflow no longer soft-fails (|| echo "..." removed — masked real ReScript build breaks)
  • All commits GPG-signed + DCO Signed-off-by

Verification

Before this PR (on main): every Playwright run since 2026-05-02 failed with Error: Timed out waiting 60000ms from config.webServer — vite couldn't boot due to the @src/ unresolved-import error, then the port mismatch hid behind the same timeout.

After this PR: vite boots cleanly, Playwright connects to http://localhost:1984, tests execute and either pass, skip, or fail with actionable errors (no more 60s opaque timeout).

Known: tests still fail (filed as #118)

17 of 19 tests fail with TimeoutError: waiting for locator('#pixi-container canvas') — PixiJS doesn't mount its canvas in the CI environment. This is a separate game-rendering issue, not infrastructure. Filed as #118 with full investigation recipe.

Playwright is NOT in idaptik's required-on-main checks list (verified via gh api repos/hyperpolymath/idaptik/branches/main/protection), so its red doesn't block PR merges. The workflow's job is now to produce signal — which it finally does, via the actionable canvas-mount failures pointing at #118.

Why surface this as a follow-up rather than chase it here

Per the issue #113 acceptance criteria, the PR's goal is "make Playwright run". The game-rendering layer (PixiJS bootstrap, AffineScript-TEA migration interaction, wasm router init) is orthogonal to Playwright infrastructure — debugging it could be days of work touching code outside this PR's scope. Landing the infrastructure fix unblocks the next session's investigation of #118 against a working harness.

Closes

closes #113

Follow-ups filed

Test plan

  • Vite dev-server boots cleanly with the new config locally (deno task dev:vite)
  • Playwright workflow flips from "never runs (60s timeout)" → "runs and reports actionable failures"
  • All 16 required-on-main status checks pass
  • DCO sign-off on every commit; all commits GPG-signed
  • Re-run bug(e2e): Playwright runs but PixiJS canvas never attaches to #pixi-container in CI #118 investigation to make Playwright actually green (out of scope for this PR)

🤖 Generated with Claude Code

… idaptik#113)

Lands the two-layer fundamental fix described in idaptik#113. With PR
#112 having unblocked the outer layers (typo SHA on
denoland/setup-deno@v2, missing @playwright/test dep), the dev-server
boot inside Playwright's `webServer` then exposed two deeper, pre-existing
problems. This PR closes both.

## Layer 1 — vite.config.js `@src/` optimizeDeps.include

`optimizeDeps.include` carried two entries with a bare `@src/...`
specifier:

  include: ['@src/app/tea/AffineTEA.js', '@src/app/tea/AffineTEARouter.js']

…but the configured aliases are only `affinescript` and `@tea` — there
is no `@src` alias. Vite reported on every dev-server boot:

  [WebServer] Failed to resolve dependency: @src/app/tea/AffineTEA.js,
              present in client 'optimizeDeps.include'
  [WebServer] Failed to resolve dependency: @src/app/tea/AffineTEARouter.js,
              present in client 'optimizeDeps.include'

…and that warning blocked the dev server from settling within
Playwright's 60s webServer timeout (the warning isn't fatal but slows
the boot enough that Playwright times out).

Fix: empty the `include` array. Vite pre-bundles relative-path .js
imports automatically as it walks the module graph from the entry HTML;
the explicit include was redundant from day one and the wrong specifier
shape made it actively harmful. Comment in the config explains the
history so future contributors don't re-add a bare-specifier entry.

## Layer 2 — Build idaptik-ums sub-project in CI

`idaptik-ums/index.html` imports `src/App.res.mjs` (relative to the HTML)
i.e. `idaptik-ums/src/App.res.mjs`. The source file `idaptik-ums/src/App.res`
exists but its `.res.mjs` sibling is only created by compiling against
`idaptik-ums/rescript.json`, which the existing workflow's
`deno task res:build` step never touched (that task compiles the root
`rescript.json` only).

When the vite dev-server scanned `idaptik-ums/index.html` it reported:

  [WebServer] src/App.res.mjs (imported by .../idaptik-ums/index.html)
  [WebServer] Are they installed?
  Error: Timed out waiting 60000ms from config.webServer.

Fix: add a second build step after the root res:build that runs
`npx rescript build` inside `idaptik-ums/`. Mirrors the soft-fail
pattern of the existing step (`|| echo "ums attempt"`) — the workflow
keeps running even if the ums build itself fails, so the existing
Playwright-vs-megaport separation is preserved.

## Verification

Local: `timeout 15 deno task dev:vite` boots cleanly with the new vite
config, no unresolved-dep warnings (PR #112's deno.json @playwright/test
import also confirmed downloaded on first run).

## Closes

closes #113

Signed-off-by: hyperpolymath <6759885+hyperpolymath@users.noreply.github.com>
@hyperpolymath hyperpolymath enabled auto-merge (squash) June 1, 2026 13:27
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 1, 2026

🔍 Hypatia Security Scan

Findings: 72 issues detected

Severity Count
🔴 Critical 11
🟠 High 19
🟡 Medium 42

⚠️ Action Required: Critical security issues found!

View findings
[
  {
    "reason": "Issue in boj-build.yml",
    "type": "missing_timeout_minutes",
    "file": "boj-build.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in build-validation.yml",
    "type": "missing_timeout_minutes",
    "file": "build-validation.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in cflite-pr.yml",
    "type": "missing_timeout_minutes",
    "file": "cflite-pr.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in codeql.yml",
    "type": "missing_timeout_minutes",
    "file": "codeql.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in containers.yml",
    "type": "missing_timeout_minutes",
    "file": "containers.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in containers.yml",
    "type": "missing_timeout_minutes",
    "file": "containers.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dco.yml",
    "type": "missing_timeout_minutes",
    "file": "dco.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

2 similar comments
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 1, 2026

🔍 Hypatia Security Scan

Findings: 72 issues detected

Severity Count
🔴 Critical 11
🟠 High 19
🟡 Medium 42

⚠️ Action Required: Critical security issues found!

View findings
[
  {
    "reason": "Issue in boj-build.yml",
    "type": "missing_timeout_minutes",
    "file": "boj-build.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in build-validation.yml",
    "type": "missing_timeout_minutes",
    "file": "build-validation.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in cflite-pr.yml",
    "type": "missing_timeout_minutes",
    "file": "cflite-pr.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in codeql.yml",
    "type": "missing_timeout_minutes",
    "file": "codeql.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in containers.yml",
    "type": "missing_timeout_minutes",
    "file": "containers.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in containers.yml",
    "type": "missing_timeout_minutes",
    "file": "containers.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dco.yml",
    "type": "missing_timeout_minutes",
    "file": "dco.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 1, 2026

🔍 Hypatia Security Scan

Findings: 72 issues detected

Severity Count
🔴 Critical 11
🟠 High 19
🟡 Medium 42

⚠️ Action Required: Critical security issues found!

View findings
[
  {
    "reason": "Issue in boj-build.yml",
    "type": "missing_timeout_minutes",
    "file": "boj-build.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in build-validation.yml",
    "type": "missing_timeout_minutes",
    "file": "build-validation.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in cflite-pr.yml",
    "type": "missing_timeout_minutes",
    "file": "cflite-pr.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in codeql.yml",
    "type": "missing_timeout_minutes",
    "file": "codeql.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in containers.yml",
    "type": "missing_timeout_minutes",
    "file": "containers.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in containers.yml",
    "type": "missing_timeout_minutes",
    "file": "containers.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dco.yml",
    "type": "missing_timeout_minutes",
    "file": "dco.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

Layer 3 of the Playwright fundamental fix. The previous Layer 2
(building idaptik-ums/src/App.res.mjs via a sub-rescript step) ran
into a deeper pre-existing bug: idaptik-ums/src/editor/EditorEngine.res
contains JS/TS-shaped syntax (typeof checks, ES-style `import * as`)
rather than ReScript syntax, so `rescript build` on the sub-project
hard-fails at compile. The previous step soft-failed with `|| echo`,
which silently swallowed the error and left App.res.mjs unbuilt —
which then surfaced as a vite unresolved-import inside Playwright's
60s webServer boot wait.

Pivot: idaptik-ums/index.html is a Tauri webview entry, NOT the
Playwright SPA entry (Playwright hits '/' which serves the ROOT
index.html). Vite's default optimizeDeps scan crawls every .html in
the project, which is why it pulled idaptik-ums/index.html in even
though the SPA never references it. Scoping `optimizeDeps.entries`
to `['index.html']` aligns the scan with the actual SPA boundary.

This also drops the broken sub-rescript step (the build wasn't useful
for Playwright in the first place — the broken EditorEngine.res bug
remains as a separate concern for the idaptik-ums Tauri shell, which
should be filed as its own issue).

Also adds vite.config.js + idaptik-ums/** to both push and
pull_request path filters so the workflow can self-validate when
either is modified in a PR.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: hyperpolymath <6759885+hyperpolymath@users.noreply.github.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 1, 2026

🔍 Hypatia Security Scan

Findings: 72 issues detected

Severity Count
🔴 Critical 11
🟠 High 19
🟡 Medium 42

⚠️ Action Required: Critical security issues found!

View findings
[
  {
    "reason": "Issue in boj-build.yml",
    "type": "missing_timeout_minutes",
    "file": "boj-build.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in build-validation.yml",
    "type": "missing_timeout_minutes",
    "file": "build-validation.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in cflite-pr.yml",
    "type": "missing_timeout_minutes",
    "file": "cflite-pr.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in codeql.yml",
    "type": "missing_timeout_minutes",
    "file": "codeql.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in containers.yml",
    "type": "missing_timeout_minutes",
    "file": "containers.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in containers.yml",
    "type": "missing_timeout_minutes",
    "file": "containers.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dco.yml",
    "type": "missing_timeout_minutes",
    "file": "dco.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

After the optimizeDeps.entries pivot let vite boot cleanly, the
'webServer timed out at 60000ms' kept firing on all three matrices
even though no error message appeared. Root cause: vite is configured
in vite.config.js with port 1984 + strictPort, but tools/compat-testing/
playwright.config.js polled baseURL http://localhost:8080 / webServer.port
8080. Vite started fine, just on the wrong port — Playwright kept polling
8080 until the deadline.

Aligning both Playwright endpoints to 1984.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: hyperpolymath <6759885+hyperpolymath@users.noreply.github.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 1, 2026

🔍 Hypatia Security Scan

Findings: 72 issues detected

Severity Count
🔴 Critical 11
🟠 High 19
🟡 Medium 42

⚠️ Action Required: Critical security issues found!

View findings
[
  {
    "reason": "Issue in boj-build.yml",
    "type": "missing_timeout_minutes",
    "file": "boj-build.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in build-validation.yml",
    "type": "missing_timeout_minutes",
    "file": "build-validation.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in cflite-pr.yml",
    "type": "missing_timeout_minutes",
    "file": "cflite-pr.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in codeql.yml",
    "type": "missing_timeout_minutes",
    "file": "codeql.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in containers.yml",
    "type": "missing_timeout_minutes",
    "file": "containers.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in containers.yml",
    "type": "missing_timeout_minutes",
    "file": "containers.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dco.yml",
    "type": "missing_timeout_minutes",
    "file": "dco.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

The workflow's 'Run Playwright tests' step sets working-directory to
tools/compat-testing/, then runs 'npx playwright test'. Playwright
loads playwright.config.js from that CWD, then resolves testDir
relative to the config file location.

testDir was './tools/compat-testing/tests', which resolved to
'tools/compat-testing/tools/compat-testing/tests' — a path that
doesn't exist. Result: "Error: No tests found" on every matrix.

Fixing to './tests' so Playwright discovers
tools/compat-testing/tests/{game-loads,accessibility,performance}.spec.js.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: hyperpolymath <6759885+hyperpolymath@users.noreply.github.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 1, 2026

🔍 Hypatia Security Scan

Findings: 72 issues detected

Severity Count
🔴 Critical 11
🟠 High 19
🟡 Medium 42

⚠️ Action Required: Critical security issues found!

View findings
[
  {
    "reason": "Issue in boj-build.yml",
    "type": "missing_timeout_minutes",
    "file": "boj-build.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in build-validation.yml",
    "type": "missing_timeout_minutes",
    "file": "build-validation.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in cflite-pr.yml",
    "type": "missing_timeout_minutes",
    "file": "cflite-pr.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in codeql.yml",
    "type": "missing_timeout_minutes",
    "file": "codeql.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in containers.yml",
    "type": "missing_timeout_minutes",
    "file": "containers.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in containers.yml",
    "type": "missing_timeout_minutes",
    "file": "containers.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dco.yml",
    "type": "missing_timeout_minutes",
    "file": "dco.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in dogfood-gate.yml",
    "type": "missing_timeout_minutes",
    "file": "dogfood-gate.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

hyperpolymath added a commit that referenced this pull request Jun 1, 2026
…tion, changelog (#117)

## Summary

A multi-subagent audit of idaptik's human-readable and machine-readable
documentation against the actual repo state on 2026-06-01 surfaced
several stale counts, broken paths, and missing classifications. This PR
brings the canonical docs back in sync.

## Human-readable corrections

| File | What was wrong | Now |
|---|---|---|
| `README.adoc` | "Idris2 (15 modules)" + "Zig (12 exports)" | "17 in
`idaptik-ums/src/abi/` + 1 in `src/abi/Types.idr`" + "11 source files,
12 C-ABI exports" |
| `EXPLAINME.adoc` | Same counts; root `src/abi/Types.idr` undocumented
in the file map | Same corrections + file-map entry for the root
main-game ABI module |
| `PROOF-NEEDS.md` | Path `src/abi/*.idr` was right for one file, missed
the 17 UMS modules entirely; no layer classification | Full L1/L2/L3/L4
classification + echo-types verdict recorded |
| `PANIC-ATTACK-ANALYSIS-SUMMARY.md` | Looked authoritative but dated
2026-03-20, well before the 2026-05-26 panic-attack re-scan + the PR
#115 cleanup | Marked as historical baseline pending re-run after PR
#115 lands |

## Machine-readable corrections

`0-AI-MANIFEST.a2ml`:

| Key | Was | Now | Reason |
|---|---|---|---|
| `dev-port` | `8080` | `1984` | Matches `vite.config.js` `server.port:
1984, strictPort: true`. Playwright config also corrected in PR #114 to
align with this. |
| `escape-hatch` (canonical-location) | `escape-hatch/` |
`idaptik-developers/src/escape-hatch/` | The top-level path was a
phantom — escape-hatch only lives under `idaptik-developers/src/`.
Confirmed via repo tree walk. |
| `modding-studio` | `Tauri 2 (idaptik-ums)` | `Gossamer (idaptik-ums) —
Ephapax-based webview shell; replaced Tauri` | Matches
`.machine_readable/6a2/STATE.a2ml` line 13 which already recorded the
Tauri → Gossamer pivot. |
| Tier-0 ref to `.claude/CLAUDE.md` | Listed in `[context-tiers]` |
Removed | File does not exist in the repo (404 from gh api). |

## Provenance

`CHANGELOG.md` had no entry for any 2026-04, 2026-05, or 2026-06 work —
last entry was 2026-03-14. Backfilled the 2026-06-01 block covering PR
#112 (baseline sweep), PR #114 (Playwright fundamental fix), PR #115
(Track C security cleanup), issue #116 (idaptik-ums .res corruption),
and the echo-types audit. Future sessions inherit this as the seam.

## Echo-types audit

Per the 2026-06-01 owner directive "every proof in ephapax (and any
sibling repo with an echo-types link) must first audit
`hyperpolymath/echo-types`, reuse if applicable… L1/L4-only obligations
audit-and-record-as-not-relevant":

- 17 Idris2 modules in `idaptik-ums/src/abi/` + 1 root
`src/abi/Types.idr` + ProvenBridge.idr's dependency on `proven` — all
classified
- 17 modules L1 (region-local validation, entity placement, IP-reference
integrity, level-data invariants); 1 module L4 (`Multiplayer.idr` —
asymmetric co-op via enums + records, no temporal echo claims); zero L3
- Zero hits for "echo"/"Echo" in idaptik codebase; zero echo-types links
in the `proven` dependency surface idaptik uses
- **Verdict: RECORD-AS-NOT-RELEVANT** — recorded in PROOF-NEEDS.md so
future sessions don't re-derive the audit

## Subagent reports backing this PR

- `a22e2f5` — docs truthfulness audit (14 files surveyed)
- `aa58c61` — idaptik-ums `.res` corruption sweep (10/11 corrupt; filed
as #116)
- `af5fac9` — cross-estate idaptik reference audit (3 stale refs
identified)
- `a0b4a4e` — echo-types layer classification (per-module verdict above)

## No risk to LIVE

This PR only touches documentation files. No code, no CI workflow, no
`rescript.json`/`deno.json`/`vite.config.js`. Builds and tests are not
affected.

## Test plan

- [x] All 6 files committed are GPG-signed + DCO-signed-off
- [x] `git diff` confirms only doc files modified
- [ ] No required-check regression (all 16 required-on-main checks
should pass — only doc changes)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Signed-off-by: hyperpolymath <6759885+hyperpolymath@users.noreply.github.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@hyperpolymath hyperpolymath merged commit 3939f53 into main Jun 1, 2026
29 of 32 checks passed
@hyperpolymath hyperpolymath deleted the fix/playwright-fundamental-vite-and-ums-build branch June 1, 2026 17:53
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.

Playwright E2E: vite alias + idaptik-ums sub-build fundamental fix

1 participant