Typed skill registry108: local source prototype
This new standalone prototype implements immutable SkillSpec identity, exact-version selection, local trusted registration, typed invoke/handoff and sticky revocation. It is source-only, unreviewed and unexecuted. Existing lab/portable core, numerical recipes and research gates remain unchanged.
registry.mjs imports only Node crypto and buffer builtins. It does not import the portable harness: the current harness reads source files at module initialization, so importing it would expand this prototype's bootstrap/read graph. registry.test.mjs is prospective synthetic fixture source with27 declarations; none was imported, compiled or run. A future selected command could use Node's test runner on this exact file, after independent source/runtime review; this README selects no invocation.
Local API and semantic identity
Create a spec with createSkillSpec(metadata), declare it in createSkillRegistry(id), then bind one locally trusted function through register(exactSelector,fn). A selector always contains skillId, exact positive integer version and specDigest; there is no latest alias. select distinguishes DECLARED, BOUND and REVOKED and always reports NOT_EVALUATED. A digest establishes canonical content identity only, never source approval or implemented/evaluated model identity.
Each input/output port binds full schema/task/encoder/action/game references, units, visibility, representation and shape. Optional references are explicitly null. invoke refuses an equal-shaped value with different task/encoder/action/game/units/visibility BEFORE callback dispatch. It checks finite-vector representation or copies generic JSON; it does NOT interpret a referenced JSON domain schema or prove that callers told the truth about a port. Domain body-validation/source-selection adapters are a downstream dependency.
Trusted callbacks receive only frozen copied values and return {binding,value}; the registry copies/freezes published outputs and brands exact objects in a private WeakMap. handoff and accept require that same local object/instance identity, compatible complete ports and active endpoints. Handoffs have unique lifetime IDs and are spent before dispatch, including failed dispatch. Serialized output/handoff fields cannot mint local membership. Sticky revocation removes the local function binding and blocks outstanding producer/receiver offers; it does not erase historical outputs or provide transitive retention/rollback.
All published selections, outputs, handoffs and receipts carry noAuthority:true. This is coordination metadata, not action admission. Trusted registered functions could themselves cause effects; the registry does not sandbox them, authenticate arbitrary callers, verify source closures or constrain native/process/host behavior. Ordinary accessors are refused from descriptor values, but no Proxy/intrinsic-tampering or hostile-object security guarantee is claimed.
Conceptual poker host declarations
POKER-DECLARATIONS.json contains six UNREGISTERED/UNEVALUATED concepts: M-state/context, equity, range, sizing, policy and legality. Their source pointers are exact byte pins and symbols, not auto-imports or approved implementation registrations. SEMANTIC-REFERENCES.json retains complete proposed reference definitions and their canonical metadata identity.
There is local HU betting/state supply (pa/hu/engine.py), an own-hole/public-board sixmax encoder (nlhe_features.py), Monte Carlo public-unknown-card estimator (complex_port.equity_fast),1326-combo enumeration/normalization (profiles/ranges.py), real-pot HU sizing/legal actions and a saved-weight policy wrapper (br_complex.NumpyMLP). No model weights or protected outcome histories were read. No learned M-state uncertainty/memory, calibrated opponent posterior, learned equity or size module is asserted. The policy declaration has modelRef=null and cannot be registered as LEARNED.
br_complex.equity_vs_actual explicitly uses actual opposing hole cards and is critic-only; it is NOT a public observation or equity feature. Full HUState also contains hidden holes/future runout and must never be passed as a public policy feature. Port visibility here checks metadata equality; it cannot establish actual nonleakage. The poker declaration JSON body schemas and wrapper adapters remain absent. Sixmax100 source remains distinct from HU200;214-vector shape compatibility does not establish learned transfer.
Prototype bounds and limits
CONTRACT.json fixes64 lifetime declarations,1024 invocations and1024 offers. Each owned capture is limited to65536 canonical bytes/8192 nodes/depth32, arrays4096/records256 keys. Negativezero is refused in this new prototype finite-JSON identity domain; no prior model/clock/RSS grammar changes. Single-call receipts avoid an unbounded or too-large all-history response. These are logical prototype bounds, not measured heap/RSS/time/native I/O or original ANN budget qualification. Callback work, Node/native/hash/bootstrap allocations and repeated copy/canonical passes remain unmeasured.
This small local prototype is intentionally separate from prospective Registry99/104 full12-record/50-type/4-API/19-join work. It implements a useful typed registration seam; it does not claim to finish that full contract. Missing body validators, dependency impact analysis, provenance/authentication, selective training bridges, full per-task behavioral retention/restart and effect-security path remain explicit. Original ANN06 quality, ANN07 retention, native/global W0 and game/security floors are not superseded.
Source basis and evidence
The portable core/harness binds complete semantic contracts and independently selected checkpoint content before minting private team ownership; its workflow supplements effect admission through typed two-sided handoffs. Those are supply patterns, not imported code or transferred test votes. Current roadmap's baseline-era TrainScope label is historical relative to the head-only research branch; this prototype neither rewrites those docs nor promotes any learning result.
This worker previously authored ANN codec/registry design/capture work and reviewed portable/history/benchmark evidence. That overlap is disclosed; this is author output, not an independent correctness vote. Root controls fresh independent review and any future finite diagnostic selection. No worktree, lease, Git operation or running subject process exists for this new nonGit experiment.