Problem
Contributors still need a single regen + drift story for throw/try/catch matrix rows even though much of the implementation landed:
Item
Status on master
#57 try/catch/finally
✅ closed
#2076 / 007-ThrowsWeb
✅ closed
#2084 PHPT overlay
✅ (VM catch path)
throwsWebNorthStarDefinitions() in script/capability-syntax-lib.php
✅ present (~L1121)
Committed docs/capabilities-syntax.md throws section
may lag generator output
#195 throw expressions
still open (edge semantics / JIT)
Presenters auditing subset coverage should not grep lib/ — they should read regenerated matrices aligned with ROADMAP #78 Phase 1.
Goal
Regenerate and commit matrix outputs:
php script/capability-matrix.php
php script/capability-syntax.php
Verify Throws reference (examples/007-ThrowsWeb) block in docs/capabilities-syntax.md matches throwsWebNorthStarDefinitions() (construct, VM serve, AOT link/execute rows).
Add optional drift guard script/check-capabilities-throws-sync.php (local only; opt-in CAPABILITIES_THROWS_SYNC_GATE in ci-fast follow-up — mirror Docs: capabilities-matrix OOP rows (class methods, visibility, constructors) #2190 OOP pattern).
Footnote Language: throw expressions and Exception object propagation #195 / JIT: try/catch/finally lowering phase 2 (#57, after VM #2084) #2114 where JIT/AOT columns are still partial.
Implementation hints
File
Notes
script/capability-syntax-lib.php
throwsWebNorthStarDefinitions() — SSOT for 007 rows; extend only if new 007 gates land
script/capability-syntax.php
renderThrowsWebNorthStarMarkdown() appended to syntax doc
docs/capabilities-syntax.md
Committed output — diff after regen
docs/capabilities.md
Builtin-level throw/catch if capability-matrix.php has hooks
script/check-wave3-roadmap-sync.php
Must still pass after footnote edits
test/unit/CapabilitySyntaxTest.php
Assert throws section contains 007-ThrowsWeb + issue links
Row content checklist
Verification commands
php script/capability-syntax.php && git diff --stat docs/capabilities-syntax.md
php script/check-wave3-roadmap-sync.php
./script/ci-fast.sh --filter CapabilitySyntax
Harness:
./script/docker-exec.sh -- bash -lc ' source script/php-env.sh && php script/capability-syntax.php && grep -F 007-ThrowsWeb docs/capabilities-syntax.md'
Do not use raw docker run -v "$(pwd):/compiler" on Runforge.
Acceptance criteria
Dependencies
Links
Problem
Contributors still need a single regen + drift story for throw/try/catch matrix rows even though much of the implementation landed:
masterthrowsWebNorthStarDefinitions()inscript/capability-syntax-lib.phpdocs/capabilities-syntax.mdthrows sectionPresenters auditing subset coverage should not grep
lib/— they should read regenerated matrices aligned with ROADMAP #78 Phase 1.Goal
examples/007-ThrowsWeb) block indocs/capabilities-syntax.mdmatchesthrowsWebNorthStarDefinitions()(construct, VM serve, AOT link/execute rows).script/check-capabilities-throws-sync.php(local only; opt-inCAPABILITIES_THROWS_SYNC_GATEinci-fastfollow-up — mirror Docs: capabilities-matrix OOP rows (class methods, visibility, constructors) #2190 OOP pattern).Implementation hints
script/capability-syntax-lib.phpthrowsWebNorthStarDefinitions()— SSOT for 007 rows; extend only if new 007 gates landscript/capability-syntax.phprenderThrowsWebNorthStarMarkdown()appended to syntax docdocs/capabilities-syntax.mddocs/capabilities.mdcapability-matrix.phphas hooksscript/check-wave3-roadmap-sync.phptest/unit/CapabilitySyntaxTest.php007-ThrowsWeb+ issue linksRow content checklist
throw/catch/ValidationErroruser class — link Examples: 007-ThrowsWeb — throw/catch presenter app (post-#195/#57) #2076, Language: AOT throw/catch with user-defined class (007 ValidationError execute) #2157THROWS_WEB_SMOKE_GATE=1default (CI: Default THROWS_WEB_SMOKE_GATE=1 in ci-fast after #2093 green #2125)THROWSWEB_AOT_*_GATE=1default (CI: Default THROWSWEB_AOT_LINK_GATE + THROWSWEB_AOT_SMOKE_GATE in ci-local after #2101 #2135)Verification commands
php script/capability-syntax.php && git diff --stat docs/capabilities-syntax.md php script/check-wave3-roadmap-sync.php ./script/ci-fast.sh --filter CapabilitySyntaxHarness:
./script/docker-exec.sh -- bash -lc 'source script/php-env.sh && php script/capability-syntax.php && grep -F 007-ThrowsWeb docs/capabilities-syntax.md'Do not use raw
docker run -v "$(pwd):/compiler"on Runforge.Acceptance criteria
docs/capabilities-syntax.mdincludes 007-ThrowsWeb throws block with VM yes for caught throw/catchphp script/check-wave3-roadmap-sync.phppassesDependencies
CAPABILITIES_*_SYNC_GATELinks