Files
correx/docs/diagrams/core-transitions.puml
kami 9734eec63c docs: add module documentation in AsciiDoc with PlantUML diagrams
Generated by per-group subagents covering all 52 modules across:
core (18), infrastructure (10), apps (5), interfaces (3),
plugins (7), testing (9)

Documentation format:
- AsciiDoc (.adoc) files in docs/modules/<group>/
- PlantUML (.puml) files in docs/diagrams/
- .adoc files reference diagrams via include:: directives

Each doc covers: purpose, responsibilities, non-responsibilities,
key types, event flow, integration points, invariants, PlantUML
diagram, known issues, and open questions.
2026-05-26 16:59:21 +04:00

114 lines
2.4 KiB
Plaintext

@startuml
package "core:transitions" {
data class WorkflowGraph {
+ id: String
+ stages: Map
+ transitions: Set
+ start: StageId
}
data class StageConfig {
+ requiredCapabilities
+ tokenBudget
+ generationConfig
+ allowedTools
+ produces
}
data class TransitionEdge {
+ id: TransitionId
+ from: StageId
+ to: StageId
+ condition: TransitionCondition
}
fun interface TransitionCondition {
+ evaluate(EvaluationContext): Boolean
}
interface TransitionResolver {
+ resolve(WorkflowGraph, EvaluationContext): TransitionDecision
}
class DefaultTransitionResolver
sealed interface TransitionDecision {
data class Move
data object Stay
data class Blocked
data object NoMatch
}
data class EvaluationContext {
+ sessionId
+ currentStage
+ artifacts
+ variables
}
fun interface TransitionConditionEvaluator
fun interface PromptResolver
interface StageExecutor
interface StageExecutionEventMapper
data class StageExecutionRequest
sealed interface StageExecutionResult {
data class Success
data class Failure
}
DefaultTransitionResolver ..|> TransitionResolver
DefaultTransitionResolver --> TransitionConditionEvaluator
DefaultTransitionResolver --> TransitionOrdering
WorkflowGraph *-- StageConfig
WorkflowGraph *-- TransitionEdge
TransitionEdge *-- TransitionCondition
TransitionResolver --> TransitionDecision
TransitionResolver --> EvaluationContext
StageExecutionEventMapper --> StageExecutionRequest
StageExecutionEventMapper --> StageExecutionResult
StageExecutionEventMapper --> EventPayload
package "conditions" {
class AlwaysTrue
class VariableEquals
class ArtifactPresent
class ArtifactAbsent
class ArtifactValidated
class AllOf
class AnyOf
class Not
}
AlwaysTrue ..|> TransitionCondition
VariableEquals ..|> TransitionCondition
ArtifactPresent ..|> TransitionCondition
AllOf ..|> TransitionCondition
package "cycle detection" {
class CycleExtractor
class CycleDfs
class DeterministicAdjacencyBuilder
object CycleCanonicalizer
data class DetectedCycle
}
package "cycle policy" {
sealed interface CyclePolicy {
data class Retry
data class Refinement
data class Approval
}
data class CycleSignature
data class CyclePolicyBinding
class CyclePolicyResolver
class PolicyValidation
}
}
@enduml