Files
whetstone_RSA/ROADMAP.md

349 lines
11 KiB
Markdown
Raw Normal View History

# Roadmap
## Phase 0: Definition
- Write the project framing and library boundaries.
- Define the bounded gate schema contract.
- Document the WhetstoneDSL case study and current specialist fleet.
### Phase 0A: AST-First Realignment
Before `whetstone_RSA` grows much further as a hand-authored C++ library, realign
the project so its semantic source of truth is Whetstone-authored and C++ becomes
a projection target.
This phase exists to prevent the current bootstrap scaffold from hardening into the
wrong long-term architecture.
#### Intent
- make RSA semantically AST-first
- keep C++ as runtime projection and execution layer
- preserve compatibility with the current scaffold while changing the source of truth
#### Architectural rule
The long-term source of truth for RSA should live in Whetstone semantic forms, not
in hand-authored C++ structs.
The C++ code in this repository should be treated as:
- runtime implementation
- projected contract types
- backend execution surface
- diagnosis and policy engine
not the canonical definition of RSA semantics.
#### 0A.1 Semantic entities to define first
Define Whetstone-authored semantic objects for at least:
- `GateDefinition`
- `DecisionRequest`
- `DecisionResult`
- `StructuredDecisionResult`
- `GateSuitability`
- `GateDiagnosis`
- `ProbeDefinition`
- `BackendSuitability`
- `GatePackage`
These should carry the contract metadata already identified in the docs:
- input structure and modality
- output topology and constraint
- policy stability
- gate shape
- confidence, abstain, and escalation policy
- trace fields
- backend family and packaging metadata
#### 0A.2 Projection boundary
Define a deliberate projection boundary from Whetstone semantic forms into:
- C++ runtime contract structs
- schema artifacts
- benchmark configuration artifacts
- packaged runtime manifests
The important architectural constraint is:
- semantics are authored once
- runtime targets are projected from that source
#### 0A.3 Migration rule for the current scaffold
Do not continue expanding hand-authored C++ contract definitions unless they are
clearly temporary runtime placeholders.
When a contract type changes, the preferred direction should become:
- update semantic source
- regenerate or realign projected C++ representation
rather than:
- evolve C++ first
- treat docs and later AST work as catch-up
#### 0A.4 Immediate AST-first deliverables
- define the first RSA semantic model in Whetstone terms
- map current C++ runtime types to those semantic entities
- identify what current fields are semantic contract versus runtime-only detail
- define the projection rules into C++
- update roadmap phases so future implementation assumes semantic-first authoring
#### 0A.5 Scope constraint
This does not require immediate deep modification of `whetstone_DSL` runtime code.
It does require that future RSA design work stop assuming C++ is the authoring
home of the system.
The immediate goal is architectural realignment, not premature full conversion.
## Phase 1: Gate Inventory
- Enumerate candidate gates from WhetstoneDSL.
- Record output vocabulary, input shape, and downstream deterministic executor.
- Split gates into deterministic, specialist, and escalation-first candidates.
Primary case-study inventory artifact:
- `docs/case_studies/whetstone_dsl_gate_inventory.md`
## Phase 2: Entropy Baseline
- Define a first-pass gate entropy score.
- Score the initial WhetstoneDSL gate set.
- Identify which gates are plausible at the ~800KB tier and which are not.
## Phase 3: Size Sweep
- Run fixed-data comparisons across multiple model sizes.
- Measure accuracy, calibration, confusion concentration, and latency.
- Produce the first entropy-to-tier baseline table.
## Phase 4: Core Library
- Implement gate schema loading and validation.
- Implement the decision request/response runtime.
- Implement abstain and escalation policies.
- Support pluggable inference backends.
### Phase 4A: Post-Suitability RSA Runtime Plan
This phase begins only after a decision surface has already been judged to belong
in the `rsa` layer rather than `deterministic`, `slm`, `llm`, or `human`.
The focus here is not broad suitability triage. The focus is:
- how an RSA gate is represented
- how its shape is chosen
- how its backend is selected
- how it is packaged for efficient runtime use
#### Design constraints
- Keep the library focused on `whetstone_RSA`, not direct `whetstone_DSL` changes.
- Assume RSA semantic contracts are authored AST-first and projected into runtime
targets rather than defined primarily in handwritten C++.
- Support both bounded single-choice classification and bounded structured outputs
with slots from the beginning.
- Include `rl_policy` and bandit-style policies as contract placeholders, but do
not make them a primary implementation target until classical ML and transformer
backends are working and benchmarked.
- Treat hybrid inputs as first-class. A gate may consume text, symbolic state, and
numeric features together.
- Use case studies only to surface reusable abstractions. Do not let one case study
become the semantic definition of the library.
#### 4A.1 Contract and packet model
- Define a canonical `GateDefinition` that supports:
- bounded enum decisions
- bounded structured slot-filling decisions
- constraints
- confidence policy
- abstain policy
- escalation policy
- trace metadata
- Define a canonical `DecisionRequest` packet that supports:
- textual fields
- symbolic fields
- numeric features
- state and provenance metadata
- Define `DecisionResult` and `StructuredDecisionResult` so programs can consume
either plain label outputs or bounded slot outputs through argument-oriented
runtime calls rather than project-specific ad hoc interfaces.
#### 4A.2 Gate-shape selection
The library should not assume that all bounded problems should be represented as
one flat multiclass classifier.
For each RSA candidate gate, support shape analysis across:
- `binary`
- `multiclass`
- `factorized`
- `hierarchical`
Initial implementation goals:
- define metadata that describes candidate gate shapes
- define diagnostics that detect when a flat label space hides compositional
structure
- support shape-specific constraints so invalid state combinations are prevented
by contract rather than patched later
#### 4A.3 Backend-selection layer
Backend selection remains separate from RSA identity.
The library should support a backend contract for at least:
- `linear_model`
- `gradient_boosting`
- `random_forest`
- `bayesian`
- `transformer`
- `hybrid`
- `rl_policy` placeholder
Initial implementation goals:
- define a common backend interface for train, infer, calibrate, and trace
- allow external benchmark or AutoML-style workflows to produce backend
recommendations without forcing one internal training stack
- keep backend artifacts swappable as long as the gate contract is preserved
#### 4A.4 Benchmark harness
Build a reusable harness that compares both gate shape and backend family for the
same bounded decision contract.
For each gate, the harness should compare:
- flat multiclass against factorized or hierarchical alternatives
- classical ML backends against tiny transformer backends
- deterministic baselines where any part of the gate can be rule-complete
Required outputs:
- accepted-decision accuracy
- calibration quality
- abstain quality
- invalid-output rate
- downstream deterministic validation success
- latency
- memory footprint
- training and retraining cost
#### 4A.5 Runtime packaging
AutoML or scripted comparison should be offline or occasional, not on the hot path.
The runtime should load a selected gate package that includes:
- gate contract
- chosen gate shape
- chosen backend family
- trained artifact reference
- confidence thresholds
- abstain and escalation policy
- trace schema and version metadata
The steady-state runtime model is:
- benchmark and select offline
- package once
- load the chosen gate into memory
- serve repeated decisions efficiently
- re-run selection only when schema, data, policy, or hardware conditions change
#### 4A.6 Invocation surface
The library should expose explicit runtime calls rather than force consumers to
rebuild invocation conventions for each gate.
Initial target surface:
- `decide_class(request, gate_definition)`
- `decide_structured(request, gate_definition)`
- `diagnose_gate(gate_definition, evidence, benchmark_results)`
- `recommend_backend(gate_definition, benchmark_results)`
- `recommend_gate_shape(gate_definition, benchmark_results)`
The exact function names may change, but the core idea should remain: consumers
pass structured arguments into a reusable RSA runtime surface.
#### 4A.7 Diagnosis loop
When a gate underperforms, the first response should not be automatic model-size
escalation.
The runtime and benchmark surfaces should instead help answer:
- should this gate stay flat or be factorized?
- is part of the task actually deterministic?
- is the label space unstable?
- is the backend family mismatched to the input packet?
- should the gate abstain earlier?
#### 4A.8 First case-study role
Use the memory-strategy decision only as the first end-to-end exercise for the
abstract mechanism.
The case study should help validate:
- mixed symbolic/text/numeric packet design
- shape comparison between flat and decomposed gates
- backend comparison between classical ML and tiny transformers
- packaging of both enum-style and slot-filling outputs
It should not be allowed to overfit the library to one memory-management ontology.
#### 4A.9 Immediate implementation order
- define the AST-first semantic source for RSA contracts
- define projection rules from semantic entities into C++ runtime types
- extend schema types so both enum and structured-slot gates are first-class
- define canonical request/result packet types
- define gate-shape metadata and recommendation types
- define backend-family contracts, including placeholder RL/bandit support
- build the benchmark report format
- implement classical ML adapters first
- implement transformer adapter second
- add packaging and runtime loading
- add diagnosis and recommendation APIs on top of benchmark evidence
## Phase 5: Whetstone Integration
- Expose WhetstoneDSL gates through the library.
- Replace selected MCP bounded decisions with local specialist calls.
- Log abstentions and misroutes for retraining and gate redesign.
## Phase 6: Hivemind Integration
- Feed gate failure data into Hivemind as entropy evidence.
- Use Hivemind to prioritize which high-entropy gates deserve deterministic tooling.
- Distinguish "needs a bigger model" from "needs a better tool or schema."
## Exit Criteria For Version 0
- At least one reusable gate schema format is stable.
- Both enum-style and bounded structured-slot gates are supported by the contract.
- At least three WhetstoneDSL gates are benchmarked across size tiers.
- At least one gate has been compared across multiple gate shapes, not just
multiple model sizes.
- At least one gate has been compared across classical ML and transformer
backends under the same contract.
- A baseline entropy-to-tier recommendation table exists.
- One real application can call the library instead of hard-coding model
selection or backend choice.