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>
4.9 KiB
4.9 KiB
2026-04-16 — repo restructure
Folded three previously-separate pieces into this umbrella repo. Created the
initial layout, the root CLAUDE.md, README.md, docs/architecture.md,
and fret-pipeline/CLAUDE.md.
What we did
- Created
~/Documents/pwr-hybrid-3-demo/as the umbrella repo (git init,mainbranch, not yet pushed to any remote). - Copied
~/Documents/fret_processing/→fret-pipeline/viarsyncexcluding.git,.DS_Store,.claude,__pycache__. Git history abandoned by explicit user decision — the old single-commit history did not carry forward. - Copied
~/Documents/PKE_Playground/→plant-model/viarsync. Never was a git repo; nothing to abandon. - Added
thesis/as a submodule pointing atssh://git@gitea.danesabo.com:1738/danesabo/Thesis.git(also has GitHub mirror atnamelessfaceless/dissertation). - Added
presentations/2026DICE/as a submodule pointing atssh://git@gitea.danesabo.com:1738/danesabo/2026DICE.git. - Created empty placeholders:
reachability/,hardware/,docs/figures/.
What we decided and why
- Monorepo with thesis as a submodule, not the reverse. Code iterates daily, thesis weekly. A slow parent with fast children is painful; a fast parent pointing at a slow submodule matches the actual cadence. Also preserves the thesis's independent git history for advisor/committee use.
- Copy, not move. Old
~/Documents/fret_processing/and~/Documents/PKE_Playground/still exist. User will delete them later; this gives a safe rollback window. - Folder renames:
fret_processing→fret-pipeline(more accurate — it's a pipeline, not a processing step),PKE_Playground→plant-model(describes function not content). Both switched to hyphens for consistency. - No
git initonPKE_Playgroundbefore the move — user said to skip it and fold in clean. - Used
git submodule add, notgit subtree. Submodule pain acknowledged (detached HEAD, two-step commits,--recurse-submoduleson clone) but accepted in exchange for preserving the thesis's independent git life. Revisit if pain outweighs benefit.
Things that surprised us / are worth remembering
- The thesis's Figure 1 (Cold Shutdown → Heatup → Power Operation + SCRAM)
and the
fret-pipeline/running examplePWR_HYBRID_3are the same automaton. This is the integration point — the figure should eventually be swapped from hand-drawn TikZ to\includegraphicsof a generated state-machine PNG. - The plant model's state vector
[n; C1..C6; T_f; T_c; T_cold]exposes exactly the quantities the FRET predicates reference (T_avg = T_c,T_hot = 2*T_c - T_cold). The two layers are already semantically aligned; nobody wired them because they were in different folders. Q_sg(t)is the physical input, notT_cold. Cold leg temperature is a dynamic state that results from SG heat removal. This matters for the reachability/barrier-cert formulation whereQ_sg ∈ [Q_min, Q_max]is the bounded disturbance.fret_to_synth.pyadds a mutual-exclusion LTL constraint because decomposingcontrol_mode = q_Xinto independent booleans lets the synthesizer assert multiple modes simultaneously. This is a synthesis encoding artifact, not a missing FRET requirement. Do not add it in FRET.
Open items (for future sessions)
presentations/2026DICE/submodule reflects gitea HEAD, not user's local state. The original~/Documents/Writing/2026DICE/had uncommitted changes:M DANE_SABO_ABSTRACT.pagesplus three untracked PDFs (DANE_SABO.pdf,DANE_SABO_ABSTRACT.pdf,DANE_SABO_ABSTRACT_V2.pdf,DANE_SABO_ABSTRACT_V3.pdf). If user wants these in the submodule, commit from the original location, push to gitea, then from umbrella:cd presentations/2026DICE && git pulland commit the new pointer.- Old folders not yet deleted.
~/Documents/fret_processing/and~/Documents/PKE_Playground/still live at their old paths. Delete when user confirms the umbrella is working. - No initial commit yet. Everything is staged but uncommitted. User wanted to review the four new docs before committing.
- No remote yet. Need to create
gitea.danesabo.com/danesabo/pwr-hybrid-3-demoandgit remote add origin+ push. fret-pipeline/README.mdstill saysfret_processing/in its directory structure section. Didn't update — it's a minor inconsistency but worth fixing on the next pass.- No bridge between discrete and continuous layers yet. The whole point
of the umbrella is to eventually wire them —
reachability/is where that work lands. Not started.
Paths touched
- Created:
/Users/danesabo/Documents/pwr-hybrid-3-demo/(entire tree) - Untouched:
/Users/danesabo/Documents/fret_processing/,/Users/danesabo/Documents/PKE_Playground/,/Users/danesabo/Documents/Writing/Thesis/,/Users/danesabo/Documents/Writing/2026DICE/— all still present, unchanged.