Repository navigation
12 Virgin.root scripts genuinely broken in DB (fail to compile in place); webBrowser.openURL + cleanRoot block #855 #879
Copy link
Copy link
Open
Labels
priority/p1High priority - address soonHigh priority - address soonscope/medium1-2 weeks, requires design work1-2 weeks, requires design worktype/bugDefect in existing functionality, needs fixDefect in existing functionality, needs fixworkstream/runtime-coreRuntime architecture, memory, lifecycle, and global contextRuntime architecture, memory, lifecycle, and global context
Description
Rationale
12 scripts in Virgin.root are GENUINELY BROKEN in the stored DB (fail to compile in place, independent of any install; reinstall does NOT repair them). These block Phase 3.4 startup stabilization (#855 blocker especially webBrowser.openURL and userland.cleanRoot). Source-level repair from .ut mirrors or legacy Frontier 9.5 package is required. This repair-sweep unblocks #855.
Current State
Confirmed genuinely broken scripts (verified in place, 2026-08-10):
- webBrowser.openURL (=webBrowser.openUrl fails to compile headless; blocks first-run finishInstall flow #865, direct Virgin.root ships firstRootRun=false, breaking firstRootRun contract; 9 integration tests depend on skipped init #855 blocker — first-run setup)
- userland.cleanRoot (critical — virgin-root rebuild contract holder)
- quickTime.* (multiple QuickTime-related scripts)
- string.nthChar
- string.isValidUrl
- Filemaker example (less critical)
- webserver "syntaxError" sample (intentional — exclude from repair)
Characteristics:
- Fail to compile in place (independent of install)
- Reinstall does NOT repair them (corruption is in-database, not install-time)
- NOT round-trip-fidelity issues (cosmetic drift) — genuine compilation failures
- Distinct from langscan comment-strip scanner ignored single-quoted char constants: 0xC7 inside 'x' literals corrupts scripts cumulatively on install (was misattributed to newScriptObject size/reinstall) #866's install-time destruction (these are pre-existing DB corruption)
Impact:
- webBrowser.openURL blocks first-run finishInstall (Virgin.root ships firstRootRun=false, breaking firstRootRun contract; 9 integration tests depend on skipped init #855, webBrowser.openUrl fails to compile headless; blocks first-run finishInstall flow #865)
- userland.cleanRoot blocks virgin-root rebuild (core contract holder)
- Other broken scripts affect WebDAV, Filemaker integration, URL handling
Desired Outcome
Repair 12 broken scripts from authoritative sources:
- Source-level repair from .ut mirrors (if intact)
- OR restore from legacy Frontier 9.5 package (baseline lead in mainResponder.root mirror diverged from shipped binary (62 code lines); authoritative source unclear — decision needed #868)
- Verify: all 12 compile in place after repair
- Unblock Virgin.root ships firstRootRun=false, breaking firstRootRun contract; 9 integration tests depend on skipped init #855 (first-run flow)
Recommendation
Step 1: Determine source for each script
- Check usertalk_scripts/ for intact .ut mirrors (copy back to ODB)
- If mirror is corrupted, consult legacy Frontier 9.5 baseline (see mainResponder.root mirror diverged from shipped binary (62 code lines); authoritative source unclear — decision needed #868)
Step 2: Repair via protocol
- Use protocol-edit discipline (script.newScriptObject)
- Install repaired source
- Verify: script compiles in place after install
Step 3: Priority order
- Critical: webBrowser.openURL (unblock Virgin.root ships firstRootRun=false, breaking firstRootRun contract; 9 integration tests depend on skipped init #855), userland.cleanRoot (core contract)
- High: string.nthChar, string.isValidUrl (utilities)
- Medium: quickTime.*, Filemaker example
- Skip: webserver syntaxError sample (intentionally broken for examples)
Exit Criteria
- webBrowser.openURL compiles and is callable (unblock Virgin.root ships firstRootRun=false, breaking firstRootRun contract; 9 integration tests depend on skipped init #855/webBrowser.openUrl fails to compile headless; blocks first-run finishInstall flow #865)
- userland.cleanRoot compiles and executes (rebuild contract)
- string.nthChar, string.isValidUrl compile and work
- quickTime.* scripts repaired or documented as deprecated
- Filemaker example repaired or marked as legacy
- All 12 scripts verified: no compilation errors, no reinstall regressions
- Virgin.root ships firstRootRun=false, breaking firstRootRun contract; 9 integration tests depend on skipped init #855 can proceed (first-run flow unblocked)
Related Context
- Found by: langscan comment-strip scanner ignored single-quoted char constants: 0xC7 inside 'x' literals corrupts scripts cumulatively on install (was misattributed to newScriptObject size/reinstall) #866 investigation, 2026-08-10
- Related issues: webBrowser.openUrl fails to compile headless; blocks first-run finishInstall flow #865 (webBrowser.openURL blocking first-run), Virgin.root ships firstRootRun=false, breaking firstRootRun contract; 9 integration tests depend on skipped init #855 (first-run flow), langscan comment-strip scanner ignored single-quoted char constants: 0xC7 inside 'x' literals corrupts scripts cumulatively on install (was misattributed to newScriptObject size/reinstall) #866 (script corruption investigation), mainResponder.root mirror diverged from shipped binary (62 code lines); authoritative source unclear — decision needed #868 (legacy baseline source)
- Code: Virgin.root scripts (12 broken), usertalk_scripts/ mirrors, legacy Frontier 9.5 package
- Source recovery: mainResponder.root mirror diverged from shipped binary (62 code lines); authoritative source unclear — decision needed #868's baseline-lead investigation for legacy Frontier 9.5
- Impact: Blocks Virgin.root ships firstRootRun=false, breaking firstRootRun contract; 9 integration tests depend on skipped init #855 first-run stabilization work
- Severity: P1 (blocks shipping first-run flow)
Distinct from Other Issues
- NOT langscan comment-strip scanner ignored single-quoted char constants: 0xC7 inside 'x' literals corrupts scripts cumulatively on install (was misattributed to newScriptObject size/reinstall) #866 (install-time destruction) — these are pre-existing DB corruption
- NOT verify_virgin_root_sync.sh covers only Virgin.root, not guest-DB mirrors; silent drift accumulates #869 (cosmetic drift) — these are genuine compilation failures
- NOT db.compactDatabase() SIGABRTs headless and corrupts source database in place on failure #854 (byte-level remanence) — though db.compactDatabase() SIGABRTs headless and corrupts source database in place on failure #854's compaction might help recovery
Metadata
Metadata
Assignees
Labels
priority/p1High priority - address soonHigh priority - address soonscope/medium1-2 weeks, requires design work1-2 weeks, requires design worktype/bugDefect in existing functionality, needs fixDefect in existing functionality, needs fixworkstream/runtime-coreRuntime architecture, memory, lifecycle, and global contextRuntime architecture, memory, lifecycle, and global context
Activity
jsavin commentedon Aug 11, 2026
Maintainer attestation (2026-08-11, first-person): UserLand never shipped a verb that does not compile. Working hypothesis therefore REFRAMED: these 12 scripts were corrupted by MODERNIZATION-ERA passes, not shipped broken. Prime suspects: (a) the pre-#621 install bug (our langstripstructuremarkers defect doubled braces on every install until #621/#622); (b) the v6->v7 migration if it mishandled MacRoman high-bit bytes anywhere (same encoding class as #880); (c) UT-sync imports / protocol edit sessions during modernization. A provenance investigation is running: for each script, binary-search the committed history of databases/Virgin.root for the first non-compiling version, hex-diff the stored source across the boundary, and classify the damage signature per pass. Output feeds the repair unit (repair-from-mirror vs repair-from-legacy-9.5-package per script) AND determines whether any corrupting pass is still live. If any script proves broken in the EARLIEST committed Virgin.root, that will be flagged explicitly.
jsavin commentedon Aug 11, 2026
MAJOR CORRECTION — 12 Broken Scripts Decompose Completely
Full provenance investigation complete (findings archived). The "12 broken scripts" are NOT monolithic:
(a) 3 CORRUPTED BY MODERNIZATION PASSES (maintainer's attestation vindicated):
(b) 6 NOT BROKEN (=#882, correcting misclassification):
(c) 3 PRE-EXISTING UserLand-era (pristine v6 ancestor from 2025-08-09, unchanged by migration):
CRITICAL CORRECTION TO PRIOR TEXT:
"reinstall does NOT repair them" is FALSE for openUrl/isValidUrl
Both corrupting mechanisms are FIXED at today's HEAD (13103f0 and LF handling corrected)
REPAIR GUIDANCE:
Related: #881 (LF-node corruption + repair methodology), #882 (verb registration), ROOT_BUILD_FROM_SOURCE_PLAN.md (Step 5 repair-in-text)
docs(planning): #879 provenance investigation archive