Folds three previously-separate pieces into one preliminary-example repo for the HAHACS thesis: - thesis/ (submodule) → gitea Thesis.git — the PhD proposal - fret-pipeline/ — FRET requirements to AIGER controller (was ~/Documents/fret_processing/; prior single-commit history abandoned per user decision) - plant-model/ — 10-state PKE + lumped T/H PWR model (was ~/Documents/PKE_Playground/; never version-controlled before) - presentations/2026DICE/ (submodule) → gitea 2026DICE.git - reachability/, hardware/ — empty placeholders for Thrust 3 and HIL - docs/architecture.md — how the discrete and continuous layers compose - claude_memory/ — session notes and scratch knowledge pattern Plant model refactored to thesis naming (x, plant, u, ref); pke_th_rhs now takes u as an explicit arg instead of reading rho_ext from the params struct. First two controllers built to the contract u = ctrl_<mode>(t, x, plant, ref): ctrl_null (baseline) and ctrl_operation (stabilizing, proportional on T_avg). Validated under a 100% -> 80% Q_sg step: ctrl_operation reduces steady-state T_avg drift ~47% vs. the unforced plant. Root CLAUDE.md emphasizes that CLAUDE.md files are living documents and that any knowledge not captured before a session ends is lost forever; claude_memory/ holds the session-level notes that haven't stabilized enough to graduate into a CLAUDE.md. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
148 lines
6.9 KiB
JSON
148 lines
6.9 KiB
JSON
{
|
|
"_comment": "Generated by parse_smv.py. Review and edit variable roles before synthesis.",
|
|
"spec_name": "DRC",
|
|
"variables": {
|
|
"Cold_Shutdown": {
|
|
"role": "conflict",
|
|
"input_reasons": [
|
|
"DRCSpec_PWR-2001: condition in \"While !SCRAM If Cold_Shutdown & STARTUP DRC shall at the next timepoint satisfy OP_MODE & Heatup\""
|
|
],
|
|
"output_reasons": [
|
|
"DRCSpec_PWR-0000: satisfaction in \"DRC shall initially satisfy (Cold_Shutdown & !SCRAM)\"",
|
|
"DRCSpec_PWR-0201: satisfaction in \"When OP_MODE DRC shall always satisfy (Heatup | Load_Follow) & !(!Heatup & !Load_Follow) & !(SCRAM | Cold_Shutdown)\""
|
|
]
|
|
},
|
|
"Heatup": {
|
|
"role": "conflict",
|
|
"input_reasons": [
|
|
"DRCSpec_PWR-3001: condition in \"While Heatup if t_dot_exceeded DRC shall at the next timepoint satisfy SCRAM\"",
|
|
"DRCSpec_PWR-3003: condition in \"While Heatup if t_power_min DRC shall at the next timepoint satisfy (Load_Follow & !Heatup)\""
|
|
],
|
|
"output_reasons": [
|
|
"DRCSpec_PWR-0200: satisfaction in \"While OP_MODE DRC shall always satisfy Heatup | Load_Follow\"",
|
|
"DRCSpec_PWR-0201: satisfaction in \"When OP_MODE DRC shall always satisfy (Heatup | Load_Follow) & !(!Heatup & !Load_Follow) & !(SCRAM | Cold_Shutdown)\"",
|
|
"DRCSpec_PWR-0202: satisfaction in \"While !OP_MODE DRC shall always satisfy (Heatup | Load_Follow)\"",
|
|
"DRCSpec_PWR-2001: satisfaction in \"While !SCRAM If Cold_Shutdown & STARTUP DRC shall at the next timepoint satisfy OP_MODE & Heatup\"",
|
|
"DRCSpec_PWR-3003: satisfaction in \"While Heatup if t_power_min DRC shall at the next timepoint satisfy (Load_Follow & !Heatup)\""
|
|
]
|
|
},
|
|
"Load_Follow": {
|
|
"role": "output",
|
|
"input_reasons": [],
|
|
"output_reasons": [
|
|
"DRCSpec_PWR-0200: satisfaction in \"While OP_MODE DRC shall always satisfy Heatup | Load_Follow\"",
|
|
"DRCSpec_PWR-0201: satisfaction in \"When OP_MODE DRC shall always satisfy (Heatup | Load_Follow) & !(!Heatup & !Load_Follow) & !(SCRAM | Cold_Shutdown)\"",
|
|
"DRCSpec_PWR-0202: satisfaction in \"While !OP_MODE DRC shall always satisfy (Heatup | Load_Follow)\"",
|
|
"DRCSpec_PWR-3003: satisfaction in \"While Heatup if t_power_min DRC shall at the next timepoint satisfy (Load_Follow & !Heatup)\""
|
|
]
|
|
},
|
|
"OP_MODE": {
|
|
"role": "conflict",
|
|
"input_reasons": [
|
|
"DRCSpec_PWR-0200: condition in \"While OP_MODE DRC shall always satisfy Heatup | Load_Follow\"",
|
|
"DRCSpec_PWR-0201: condition in \"When OP_MODE DRC shall always satisfy (Heatup | Load_Follow) & !(!Heatup & !Load_Follow) & !(SCRAM | Cold_Shutdown)\"",
|
|
"DRCSpec_PWR-0202: condition in \"While !OP_MODE DRC shall always satisfy (Heatup | Load_Follow)\""
|
|
],
|
|
"output_reasons": [
|
|
"DRCSpec_PWR-0100: satisfaction in \"If SCRAM DRC shall immediately satisfy !OP_MODE\"",
|
|
"DRCSpec_PWR-2001: satisfaction in \"While !SCRAM If Cold_Shutdown & STARTUP DRC shall at the next timepoint satisfy OP_MODE & Heatup\""
|
|
]
|
|
},
|
|
"SCRAM": {
|
|
"role": "conflict",
|
|
"input_reasons": [
|
|
"DRCSpec_PWR-0100: condition in \"If SCRAM DRC shall immediately satisfy !OP_MODE\"",
|
|
"DRCSpec_PWR-0102: condition in \"If SCRAM DRC shall always satisfy SCRAM\"",
|
|
"DRCSpec_PWR-2001: condition in \"While !SCRAM If Cold_Shutdown & STARTUP DRC shall at the next timepoint satisfy OP_MODE & Heatup\""
|
|
],
|
|
"output_reasons": [
|
|
"DRCSpec_PWR-0000: satisfaction in \"DRC shall initially satisfy (Cold_Shutdown & !SCRAM)\"",
|
|
"DRCSpec_PWR-0102: satisfaction in \"If SCRAM DRC shall always satisfy SCRAM\"",
|
|
"DRCSpec_PWR-0201: satisfaction in \"When OP_MODE DRC shall always satisfy (Heatup | Load_Follow) & !(!Heatup & !Load_Follow) & !(SCRAM | Cold_Shutdown)\"",
|
|
"DRCSpec_PWR-3001: satisfaction in \"While Heatup if t_dot_exceeded DRC shall at the next timepoint satisfy SCRAM\"",
|
|
"DRCSpec_PWR-3002: satisfaction in \"if t_max_exceeded DRC shall at the next timepoint satisfy SCRAM\""
|
|
]
|
|
},
|
|
"STARTUP": {
|
|
"role": "input",
|
|
"input_reasons": [
|
|
"DRCSpec_PWR-2001: condition in \"While !SCRAM If Cold_Shutdown & STARTUP DRC shall at the next timepoint satisfy OP_MODE & Heatup\""
|
|
],
|
|
"output_reasons": []
|
|
},
|
|
"t_dot_exceeded": {
|
|
"role": "input",
|
|
"input_reasons": [
|
|
"DRCSpec_PWR-3001: condition in \"While Heatup if t_dot_exceeded DRC shall at the next timepoint satisfy SCRAM\""
|
|
],
|
|
"output_reasons": []
|
|
},
|
|
"t_max_exceeded": {
|
|
"role": "input",
|
|
"input_reasons": [
|
|
"DRCSpec_PWR-3002: condition in \"if t_max_exceeded DRC shall at the next timepoint satisfy SCRAM\""
|
|
],
|
|
"output_reasons": []
|
|
},
|
|
"t_power_min": {
|
|
"role": "input",
|
|
"input_reasons": [
|
|
"DRCSpec_PWR-3003: condition in \"While Heatup if t_power_min DRC shall at the next timepoint satisfy (Load_Follow & !Heatup)\""
|
|
],
|
|
"output_reasons": []
|
|
}
|
|
},
|
|
"requirements": [
|
|
{
|
|
"req_id": "DRCSpec_PWR-0000",
|
|
"fretish": "DRC shall initially satisfy (Cold_Shutdown & !SCRAM)",
|
|
"ltl": "(Cold_Shutdown & !SCRAM)"
|
|
},
|
|
{
|
|
"req_id": "DRCSpec_PWR-0100",
|
|
"fretish": "If SCRAM DRC shall immediately satisfy !OP_MODE",
|
|
"ltl": "G((SCRAM) -> X(!OP_MODE))"
|
|
},
|
|
{
|
|
"req_id": "DRCSpec_PWR-0102",
|
|
"fretish": "If SCRAM DRC shall always satisfy SCRAM",
|
|
"ltl": "G(SCRAM)"
|
|
},
|
|
{
|
|
"req_id": "DRCSpec_PWR-0200",
|
|
"fretish": "While OP_MODE DRC shall always satisfy Heatup | Load_Follow",
|
|
"ltl": "G((OP_MODE) -> (Heatup | Load_Follow))"
|
|
},
|
|
{
|
|
"req_id": "DRCSpec_PWR-0201",
|
|
"fretish": "When OP_MODE DRC shall always satisfy (Heatup | Load_Follow) & !(!Heatup & !Load_Follow) & !(SCRAM | Cold_Shutdown)",
|
|
"ltl": "G((OP_MODE) -> X(G((Heatup | Load_Follow) & !(!Heatup & !Load_Follow) & !(SCRAM | Cold_Shutdown))))"
|
|
},
|
|
{
|
|
"req_id": "DRCSpec_PWR-0202",
|
|
"fretish": "While !OP_MODE DRC shall always satisfy (Heatup | Load_Follow)",
|
|
"ltl": "G((!OP_MODE) -> ((Heatup | Load_Follow)))"
|
|
},
|
|
{
|
|
"req_id": "DRCSpec_PWR-2001",
|
|
"fretish": "While !SCRAM If Cold_Shutdown & STARTUP DRC shall at the next timepoint satisfy OP_MODE & Heatup",
|
|
"ltl": "G(((!SCRAM) & (Cold_Shutdown & STARTUP)) -> X(OP_MODE & Heatup))"
|
|
},
|
|
{
|
|
"req_id": "DRCSpec_PWR-3001",
|
|
"fretish": "While Heatup if t_dot_exceeded DRC shall at the next timepoint satisfy SCRAM",
|
|
"ltl": "G(((Heatup) & (t_dot_exceeded)) -> X(SCRAM))"
|
|
},
|
|
{
|
|
"req_id": "DRCSpec_PWR-3002",
|
|
"fretish": "if t_max_exceeded DRC shall at the next timepoint satisfy SCRAM",
|
|
"ltl": "G((t_max_exceeded) -> X(SCRAM))"
|
|
},
|
|
{
|
|
"req_id": "DRCSpec_PWR-3003",
|
|
"fretish": "While Heatup if t_power_min DRC shall at the next timepoint satisfy (Load_Follow & !Heatup)",
|
|
"ltl": "G(((Heatup) & (t_power_min)) -> X((Load_Follow & !Heatup)))"
|
|
}
|
|
]
|
|
}
|