Bug Tracker — Validation Campaign¶
Last Updated: March 1, 2026 Test Environments: VM 102/103/104 (XP), VM 108 (Win10 x32)
This document tracks bugs discovered during the 2026 validation campaign. Bugs are categorized by the build/version where they were discovered.
Bug Definition
A bug is any deviation from expected user experience — including code defects, misconfigurations, missing registry entries, incomplete installations, confusing UI behavior, and environmental issues. If the user encounters something unexpected or suboptimal, it gets logged here regardless of root cause. There is no such thing as an “automation bug” or “tooling bug” — there are only bugs that automation and tooling expose. The goal is to capture every friction point so the product and its deployment can be optimized.
TB11 Source-Mode Bugs (VM 108)¶
Bugs 1–18 were found on VM 108 (Win10 x32) after removing csv.vlx and switching to direct .lsp source loading.
# |
Severity |
Status |
Title |
File(s) |
Commit |
|---|---|---|---|---|---|
1 |
Critical |
✅ Fixed |
CSV.VLX overrides all source file changes |
csv.mnu, csv.mns, csv.cui |
Session 1 |
2 |
High |
✅ Fixed |
File browser shows no .dwg files |
csv.lsp ( |
Session 1 |
3 |
High |
✅ Fixed |
dirchk false positive on project directories |
dirchk.lsp |
Session 1 |
4 |
Critical |
✅ Fixed |
|
Multiple .lsp files |
Session 1 |
5 |
Critical |
✅ Fixed |
|
scr.lsp |
Session 2 |
6 |
High |
✅ Fixed |
|
csv.lsp routing |
Session 2 |
7 |
Critical |
✅ Fixed |
VLX detection matches VLIDE runtime, skips source loading |
csv.lsp |
|
8 |
Medium |
✅ Fixed |
|
csv.lsp |
|
9 |
High |
✅ Fixed |
Drawing type dialog asks every time (never persists) |
csv.lsp |
|
10 |
Medium |
✅ Fixed |
Tilt-Up crashes with |
tiltup.lsp |
|
11 |
Low |
✅ Fixed |
|
inspanel.lsp |
|
12 |
High |
✅ Fixed |
Attach Panels crashes |
inspanel.lsp |
Session 3 |
13 |
High |
✅ Fixed |
Wall line entities missing — no recovery + TEXT regression |
wall_dlg.lsp, inspanel.lsp |
Session 3 |
14 |
High |
✅ Fixed |
tiltlist.txt ENAME serialization — entmod rejects saved data |
inspanel.lsp |
|
15 |
High |
✅ Fixed |
Tilt-Up index bug — nn vs xn for pnllst lookup |
tiltup.lsp |
|
16 |
Critical |
✅ Fixed |
conslist.txt ENAME serialization — Layout crashes on re-read |
savelay.lsp |
|
17 |
High |
✅ Fixed |
Layout index bug — nn vs xn for pnllst lookup |
layout.lsp |
|
18 |
High |
🔲 Open |
|
csv.lsp, md_dlg.dcl, csv.mnu |
Profile/Deployment Bugs (VLX Installations)¶
Bugs discovered during AutoIT validation comparing XP VMs. These are registry/profile configuration issues that affect VLX-based installations (not source-mode).
# |
Version |
VM |
Severity |
Status |
Title |
Registry Key |
|---|---|---|---|---|---|---|
19 |
PB11 |
103 |
Critical |
✅ Fixed |
Missing menu registration causes |
|
20 |
v7.0 |
104 |
Critical |
✅ Workaround verified |
Startup Suite VLX crash + missing Startup Suite entries |
|
21 |
v7.0 |
104 |
High |
✅ Fixed |
Edit Existing Drawing can’t find CSBsite1.dwg — missing Project Settings |
|
Deployment, Environment & Validation Bugs (VM 104)¶
Bugs 22–30 were discovered during the Feb 28, 2026 deployment and validation campaign on VM 104 (XP-TEST). These span platform quirks, deployment script issues, validation pipeline gaps, and source-mode loading failures — all exposed by automated and manual validation testing.
# |
VM(s) |
Severity |
Status |
Title |
File(s) |
Commit |
|---|---|---|---|---|---|---|
22 |
104 |
High |
✅ Fixed |
Forward slashes fail through NTFS junctions on XP |
|
|
23 |
104 |
Low |
✅ Fixed |
|
|
|
24 |
All |
Medium |
✅ Fixed |
Validation screenshots overwrite — stale data contamination |
|
|
25 |
All |
High |
⚠️ Known |
AutoIT false positive — error dialog detected as valid CV dialog |
|
— |
26 |
104 |
Medium |
✅ Fixed |
Git not on SSH PATH — CV Update.bat fails when run remotely |
|
|
27 |
104 |
Low |
✅ Fixed |
CMD echo caret escaping corrupts generated acaddoc.lsp |
|
|
28 |
104 |
High |
✅ Fixed |
|
|
|
29 |
104 |
Critical |
✅ Fixed |
|
|
|
30 |
104 |
High |
🔍 Investigating |
|
|
— |
Detailed Bug Reports¶
Bug 1: CSV.VLX Overrides Source Files¶
Discovered: Session 1
Severity: Critical
Symptom: All
.lspedits had no effect — AutoCAD loaded the compiledcsv.vlxbinary instead.Root Cause: The menu macros in
csv.mnu,csv.mns, andcsv.cuireferencedcsv.vlxdirectly. AutoCAD loaded the VLX (which bundles all modules) before any source files.Fix: Renamed
csv.vlxtocsv.vlx.bak. Changed all 57 menu macros (19 per file × 3 files) fromcsv.vlx→csv.lsp. Deletedcsv.mnc/csv.mnrcache files.Impact: Enabled all subsequent source-mode development and testing.
Bug 2: File Browser Shows No .dwg Files¶
Discovered: Session 1
Severity: High
Symptom: “Open Existing Project” file dialog showed no files.
Root Cause:
getfiledinproject()used" "(space) as the file filter with flag1(Save mode). This showed all files but made it confusing.Fix: Changed filter to
"dwg"with flag2(Open mode) to show only drawing files.File:
csv.lsp—project()function
Bug 3: dirchk False Positive¶
Discovered: Session 1
Severity: High
Symptom: dirchk incorrectly flagged valid project directories as AutoCAD program directories.
Root Cause: Original implementation used greedy wildcard matching that was too broad.
Fix: Rewrote
dirchk.lspwith exact path matching againstacaddir.File:
dirchk.lsp
Bug 4: Block Comments Crash AutoCAD 2000¶
Discovered: Session 1
Severity: Critical
Symptom: Files with
#| |#block comments caused parse errors when loaded via(load "filename").Root Cause: AutoCAD 2000’s
(load)function does not support#| |#syntax. Only the Visual LISP IDE and compiled.vlxbundles parse them.Fix: Reverted all
#| |#comments back to;;style. Added explicit ban to.github/copilot-instructions.md.Prevention: Coding standards now prohibit
#| |#block comments.
Bug 5: (command "open" path) Invocation/Context Failure in AutoCAD 2000¶
Discovered: Session 2
Severity: Critical
Symptom: Automated open flow sometimes created files named
_.openor routed the path argument into the wrong command context.Root Cause: Not a universal OPEN defect. Failures came from invocation/context issues: command syntax in automation and leaked active command state (especially SAVEAS after
dbchk/qsaveon unsaved drawings).Fix: Corrected automation syntax (AU3/manual validation path), removed the fragile pre-open dependency in routing, and retained
vla-open+vla-activate+S::STARTUPfor deterministic document switching.File:
scr.lsp(document-switch path), related routing incsv.lspKey Insight:
(command "open" ...)is stateful/context-sensitive in AutoCAD 2000 LISP automation; ActiveX/COM open is more reliable for scripted switching.
Bug 6: dbchk Leaves SAVEAS Active¶
Discovered: Session 2
Severity: High
Symptom: After
dbchkran on an unsavedDrawing.dwg, all subsequent(command ...)calls had their arguments eaten by the still-active SAVEAS dialog.Root Cause:
dbchkcalls(command "qsave"). On an untitled drawing (Drawing.dwg), QSAVE triggers SAVEAS, which opens a file dialog and leavescmdactive=1. All subsequent LISP(command ...)calls feed arguments into SAVEAS instead of their intended commands.Fix: Removed
(dbchk)call from the existing-project routing path incsv.lsp. Thevla-openapproach handles the document switch without needing a pre-save.File:
csv.lsp— routing block at ~line 435
Bug 7: VLX Detection Matches VLIDE Runtime¶
Discovered: Session 3 (Feb 24, 2026)
Severity: Critical
Symptom: All 93 module functions (
inspanel,tiltup,site_dlg, etc.) were undefined. Site operations (Attach Panels, Tilt-Up, Detach Panels) all failed with errors.Root Cause: The ARX detection loop matched
*vlide*in addition to*csv*. The VLIDE runtime loads into the ARX list whenevervl-load-comis called (which our newscr.lspdoes). With*vlide*matching, the code took thevl-acad-defunpath — which does nothing without a VLX — and skipped loading all 93 .lsp source files.Fix: Removed
*vlide*from the ARX match pattern. Only*csv*is checked now.File:
csv.lsp— module loading section (~line 240)Commit:
480c6fb
;; BEFORE (broken):
(if (or (wcmatch a "*vlide*") (wcmatch a "*csv*"))
;; AFTER (fixed):
(if (wcmatch a "*csv*")
Bug 8: FILE nil on Batch File Creation¶
Discovered: Session 3 (Feb 24, 2026)
Severity: Medium
Symptom:
error: bad argument type: FILE nilduringcsvstartup.Root Cause:
(open)returns nil when the target directory is read-only (e.g.,C:\Program Files\ACAD2000\under UAC). The code passed nil directly to(princ ... f)without checking.Fix: Wrapped
cv.batandcvplst.batcreation in(if f ...)guards.File:
csv.lsp— batch file creation section (~lines 360-393)Commit:
480c6fb
Bug 9: Drawing Type Dialog Asks Every Time¶
Discovered: Session 3 (Feb 24, 2026)
Severity: High
Symptom: Every time “Drawing Setup” was run on an existing site drawing, it asked “Panel or Site?” via
csv_ask_dwgtypedialog — even after choosing “Site” repeatedly.Root Cause: The
csv_ask_dwgtypefunction was added as a fallback for drawings with nopanel_listorsite_listin the Named Object Dictionary. But it never persisted the choice to the dictionary, so the next run hit the same fallback.Fix: Replaced
csv_ask_dwgtypewith a 4-step detection: (1) panel_list in dictionary → panel, (2) site_list in dictionary → site, (3) filename contains*SITE*→ site (heuristic), (4) fallback → panel (PB11 default behavior).File:
csv.lsp— routing logic (~lines 447-457)Commit:
480c6fb
Bug 10: Tilt-Up Crashes Without Attach Panels¶
Discovered: Session 3 (Feb 24, 2026)
Severity: Medium
Symptom:
error: bad argument type: FILE nilwhen running “Tilt-Up Panels” from Site Options.Root Cause:
tiltup.lspline 2 openstiltlist.txtfor reading. This file is created byinspanel.lsp(Attach Panels workflow). If Attach Panels was never run on the drawing, the file doesn’t exist and(open ...)returns nil.Fix: Added nil check with
(alert)explaining “You must Attach Panels before Tilt-Up.” Wrapped the entire function body in(if (not f) ... (progn ...)).File:
tiltup.lspCommit:
337f000Note: This is also the original PB11 behavior — both versions crash without
tiltlist.txt. The fix is new defensive code.
Bug 11: Inspanel.lsp Filename Capitalization¶
Discovered: Session 3 (Feb 24, 2026)
Severity: Low
Symptom: Capital
IinInspanel.lsplooks like lowercasel(lspanel) at a glance, causing confusion when reading file listings.Root Cause: Original file was saved with capital letter. All code references use lowercase
inspanel.Fix:
git mv Inspanel.lsp inspanel.lspCommit:
cd130c6
Bug 12: Attach Panels Crashes on Missing Wall Lines¶
Discovered: Session 3 (Feb 24, 2026)
Severity: High
Symptom:
error: bad argument type: lselsetp nilwhen running “Attach Panels” from Site Options on CSBsite1.Root Cause:
inspanel.lspcalls(ssget "x" ...)to find LINE entities on the WALLINE layer. If no wall lines exist (or the layer has no LINE entities),ssgetreturns nil. The code then calls(sslength nil)which crashes. Same issue exists for the panel number TEXT entities.Fix: Added nil guards for both
wls(wall lines) andnums(panel numbers) ssget results. Each shows an(alert)explaining what’s missing and returns cleanly instead of crashing.File:
inspanel.lspNote: This is also a PB11 bug — the original code has no nil checks on ssget results. The drawing may need wall lines drawn before panels can be attached.
Bug 13: Wall Line Entities Missing — No Recovery + TEXT Regression¶
Discovered: Session 3
Severity: High
Symptom: Attach Panels shows “No wall lines found” alert on CSBsite1. The drawing previously had panels attached, so wall lines existed at some point.
Root Cause (two issues):
No recovery path: When WALLINE entities are missing (erased or drawing saved without them),
inspanelhad no way to regenerate them. Initial attempt usingwalllist.txtsave/restore was broken becauseinspanelline 33 doesdel *list.txt(deletes all list files) before the recovery code runs.v7.0→v11 TEXT regression: In v7.0,
walline()created both LINE entities and TEXT entities (panel numbers) on the WALLINE layer. In v11 (PB11/TB11),walline()was refactored to store panel numbers as XData on LINE entities only — TEXT creation was removed. Butinspanelwas never updated and still searches for TEXT entities on WALLINE. This is a latent PB11 bug that only manifests whenwalline()is called on a fresh site (or for recovery).
Fix (three parts):
Moved
wallineto top-level inwall_dlg.lspso it can be called frominspanel(was previously nested insidewall_dlgand only defined when the dialog ran).Added grdlst auto-build to
walline— builds grid lookup table from sitevar if not already set (needed when called from inspanel recovery vs. from wall_dlg dialog).Restored TEXT creation in
walline(v7.0 behavior) — creates panel number TEXT entities at evenly-spaced positions along each wall LINE. This fixes the v7.0→v11 regression.Inspanel recovery: When
ssgetreturns nil for WALLINE entities, calls(walline)to regenerate from site dictionary data, then retriesssget. Removed brokenwalllist.txtapproach.
Files:
wall_dlg.lsp(walline refactor + TEXT creation),inspanel.lsp(walline recovery)Related: Bug 12 (nil guard prerequisite)
Bug 14: tiltlist.txt ENAME Serialization¶
Discovered: Session 3 (Feb 24, 2026)
Severity: High
Symptom:
error: extra cdrs in dotted pairwhen Tilt-Up reads tiltlist.txt generated by inspanel’s fast path.Root Cause:
entgetreturns ENAME objects in DXF group 330 (owner pointer) and XData group -3. Whenprin1writes these to a text file, it serializes them as<Entity name: 7ef73060>— a string thatreadcannot parse back into a valid association list. Thereadcall either fails outright or produces malformed data thatentmodrejects.Fix: Added filter to both the fast path and normal tiltlist.txt write in
inspanel.lsp. Before writing, strips any association where(type (cdr p))is'ENAMEand any group with code-3(XData). Only serializable DXF groups (numbers, strings, lists) are written.File:
inspanel.lsp— fast path (~line 110) and normal path (~line 480)Commit:
401c1b1
;; Filter: strip ENAME objects and XData before prin1
(foreach p (cdr x)
(if (and (/= (type (cdr p)) 'ENAME)
(/= (car p) -3)
)
(set 'tmp (cons p tmp))
)
)
Bug 15: Tilt-Up Index Bug — nn vs xn for pnllst Lookup¶
Discovered: Session 3 (Feb 24, 2026)
Severity: High
Symptom:
error: bad association list (nil (0 . "INSERT") ...)when running Tilt-Up after Layout.Root Cause:
tiltup.lspuses a double loop to match live panel entities (pnllst) to saved tilt data (tiltlst) by block name. When a match is found, the code substitutes the live entity name frompnllstinto the savedtiltlstentry. However, the code usednn(thetiltlstloop index) to index intopnllst— should have usedxn(thepnllstloop index). Whentiltlsthas more entries thanpnllst,(nth nn pnllst)returns nil, producing(nil (0 . "INSERT") ...)whichentmodrejects.Fix: Changed
(assoc -1 (nth nn pnllst))to(assoc -1 (nth xn pnllst)).File:
tiltup.lsp— line 76Commit:
ad326f5Note: This is a latent PB11 bug — the original production code has the same error. It only triggers when
tiltlstandpnllsthave different sizes.
;; BEFORE (broken) — nn is tiltlst index, wrong list:
(assoc -1 (nth nn pnllst))
;; AFTER (fixed) — xn is pnllst index, correct list:
(assoc -1 (nth xn pnllst))
Bug 16: conslist.txt ENAME Serialization — Layout Crashes on Re-read¶
Discovered: Session 4 (Feb 25, 2026)
Severity: Critical
Symptom:
error: extra cdrs in dotted pair on inputwhen running “Layout Panels” a second time (withconslist.txtalready present).Root Cause:
savelay.lspstripped only the-1entity name pair via(cdr x)but left group 330 (ENAME owner pointers like(330 . <Entity name: 1F>)) and group -3 (XData) in the output. Whenprin1wrote these ENAME values toconslist.txt,(read (read-line f))inlayout.lspcould not parse the<Entity name:...>token — it is not valid Lisp syntax.Fix: Replaced the simple
(cdr x)strip with the same ENAME/XData filter used ininspanel.lsp— checks(type (cdr p))for'ENAMEand skips groups with code-3. Only serializable DXF groups (numbers, strings, lists) are written.File:
savelay.lsp— complete rewrite with proper formattingCommit:
96f693bNote: This is the
conslist.txtcounterpart of Bug 14 (tiltlist.txt).inspanel.lspwas fixed in Bug 14 butsavelay.lspwas overlooked — same root cause, different file.
;; BEFORE (broken) — strips only -1 pair, leaves ENAME/XData:
(set 'conslst (mapcar '(lambda (x) (cdr x)) pnllst))
;; AFTER (fixed) — full ENAME/XData filter:
(set 'conslst
(mapcar
'(lambda (x)
(set 'tmp nil)
(foreach p (cdr x)
(if (and (/= (type (cdr p)) 'ENAME)
(/= (car p) -3)
)
(set 'tmp (cons p tmp))
)
)
(reverse tmp)
)
pnllst
)
)
Bug 17: Layout Index Bug — nn vs xn for pnllst Lookup¶
Discovered: Session 4 (Feb 25, 2026)
Severity: High
Symptom: Layout’s second-pass restore (from
conslist.txt) substitutes the wrong live entity name, causingentmodto silently fail or modify the wrong panel.Root Cause: Identical to Bug 15 (tiltup.lsp).
layout.lspuses a double loop to match live panel entities (pnllst, indexed byxn) to saved layout data (conslst, indexed bynn). When a match is found, the code substituted the live entity name using(assoc -1 (nth nn pnllst))— butnnis theconslstindex. Should be(assoc -1 (nth xn pnllst))to get the entity from the correct list.Fix: Changed
(nth nn pnllst)to(nth xn pnllst)in thesubstcall.File:
layout.lsp— second-pass branch (~line 153)Commit:
96f693bNote: This is a latent PB11 bug — the original production code has the same error. Same pattern as Bug 15 in
tiltup.lsp.
;; BEFORE (broken) — nn is conslst index, wrong list:
(assoc -1 (nth nn pnllst))
;; AFTER (fixed) — xn is pnllst index, correct list:
(assoc -1 (nth xn pnllst))
Bug 18: progcont Routing Missing from Source — VLX/Source Mismatch¶
Discovered: Session 4 (Feb 27, 2026)
Updated: March 1, 2026 — root cause corrected after VLX binary analysis and OCR comparison
Severity: High → Critical (upgraded — blocks all source-mode menu routing)
Status: Open
DFMEA: BRK-04 / BRK-05 (RPN 240 — upgraded from 70) — Section 7.1, doc 31
Symptom: “Drawing Setup”, “Create New Project”, “Create New Drawing”, “Edit Existing Drawing”, “Slope Calculator”, and “Batch Utilities” all produce the same “Panel Options” dialog in source-mode. Users expect distinct operations per menu item but get the same dialog regardless.
Root Cause (corrected Mar 1, 2026): The original analysis stated “
progcontis never read by any code” — this was wrong. Theprogcontvariable IS read by the compiled VLX bytecode and correctly routes to different dialogs per value. OCR evidence from VM 102 (PB11/VLX) confirms:progcont 1 → “Program Options” hub dialog
progcont 8193 → “Slope Elevation Calculator”
progcont 262153 → “Project Details”
progcont 262161 → file chooser “Choose a Drawing to use as a template”
progcont 262145 → file chooser “Choose a Drawing to edit”
progcont 262177 → “Batch UI”
The real problem is a VLX/source code mismatch: the CSV.VLX was compiled from source that was never committed to the repository. Specifically:
VLX’s embedded
md_dlg.dcl= “ConstructiVision - Program Options” with numeric button keys ("2","8","16","32","64","128","256","512","1024","2048","4096","16384") mapping to progcont bitmasksSource
md_dlg.dcl(both PB11 and TB11) = “ConstructiVision – Panel Options” with string keys ("new","old","val","pal","vgp", etc.) — a completely different, lower-level dialogVLX’s compiled
c:csvreadsprogcontand routes to different dialogs per bitmask value. The sourcecsv.lspnever readsprogcont.The
csv.mnumenu file is the authoritative source for all progcont values (17 menu items). The au3 test fixture replicates the menu macros exactly:(progn (setq progcont N)(c:csv)).
Fix Required: Reconstruct the missing progcont routing:
Add
progcontreading tocsv.lsp— decode the bitmask and route to appropriate dialogsReverse-engineer or rewrite the numeric-key
md_dlg.dclandmd_dlg.lspbased on OCR evidence of the working VLX dialogsMap all 17
csv.mnuprogcont values to their correct target dialogs
Previous Fix Options (superseded): The original Bug 18 proposed either implementing progcont routing OR consolidating menu items. Now that we know progcont routing WORKS in VLX mode, consolidation is not appropriate — the routing must be reconstructed.
Files:
csv.lsp(routing),md_dlg.dcl(dialog definition),md_dlg.lsp(dialog handler),csv.mnu(progcont source of truth)
Profile/Deployment Bug Reports¶
Bug 20: Startup Suite VLX Crash + Missing Startup Suite Entries¶
Build: v7.0(patch) VM: 104 (XP-TEST)
Discovered: Session 6 (Feb 28, 2026) — AutoIT validation on VM 104 (v7.0 patch)
Severity: Critical
Status: 🔧 Workaround (deferred loading via
acaddoc.lsp; root cause TBD)DFMEA: 20 (NEW — Environment-dependent VLX load crash)
Symptom: Typing
csvat the AutoCAD command line returns “Unknown command ‘CSV’. Press F1 for help.” and(c:csv)returns “error: no function definition: C:CSV”. After applying Startup Suite registry fix, AutoCAD crashes (Access Violation 0xC0000005) during VLX load. Manually clicking ConstructiVision > Program Options loads the VLX successfully — the VLX itself is fine, only the Startup Suite loading timing triggers the crash.
Investigation Timeline¶
Phase 1 — Registry fix (Session 6): Identified missing Startup Suite entries (
NumStartup/1Startup). Applied registry fix. AutoCAD still failed — crashed instead of loading VLX.Phase 2 — Crash analysis (Session 7):
acadstk.dmpon VM 104 Desktop revealed 3 identical crashes:ExceptionCode=0xC0000005(Access Violation)ExceptionAddress=0x440B73Reading address
0x40(null pointer + offset = nullthispointer at ECX=0x0)StackWalk: LocalizeReservedPlotStyleStrings+533inacad.exeTimestamps: Feb 27 9:48 PM, Feb 28 7:33 AM, Feb 28 7:55 AM
Phase 3 — Binary comparison: VM 102’s
acadstk.dmp(5 entries from 2008–2021) showed DIFFERENT crashes (HP plotter driver, OPM, ACDB15) — noLocalizeReservedPlotStyleStringscrash ever occurred on VM 102.Phase 4 — Binary analysis:
acad.exe MD5 comparison (all 6,795,264 bytes):
VM
MD5 Hash
Last Modified
102 (working)
6EB94B99B9B09DE5B8BC0D6C53AFEF1004/10/2008
103 (working)
6EB94B99B9B09DE5B8BC0D6C53AFEF10(matches)
104 (crashing)
E3A40A5A5EE98FF67ECE4B1F4B56E8AD02/10/2026
Binary diff: Only 36 bytes differ, all clustered at offset
0x6452A0–0x645368(data section). Hex dump shows this is a registration/serial data area (_R_FFFRFFFRFpattern followed by encoded serial data) — NOT executable code. PE compile timestamp is identical (0x36FA04B0= March 25, 1999).Phase 5 — Exe swap DISPROVEN (Session 8):
Test A: Patched exe + NO VLX loading (NumStartup=0) → AutoCAD starts normally, no crash
Test B: VM 102’s original exe copied to VM 104 + VLX loading enabled → SAME CRASH (0xC0000005 at 0x440B73,
LocalizeReservedPlotStyleStrings+533)Conclusion: The 36-byte patch is NOT the cause. Both binaries crash identically. The original acad.exe was restored from backup (
acad.exe.bak-patched).
Phase 6 — Environmental comparison (Session 8):
Complete registry comparison between VM 102 (working) and VM 104 (crashing):
Component
VM 102
VM 104
Match?
Startup Suite (
NumStartup,1Startup)Present
Present (after fix)
✅
Menu registration (
Group1,Pop13)Present
Present
✅
ACAD search path
Identical
Identical
✅
acad2000.lsp,acad2000doc.lspOriginal
Identical content
✅
Plotter configs (
.pc3files)Identical set
Identical set
✅
DLLs in ACAD2000 directory
All match
All match
✅
DefaultConfig (printer)
Symantec Fax Starter EditionMicrosoft XPS Document Writer❌
Installed printers
7 printers (hardware drivers)
1 printer (XPS only)
❌
Plot-related registry (
PSTYLEPOLICY,PLOTLEGACY, etc.)Present
Missing (using defaults)
❌
Plot Styles folder
19 files (4 custom .ctb)
15 files (stock only)
❌
Key finding: The crash is in
LocalizeReservedPlotStyleStrings— a plot subsystem function. VM 104 has minimal printer/plotter configuration (single XPS printer) vs VM 102’s 7 hardware printers. Several plot-related registry entries (PSTYLEPOLICY,PLOTLEGACY,PAPERUPDATE,PLSPOOLALERT) are present on VM 102 but missing on VM 104.Phase 7 — Workaround (Session 8):
Key observation: User manually clicked ConstructiVision > Program Options → VLX loaded successfully. CSV command worked. The VLX itself is fine — the crash only occurs during Startup Suite loading (very early initialization).
Solution: Bypass Startup Suite entirely. Load VLX via
acaddoc.lsp(per-document loader) which runs after AutoCAD subsystems are fully initialized.
Root Cause:
Missing Startup Suite entries — v7.0(patch) installation did not register
CSV.VLXin the AutoCAD Startup SuiteEnvironment-dependent crash during early VLX loading — When VLX loads via Startup Suite (very early in initialization),
LocalizeReservedPlotStyleStringscrashes with null pointer dereference. This crash is NOT caused by the 36-byte exe patch (disproven by testing VM 102’s unmodified binary). The suspected trigger is VM 104’s minimal printer/plot configuration — the crash function name (LocalizeReservedPlotStyleStrings) relates to the plot subsystem, and VM 104 differs significantly from VM 102 in printer setup. Root cause remains under investigation.
Fix (workaround):
Disable Startup Suite (prevent crash):
reg add "HKCU\...\Appload\Startup" /v NumStartup /t REG_SZ /d 0 /fDeploy
acaddoc.lsptoC:\Program Files\ACAD2000\support\:;;; acaddoc.lsp - ConstructiVision deferred VLX loader (if (not (boundp 'c:csv)) (progn (load "CSV.VLX") (princ "\nConstructiVision loaded.\n") ) ) (princ)
Deploy
acad.lsptoC:\Program Files\ConstructiVision\(backup S::STARTUP loader):;;; acad.lsp - ConstructiVision deferred VLX loader (backup) (defun S::STARTUP () (if (not (boundp 'c:csv)) (progn (load "CSV.VLX") (princ "\nConstructiVision loaded.\n")) ) (princ) )
Original
acad.exerestored — VM 102’s binary was swapped in during Session 7 but the same crash occurred, proving the 36-byte patch was not the cause. The original was restored from backup.
Files deployed on VM 104:
C:\Program Files\ACAD2000\support\acaddoc.lsp(749 bytes) — per-document VLX loaderC:\Program Files\ConstructiVision\acad.lsp(778 bytes) — S::STARTUP backup loaderC:\Program Files\ACAD2000\acad.exe— original binary restored (MD5E3A40A5A5EE98FF67ECE4B1F4B56E8AD)C:\Program Files\ACAD2000\acad.exe.bak-patched— backup of original
Crash dumps preserved locally:
reports/ocr-output/vm104-feb28/acadstk.dmp(1,998 bytes, 3 crashes)reports/ocr-output/vm104-feb28/acadstk-manual-run.dmp(681 bytes, 1 crash with VM 102 exe)reports/ocr-output/vm102-acadstk.dmp(6,824 bytes, 5 historical crashes from 2008–2021)
acad.exe binaries preserved locally:
reports/vm-compare/acad-vm102.exe— VM 102 original (MD56EB94B99B9B09DE5B8BC0D6C53AFEF10)reports/vm-compare/acad-vm104.exe— VM 104 original (MD5E3A40A5A5EE98FF67ECE4B1F4B56E8AD)reports/vm-compare/acad-vm103.exe— VM 103 (matches VM 102)
Status: ✅ Workaround verified (Feb 28, 2026). User manually opened AutoCAD on VM 104 desktop, typed
csv→ command recognized. Ran full validation manually — all steps passed until Bug 21 (missing Project Settings). Root cause investigation (printer/plot configuration theory) TBD.Impact: AutoCAD 2000 installations with minimal printer configuration may fail to load VLX files via the Startup Suite. The deferred loading approach (
acaddoc.lsp) is more robust than the Startup Suite for environments where the plot subsystem state is unknown at startup time.Related: Bug 19 (menu registration). Both are profile/environment configuration issues on pre-existing installations.
Lesson Learned: The Startup Suite loads VLX files very early in AutoCAD initialization — before all subsystems (especially the plot subsystem) are fully initialized. Deferred loading via
acaddoc.lsporS::STARTUPis more robust for diverse environments. Binary comparisons (hex dumps, MD5 hashes) are important for investigation but diff ≠ causation — always verify with controlled experiments.Historical Note: The v3.60 InstallShield script (
constructivision-v3.60-setup.rullines 3640-3652) correctly writes the startup suite registry entries. The v7.0(patch) was a manual installation that skipped this step.
Bug 21: Edit Existing Drawing Can’t Find CSBsite1.dwg — Missing Project Settings¶
Build: v7.0(patch) VM: 104 (XP-TEST)
Discovered: Session 8 (Feb 28, 2026) — Manual validation on VM 104 after Bug 20 workaround
Severity: High
Status: ✅ Fixed
DFMEA: 21 (NEW — Incomplete project path configuration)
Symptom: After Bug 20 workaround succeeded (CSV command works), user ran manual validation. “Edit Existing Drawing” opened a File Open dialog, but the dialog could not navigate to
CSBsite1.dwg. The file exists atC:\Program Files\ConstructiVision\Project Files\ConstructiVision Sample Building\CSBsite1.dwgbut the dialog didn’t know to look in that subfolder.Root Cause: VM 104 was missing the AutoCAD Project Settings registry entry that tells AutoCAD where to resolve project file paths. VM 102 (working) has:
HKCU\...\Profiles\<<Unnamed Profile>>\Project Settings\CV RefSearchPath = C:\Program Files\ConstructiVision\Project Files; C:\Program Files\ConstructiVision\Project Files\ConstructiVision Sample Building
VM 104 had the
Project Settingskey but noCVsubkey — the v7.0(patch) manual installation never created it.Fix:
reg add "HKCU\...\Project Settings\CV" /v RefSearchPath /t REG_SZ /d "C:\Program Files\ConstructiVision\Project Files;C:\Program Files\ConstructiVision\Project Files\ConstructiVision Sample Building" /f
Impact: Without the CV project path, AutoCAD cannot resolve xref paths or navigate to project drawings from ConstructiVision dialogs. This affects any installation where the project was not registered — all manual/incomplete installations.
Related: Bugs 19, 20 — same class: incomplete profile/registry configuration on manual v7.0 installations.
Lesson Learned: The installer must register the CV project and its
RefSearchPath. Add toConfigure-ConstructiVision.ps1.
Bug 22: Forward Slashes Fail Through NTFS Junctions on XP¶
Affects: All builds VM: 104 (XP-TEST)
Discovered: Session 9 (Feb 28, 2026) — OCR analysis of VM 104 validation screenshots
Severity: High
Status: ✅ Fixed
DFMEA: 22 (NEW — XP junction path resolution)
Symptom: AutoCAD showed “Cannot find the specified drawing file. Please verify that the file exists.” when the AutoIT script opened
CSB001.dwgin Phase 1. The file physically exists at the expected path.Root Cause: The AutoIT validation script used forward slashes in file paths:
C:/Program Files/ConstructiVision/Project Files/ConstructiVision Sample Building/CSB001.dwg
On Windows XP, forward slashes fail to resolve through NTFS junctions. The
C:\Program Files\ConstructiVisionpath is a junction pointing toC:\Repos\Constructivision\src\x32\PB11-00x32. Forward slashes work for regular directories but not through junctions on XP.Proof:
dir "C:\Program Files\ConstructiVision\...\CSB001.dwg" → FOUND (183,286 bytes) dir "C:/Program Files/ConstructiVision/.../CSB001.dwg" → File Not Found
Fix: Changed all drawing file paths in
cv-menu-validation.au3from forward to backslashes.Commit:
5ae65f8Impact: Any script or tool that uses forward-slash paths through junctions on XP will fail silently. This is an XP-specific behavior — Windows 10 handles forward slashes through junctions correctly.
Lesson Learned: Always use backslashes in file paths on XP, especially when NTFS junctions are involved. Forward-slash normalization is unreliable on legacy Windows.
Bug 23: propertiesclose Command Doesn’t Exist in AutoCAD 2000¶
Affects: All builds VM: 104 (XP-TEST)
Discovered: Session 9 (Feb 28, 2026) — OCR of baseline screenshot
Severity: Low
Status: ✅ Fixed
DFMEA: 23 (NEW — AutoCAD version command mismatch)
Symptom: AutoCAD command line showed
Unknown command "PROPERTIESCLOSE"during Phase 1 baseline.Root Cause: The AutoIT script sent
propertiescloseto dismiss the Properties palette, but this command was introduced in AutoCAD 2004+. It does not exist in AutoCAD 2000 (R15.0).Fix: Removed
propertiesclosefrom the AutoIT script.Commit:
5ae65f8Lesson Learned: Always verify AutoCAD commands against the R15.0 command reference. Commands available in newer versions should never be assumed to exist.
Bug 24: Validation Screenshots Overwrite — Stale Data Contamination¶
Affects: Validation pipeline VM: All
Discovered: Session 9 (Feb 28, 2026) — Timestamp analysis of screenshot files
Severity: Medium
Status: ✅ Fixed
DFMEA: 24 (NEW — Validation pipeline data integrity)
Symptom: OCR analysis showed
*-no-dialog.bmpfiles from a 7:47 AM run mixed with 3:20 PM screenshots. Stale files from a previous run that captured “no dialog found” screenshots persisted into the new run’s output directory, contaminating the results.Root Cause: The AutoIT script wrote all screenshots to
C:\CV-Validation\VM###\with fixed filenames. If a new run produced fewer screenshots (or different screenshots), old files with the same names were overwritten but old files with different names persisted.Fix: Added timestamped run subdirectories (
run-YYYYMMDD-HHMMSS/) so each run gets a clean output directory. Addedlatest-run.txtpointer file for easy discovery of the most recent run.Commit:
18a503cLesson Learned: Validation outputs must be immutable per-run. Never overwrite previous results — always write to a unique directory.
Bug 25: AutoIT False Positive — Error Dialog Detected as Valid CV Dialog¶
Affects: Validation pipeline VM: All
Discovered: Session 9 (Feb 28, 2026) — OCR revealed
01-csv-entry-dialog.bmpwas actually the “Cannot find the specified drawing file” error dialogSeverity: High
Status: ⚠️ Known limitation
DFMEA: 25 (NEW — Validation false positive)
Symptom: AutoIT validation log reported
01-csv-entry-dialog: PASS— but OCR of the actual screenshot showed it was AutoCAD’s “Cannot find the specified drawing file” error dialog, not the ConstructiVision Program Options dialog.Root Cause: The
_WaitForAnyDialog()helper function matches ANY dialog window that appears, including error dialogs. When the drawing file wasn’t found (Bug 22), AutoCAD displayed an error dialog. AutoIT detected this error dialog and logged it as the expected CSV entry dialog.Fix: No code fix — this is a fundamental limitation of window-title-based dialog detection. Mitigation: ALWAYS run OCR on captured screenshots after every validation run. The AutoIT log’s PASS/FAIL is unreliable and must never be trusted alone.
Impact: Any validation run analysis that only reads the AutoIT log will produce false confidence. OCR verification is mandatory.
Lesson Learned: Dialog detection by window presence is insufficient for validation. OCR-based content verification is the only reliable method. This should be enforced in the validation workflow — no run is “complete” until OCR summary is reviewed.
Bug 26: Git Not on SSH PATH — CV Update.bat Fails Remotely¶
Affects: All builds VM: 104 (XP-TEST)
Discovered: Session 9 (Feb 28, 2026) —
CV Update.bat /pullfailed with'git' is not recognizedSeverity: Medium
Status: ✅ Fixed
DFMEA: 26 (NEW — Remote deployment PATH issue)
Symptom: Running
CV Update.bat /pullvia SSH returned'git' is not recognized as an internal or external command. Git is installed and works fine when run interactively on the VM desktop.Root Cause: SSH sessions (Bitvise SSH Server) on XP don’t inherit the full user PATH. Git’s installation path (
C:\Program Files\Git\cmd) is not in the minimal PATH used by SSH sessions.Fix: Added
set "PATH=%PATH%;C:\Program Files\Git\cmd"toCV Update.batbefore any git operations. Alternatively, must prepend this when running remotely.Commit:
94ecb94Lesson Learned: SSH sessions have a minimal PATH. Deployment scripts must be self-contained and not rely on interactive-session PATH. Always include full paths or PATH prepends for external tools.
Bug 27: CMD Echo Caret Escaping Corrupts Generated acaddoc.lsp¶
Affects: Deployment tooling VM: 104 (XP-TEST)
Discovered: Session 9 (Feb 28, 2026) — Generated acaddoc.lsp contained literal
^(charactersSeverity: Low
Status: ✅ Fixed
DFMEA: 27 (NEW — Batch file string escaping)
Symptom: The
acaddoc.lspgenerated byCV Update.bat’sCONFIGURE_STARTUPsubroutine contained literal caret characters:^(VLX^)instead of(VLX).Root Cause: In CMD batch files, parentheses inside
echostatements require escaping with^when insideif/elseblocks. However, the caret escaping produced literal characters in the output file.Fix: Removed parentheses from the LISP status message strings entirely. Changed
"ConstructiVision loaded (VLX)"to"ConstructiVision loaded VLX".Commit:
94ecb94Lesson Learned: Batch file string escaping is fragile. When generating code via
echo >>, avoid characters that need escaping (parentheses, pipes, ampersands, angle brackets). Simplify output strings rather than fighting CMD’s escaping rules.
3-VM Comparison Results (Feb 28, 2026)¶
Full 3-VM OCR comparison after all fixes applied:
# |
Screenshot |
VM 104 (TB11 fresh) |
VM 102 (PB11 reference) |
VM 103 (v7.0 MASTER) |
|---|---|---|---|---|
00 |
Baseline drawing |
✅ CSB001.dwg loaded, “ConstructiVision loaded VLX” |
✅ CSB001.dwg loaded, menus loaded |
✅ CSB001 loaded |
01 |
CSV entry dialog |
✅ CV Program Options |
✅ CV Program Options |
✅ CV Program Options |
02 |
Drawing setup |
✅ CV Program Options |
✅ CV Program Options |
✅ CV Program Options |
03 |
Slope calculator |
✅ Slope Elevation Calculator |
✅ Slope Elevation Calculator |
✅ Slope Elevation Calculator |
04 |
Create new project |
✅ Project Details dialog |
✅ Project Details dialog |
✅ Project Details dialog |
05 |
Create new drawing |
✅ File browser (Sample Building) |
✅ File browser (Sample Building) |
✅ File browser (Sample Building) |
06 |
Edit existing drawing |
✅ File browser (Sample Building) |
✅ File browser (Sample Building) |
❌ Bug 19 error ( |
07 |
Batch utilities |
✅ Batch UI, 24 panels (2026 dates) |
✅ Batch UI, 24 panels (2007 dates) |
✅ Batch UI, 24 panels (2007 dates) |
10 |
MD panel options |
✅ CV Program Options |
✅ CV Program Options |
✅ CV Program Options |
20 |
Site drawing |
✅ XRefs CSB053-059 resolved |
✅ XRefs CSB050-059 resolved |
✅ CSBsite1 loaded |
21 |
Site dialog |
✅ CV Program Options |
✅ CV Program Options |
✅ CV Program Options |
Summary: VM 104 (TB11 fresh deploy with all fixes) matches VM 102 (PB11 reference) across all 11 test phases. Only VM 103 (v7.0 MASTER, read-only) shows an issue at phase 06 — Bug 19’s setvars error, which may need re-validation after the Feb 27 fix was applied.
Notable differences:
VM 104 shows “ConstructiVision loaded VLX” (deferred
acaddoc.lsploader message) vs VM 102 (Startup Suite, no message)Batch panel timestamps: VM 104 = 2026 (fresh project), VM 102/103 = 2007 (original sample)
VM 103 screenshot 06 still shows Bug 19 error — needs re-run to confirm if the fix persisted
DFMEA Cross-Reference¶
Every bug should trace back to a DFMEA failure mode from doc 31, Section 9. If a bug does not match an existing DFMEA entry, a new DFMEA row must be added to capture the unpredicted failure mode.
TB11 Source-Mode Bugs (1–18)¶
Bug |
DFMEA # |
DFMEA Failure Mode |
Match? |
Notes |
|---|---|---|---|---|
1 |
— |
(Build/config — not a design failure) |
N/A |
VLX override is a build artifact, not a design flaw |
2 |
15 |
panelvar XRecord / dialog commit |
Partial |
File dialog filter is UX design gap |
3 |
18 |
Panel/site auto-detection fragile |
Yes |
dirchk false positive is detection logic failure |
4 |
— |
(Toolchain — not predicted) |
NEW |
|
5 |
— |
(Platform — not predicted) |
NEW |
|
6 |
— |
(Platform — not predicted) |
NEW |
QSAVE → SAVEAS active command leak — add as platform failure mode |
7 |
— |
(Build/config) |
N/A |
VLIDE ARX match is build configuration issue |
8 |
14 |
cv.bat runtime generation |
Yes |
Antivirus / read-only path blocks .bat creation |
9 |
18 |
Panel/site auto-detection fragile |
Yes |
Drawing type not persisted is detection logic gap |
10 |
4 |
Batch script error stops everything |
Partial |
File nil is unhandled error in workflow sequence |
11 |
— |
(Naming convention) |
N/A |
Cosmetic — filename case |
12 |
11 |
Toggle enabled with empty data |
Partial |
No wall lines but attach attempted = missing prerequisite check |
13 |
11 |
Toggle enabled with empty data |
Yes |
Wall line entities absent, TEXT regression |
14 |
6/9 |
Serialization / version migration |
Yes |
ENAME serialization is exactly the fragile I/O predicted |
15 |
4 |
Batch/loop index error |
Partial |
Index mismatch in matching loop |
16 |
6/9 |
Serialization / version migration |
Yes |
Same class as Bug 14 — conslist.txt |
17 |
4 |
Batch/loop index error |
Partial |
Same class as Bug 15 — layout.lsp |
18 |
13 |
progcont routing missing from source |
Yes |
Corrected Mar 1: NOT dead code — VLX reads progcont correctly. Source missing routing + wrong md_dlg. RPN upgraded 70→240 |
Profile/Deployment Bugs (19–21)¶
Bug |
Version |
DFMEA # |
DFMEA Failure Mode |
Match? |
Notes |
|---|---|---|---|---|---|
19 |
PB11 |
19 |
Menu registration missing |
NEW |
Missing |
20 |
v7.0 |
20 |
Startup Suite timing + environment |
NEW |
Startup Suite VLX loading crashes in |
21 |
v7.0 |
21 |
Project path not registered |
NEW |
Missing |
Deployment, Environment & Validation Bugs (22–30)¶
Bug |
DFMEA # |
DFMEA Failure Mode |
Match? |
Notes |
|---|---|---|---|---|
22 |
22 |
XP junction path resolution |
NEW |
Forward slashes fail through NTFS junctions on XP; backslashes work; XP-specific behavior |
23 |
23 |
AutoCAD version command mismatch |
NEW |
|
24 |
24 |
Validation pipeline data integrity |
NEW |
Screenshot overwrite causes stale data; fixed with timestamped run directories |
25 |
25 |
Validation false positive |
NEW |
|
26 |
26 |
Remote deployment PATH issue |
NEW |
SSH sessions have minimal PATH; Git not found; scripts must be self-contained |
27 |
27 |
Batch file string escaping |
NEW |
CMD caret escaping produces literal characters in echo output; avoid special chars in generated code |
28 |
— |
(Deployment — incomplete loading) |
NEW |
Source-mode |
29 |
4 |
|
Yes |
Same class as Bug 4 — recurrence in |
30 |
— |
(Automation — modal dialog timing) |
NEW |
|
Patterns & Lessons Learned¶
AutoCAD 2000 LISP Limitations¶
(command "open" ...)is context-sensitive in AutoCAD 2000 LISP automation; failures observed were invocation/command-state issues, not a universal OPEN defect#| |#block comments are not supported by(load)— only by the Visual LISP IDE(command "script" ...)fails when paths contain spacesQSAVE on untitled drawings triggers SAVEAS and leaves an active command
VLX vs Source Mode¶
The VLIDE runtime (
*vlide*) loads into ARX independently ofcsv.vlxVLX detection must check only for
*csv*in the ARX listvl-acad-defunonly works when functions are compiled into a VLX; it’s a no-op otherwise
Binary Integrity & VLX Loading¶
acad.exebinary analysis: VM 104’s exe has a 36-byte registration/serial patch at offset0x6452A0–0x645368(data section,_R_FFFRFFFRFpattern). This was initially suspected as the crash cause but disproven — the same crash occurs with VM 102’s unmodified binary.File size alone is insufficient for integrity checks — two
acad.exefiles with identical size (6,795,264 bytes) had different MD5 hashes (binary diff ≠ causation)Startup Suite loads VLX during very early AutoCAD initialization — before all subsystems are fully ready. Deferred loading (
acaddoc.lsporS::STARTUP) is more robust.The
LocalizeReservedPlotStyleStringscrash appears to be triggered by the environment (printer/plot configuration), not the binary. VM 104 has minimal printer setup (1 printer, XPS Document Writer) vs VM 102’s 7 hardware printers.Always verify theories with controlled experiments: swap one variable while keeping others constant.
XP-Specific Quirks¶
Forward slashes fail through NTFS junctions on XP.
dir "C:/path/through/junction/file"returns File Not Found, butdir "C:\path\through\junction\file"works. This is XP-specific — Windows 10 handles both.SSH sessions (Bitvise SSH Server) have a minimal PATH — external tools like Git are not found unless their path is explicitly prepended.
The
atcommand (XP task scheduler) is the only way to launch interactive processes from a non-interactive SSH session.startandwmicdo not produce visible windows.
Automation & Validation Pipeline¶
Never trust AutoIT log PASS/FAIL alone. The
_WaitForAnyDialog()function matches ANY window — including error dialogs. A file-not-found error appeared as the “CSV entry dialog.” OCR verification of screenshots is mandatory for every validation run.Validation output must be immutable per-run — write to timestamped subdirectories, never overwrite previous results.
AutoCAD 2000 does not have
propertiesclose— verify all commands against the R15.0 reference.CMD batch file escaping is fragile — avoid parentheses, pipes, and special characters in
echo >>output. Simplify generated code rather than fighting CMD’s escaping rules.When generating LISP code from batch files via
echo, test the output bytype-ing the file — don’t assume correct escaping.
Deployment Scripts¶
SSH PATH limitations mean deployment scripts must be self-contained — prepend tool paths explicitly.
CV Update.batnow handles the full AutoCAD configuration lifecycle: search path, startup, project paths, and acaddoc.lsp generation. This replaced manual registry edits and the incompleteConfigure-ConstructiVision.ps1.The CONFIGURE_STARTUP, CONFIGURE_SEARCH_PATH, and CONFIGURE_PROJECT subroutines are idempotent and safe to re-run.
Defensive Coding¶
Always check
(open ...)return value before using the file descriptorAlways check
(ssget ...)return value before calling(sslength ...)— ssget returns nil when no entities matchSave entity data to text files before destructive operations — enables recovery in future runs
(entmake)can recreate entities from minimal DXF data: LINE needs (0 8 10 11), TEXT needs (0 8 10 40 1)When refactoring data storage (e.g., XData vs TEXT entities), update ALL consumers — the v11 walline/inspanel mismatch was a latent bug
entgetreturns ENAME objects (group 330 owner pointer) that can’t surviveprin1/readround-trip — always filter before serializingText file serialization is fundamentally fragile in AutoLISP — XData on entities is the proper AutoCAD 2000+ data storage approach
(getvar "dwgprefix")content depends on document context aftervla-activateS::STARTUPis the correct mechanism for post-document-switch continuation(setvar "lispinit" 0)preserves LISP variables across MDI document switches
Test Matrix Status¶
Feature |
CBSsite1 |
CSSsite |
Panel Drawings |
|---|---|---|---|
Manual Open |
✅ Works |
✅ Works |
Untested |
Drawing Setup Open |
✅ Works |
✅ Works |
Untested |
Xref Loading |
✅ Auto |
❌ No xrefs stored |
N/A |
Change 3D Viewpoint |
✅ Works |
✅ Works |
Untested |
Layout Panels |
✅ Works |
✅ Works |
N/A |
Attach Panels |
✅ Works (fast path) |
Untested |
N/A |
Tilt-Up Panels |
✅ Works |
Untested |
N/A |
Detach Panels |
Untested |
Untested |
N/A |
Drawing Type Detection |
✅ Auto (dict) |
✅ Auto (filename) |
Untested |
Panel Editor (md_dlg) |
Untested |
N/A |
Untested |
Open Issues¶
S::STARTUP continuation not fully tested — The
vla-open+S::STARTUPapproach inscr.lsphas been pushed but not thoroughly tested across all workflow paths (new panel, new site, edit panel, edit site).Xref resolution after vla-open — When
vla-openopens a drawing, xrefs may not auto-resolve the same way manualOPENdoes. Needs testing on drawings with embedded xrefs (CBSsite1).CSSsite missing xref definitions — CSSsite does not have panel xrefs baked into the drawing. This is a data issue, not a code issue. Running Attach Panels on CSSsite would fix it.
Panel drawing workflow untested — All testing so far has been on site drawings. The panel editor path (md_dlg) needs validation.
XData refactor planned — Replace fragile text file serialization (
tiltlist.txt,conslist.txt) with XData stored on INSERT entities. See XData Refactor Plan — Eliminate Text File Serialization for full design and implementation plan. This eliminates the entire class of serialization bugs (14, 15, 16, 17) and the fragiledel *list.txtcleanup.