62 Commits
Author SHA1 Message Date
Jordan Waughtal 9b89404bf9 Close M8 and M9 requirement traceability gaps 2026-08-30 23:07:30 -05:00
Jordan WaughtalandClaude Opus 4.8 13846295f0 Update M9 work log for resource-bounds
Record increment #3, verification, token estimate, and the token-ceiling
test-design correction.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 20:32:08 -05:00
Jordan WaughtalandClaude Opus 4.8 12b080d72a Add M9 resource-exhaustion bound checks
Add resource-bounds, verifying the configured wsh_limits ceilings actually
bound the portable core: oversized source, strings, and lists are rejected
with WSH_ERR_RESOURCE, variables and retained diagnostics are capped, and a
tight token or AST-node ceiling bounds lexing/parsing (rejected or reported
non-complete) while a generous ceiling completes. This exercises the
WSH-DFS-0001 availability control through the public API. Wired as the
M9;security;limits CTest.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 20:31:39 -05:00
Jordan WaughtalandClaude Opus 4.8 1e4b123e24 Update M9 work log for the fuzzing harness
Record increment #2, the depth-bound verification decision, and the token
estimate.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 20:06:29 -05:00
Jordan WaughtalandClaude Opus 4.8 b2fa22afaa Add M9 input fuzzing smoke harness
Add a deterministic fuzzing smoke harness that drives untrusted byte
sequences through the public decode, lex, and parse surface and walks the
resulting AST. It asserts each input is rejected cleanly or produces a
bounded, freed result, and that pathological inputs (100k-deep nesting,
long runs, unbalanced quoting) reach a defined syntax status instead of
unbounded recursion or a crash, exercising the parser depth bound. The
fixed seed makes any failure reproducible. Wired as the M9;security;fuzz
CTest, passing 30k+ inputs without fault.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 20:06:06 -05:00
Jordan WaughtalandClaude Opus 4.8 812d5f92f8 Draft M9 compatibility and security closure plan
Add the M9 work plan (objective/scope, baseline/assumptions, deliverables,
risks/controls, roles/verification, and the 205k phase forecast) grounded in
the M9 milestone scope and WSH-DFS-0001, and start the M9 work log. Native
Windows 2000, native ARM64, and hostile-host claims are recorded as
environment-gated gaps rather than inferred on the x64 review host.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 20:04:08 -05:00
Jordan WaughtalandClaude Opus 4.8 650c8de32c Close out M8 embedding SDK milestone
Add the M8 closeout (outcome, exit criteria with the recorded version-resource
limitation, verification summary, metrics, and the ARM64/version-resource
handoff). Mark M8 complete in the Milestone Status Record, record the post-M8
recalibration (within the 135k budget, roadmap unchanged), set the work-log
status to Complete, and list M8 as implemented in the README.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 19:49:27 -05:00
Jordan WaughtalandClaude Opus 4.8 e7730c6c29 Update M8 work log for controlled evidence
Record increment #15, the m8-evidence verification, token estimate, and mark
the evidence phase done in the handoff.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 19:48:20 -05:00
Jordan WaughtalandClaude Opus 4.8 1d9f5a9825 Add M8 controlled execution evidence
Extend the run-m8-test harness to write a controlled execution-evidence
record per case (test case, specification and shared-library SHA-256,
requirement references parsed from the specification, source revision,
architecture, configuration, timestamps, captured output, and overall
status). Wire the m8-evidence gate that validates six passing evidence
records, matching the evidence discipline of the earlier milestones. The
records are structured TeX text validated by the WSP evidence tool and do
not require the TeX pipeline to compile.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 19:47:35 -05:00
Jordan WaughtalandClaude Opus 4.8 6e5eb2cf7c Update M8 work log for Specify artifacts and traceability
Record increment #14, the traceability verification, controlled test/triple
measurements, token estimate, and the refined handoff (Specify done;
evidence and closeout remain).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 19:44:10 -05:00
Jordan WaughtalandClaude Opus 4.8 ff3716238b Add M8 Specify artifacts and controlled traceability
Add the M8 requirements (docs/requirements/m8), controlled TeX test
specifications (docs/tests/m8), and PowerShell test implementations
(tests/m8) as bidirectionally traceable TC-0100..TC-0105 triples covering
ABI conformance and misuse, the exact export surface, the C host, the FFI
host, header self-containment, and installed-SDK consumption.

Wire the m8-traceability gate and the controlled m8-TC-* cases through a
shared run-m8-test harness that executes the built embedding artifacts,
consolidating the earlier direct embedding tests into the controlled pattern
used by every other milestone.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 19:43:35 -05:00
Jordan WaughtalandClaude Opus 4.8 e437dbc54b Update M8 work log for review record
Record increment #13, token estimate, and mark Design and Review done in
the handoff.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 18:54:32 -05:00
Jordan WaughtalandClaude Opus 4.8 1b3a3ae3a2 Add M8 review record
Record the M8 review: checklist across ABI scope, composition, export
control, conformance, misuse, hygiene, host examples, installed SDK,
versioning, and compatibility; the defect patterns and resolutions
(D-0801, export-all leak, FFI bitness); and residual boundaries (PE
version resource, ARM64, WSP Specify/evidence).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 18:54:11 -05:00
Jordan WaughtalandClaude Opus 4.8 a5c1347d69 Update M8 work log for installed-SDK test
Record increment #12, install/consumption verification, token estimate, and
mark the installed-header handoff item complete.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 18:53:27 -05:00
Jordan WaughtalandClaude Opus 4.8 6785cc96a9 Add installed-SDK consumption test
Install the SDK to a staging prefix, compile the C host example against only
the installed public headers, link the installed import definition, and run
it against the installed DLL. This proves the shipped SDK layout (headers,
import library, DLL) is self-contained and consumable by an external host
with no in-tree path or internal type. Registered as embedding-installed-sdk.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 18:52:51 -05:00
Jordan WaughtalandClaude Opus 4.8 8d699c0284 Update M8 work log for design doc and header hygiene
Record increments #10-#11, verification runs, token estimates, the PE
version-resource finding, and the refined handoff.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 18:51:26 -05:00
Jordan WaughtalandClaude Opus 4.8 9ed893683a Add public header hygiene test
Add abi-header-hygiene, a translation unit that includes only the four
public embedding headers, references one entry point from each, compiles
standalone under the strict flags, and links from the static library. This
extends self-containment and no-internal-type coverage to evaluator.h and
parser.h so a missing include or internal-only leak fails the build.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 14:48:24 -05:00
Jordan WaughtalandClaude Opus 4.8 8209d16bcb Add M8 design document
Record the M8 embedding SDK design as implemented: library composition and
the ABI 1 scope (excluding the Windows runtime), the WSH_API export-control
mechanism and its bidirectional verification, handle/ownership/diagnostic
model with defined misuse, the dual static/shared conformance strategy, the
C and Python FFI host examples, and the version/compatibility approach.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 14:47:11 -05:00
Jordan WaughtalandClaude Opus 4.8 29b5f8faa6 Update M8 work log for runtime ABI accessor
Record increment #9, the 101-symbol manifest, verification, and the refined
version-resource handoff.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 13:48:46 -05:00
Jordan WaughtalandClaude Opus 4.8 7c1d6a8b74 Add runtime embedding ABI version accessor
Add wsh_embedding_abi_version(), the runtime counterpart of the
WSH_EMBEDDING_ABI macro, so a host can negotiate ABI compatibility without
recompiling against the header. Export it as part of ABI 1 (manifest now
101 symbols), assert the runtime value agrees with the compile-time macro
in the C conformance test, and check it across the boundary in the Python
FFI host.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 13:48:17 -05:00
Jordan WaughtalandClaude Opus 4.8 38bb51fcef Update M8 work log for x86 verification and FFI bitness gate
Record increment #8, cross-architecture verification results, and the
updated handoff (x86 verified; arm64 pending native execution).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 13:47:06 -05:00
Jordan WaughtalandClaude Opus 4.8 874933a234 Gate Python FFI test on interpreter/target bitness
Cross-architecture verification showed the x86 embedding suite passes with a
clean 100-symbol export set, but the embedding-host-python test failed under
the x86 target because the 64-bit system interpreter cannot load a 32-bit
DLL (WinError 193). Query the interpreter bitness at configure time and only
register the FFI test when it matches the target architecture, skipping with
a clear status message otherwise. The C conformance, host, and export
manifest tests continue to cover every architecture.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 13:46:37 -05:00
Jordan WaughtalandClaude Opus 4.8 77bfcdf96a Update M8 work log for export restriction
Record increment #7, the WSH_API export-control decision, the 286->100
export reduction, verification runs, and the updated handoff (export gate
now closed).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 13:45:01 -05:00
Jordan WaughtalandClaude Opus 4.8 20f793158d Restrict shared library exports to the ABI 1 surface
Replace export-all with an explicit, annotation-driven export set. Add
WSH_API (wsh/api.h), expanding to __declspec(dllexport) under
WSH_SHARED_BUILD and empty otherwise, and mark the 100 public declarations
in core, evaluator, parser, and version headers. With any dllexport marker
present TinyCC exports only the marked symbols, so the DLL export set drops
from 286 (runtime, CRT, and internal WSH symbols) to exactly the 100 ABI 1
functions. Static consumers and the executable see an empty marker and are
unchanged.

Strengthen verify-abi-exports to assert the exported set is exactly the
manifest: nothing missing and nothing extra, closing both halves of the M8
export exit gate.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 13:44:08 -05:00
Jordan WaughtalandClaude Opus 4.8 2b26bc48e8 Update M8 work log for export manifest and handoff
Record increment #6, the ABI-scope decision, measurements, and a detailed
handoff for the remaining M8 work (export restriction, version resource,
WSP phase artifacts, cross-architecture).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 13:13:58 -05:00
Jordan WaughtalandClaude Opus 4.8 5dc42adfbd Add ABI 1 export manifest and verification test
Add the approved ABI 1 export manifest (the 100 public wsh_* functions from
core, evaluator, parser, and version headers; the separate windows-runtime
host library is intentionally excluded from the portable embedding DLL) and
a verify-abi-exports test that asserts every manifest symbol is exported by
the shared library. Registered as the M8;embedding;quality CTest case.

This is the positive half of the export exit gate. Restricting the DLL to
export only the manifest (it currently also exports runtime/CRT internals
via export-all) is tracked as the next M8 task.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 13:13:00 -05:00
Jordan WaughtalandClaude Opus 4.8 697fa3fa8d Update M8 work log for ABI export fix and FFI host
Record increment #5, defect D-0801 and its closure, the shared-library
compilation decision, verification runs, and running token estimates.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 13:10:10 -05:00
Jordan WaughtalandClaude Opus 4.8 048c6641df Export full ABI from shared library and add Python FFI host
The shared library was built from wshlib.c linking the static core archive,
so the linker pulled only the version objects referenced by wshlib.c and the
DLL omitted the rest of the embedding ABI (wsh_context_create and the whole
context/value/diagnostic surface were absent). A ctypes host surfaced the
gap: version accessors resolved but wsh_context_create was not found.

Compile the shared WSH_CORE_SOURCES directly into wsh_shared and link the
runtime instead of the static core archive, so the whole ABI is present in
and exported from the DLL. Consumers of wsh_shared now resolve the surface
from the DLL import definition rather than a statically linked copy, which
also makes the shared conformance test genuinely exercise the DLL.

Add examples/embedding/host.py, a Python ctypes FFI host, wired as the
optional embedding-host-python CTest asserting "host.py: ok".

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 13:09:38 -05:00
Jordan WaughtalandClaude Opus 4.8 33fa487035 Update M8 work log for host example and shared parity
Record increments #3-#4, verification runs, and running token estimates.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 13:06:48 -05:00
Jordan WaughtalandClaude Opus 4.8 170f9376de Add shared-library ABI conformance parity test
Build the same ABI conformance and misuse cases against the shared
embedding library and register them as abi-conformance-shared, proving the
static archive and the shared DLL expose behaviorally equivalent surfaces.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 13:06:11 -05:00
Jordan WaughtalandClaude Opus 4.8 89fd0e4064 Add C embedding host example
Add examples/embedding/host.c, a minimal C host that includes only the
installed public headers and links the static embedding library. It creates
an isolated context, publishes and reads back a list-valued variable,
records a diagnostic, and releases everything without touching any internal
type or process-global state. Built and run as the M8;example;embedding
CTest case asserting the deterministic "host: ok" completion line.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 13:05:31 -05:00
Jordan WaughtalandClaude Opus 4.8 d58c453cb3 Update M8 work log for ABI conformance test
Record increment #2, verification runs, and running token estimates.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 13:04:25 -05:00
Jordan WaughtalandClaude Opus 4.8 7f3527acc6 Add M8 ABI conformance and misuse tests
Add abi-conformance-tests, linked against the static embedding library
using only the installed public headers. It asserts the frozen
WSH_EMBEDDING_ABI value and version accessors, exercises the context,
variable, export, and diagnostic lifecycle as an external host would, and
proves documented misuse (null owners/outputs, absent variables,
out-of-range indices, empty status lists) returns a defined error instead
of crashing. Registered as the M8;unit;embedding CTest case.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 13:04:04 -05:00
Jordan WaughtalandClaude Opus 4.8 eb755d6658 Draft M8 embedding SDK plan
Add the M8 (Embedding SDK) work plan following the WSP milestone template:
objective/scope, baseline/assumptions, deliverables, risks/controls, roles
and verification, and the 135k-token phase forecast. Also record M7 as
complete in the Milestone Status Record.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-30 12:46:58 -05:00
Jordan Waughtal 60b8061ce9 Completed M7 1.5.0 2026-08-24 18:53:19 -05:00
Jordan Waughtal 07c209d034 Complete M6 embedded standard library 1.4.0 2026-08-23 22:39:53 -05:00
Jordan Waughtal 1187b1eed3 Prepare ARM64 loader fix release 1.3.3 2026-08-23 20:55:19 -05:00
Jordan Waughtal ce8ca22a7e Apply PE baseline by target architecture 2026-08-23 20:46:43 -05:00
Jordan Waughtal 243eba9537 Fix unsupported ARM64 interlocked import 2026-08-23 00:11:22 -05:00
Jordan Waughtal 53bf27df31 Capture ARM64 startup hang with GDB 2026-08-22 23:57:25 -05:00
Jordan Waughtal bcc2c11260 Probe ARM64 native process termination 2026-08-22 23:46:37 -05:00
Jordan Waughtal 293aa2490a Probe ARM64 entrypoint reachability 2026-08-22 23:42:23 -05:00
Jordan Waughtal a73c7a7763 Instrument ARM64 startup hang 2026-08-22 23:19:45 -05:00
Jordan Waughtal 36522c29a4 Fix ARM64 command-line startup 1.3.2 2026-08-22 22:13:45 -05:00
Jordan Waughtal 79f9cad3a4 Fix Windows CI release failures 1.3.1 2026-08-22 21:37:34 -05:00
Jordan Waughtal d0e4e9e51f Complete M5 Windows execution and composition 1.3.0 2026-08-22 20:55:28 -05:00
Jordan Waughtal af0c039b13 Complete M4 evaluator and language semantics 1.2.0 2026-08-22 13:27:16 -05:00
Jordan Waughtal 02d96a4c09 Add interactive input mode for WSH 1.1.0 1.1.0 2026-08-22 12:32:56 -05:00
Jordan Waughtal 16f321e19d Sign WPM packages and prepare WSH 1.0.1 1.0.1 2026-08-22 11:58:53 -05:00
Jordan Waughtal 12562696bb Expose Doxygen to CI configure step 1.0.0 2026-08-22 11:21:51 -05:00