224 lines
5.9 KiB
Markdown
224 lines
5.9 KiB
Markdown
# Whetstone-AST-First Integration
|
|
|
|
## Purpose
|
|
|
|
This document defines how `whetstone_RSA` should relate to `whetstone_DSL`.
|
|
|
|
The key rule is:
|
|
|
|
`whetstone_RSA` should be Whetstone-AST-first, not merely AST-first.
|
|
|
|
That means the semantic source of truth for RSA contracts should live in the
|
|
Whetstone AST and annotation system, not in ad hoc C++ structs or generic parser
|
|
ASTs.
|
|
|
|
## Why Generic AST Is Not Enough
|
|
|
|
A generic AST is mostly syntax structure.
|
|
|
|
It can tell you things like:
|
|
|
|
- function
|
|
- class
|
|
- parameter
|
|
- if-statement
|
|
- call expression
|
|
|
|
That is useful, but it is not enough for RSA.
|
|
|
|
RSA needs first-class semantic contracts for things like:
|
|
|
|
- input structure
|
|
- input modality
|
|
- output topology
|
|
- output constraint
|
|
- policy stability
|
|
- suitability assessment
|
|
- gate shape
|
|
- confidence behavior
|
|
- abstain policy
|
|
- escalation policy
|
|
- diagnosis metadata
|
|
|
|
Those are not reliable consequences of syntax alone.
|
|
They are authored semantic data.
|
|
|
|
## Why Whetstone AST Is The Right Source
|
|
|
|
The Whetstone AST already exists to carry language-neutral semantic intent beyond
|
|
what ordinary source code or parser ASTs can express cleanly.
|
|
|
|
That makes it the right authoring substrate for RSA because:
|
|
|
|
- annotations are first-class
|
|
- concepts are language-neutral
|
|
- contracts can be preserved across projections
|
|
- comments do not need to carry architectural meaning
|
|
- generated C++ can remain a projection target instead of becoming the semantic home
|
|
|
|
In short:
|
|
|
|
- generic AST gives structure
|
|
- Whetstone AST gives structure plus semantic contract capacity
|
|
|
|
RSA needs the second one.
|
|
|
|
## Architectural Rule
|
|
|
|
The semantic source of truth for RSA should live in `whetstone_DSL`.
|
|
|
|
The C++ runtime in `whetstone_RSA` should be treated as a projection target for:
|
|
|
|
- runtime data types
|
|
- execution logic
|
|
- probe registry interfaces
|
|
- policy and diagnosis runtime behavior
|
|
|
|
This keeps the architecture aligned with the rest of the Whetstone program:
|
|
|
|
- AST is source of truth
|
|
- target languages are projections
|
|
|
|
## Proposed Split Of Responsibilities
|
|
|
|
### `whetstone_DSL`
|
|
|
|
Owns:
|
|
|
|
- RSA semantic ontology
|
|
- gate definitions as semantic contracts
|
|
- suitability metadata
|
|
- diagnosis metadata
|
|
- probe declarations
|
|
- projection rules into target runtimes
|
|
|
|
### `whetstone_RSA`
|
|
|
|
Owns:
|
|
|
|
- C++ runtime implementation
|
|
- probe execution engine
|
|
- diagnosis engine
|
|
- policy runtime
|
|
- compiled/runtime-facing representations of projected contracts
|
|
|
|
## What Should Exist In The Whetstone AST
|
|
|
|
RSA needs explicit semantic objects, not just ordinary code nodes.
|
|
|
|
Examples of first-class RSA concepts that should eventually exist in Whetstone form:
|
|
|
|
- `GateDefinition`
|
|
- `GateEvidence`
|
|
- `GateDiagnosis`
|
|
- `GateSuitability`
|
|
- `PolicyRecommendation`
|
|
- `ProbeDefinition`
|
|
- `DecisionContract`
|
|
|
|
These should be represented as semantic entities with structured fields, not as
|
|
freeform comments embedded in generated C++.
|
|
|
|
## Why This Is Better Than Authoring In C++
|
|
|
|
If RSA contracts are authored directly in C++, the semantics become fragile:
|
|
|
|
- comments carry architectural meaning
|
|
- relationships are implicit
|
|
- code review sees implementation before contract
|
|
- projection to other targets becomes harder
|
|
|
|
If RSA contracts are authored in the Whetstone AST:
|
|
|
|
- the semantics are explicit
|
|
- annotations stay attached to the real concept
|
|
- multiple targets can be generated later
|
|
- runtime code becomes easier to keep honest
|
|
|
|
This is especially important because RSA is intended to remain model-agnostic.
|
|
|
|
The contract is primary.
|
|
The current transformer-based runtime is secondary.
|
|
|
|
## Model-Agnostic Benefit
|
|
|
|
Because RSA is contractual rather than model-defined, the AST layer should describe:
|
|
|
|
- what the gate promises
|
|
- what the gate consumes
|
|
- how confidence and abstention behave
|
|
- how diagnosis works
|
|
|
|
without hard-coding one backend.
|
|
|
|
That preserves future replacement paths such as:
|
|
|
|
- transformer specialist
|
|
- classical ML classifier
|
|
- RL policy
|
|
- retrieval-backed scorer
|
|
- deterministic-plus-learned hybrid
|
|
|
|
The Whetstone AST should capture the contract.
|
|
The C++ runtime should implement one or more backends against it.
|
|
|
|
## Near-Term Practical Rule
|
|
|
|
Right now, some C++ scaffolding already exists in `whetstone_RSA`.
|
|
|
|
That is fine as a bootstrap.
|
|
|
|
But it should be treated as:
|
|
|
|
- provisional runtime code
|
|
- useful for exercising the contract shape
|
|
- not the long-term semantic source of truth
|
|
|
|
As soon as the Whetstone-side semantic representation exists, the C++ layer should
|
|
be aligned to it rather than continuing as an independently evolving hand-authored
|
|
model.
|
|
|
|
## How To Use WhetstoneDSL Here
|
|
|
|
The right use of `whetstone_DSL` is not "parse some C++ and hope the meaning falls
|
|
out."
|
|
|
|
The right use is:
|
|
|
|
1. define RSA concepts explicitly in Whetstone semantic form
|
|
2. attach first-class metadata and annotations there
|
|
3. project those contracts into C++ runtime types and adapters
|
|
|
|
If existing Whetstone MCP tools can help bootstrap some of the current C++ structs
|
|
into AST-native representations, that is useful.
|
|
|
|
But the goal is not mechanical conversion for its own sake.
|
|
The goal is semantic alignment.
|
|
|
|
If direct manual authoring in Whetstone form lands closer to the intended contract,
|
|
that is better than a weak automatic conversion.
|
|
|
|
## Practical Guidance For The Current Stage
|
|
|
|
At this stage of the project:
|
|
|
|
- keep the current C++ runtime scaffold because it is useful for validating runtime shape
|
|
- do not expand C++ into the permanent semantic home of the system
|
|
- prioritize defining the RSA domain model in Whetstone semantic terms
|
|
- use MCP-assisted conversion only when it lands close to the intended semantic contract
|
|
|
|
This is still early enough that correctness of semantic shape matters more than
|
|
automation of the conversion path.
|
|
|
|
## Implication
|
|
|
|
`whetstone_RSA` is not just "a C++ library with some docs."
|
|
|
|
It should become:
|
|
|
|
- a Whetstone-authored semantic subsystem
|
|
- with a C++ runtime projection
|
|
|
|
That is the architecture most consistent with both Whetstone and the long-term
|
|
goals of RSA.
|